0

医薬品データベースの大きなテキスト ファイルがあります。各薬は次のように始まります。

#BEGIN DRUGCARD _______

各ドラッグ内には、いくつかのカテゴリがあります。私にとって興味のあるカテゴリは次のとおりです。

# Drug_Target_1_ID
(some number i.e. 3421)

# Drug_Target_1_Name         NOTE: this is the corresponding name for the ID above
(some target i.e. hormone receptor)

この時点で、ファイルを解析し、これらの目的の値を見つけてテーブルに入れるためのコードを連続して生成しました。ただし、次の手順は少しトリッキーになります。

薬物ごとにさまざまな量のターゲットがあります。つまり、一部の薬物には次のものがあります。

`# Drug_Target_1_ID`

`# Drug_Target_1_Name`


`# Drug_Target_12_ID`

`# Drug_Target_12_Name`

...

`# Drug_Target_4_ID`

`# Drug_Target_4_Name`

(NOTE these are also not necessarily in numerical order!)

私がファイルで見た最大の数は 100 までですが、ほとんどの薬は平均して 1 から 10 の間です。

重複があります!各薬物 ID は一意であり、薬物名に対応していますが、特定の薬物 ID は繰り返されます。つまり、多くの薬物が同じターゲットを持っている可能性があるため、ID/名前が再び表示されます。

私がやりたいのは、すべての一意の ID/名前のマスター リスト/テーブルを作成することです。したがって、基本的には、一意のフィールドをすべてスキャンしてDrug_Target_#_ID/ Drug_Target_#_Name、後で操作できるテーブルに追加します。元のファイル内では、ターゲット ID は順不同です。

#BEGIN DRUGCARD ____各ドラッグカード ( ) とそれぞれをDrug_Target_#個別に検索するコードを作成する必要がありますか?

私の非効率的なコード:

TO_GET = ["# Drug_Target_1_ID", \
      "# Drug_Target_2_ID", \
      "# Drug_Target_3_ID", \
      "# Drug_Target_4_ID", \
      "# Drug_Target_5_ID", \
      "# Drug_Target_6_ID", \
      "# Drug_Target_7_ID", \
      "# Drug_Target_8_ID", \
      "# Drug_Target_9_ID", \
      "# Drug_Target_10_ID", \
      "# Drug_Target_11_ID", \
      "# Drug_Target_12_ID", \
      "# Drug_Target_13_ID", \
      "# Drug_Target_14_ID", \
      "# Drug_Target_15_ID", \
      "# Drug_Target_16_ID", \
      "# Drug_Target_17_ID", \
      "# Drug_Target_18_ID", \
      "# Drug_Target_19_ID", \
      "# Drug_Target_20_ID", \
      "# Drug_Target_21_ID", \
      "# Drug_Target_22_ID", \
      "# Drug_Target_23_ID", \
      "# Drug_Target_24_ID", \
      "# Drug_Target_25_ID", \
      "# Drug_Target_26_ID", \
      "# Drug_Target_27_ID", \
      "# Drug_Target_28_ID", \
      "# Drug_Target_29_ID", \
      "# Drug_Target_30_ID", \
      "# Drug_Target_1_Name", \
      "# Drug_Target_2_Name", \
      "# Drug_Target_3_Name", \
      "# Drug_Target_4_Name", \
      "# Drug_Target_5_Name", \
      "# Drug_Target_6_Name", \
      "# Drug_Target_7_Name", \
      "# Drug_Target_8_Name", \
      "# Drug_Target_9_Name", \
      "# Drug_Target_10_Name", \
      "# Drug_Target_11_Name", \
      "# Drug_Target_12_Name", \
      "# Drug_Target_13_Name", \
      "# Drug_Target_14_Name", \
      "# Drug_Target_15_Name", \
      "# Drug_Target_16_Name", \
      "# Drug_Target_17_Name", \
      "# Drug_Target_18_Name", \
      "# Drug_Target_19_Name", \
      "# Drug_Target_20_Name", \
      "# Drug_Target_21_Name", \
      "# Drug_Target_22_Name", \
      "# Drug_Target_23_Name", \
      "# Drug_Target_24_Name", \
      "# Drug_Target_25_Name", \
      "# Drug_Target_26_Name", \
      "# Drug_Target_27_Name", \
      "# Drug_Target_28_Name", \
      "# Drug_Target_29_Name", \
      "# Drug_Target_30_Name", \

じゃあ後で:

      try:
    target_name = drugbank_all[drug]["# Drug_Target_1_Name"]
    target_id= "INSERT INTO TargetID_TargetName (Drug_Target_1_ID, Drug_Target_1_Name) VALUES(\"%s\", \"%s\");" % (accession[0], target_name[0])
    cur.execute (target_id)
    print "target_id done"
except KeyError:
    print "Drug target 1 not found, skipping..."
    pass

...それぞれについて?

このアプローチの問題:

  • ずさんな
  • 重複を無視しない
  • Drug_Target がいくつあるのかわかりません。指定した数だけ試行します (これはあまり簡潔ではありません)。

質問:

  1. 解析してそれに応じて解析する前に、DRUGCARD ごとにいくつの Drug_targets があるかを検索する for ループを実行する方法はありますか?
  2. リストをすばやくスキャンして、番号が既に割り当てられているかどうかを確認し、エントリを無視する方法はありますか?

更新: 実際のデータ

#BEGIN_DRUGCARD DB00097

# AHFS_Codes:
Not Available

# ATC_Codes:
G03GA08

# Absorption:
The mean absolute bioavailability following a single subcutaneous injection to healthy     female volunteers is about 40%.     

...

# Drug_Target_1_HPRD_ID:
01073

# Drug_Target_1_ID:
148

# Drug_Target_1_Locus:
2p21

# Drug_Target_1_Molecular_Weight:
78617

# Drug_Target_1_Name:
Lutropin-choriogonadotropic hormone receptor

...

# Drug_Target_2_HGNC_ID:
HGNC:3969

# Drug_Target_2_HPRD_ID:
00639

# Drug_Target_2_ID:
430

# Drug_Target_2_Locus:
2p21-p16

# Drug_Target_2_Molecular_Weight:
78296

# Drug_Target_2_Name:
Follicle-stimulating hormone receptor
4

0 に答える 0