刚才小玩了下,不错,。net确实很方便,很强大

Using Entrez Utilities Web Service with C# and MS Visual Studio 2005

Updated: May 20, 2008

Entrez Utilities Web Service has been tested with:

  • Microsoft Windows XP Professional (Service Pack2)
  • Microsoft .NET Framework Version 2.0.50727
  • Microsoft Visual Studio 2005 Version 8.0.50727.42

NCBI Entrez Utilities Web Service using MS Visual Studio 2005.

To create Windows application:

  1. Press Ctrl+Shift+N or Select File menu, then New, and then click Project to open the New Project dialog.
  2. Select Visual C# in Project types list.
  3. Select Windows Application in Templates list.
  4. Click OK to create a new project.
  5. Select View menu and then Toolbox to open a Toolbox window.
  6. From the Toolbox, drag a Textbox and a Button to the design surface of Form1.
  7. On the Project menu, click Add Web Reference.
  8. In the URL field of the Add Web Reference dialog, type the URL http://eutils.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/eutils.wsdl
  9. Click the Go button to retrieve information about the XML Web service.
  10. In the Web reference name field, rename the Web reference to eUtils.
  11. Click Add Reference to add a Web reference for the target XML Web service.
  12. Double-click the button on Form1 to create an event-handling method for this button.
  13. In the button1_Click method enter the following code:

    // eInfo utility returns a list of available databases

    try

    {

    eUtils.eUtilsService serv = new eUtils.eUtilsService();

    // call NCBI EInfo utility

    eUtils.eInfoResult res = serv.run_eInfo(new eUtils.eInfoRequest());

    // results output

    textBox1.Text = "";

    for(int i=0; i<res.DbList.Items.Length; i++) textBox1.Text += res.DbList.Items[i]+"\r\n";

    }

    catch (Exception eee)

    {

    textBox1.Text = eee.ToString();

    }

  14. Build and run application.

eutils_MS.wsdl file.

Click on parameter to get its description.

Click on method name to see the example of use.

public Result run_eGquery(eGqueryRequest params)eGqueryRequest class properties:  - String term  - String tool  - String emailpublic eInfoResult run_eInfo(eInfoRequest params)eInfoRequest class properties:  - String db  - String tool  - String emailpublic eLinkResult run_eLink(eLinkRequest params)eLinkRequest class properties: - String db- String[] id- String reldate- String mindate- String maxdate- String datetype- String term- String dbfrom- String WebEnv- String query_key- String cmd- String tool- String emailpublic ePostResult run_ePost(ePostRequest params) ePostRequest class properties:  - String db  - String id  - String tool  - String emailpublic eSearchResult run_eSearch(eSearchRequest params)eSearchRequest class properties:  - String db  - String term  - String WebEnv  - String query_key  - String usehistory  - String tool  - String email  - String field  - String reldate  - String mindate  - String maxdate  - String datetype  - String retstart  - String retmax  - String rettype  - String sort public eSpellResult run_eSpell(eSpellRequest params) eSpellRequest class properties: - String db  - String term  - String tool  - String emailpublic eSummaryResult run_eSummary(eSummaryRequest params)eSummaryRequest class properties:  - String db  - String id  - String WebEnv  - String query_key  - String retstart  - String retmax  - String tool  - String emailpublic eFetchResult run_eFetch(eFetchRequest params)eFetchRequest class properties: - String db - String id - String WebEnv - String query_key - String tool - String email - String retstart - String retmax - String rettype燩roperties available for Sequence databases: - String rettype - String strand - String seq_start - String seq_stop - String complexity - String report

EGQuery

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

// call NCBI EGQuery utility

eUtils.eGqueryRequest req = new eUtils.eGqueryRequest();

req.term = "mouse";

eUtils.Result res = serv.run_eGquery(req);

// results output

textBox1.Text = "Search term: " + res.Term + "\r\n";

textBox1.Text += "Results: \r\n";

for(int i=0; i<res.eGQueryResult.ResultItem.Length; i++)

{

textBox1.Text += "  " + res.eGQueryResult.ResultItem[i].DbName +

": " + res.eGQueryResult.ResultItem[i].Count + "\r\n";

}

}

catch (Exception eee)

{

textBox1.Text = eee.ToString();

}

EInfo

// eInfo utility returns an PMC db info

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

// call NCBI EInfo utility

eUtils.eInfoRequest req = new eUtils.eInfoRequest();

req.db = "pmc";

eUtils.eInfoResult res = serv.run_eInfo(req);

// results output

textBox1.Text = "DbName: " + res.DbInfo.DbName + "\r\n" +

"Description: " + res.DbInfo.Description + "\r\n" +

"MenuName: " + res.DbInfo.MenuName + "\r\n";

}

catch (Exception eee)

{

textBox1.Text = eee.ToString();

}

ELink

// example retrieves links from Nuccore for to Protein GI 48819,7140345

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

string[] id = {"48819,7140345"};

// call NCBI ELink utility

eUtils.eLinkRequest req = new eUtils.eLinkRequest();

req.db = "protein";

req.id = id;

req.dbfrom = "nuccore";

eUtils.eLinkResult res = serv.run_eLink(req);

// results output

textBox1.Text = "";

for(int i=0; i<res.LinkSet.Length; i++)

{

textBox1.Text += "Links from " + res.LinkSet[i].DbFrom +

" to " + res.LinkSet[i].LinkSetDb[0].DbTo + "\r\n";

textBox1.Text += "  " + res.LinkSet[i].DbFrom + " id(s): ";

for(int k=0; k<res.LinkSet[i].IdList.Length; k++)

{

textBox1.Text +=  res.LinkSet[i].IdList[k].Value + " ";

}

textBox1.Text += "\r\n";

textBox1.Text += "  " + res.LinkSet[i].LinkSetDb[0].DbTo + " id(s): ";

for(int k=0; k<res.LinkSet[i].LinkSetDb[0].Link.Length; k++)

{

textBox1.Text += res.LinkSet[i].LinkSetDb[0].Link[k].Id.Value + " ";

}

textBox1.Text += "\r\n----------------------\r\n";

}

}

catch (Exception eee)

{

textBox1.Text = eee.ToString();

}

EPost

// Put ID list to history for later use

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

// call NCBI ESpell utility

eUtils.ePostRequest req = new eUtils.ePostRequest();

req.db = "pubmed";

req.id = "11237011";

eUtils.ePostResult res = serv.run_ePost(req);

// results output

textBox1.Text = "WebEnv: "+res.WebEnv  + "\r\n";

textBox1.Text += "QueryKey: "+res.QueryKey;

}

catch (Exception eee)

{

textBox1.Text = eee.ToString();

}

ESearch

// search in PubMed Central for stem cells in free fulltext articles

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

// call NCBI ESearch utility

// NOTE: search term should be URL encoded

eUtils.eSearchRequest req = new eUtils.eSearchRequest();

req.db = "pmc";

req.sort = "SortDate";

req.term = "stem+cells+AND+free+fulltext[filter]";

req.RetStart = "0";

req.RetMax = "15";

eUtils.eSearchResult res = serv.run_eSearch(req);

// results output

textBox1.Text = "Original query: stem cells AND free fulltext[filter]\r\n";

textBox1.Text += "Found ids: " + res.Count+"\r\n";

textBox1.Text += "First " + res.RetMax +" ids: ";

for(int i=0; i<res.IdList.Length; i++)

{

textBox1.Text += res.IdList[i] + " ";

}

}

catch (Exception eee)

{

textBox1.Text = eee.ToString();

}

ESpell

// retrieves spelling suggestions

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

// call NCBI ESpell utility

eUtils.eSpellRequest req = new eUtils.eSpellRequest();

req.db = "pubmed";

req.term = "mouss";

eUtils.eSpellResult res = serv.run_eSpell(req);

// results output

textBox1.Text = "Misspelled word: "+res.Query + "\r\n";

textBox1.Text += "Corrected word: "+res.CorrectedQuery;

}

catch (Exception eee)

{

textBox1.Text = eee.ToString();

}

ESummary

// retreives document Summaries by list of primary IDs

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

// call NCBI ESummary utility

eUtils.eSummaryRequest req = new eUtils.eSummaryRequest();

req.db = "nlmcatalog";

req.id = "905";

eUtils.eSummaryResult res = serv.run_eSummary(req);

// results output

textBox1.Text = "";

for(int i=0; i<res.DocSum.Length; i++)

{

textBox1.Text += "ID: "+res.DocSum[i].Id+"\r\n";

for(int k=0; k<res.DocSum[i].Items.Length; k++)

{

textBox1.Text += "  "+res.DocSum[i].Items[k].Name +": "+res.DocSum[i].Items[k].ItemContent + "\r\n";

}

textBox1.Text += "-----------------------\r\n\r\n";

}

}

catch (Exception eee)

{

textBox1.Text = eee.ToString();

}

EFetch

To fetch data from one of the supported databases add the corresponding Web Reference to project. For example, for taxonomy database in Add Web Reference dialog type http://eutils.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/efetch_taxon.wsdl in URL field and eFetchTaxon in Web Reference Name.

Taxonomy database example:

// fetch a record from Taxonomy database

try

{

eFetchTaxon.eFetchTaxonService serv = new eFetchTaxon.eFetchTaxonService();

// call NCBI EFetch utility

eFetchTaxon.eFetchRequest req = new eFetchTaxon.eFetchRequest();

req.id = "9685";

eFetchTaxon.eFetchResult res = serv.run_eFetch(req);

// results output

textBox1.Text = res.TaxaSet[0].ScientificName + ": " +

res.TaxaSet[0].Division + " (" +

res.TaxaSet[0].Rank + ")\r\n";

}

catch (Exception eee)

{

textBox1.Text = eee.ToString();

}

Search, Link & Fetch example

Add two Web References to project for http://eutils.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/eutils.wsdl and http://eutils.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/efetch_seq.wsdl files. Name them eUtils and eFetchSeq correspondingly.

String[] ids = { "" };

String fetchIds = "";

// STEP #1: search in PubMed for "cat"

//

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

// call NCBI ESearch utility

// NOTE: search term should be URL encoded

eUtils.eSearchRequest req = new eUtils.eSearchRequest();

req.db = "pubmed";

req.sort = "PublicationDate";

req.term = "cat+AND+pubmed_nuccore[sb]";

req.RetMax = "5";

eUtils.eSearchResult res = serv.run_eSearch(req);

// store UIDs for use in ELink

int N = res.IdList.Length;

for (int i = 0; i < N; i++)

{

if (i > 0) ids[0] += ",";

ids[0] += res.IdList[i];

}

textBox1.Text = "Search in PubMed for \"cat\" returned " + res.Count + " hits\r\n";

textBox1.Text += "Search links in nuccore for the first 5 UIDs: " + ids[0]+"\r\n\r\n";

}

catch (Exception eee)

{

textBox1.Text += eee.ToString();

}

// STEP #2: get links in nucleotide database (nuccore)

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

// call NCBI ELink utility

eUtils.eLinkRequest req = new eUtils.eLinkRequest();

req.db = "nuccore";

req.id = ids;

req.dbfrom = "pubmed";

eUtils.eLinkResult res = serv.run_eLink(req);

// read result and create a list of UIDs to fetch

for (int i = 0; i < res.LinkSet[0].LinkSetDb[0].Link.Length; i++)

{

if (i > 0) fetchIds += ",";

fetchIds += res.LinkSet[0].LinkSetDb[0].Link[i].Id.Value;

textBox1.Text += "ELink returned the following UIDs from nuccore: " + fetchIds + "\r\n\r\n";

}

catch (Exception eee)

{

textBox1.Text += eee.ToString();

}

// STEP #3: fetch records from nuccore

//

try

{

eFetchSeq.eFetchSequenceService serv = new eFetchSeq.eFetchSequenceService();

// call NCBI ESpell utility

eFetchSeq.eFetchRequest req = new eFetchSeq.eFetchRequest();

req.db = "nuccore";

req.id = fetchIds;

eFetchSeq.eFetchResult res = serv.run_eFetch(req);

// results output

for (int i = 0; i < res.GBSet.GBSeq.Length; i++)

{

textBox1.Text += "Organism: " + res.GBSet.GBSeq[i].GBSeq_organism + "\r\n";

textBox1.Text += "Locus: " + res.GBSet.GBSeq[i].GBSeq_locus + "\r\n";

textBox1.Text += "Definition: " + res.GBSet.GBSeq[i].GBSeq_definition + "\r\n";

textBox1.Text += "----------------------\r\n\r\n";

}

}

catch (Exception eee)

{

textBox1.Text += eee.ToString();

}

Using WebEnv & QueryKey example

Add two Web References to project for http://eutils.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/eutils.wsdl and http://eutils.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/efetch_pubmed.wsdl files. Name them eUtils and eFetchPubmed correspondingly.

String WebEnv = "";

String query_key = "";

// STEP #1: search in PubMed for "cat"

//

try

{

eUtils.eUtilsService serv = new eUtils.eUtilsService();

// call NCBI ESearch utility

// NOTE: search term should be URL encoded

eUtils.eSearchRequest req = new eUtils.eSearchRequest();

req.db = "pubmed";

req.term = "cat";

req.usehistory = "y";

eUtils.eSearchResult res = serv.run_eSearch(req);

// store WebEnv & QueryKey for use in eFetch

WebEnv = res.WebEnv;

query_key = res.QueryKey;

textBox1.Text = "Search in PubMed for \"cat\" returned " + res.Count + " hits\r\n";

textBox1.Text += "WebEnv: " + WebEnv + "\r\n";

textBox1.Text += "QueryKey: " + query_key + "\r\n\r\n";

}

catch (Exception eee)

{

textBox1.Text += eee.ToString();

}

// STEP #2: fetch 5 records from pubmed starting from record #10

//

try

{

eFetchPubmed.eFetchPubmedService serv = new eFetchPubmed.eFetchPubmedService();

// call NCBI EFetch utility

eFetchPubmed.eFetchRequest req = new eFetchPubmed.eFetchRequest();

req.WebEnv = WebEnv;

req.query_key = query_key;

req.retstart = "10";

req.retmax = "5";

eFetchPubmed.eFetchResult res = serv.run_eFetch(req);

// results output

for (int i = 0; i < res.PubmedArticleSet.Length; i++)

{

textBox1.Text += "Title: " + res.PubmedArticleSet[i].MedlineCitation.Article.ArticleTitle + "\r\n";

textBox1.Text += "Abstract: " + res.PubmedArticleSet[i].MedlineCitation.Article.Abstract.AbstractText + "\r\n";

textBox1.Text += "--------------------------\r\n\r\n";

}

}

catch (Exception eee)

{

textBox1.Text += eee.ToString();

}

最新文章

  1. Spring注解@Resource和@Autowired区别对比
  2. javascript事件分类解析
  3. codeforces B. Valera and Contest 解题报告
  4. js闭包的产生
  5. 自定义表单input
  6. 通过注册表查找oracle_home的位置
  7. 杂技之sharpdevelop调试aps.net
  8. OpenJudge/Poj 1844 Sum
  9. c3p0链接池
  10. iOS开发之Autolayout
  11. web工程导入新环境的注意事项
  12. ReactiveSwift源码解析(五) SignalProtocol的observe()、Map、Filter延展实现
  13. stm32之不定长接收
  14. Android Studio手动打包
  15. js 字符与ASCII码互转
  16. jQuery 学习(1)——认识jQuery
  17. JAVA中字符串比较equals()和equalsIgnoreCase()的区别
  18. python操作串口
  19. [UE4]反射
  20. oracle数据库冷恢复

热门文章

  1. [Linux] 终端设置只显示当前目录及终端美化
  2. asp.net Npoi 使用
  3. vim 强大复制链接
  4. JAVA多线程----用--死锁
  5. Android学习笔记之Android Studio下创建menu布局文件
  6. Hive中日期处理
  7. flask第七篇——URL与视图函数的映射
  8. static类和no static类的区别
  9. functool.wraps and functools.partial
  10. python模块--如何相互调用自己写的模块