陋室铭
永远也不要停下学习的脚步(大道至简至易)

posts - 2169,comments - 570,views - 413万

刚才小玩了下,不错,。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();

  }

posted on   宏宇  阅读(663)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2017-06-01 记录一下学习Android的小知识
2012-06-01 金融世界
2009-06-01 不要忘了Console.Write和Debug.Write(拾遗)
2009-06-01 服务器得到客户端值(小结)
2009-06-01 form验证的图片(小技巧)
2007-06-01 IIS下中文名的文件无法下载问题的解决方案
2007-06-01 在Global中Application_Error事件处理错误信息
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示