2016-05-05 7 views
1

Biopython(Entrez)を、受託番号(GI *ではない)を返す検索条件で使用しようとしています。ここでBiopythonで検索用語を使用して受託番号を返す

私のコードの小さな抜粋です。

from Bio import Entrez 

Entrez.email = 'myemailaddress' 
search_phrase = 'Escherichia coli[organism]) AND (complete genome[keyword])' 
handle = Entrez.esearch(db='nuccore', term=search_phrase, retmax=100, rettype='acc', retmode='text') 
result = Entrez.read(handle) 
handle.close() 
gi_numbers = result['IdList'] 
print(gi_numbers) 

'745369752'、 '910228862'、 '187736741'、 '802098270'、 '802098269'、 '802098267'、 '387610477' 「544579032」、「544574430」、「215485161」、「 」、「387823261」、「387605479」、「641687520」、「641682562」、 「594009615」、「557270520」、「313848522」、「309700213」、 、 '284919779'、 、 '544345556'、 '544340954'、 '144661'、 '51773702'、 '202957457'、 '202957451'、 '172051323'、

私はGIからアクセッションに変換できると確信していますが、追加の手順を避けるといいですね。どのような魔法の断片が欠けていますか?

ありがとうございます。

* NCBIは、NCBIのウェブサイトでdocs for esearchてみると、使用可能な唯一の2 rettypeのあるGI番号に

答えて

3

を段階的に廃止され、特に以来 - uilist、現在取得しているデフォルトのXMLフォーマットであることが解析されています( Entrez.read())とcount(これはresultの完全な内容を参照してください)という値を表示します。正確な意味は不明です。これはアイテムの総数を表していないためですIdList ...

いずれにせよ、 Entrez.esearch()rettyperetmodeのいずれかの値をとりますが、またはcountxmlまたはjsonモードに戻します(アクセスIDなし、何もない)。

Entrez.efetch()は、照会しているDBに応じてall sorts of cool stuffに戻ります。欠点は、もちろん、あなたがあなたのアクセッションIDを取得するために、あなたは2つのクエリを実行する必要があると思いますので、一の以上のIDによってではなく、検索文字列で照会する必要があるということです。

search_phrase = "Escherichia coli[organism]) AND (complete genome[keyword])" 
handle = Entrez.esearch(db="nuccore", term=search_phrase, retmax=100) 
result = Entrez.read(handle) 
handle.close() 
fetch_handle = Entrez.efetch(db="nuccore", id=results["IdList"], rettype="acc", retmode="text") 
acc_ids = [id.strip() for id in fetch_handle] 
fetch_handle.close() 
print(acc_ids) 

を与えます

[ 'HF572917.2'、 'NZ_HF572917.1'、 'NC_010558.1'、 'NZ_HG941720.1'、 'NZ_HG941719.1'、 'NZ_HG941718.1'、 'NC_017633.1'、「NC_022371 「NC_011611.1」、「NZ_HG738867.1」、「NC_012892.2」、「NC_017626.1」、「HG941719.1」、「HG941718.1」、「HG941720.1」、 '、' HG738867.1 '、' AM946981.2 '、' FN649414.1 '、' FN554766.1 '、' FM180568.1 '、' HG428756.1 '、' HG428755.1 '、' M37402.1 ' 'AJ304858.2'、 'FM206294.1'、 'FM206293.1'、 'AM886293.1']

私はあなたの質問に満足に答えても大したことではありませんが、残念ながら答えは「魔法はありません」と思います。

+0

私は欠けていたパラメータがあったに違いないと思っていましたが、あなたのアプローチは確かに受け入れやすい方法です。それは完璧に働いています - どうもありがとうございます。 – cer

+0

@cer助けて嬉しいです。あなたは 'esearch'を使ってアクセスIDを返す方法があると思うので、私はドキュメントとグーグルを調べるのに多くの時間を費やしましたが、何も見つかりませんでした。私はあなたの目的のためにこれがうまくいきました。 – MattDMo

関連する問題