2013-11-14 65 views
1

我想從特定的生物項目NCBI數據庫檢索編碼蛋白質序列。這可以通過Web瀏覽器以某種方式實現。例如,您可以找到您感興趣的特定生物項目,並在關聯蛋白質上點擊「咔嗒」: http://www.ncbi.nlm.nih.gov/genome/proteins/994?project_id=207383,它們允許您查看BioProject「207383」和Genome「994」中的所有蛋白質。我想用python自動獲取thoses蛋白質序列。Ncbi蛋白質數據庫,如何從特定的生物學項目獲取蛋白質序列(python腳本)

爲了做到這一點,我使用了NCBI的「電子工具」。主要是「elink.fcgi?」它允許從數據庫的特定UID(可以說是BioProject UID)獲取數據庫的所有UID(可以說是「Protein」)。所以這裏是我的entrez的URL請求:
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=bioproject&linkname=bioproject_protein&id=207383
然後,我得到一個蛋白質UID的列表,這是偉大的,因爲我需要這些,我的下一個請求與efetch.fcgi? 「E-效用」。這個請求會讓我得到我需要的一切。

好的,所以一切都很好,所有的工作都很好但是,我從我的「elink.fcgi?」得到的蛋白質UID的數量。請求與基於手動網絡瀏覽器的搜索顯示的蛋白質數量不同。更糟糕的是,在查詢這些問題的起源時,您會看到來自更高分類羣的缺失序列或序列(它們與BioProject沒有任何關聯)。

這裏是一個例子:當python請求得到3957蛋白質UID時,這篇文章的第一個鏈接顯示4014個序列的數量。

我嘗試了一些其他方法,例如獲取從分類標準UID鏈接的所有蛋白質UID。這通常會給你更多的順序比想要的,因爲有不同的生物工程(也給你一些雙打不同的名字和相同的Fasta)。

有沒有辦法做到這一點,遷移工作?

回答

2

我也發現與NCBI合作非常令人沮喪。我很驚訝這樣的數據源甚至沒有給我們提供一個乾淨利落的下載方式。相反,它提供了一些可怕的交叉鏈接,並讓用戶自己決定整個事情。

我的解決辦法是從這個帖子

How to Download Bacterial Genomes Using the Entrez API

一定變化的分貝 「nuccore」 和rettype爲 「fasta_cds_aa」。還要檢查下載的fasta文件的分類標識,以確定它確實是你要求的壓力(這最後一個弄糟了我的大時間,很難學到的教訓)。