好久沒更新了,這里都長草了。。。
總結下Eutils的用法,參考《E-utilities Quick Start》,沒時間看英文的可以參考下。
簡介
Eutils全稱是The Entrez Programming Utilities (E-utilities),是由八個服務器端程序組成的一套編程工具,它提供用於訪問NCBI Entrez查詢和數據庫系統的穩定接口。 這八個工具包括Einfo、ESearch、EPost、ESummary、EFetch、ELink、EGQuery、ESpell(詳見表1)。通過這些工具,你可以訪問NCBI Entrez所包含的序列、三維結構、文獻等所有38個數據庫。
表1. 八種Eutils工具
Eutils Name |
Entry |
Required Parameters |
Optional Parameters |
Return Format |
EInfo |
einfo.fcgi |
db |
xml |
|
ESearch |
esearch.fcgi |
db term |
usehistory WebEnv query_key retstart retmax rettype field datetype reldate mindate, maxdate |
xml |
EPost |
epost.fcgi |
db id |
WebEnv QueryKey |
xml |
ESummary |
esummary.fcgi |
db id WebEnv query_key |
retstart retmax version |
xml |
EFetch |
efetch.fcgi |
db id WebEnv query_key |
retmode retstart retmax rettype strand seq_start seq_stop complexity |
xml/text/asn (詳情見表2) |
ELink |
elink.fcgi |
db dbfrom cmd id WebEnv query_key |
linkname term holding datetype reldate mindate, maxdate |
xml |
EGQuery |
egquery.fcgi |
term |
xml |
|
ESpell |
espell.fcgi |
db term |
xml |
訪問地址
Eutils工具使用固定URL地址的形式進行訪問,每個工具都有一個固定的訪問地址BaseURL,都以EutilsURL開始。
EutilsURL:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/
如:EInfo 的訪問地址為:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/einfo.fcgi
即:BaseURL=EutilsURL + Entry(一個以工具名稱命名的Fasta CGI 文件,擴展名為fcgi。什么是Fasta CGI?。。。其實我也不了解)
使用限制
每秒查詢次數不能超過3次,大型查詢限制在周末和工作日的9:00 PM~5:00 AM,超過次限制會被封IP,除非給eutilities@ncbi.nlm.nih.gov發郵件注冊使用eutils服務的軟件名稱tool和email地址,並在使用服務時以URL參數的形式傳入。大量操作最好還是注冊一下比較好。
使用示例
通過設置不同的URL參數獲取不同的結果,八個工具參數列表如下圖所示,參數分為兩種,必須參數和可選參數,返回文件格式大多為xml。
- EInfo示例
示例1:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/einfo.fcgi
示例2:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/einfo.fcgi?db=protein
示例1沒有傳入參數將列出所有的支持數據庫,即示例2中db參數的名字;
示例2將列出protein數據庫的基本信息。
- Esearch示例
示例1:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=protein&term=dnapol
示例2:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?term=dnapol
示例3:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=protein&term=dnapol&usehistory=y
示例4:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=protein&term=virus&query_key=1&WebEnv=NCID_1_55320436_
130.14.18.48_5553_1335062251_525363903&usehistory=y
示例1傳入必須參數,所查詢的數據庫名稱db和要查詢的關鍵詞term;示例2僅傳入要查詢的關鍵詞term,並不是由於db為非必須參數,而是因為db的默認值是pubmed,所以示例2將查詢以dnapol為關鍵詞查詢pubmed數據庫;
示例3使用可選usehistory參數將在服務器端產生一個查詢歷史記錄,結果中將生成WebEnv和query_key值,下一次使用ESearch、ESummary等操作可利用這些參數在這一次查詢結果基礎上進行操作,這也是Eutils最強大的地方,可以方便的建立自己的工作流程;
示例4中即使用示例3中的查詢結果重新查詢以virus為關鍵詞的條目,這等價於將示例3中的“term=dnapol”替換為“term=dnapol+virus”的查詢結果。
- EPost示例
示例1:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/epost.fcgi?db=protein&id=15718680,157427902,119703751
示例2:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/epost.fcgi?db=protein&id=15718680,157427902,119703751&WebEnv=NCID_1_25983036_
165.112.9.24_5553_1335063999_246386066
示例1將三個蛋白質數據庫的id號上傳到服務器,結果中將生成WebEnv和query_key值,以備后續操作使用;
示例2在給定的WebEnv歷史記錄上添加給定id號;注:在使用其他Eutils工具,如EFetch,id參數條目數超過限制時,只能使用EPost,先上傳需要的id,然后在所使用工具中傳入EPost結果中的WebEnv和query_key值。
- ESummary示例
示例2:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=protein&query_key=1&WebEnv=NCID_1_25983036_
165.112.9.24_5553_1335063999_246386066
示例1列出給定id號的摘要信息;
示例2列出給定查詢歷史記錄中的摘要信息。
注:ESummary中db為必選參數,id和(query_key+WebEnv)二選一。
- EFetch示例
示例1:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=protein&id=15718680,157427902,119703751
示例1以text ASN.1格式返回給定id號的蛋白序列文件;
示例2以text fasta格式返回給定id號的蛋白序列文件;
示例3以xml fasta格式返回給定id號的蛋白序列文件。
注:EFetch是獲取數據庫文件的常用工具,示例1中沒有給定rettype和retmode參數,默認為text ASN.1格式,示例2中retmode參數默認為text,示例3中retmode設置為xml,返回xml格式的fasta文件。各數據庫支持的返回參數見表2。在EFetch中使用ESearch結果中的query_key和WebEnv參數,可輕松實現普通的Entrez下載操作。
表2. EFetch中各數據庫支持的retmode和rettype值
Record Type |
&rettype |
&retmode |
db = biosample |
||
Full record XML |
full, default |
xml, default |
Full record text |
full, default |
text |
db = biosystems |
||
Full record XML |
xml, default |
xml, default |
db = gds |
||
Summary |
summary, default |
text, default |
db = gene |
||
text ASN.1 |
null |
asn.1, default |
XML |
null |
xml |
Gene table |
gene_table |
text |
db = homologene |
||
text ASN.1 |
null |
asn.1, default |
XML |
null |
xml |
Alignment scores |
alignmentscores |
text |
FASTA |
fasta |
text |
HomoloGene |
homologene |
text |
db = mesh |
||
Full record |
full, default |
text, default |
db = nuccore, nucest, nucgss, protein or popset |
||
text ASN.1 |
null |
text, default |
binary ASN.1 |
null |
asn.1 |
Full record in XML |
native |
xml |
Accession number(s) |
acc |
text |
FASTA |
fasta |
text |
TinySeq XML |
fasta |
xml |
SeqID string |
seqid |
text |
Additional options for db = nuccore, nucest, nucgss or popset |
||
GenBank flat file |
gb |
text |
GBSeq XML |
gb |
xml |
INSDSeq XML |
gbc |
xml |
Additional option for db = nuccore and protein |
||
Feature table |
ft |
text |
Additional option for db = nuccore |
||
GenBank flat file with full sequence (contigs) |
gbwithparts |
text |
CDS nucleotide FASTA |
fasta_cds_na |
text |
CDS protein FASTA |
fasta_cds_aa |
text |
Additional option for db = nucest |
||
EST report |
est |
text |
Additional option for db = nucgss |
||
GSS report |
gss |
text |
Additional options for db = protein |
||
GenPept flat file |
gp |
text |
GBSeq XML |
gp |
xml |
INSDSeq XML |
gpc |
xml |
db = pmc |
||
XML |
null |
xml, default |
MEDLINE |
medline |
text |
db = pubmed |
||
text ASN.1 |
null |
asn.1, default |
XML |
null |
xml |
MEDLINE |
medline |
text |
PMID list |
uilist |
text |
Abstract |
abstract |
text |
db = sequences |
||
text ASN.1 |
null |
text, default |
Accession number(s) |
acc |
text |
FASTA |
fasta |
text |
SeqID string |
seqid |
text |
db = snp |
||
text ASN.1 |
null |
asn.1, default |
XML |
null |
xml |
Flat file |
flt |
text |
FASTA |
fasta |
text |
RS Cluster report |
rsr |
text |
SS Exemplar list |
ssexemplar |
text |
Chromosome report |
chr |
text |
Genotype XML |
genxml |
xml |
Summary |
docset |
text |
UID list |
uilist |
text or xml |
db = sra |
||
XML |
full, default |
xml, default |
db = taxonomy |
||
XML |
null |
xml, default |
TaxID list |
uilist |
text or xml |
- ELink示例
示例1:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=protein&db=gene&id=15718680,157427902
示例1將返回給定的蛋白id所對應的基因的id;示例2將返回和文章20210808相似的pubmedID,並給出對應的相似性分數。
注:ELink是eutils中一個強大的跨庫查詢工具,通過cmd參數可以實現各種各樣的map功能。如示例1中,cmd默認參數是neighbor,實現簡單的將蛋白id映射到對應的基因id的功能。示例2中neighbor_score實現相似文章的搜索。cmd參數的詳細功能見表3。
表3. Elink中cmd參數功能詳解
參數 |
功能 |
neighbor (default) |
返回另一個數據庫中和給定UID對應的UID。如不設置db相當於設置db=pubmed(默認值)。下同1 |
neighbor_score |
返回同一數據庫中和給定UID相似的UID列表及相似性分數。如不設置db相當於設置與dbfrom相同的值。下同2 |
neighbor_history |
將以neighbor為參數返回的結果存入歷史記錄服務器,並返回 query_key 和WebEnv。同1 |
acheck |
返回給定UID的所有可能鏈接方式。如不設置db相當於選中所有。 |
ncheck |
判斷同一個數據庫中是否存在與給定的UID相關的鏈接。同2,忽略db設置 |
lcheck |
判斷給定的UID是否存在鏈出鏈接。同2,忽略db設置 |
llinks |
列出給定UID的所有非圖書館鏈出鏈接及對應屬性。同2,忽略db設置 |
llinkslib |
列出給定UID的所有鏈出鏈接及對應屬性,包含圖書館鏈接。同2,忽略db設置 |
prlinks |
列出給定UID的首選鏈出鏈接及對應屬性,在設置retmode=ref情況下直接跳轉到鏈接網頁。同2,忽略db設置 |
- EGQuery示例
示例1:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/egquery.fcgi?term=asthma
示例1返回所有數據庫中含有關鍵詞asthma的條目數
注:EGQuery為全局查詢,和在Entrez中選擇所有數據庫查詢的結果相同。
- ESpell示例
示例1:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/espell.fcgi?db=pubmed&term=asthmaa+OR+alergies
示例1返回對三個關鍵詞的拼寫建議,asthmaa被替換為asthma,OR為邏輯詞不進行替換,alergies被替換為allergies。
注:ESpell為拼寫建議工具,會根據關鍵詞的相似性進行建議,方便關鍵詞的糾錯和相關關鍵詞的推薦。
部分通用參數解釋
db:查詢的數據庫名稱。和Entrez下拉菜單中顯示的名稱不一樣,所支持的所有值可通過EInfo(http://eutils.ncbi.nlm.nih.gov/entrez/eutils/einfo.fcgi)查看;
term:查詢的關鍵詞。和Entrez查詢相似,可使用邏輯操作詞AND,OR,NOT以及[acession]、[organism]等以字段限定詞等(具體可參見Entrez Help),但是中間的空格要以“+”替代,其他特殊符號要轉換為URL編碼(如引號“編碼為%22;井號#編碼為%23)。
WebEnv:歷史記錄環境編號。 ESearch的usehistory=y參數、EPost、ELink的cmd=neighbor_history參數都會產生一個WebEnv。后續操作傳入次參數將大大減少查詢工作量。
query_key:歷史記錄環境下的查詢編號。第一次生成WebEnv的結果的query_key為1,在此WebEnv環境下的下一個操作結果的query_key為2,后續操作依次遞增。
retstart:返回結果在查詢結果中的起始位置。默認為0,配合retmax實現分頁顯示。
retmax:返回結果條目數最大值。默認為20。
rettype:返回數據類型。不同的工具有不同的可選值。ESearch的可選類型為uilist(默認)和count(只返回查詢結果數目),EFetch可參加表2。
retmode:返回數據方式。詳見表2。
datetype:限定日期的類型。限定reldate, mindate, maxdate的日期類型,不同的數據庫有不同的可選值,常見的為mdat(modification date)、pdat(publication date)、edat (Entrez date)。
reldate:相對於當前時間的天數。返回過去多少天內的數據。
mindate, maxdate:時間間隔。返回由最小日期和最大日期限定的時間間隔中的數據,必須同時使用,格式為YYYY/MM/DD,或者YYYY, YYYY/MM。
其他參數解釋
field:ESearch中term的限定字段。如[accession]、[title]等,設置此參數后,term中的所有關鍵詞將只查詢指定字段。
version:指定所使用Esummary的版本號。
strand:指定EFetch中DNA鏈的類型,正義為1,反義為2。
seq_start:指定EFetch中返回序列的起始位點。
seq_stop:指定EFetch中返回序列的終止位點。
complexity:指定EFetch中返回數據的內容。許多序列數據和其他數據存儲在一起,組成一個大的數據結構或BLOB(二進制大對象)。指定該參數可選擇返回哪些數據內容。詳見表4。
linkname:限定ELink中限制返回的鏈接類型,如gene_snp_genegenotype只返回所有鏈接中genegenotype子類。
holding:限定ELink中鏈出鏈接的提供商。
表4. EFetch中complexity值與返回的數據內容
Value of complexity |
Data returned for each requested GI |
0 |
entire blob |
1 |
bioseq |
2 |
minimal bioseq-set |
3 |
minimal nuc-prot |
4 |
minimal pub-set |
結語
這里根據前一段時間使用和學習Eutils的經歷,參考《Entrez Programming Utilities Help》一書對Eutils的用法做了初步的總結,不可避免有錯誤,歡迎指正。
本文未涉及返回結果處理和編程部分,后面考慮是否寫一下相關文章。
參考鏈接
《Entrez Programming Utilities Help》: http://www.ncbi.nlm.nih.gov/books/NBK25501/
《Entrez Help》: http://www.ncbi.nlm.nih.gov/books/NBK3837/