2016-05-23 13 views
0
from Bio import Entrez 
accessions = ['NM_001195662','NM_001289467','NM_008866'] 
list1 = [] 
for i in accessions: 
    Entrez.email = "[email protected]" 
    handle = Entrez.efetch(db="nucleotide", id= i , rettype='gb', retmode='xml') 
    record = Entrez.read(handle) 
    #print record 
    dict1= record[0]["GBSeq_feature-table"] 
    dict2 = dict1[1]["GBFeature_quals"] 
    insert = [] 
    insert.append(i) 
    insert.append(dict2[0]['GBQualifier_value']) 
    insert.append(dict2[2]['GBQualifier_value']) 
    insert1 = tuple(insert) 
    #print insert1 
    list1.append(insert1) 
print list1 

出力:解析コードの出力がすべて似ているわけではありません。わからないNCBIヌクレオチドXMLを解析する場合、同期

[('NM_001195662', 'Rp1', 'retinitis pigmentosa 1 (human)'), ('NM_001289467', 'Sox17', 'GeneID:20671'), ('NM_008866', 'Lypla1', 'lysophospholipase 1')] 

私はリストにしているからすると、遺伝子記号および遺伝子を取得することを置く特定のソースからのアクセッション番号のリストを取るしようとしています遺伝子の受託番号、遺伝子記号、遺伝子名の順にリストに追加する。しかし、NCBIヌクレオチドxmlからのデータを解析するとき、各クエリーについての出力は同じではない。遺伝子名であるはずのGeneIDを私に渡してください。私の出力のすべてが普遍的にフォーマットされていることを確認するにはどうすればよいですか?

+0

答えがあなたの問題を解決しましたか? –

+0

それは間違いありませんでした。それは有り難いです。遅く応答しないと申し訳ありません。 – george135

+0

全く問題ありません。それがうまくいった:) –

答えて

0

はあなたに注意してもらうまで

for j in range(len(dict2)): 
    if dict2[j].get('GBQualifier_name') == 'note': 
     insert.append(dict2[j]['GBQualifier_value']) 

と遺伝子名は、セクションを繰り返すことで、noteラベル付けされたセクションにすべき隠れているコード

insert.append(dict2[2]['GBQualifier_value']) 

のこのラインを交換してみてください常に正しい遺伝子名を得る。


サイドノート: あなたはシーケンスの多くのためにそれを実行した場合、dict1dict2をマージしてみてください、あなただけのdict2を作成するdict1を必要としています。

関連する問題