Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 763d6289e1351f2d34257ce697a3ccb7 > files > 497

biopython-doc-1.47-2mdv2008.1.x86_64.rpm

<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>Bio.EUtils.ThinClient</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

      <th class="navbar" width="100%"></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="Bio-module.html">Package&nbsp;Bio</a> ::
        <a href="Bio.EUtils-module.html">Package&nbsp;EUtils</a> ::
        Module&nbsp;ThinClient
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="Bio.EUtils.ThinClient-pysrc.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<h1 class="epydoc">Source Code for <a href="Bio.EUtils.ThinClient-module.html">Module Bio.EUtils.ThinClient</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-docstring">"""Low-level interface to NCBI's EUtils for Entrez search and retrieval.</tt> </tt>
<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-docstring">For higher-level interfaces, see DBIdsClient (which works with a set</tt> </tt>
<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-docstring">of database identifiers) and HistoryClient (which does a much better</tt> </tt>
<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-docstring">job of handling history).</tt> </tt>
<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-docstring">There are five classes of services:</tt> </tt>
<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-docstring">  ESearch - search a database</tt> </tt>
<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-docstring">  EPost - upload a list of indicies for further use</tt> </tt>
<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-docstring">  ESummary - get document summaries for a given set of records</tt> </tt>
<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">  EFetch - get the records translated to a given format</tt> </tt>
<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">  ELink - find related records in other databases</tt> </tt>
<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">You can find more information about them at</tt> </tt>
<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring">  http://www.ncbi.nlm.nih.gov/entrez/query/static/eutils_help.html</tt> </tt>
<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">but that document isn't very useful.  Perhaps the following is better.</tt> </tt>
<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-docstring">EUtils offers a structured way to query Entrez, get the results in</tt> </tt>
<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-docstring">various formats, and get information about related documents.  The way</tt> </tt>
<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-docstring">to start off is create an EUtils object.</tt> </tt>
<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; from Bio import EUtils</tt> </tt>
<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; from Bio.EUtils.ThinClient import ThinClient</tt> </tt>
<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; eutils = ThinClient.ThinClient()</tt> </tt>
<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; </tt> </tt>
<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-docstring">You can search Entrez with the "esearch" method.  This does a query on</tt> </tt>
<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-docstring">the server, which generates a list of identifiers for records that</tt> </tt>
<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-docstring">matched the query.  However, not all the identifiers are returned.</tt> </tt>
<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-docstring">You can request only a subset of the matches (using the 'retstart' and</tt> </tt>
<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-docstring">'retmax') terms.  This is useful because searches like 'cancer' can</tt> </tt>
<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-docstring">have over 1.4 million matches.  Most people would rather change the</tt> </tt>
<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-docstring">query or look at more details about the first few hits than wait to</tt> </tt>
<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-docstring">download all the identifiers before doing anything else.</tt> </tt>
<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-docstring">The esearch method, and indeed all these methods, returns a</tt> </tt>
<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-docstring">'urllib.addinfourl' which is an HTTP socket connection that has</tt> </tt>
<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-docstring">already parsed the HTTP header and is ready to read the data from the</tt> </tt>
<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-docstring">server.</tt> </tt>
<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring">For example, here's a query and how to use it</tt> </tt>
<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-docstring">  Search in PubMed for the term cancer for the entrez date from the</tt> </tt>
<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-docstring">  last 60 days and retrieve the first 10 IDs and translations using</tt> </tt>
<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-docstring">  the history parameter.</tt> </tt>
<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; infile = eutils.esearch("cancer",</tt> </tt>
<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">...                         daterange = EUtils.WithinNDays(60, "edat"),</tt> </tt>
<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring">...                         retmax = 10)</tt> </tt>
<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt;</tt> </tt>
<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print infile.read()</tt> </tt>
<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring">&lt;?xml version="1.0"?&gt;</tt> </tt>
<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">&lt;!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD eSearchResult, 11 May 2002//EN" "http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eSearch_020511.dtd"&gt;</tt> </tt>
<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring">&lt;eSearchResult&gt;</tt> </tt>
<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Count&gt;7228&lt;/Count&gt;</tt> </tt>
<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;RetMax&gt;10&lt;/RetMax&gt;</tt> </tt>
<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;RetStart&gt;0&lt;/RetStart&gt;</tt> </tt>
<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;IdList&gt;</tt> </tt>
<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12503096&lt;/Id&gt;</tt> </tt>
<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12503075&lt;/Id&gt;</tt> </tt>
<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12503073&lt;/Id&gt;</tt> </tt>
<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12503033&lt;/Id&gt;</tt> </tt>
<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12503030&lt;/Id&gt;</tt> </tt>
<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12503028&lt;/Id&gt;</tt> </tt>
<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12502932&lt;/Id&gt;</tt> </tt>
<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12502925&lt;/Id&gt;</tt> </tt>
<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12502881&lt;/Id&gt;</tt> </tt>
<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12502872&lt;/Id&gt;</tt> </tt>
<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;/IdList&gt;</tt> </tt>
<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;TranslationSet&gt;</tt> </tt>
<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Translation&gt;</tt> </tt>
<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;From&gt;cancer%5BAll+Fields%5D&lt;/From&gt;</tt> </tt>
<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;To&gt;(%22neoplasms%22%5BMeSH+Terms%5D+OR+cancer%5BText+Word%5D)&lt;/To&gt;</tt> </tt>
<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/Translation&gt;</tt> </tt>
<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;/TranslationSet&gt;</tt> </tt>
<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;TranslationStack&gt;</tt> </tt>
<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;TermSet&gt;</tt> </tt>
<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Term&gt;"neoplasms"[MeSH Terms]&lt;/Term&gt;</tt> </tt>
<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Field&gt;MeSH Terms&lt;/Field&gt;</tt> </tt>
<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Count&gt;1407151&lt;/Count&gt;</tt> </tt>
<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Explode&gt;Y&lt;/Explode&gt;</tt> </tt>
<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/TermSet&gt;</tt> </tt>
<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;TermSet&gt;</tt> </tt>
<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Term&gt;cancer[Text Word]&lt;/Term&gt;</tt> </tt>
<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Field&gt;Text Word&lt;/Field&gt;</tt> </tt>
<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Count&gt;382919&lt;/Count&gt;</tt> </tt>
<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Explode&gt;Y&lt;/Explode&gt;</tt> </tt>
<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/TermSet&gt;</tt> </tt>
<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;OP&gt;OR&lt;/OP&gt;</tt> </tt>
<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;TermSet&gt;</tt> </tt>
<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Term&gt;2002/10/30[edat]&lt;/Term&gt;</tt> </tt>
<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Field&gt;edat&lt;/Field&gt;</tt> </tt>
<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Count&gt;-1&lt;/Count&gt;</tt> </tt>
<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Explode&gt;Y&lt;/Explode&gt;</tt> </tt>
<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/TermSet&gt;</tt> </tt>
<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;TermSet&gt;</tt> </tt>
<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Term&gt;2002/12/29[edat]&lt;/Term&gt;</tt> </tt>
<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Field&gt;edat&lt;/Field&gt;</tt> </tt>
<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Count&gt;-1&lt;/Count&gt;</tt> </tt>
<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Explode&gt;Y&lt;/Explode&gt;</tt> </tt>
<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/TermSet&gt;</tt> </tt>
<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;OP&gt;RANGE&lt;/OP&gt;</tt> </tt>
<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;OP&gt;AND&lt;/OP&gt;</tt> </tt>
<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;/TranslationStack&gt;</tt> </tt>
<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-docstring">&lt;/eSearchResult&gt;</tt> </tt>
<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt;</tt> </tt>
<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-docstring">You get a raw XML input stream which you can process in many ways.</tt> </tt>
<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-docstring">(The appropriate DTDs are included in the subdirectory "DTDs" and see</tt> </tt>
<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-docstring">also the included POM reading code.)</tt> </tt>
<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt class="py-docstring">    WARNING! As of this writing (2002/12/3) NCBI returns their</tt> </tt>
<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-docstring">    XML encoded as Latin-1 but their processing instruction says</tt> </tt>
<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"><tt class="py-docstring">    it is UTF-8 because they leave out the "encoding" attribute.</tt> </tt>
<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-docstring">    Until they fix it you will need to recode the input stream</tt> </tt>
<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-docstring">    before processing it with XML tools, like this</tt> </tt>
<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt class="py-docstring">        import codecs</tt> </tt>
<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-docstring">        infile = codecs.EncodedFile(infile, "utf-8", "iso-8859-1")</tt> </tt>
<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt class="py-docstring">The XML fields are mostly understandable:</tt> </tt>
<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt class="py-docstring">  Count -- the total number of matches from this search</tt> </tt>
<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"><tt class="py-docstring">  RetMax -- the number of &lt;ID&gt; values returned in this subset</tt> </tt>
<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-docstring">  RetStart -- the start position of this subset in the list of</tt> </tt>
<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"><tt class="py-docstring">      all matches</tt> </tt>
<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-docstring">  IDList and ID -- the identifiers in this subset</tt> </tt>
<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt class="py-docstring">  TranslationSet / Translation -- if the search field is not</tt> </tt>
<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"><tt class="py-docstring">      explicitly specified ("qualified"), then the server will</tt> </tt>
<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-docstring">      apply a set of hueristics to improve the query.  Eg, in</tt> </tt>
<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-docstring">      this case "cancer" is first parsed as</tt> </tt>
<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-docstring">        cancer[All Fields]</tt> </tt>
<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-docstring">      then turned into the query</tt> </tt>
<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-docstring">        "neoplasms"[MeSH Terms] OR cancer[Text Word]</tt> </tt>
<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt class="py-docstring">      Note that these terms are URL escaped.</tt> </tt>
<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"><tt class="py-docstring">      For details on how the translation is done, see</tt> </tt>
<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-docstring">http://www.ncbi.nlm.nih.gov/entrez/query/static/help/pmhelp.html#AutomaticTermMapping</tt> </tt>
<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"><tt class="py-docstring">  TranslationStack -- The (possibly 'improved' query) fully</tt> </tt>
<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-docstring">      parsed out and converted into a postfix (RPN) notation.</tt> </tt>
<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-docstring">      The above example is written in the Entrez query language as</tt> </tt>
<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"><tt class="py-docstring">        ("neoplasms"[MeSH Terms] OR cancer[Text Word]) AND</tt> </tt>
<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"><tt class="py-docstring">                     2002/10/30:2002/12/29[edat]</tt> </tt>
<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"><tt class="py-docstring">      Note that these terms are *not* URL escaped.  Nothing like</tt> </tt>
<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"><tt class="py-docstring">      a bit of inconsistency for the soul.</tt> </tt>
<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-docstring">      The "Count" field shows how many matches were found for each</tt> </tt>
<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-docstring">      term of the expression.  I don't know what "Explode" does.</tt> </tt>
<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-docstring">Let's get more information about the first record, which has an id of</tt> </tt>
<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-docstring">12503096.  There are two ways to query for information, one uses a set</tt> </tt>
<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-docstring">of identifiers and the other uses the history.  I'll talk about the</tt> </tt>
<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-docstring">history one in a bit.  To use a set of identifiers you need to make a</tt> </tt>
<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-docstring">DBIds object containing the that list.</tt> </tt>
<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; dbids = EUtils.DBIds("pubmed", ["12503096"])</tt> </tt>
<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt;</tt> </tt>
<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-docstring">Now get the summary using dbids</tt> </tt>
<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; infile = eutils.esummary_using_dbids(dbids)</tt> </tt>
<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print infile.read()</tt> </tt>
<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-docstring">&lt;?xml version="1.0"?&gt;</tt> </tt>
<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-docstring">&lt;!DOCTYPE eSummaryResult PUBLIC "-//NLM//DTD eSummaryResult, 11 May 2002//EN" "http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eSummary_020511.dtd"&gt;</tt> </tt>
<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"><tt class="py-docstring">&lt;eSummaryResult&gt;</tt> </tt>
<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line"><tt class="py-docstring">&lt;DocSum&gt;</tt> </tt>
<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Id&gt;12503096&lt;/Id&gt;</tt> </tt>
<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="PubDate" Type="Date"&gt;2003 Jan 30&lt;/Item&gt;</tt> </tt>
<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="Source" Type="String"&gt;Am J Med Genet&lt;/Item&gt;</tt> </tt>
<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="Authors" Type="String"&gt;Coyne JC, Kruus L, Racioppo M, Calzone KA, Armstrong K&lt;/Item&gt;</tt> </tt>
<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="Title" Type="String"&gt;What do ratings of cancer-specific distress mean among women at high risk of breast and ovarian cancer?&lt;/Item&gt;</tt> </tt>
<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="Volume" Type="String"&gt;116&lt;/Item&gt;</tt> </tt>
<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="Pages" Type="String"&gt;222-8&lt;/Item&gt;</tt> </tt>
<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="EntrezDate" Type="Date"&gt;2002/12/28 04:00&lt;/Item&gt;</tt> </tt>
<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="PubMedId" Type="Integer"&gt;12503096&lt;/Item&gt;</tt> </tt>
<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="MedlineId" Type="Integer"&gt;22390532&lt;/Item&gt;</tt> </tt>
<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="Lang" Type="String"&gt;English&lt;/Item&gt;</tt> </tt>
<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="PubType" Type="String"&gt;&lt;/Item&gt;</tt> </tt>
<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="RecordStatus" Type="String"&gt;PubMed - in process&lt;/Item&gt;</tt> </tt>
<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="Issue" Type="String"&gt;3&lt;/Item&gt;</tt> </tt>
<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="SO" Type="String"&gt;2003 Jan 30;116(3):222-8&lt;/Item&gt;</tt> </tt>
<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="DOI" Type="String"&gt;10.1002/ajmg.a.10844&lt;/Item&gt;</tt> </tt>
<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="JTA" Type="String"&gt;3L4&lt;/Item&gt;</tt> </tt>
<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="ISSN" Type="String"&gt;0148-7299&lt;/Item&gt;</tt> </tt>
<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="PubId" Type="String"&gt;&lt;/Item&gt;</tt> </tt>
<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="PubStatus" Type="Integer"&gt;4&lt;/Item&gt;</tt> </tt>
<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="Status" Type="Integer"&gt;5&lt;/Item&gt;</tt> </tt>
<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="HasAbstract" Type="Integer"&gt;1&lt;/Item&gt;</tt> </tt>
<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Item Name="ArticleIds" Type="List"&gt;</tt> </tt>
<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Item Name="PubMedId" Type="String"&gt;12503096&lt;/Item&gt;</tt> </tt>
<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Item Name="DOI" Type="String"&gt;10.1002/ajmg.a.10844&lt;/Item&gt;</tt> </tt>
<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Item Name="MedlineUID" Type="String"&gt;22390532&lt;/Item&gt;</tt> </tt>
<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;/Item&gt;</tt> </tt>
<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-docstring">&lt;/DocSum&gt;</tt> </tt>
<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-docstring">&lt;/eSummaryResult&gt;</tt> </tt>
<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt;</tt> </tt>
<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-docstring">This is just a summary.  To get the full details, including an</tt> </tt>
<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-docstring">abstract (if available) use the 'efetch' method.  I'll only print a</tt> </tt>
<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-docstring">bit to convince you it has an abstract.</tt> </tt>
<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; s = eutils.efetch_using_dbids(dbids).read()</tt> </tt>
<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print s[587:860]</tt> </tt>
<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"><tt class="py-docstring">&lt;ArticleTitle&gt;What do ratings of cancer-specific distress mean among women at high risk of breast and ovarian cancer?&lt;/ArticleTitle&gt;</tt> </tt>
<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"><tt class="py-docstring">&lt;Pagination&gt;</tt> </tt>
<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"><tt class="py-docstring">&lt;MedlinePgn&gt;222-8&lt;/MedlinePgn&gt;</tt> </tt>
<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-docstring">&lt;/Pagination&gt;</tt> </tt>
<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-docstring">&lt;Abstract&gt;</tt> </tt>
<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"><tt class="py-docstring">&lt;AbstractText&gt;Women recruited from a hereditary cancer registry provided</tt> </tt>
<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt;</tt> </tt>
<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-docstring">Suppose instead you want the data in a text format.  Different</tt> </tt>
<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"><tt class="py-docstring">databases have different text formats.  For example, PubMed has a</tt> </tt>
<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"><tt class="py-docstring">"docsum" format which gives just the summary of a document and</tt> </tt>
<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"><tt class="py-docstring">"medline" format as needed for a citation database.  To get these, use</tt> </tt>
<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"><tt class="py-docstring">a "text" "retmode" ("return mode") and select the appropriate</tt> </tt>
<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line"><tt class="py-docstring">"rettype" ("return type").</tt> </tt>
<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-docstring">Here are examples of those two return types</tt> </tt>
<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print eutils.efetch_using_dbids(dbids, "text", "docsum").read()[:497]</tt> </tt>
<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"><tt class="py-docstring">1:  Coyne JC, Kruus L, Racioppo M, Calzone KA, Armstrong K.</tt> </tt>
<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"><tt class="py-docstring">What do ratings of cancer-specific distress mean among women at high risk of breast and ovarian cancer?</tt> </tt>
<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line"><tt class="py-docstring">Am J Med Genet. 2003 Jan 30;116(3):222-8.</tt> </tt>
<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line"><tt class="py-docstring">PMID: 12503096 [PubMed - in process]</tt> </tt>
<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print eutils.efetch_using_dbids(dbids, "text", "medline").read()[:369]</tt> </tt>
<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-docstring">UI  - 22390532</tt> </tt>
<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"><tt class="py-docstring">PMID- 12503096</tt> </tt>
<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"><tt class="py-docstring">DA  - 20021227</tt> </tt>
<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"><tt class="py-docstring">IS  - 0148-7299</tt> </tt>
<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"><tt class="py-docstring">VI  - 116</tt> </tt>
<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-docstring">IP  - 3</tt> </tt>
<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring">DP  - 2003 Jan 30</tt> </tt>
<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">TI  - What do ratings of cancer-specific distress mean among women at high risk</tt> </tt>
<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-docstring">      of breast and ovarian cancer?</tt> </tt>
<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-docstring">PG  - 222-8</tt> </tt>
<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-docstring">AB  - Women recruited from a hereditary cancer registry provided ratings of</tt> </tt>
<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-docstring">      distress associated with different aspects of high-risk status</tt> </tt>
<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; </tt> </tt>
<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line"><tt class="py-docstring">It's also possible to get a list of records related to a given</tt> </tt>
<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"><tt class="py-docstring">article.  This is done through the "elink" method.  For example,</tt> </tt>
<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line"><tt class="py-docstring">here's how to get the list of PubMed articles related to the above</tt> </tt>
<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"><tt class="py-docstring">PubMed record.  (Again, truncated because otherwise there is a lot of</tt> </tt>
<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line"><tt class="py-docstring">data.)</tt> </tt>
<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print eutils.elink_using_dbids(dbids).read()[:590]</tt> </tt>
<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"><tt class="py-docstring">&lt;?xml version="1.0"?&gt;</tt> </tt>
<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"><tt class="py-docstring">&lt;!DOCTYPE eLinkResult PUBLIC "-//NLM//DTD eLinkResult, 11 May 2002//EN" "http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eLink_020511.dtd"&gt;</tt> </tt>
<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line"><tt class="py-docstring">&lt;eLinkResult&gt;</tt> </tt>
<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line"><tt class="py-docstring">&lt;LinkSet&gt;</tt> </tt>
<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;DbFrom&gt;pubmed&lt;/DbFrom&gt;</tt> </tt>
<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;IdList&gt;</tt> </tt>
<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;12503096&lt;/Id&gt;</tt> </tt>
<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;/IdList&gt;</tt> </tt>
<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;LinkSetDb&gt;</tt> </tt>
<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;DbTo&gt;pubmed&lt;/DbTo&gt;</tt> </tt>
<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;LinkName&gt;pubmed_pubmed&lt;/LinkName&gt;</tt> </tt>
<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Link&gt;</tt> </tt>
<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Id&gt;12503096&lt;/Id&gt;</tt> </tt>
<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Score&gt;2147483647&lt;/Score&gt;</tt> </tt>
<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/Link&gt;</tt> </tt>
<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Link&gt;</tt> </tt>
<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Id&gt;11536413&lt;/Id&gt;</tt> </tt>
<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Score&gt;30817790&lt;/Score&gt;</tt> </tt>
<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/Link&gt;</tt> </tt>
<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Link&gt;</tt> </tt>
<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Id&gt;11340606&lt;/Id&gt;</tt> </tt>
<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Score&gt;29939219&lt;/Score&gt;</tt> </tt>
<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/Link&gt;</tt> </tt>
<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Link&gt;</tt> </tt>
<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Id&gt;10805955&lt;/Id&gt;</tt> </tt>
<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Score&gt;29584451&lt;/Score&gt;</tt> </tt>
<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/Link&gt;</tt> </tt>
<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt;</tt> </tt>
<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-docstring">For a change of pace, let's work with the protein database to learn</tt> </tt>
<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line"><tt class="py-docstring">how to work with history.  Suppose I want to do a multiple sequene</tt> </tt>
<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-docstring">alignment of bacteriorhodopsin with all of its neighbors, where</tt> </tt>
<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-docstring">"neighbors" is defined by NCBI.  There are good programs for this -- I</tt> </tt>
<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"><tt class="py-docstring">just need to get the records in the right format, like FASTA.</tt> </tt>
<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-docstring">The bacteriorhodopsin I'm interested in is BAA75200, which is</tt> </tt>
<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"><tt class="py-docstring">GI:4579714, so I'll start by asking for its neighbors.</tt> </tt>
<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; results = eutils.elink_using_dbids(</tt> </tt>
<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line"><tt class="py-docstring">...             EUtils.DBIds("protein", ["4579714"]),</tt> </tt>
<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"><tt class="py-docstring">...             db = "protein").read()</tt> </tt>
<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print results[:454]</tt> </tt>
<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line"><tt class="py-docstring">&lt;?xml version="1.0"?&gt;</tt> </tt>
<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"><tt class="py-docstring">&lt;!DOCTYPE eLinkResult PUBLIC "-//NLM//DTD eLinkResult, 11 May 2002//EN" "http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eLink_020511.dtd"&gt;</tt> </tt>
<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line"><tt class="py-docstring">&lt;eLinkResult&gt;</tt> </tt>
<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"><tt class="py-docstring">&lt;LinkSet&gt;</tt> </tt>
<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;DbFrom&gt;protein&lt;/DbFrom&gt;</tt> </tt>
<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;IdList&gt;</tt> </tt>
<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;4579714&lt;/Id&gt;</tt> </tt>
<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;/IdList&gt;</tt> </tt>
<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;LinkSetDb&gt;</tt> </tt>
<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;DbTo&gt;protein&lt;/DbTo&gt;</tt> </tt>
<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;LinkName&gt;protein_protein&lt;/LinkName&gt;</tt> </tt>
<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Link&gt;</tt> </tt>
<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Id&gt;4579714&lt;/Id&gt;</tt> </tt>
<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Score&gt;2147483647&lt;/Score&gt;</tt> </tt>
<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/Link&gt;</tt> </tt>
<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Link&gt;</tt> </tt>
<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Id&gt;11277596&lt;/Id&gt;</tt> </tt>
<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Score&gt;1279&lt;/Score&gt;</tt> </tt>
<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/Link&gt;</tt> </tt>
<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt;</tt> </tt>
<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-docstring">Let's get all the &lt;Id&gt; fields.  (While the following isn't a good way</tt> </tt>
<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-docstring">to parse XML, it is easy to understand and works well enough for this</tt> </tt>
<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-docstring">example.)  Note that I remove the first &lt;Id&gt; because that's from the</tt> </tt>
<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-docstring">query and not from the results.</tt> </tt>
<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; import re</tt> </tt>
<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; ids = re.findall(r"&lt;Id&gt;(\d+)&lt;/Id&gt;", results)</tt> </tt>
<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; ids = ids[1:]</tt> </tt>
<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; len(ids)</tt> </tt>
<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"><tt class="py-docstring">222</tt> </tt>
<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; dbids = EUtils.DBIds("protein", ids)</tt> </tt>
<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; </tt> </tt>
<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"><tt class="py-docstring">That's a lot of records.  I could use 'efetch_using_dbids' but there's</tt> </tt>
<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line"><tt class="py-docstring">a problem with that.  Efetch uses the HTTP GET protocol to pass</tt> </tt>
<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line"><tt class="py-docstring">information to the EUtils server.  ("GET" is what's used when you type</tt> </tt>
<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line"><tt class="py-docstring">a URL in the browser.)  Each id takes about 9 characters, so the URL</tt> </tt>
<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line"><tt class="py-docstring">would be over 2,000 characters long.  This may not work on some</tt> </tt>
<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line"><tt class="py-docstring">systems, for example, some proxies do not support long URLs.  (Search</tt> </tt>
<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line"><tt class="py-docstring">for "very long URLs" for examples.)</tt> </tt>
<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-docstring">Instead, we'll upload the list to the server then fetch the FASTA</tt> </tt>
<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line"><tt class="py-docstring">version using the history.</tt> </tt>
<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line"><tt class="py-docstring">The first step is to upload the data.  We want to put that into the</tt> </tt>
<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line"><tt class="py-docstring">history so we set 'usehistory' to true.  There's no existing history</tt> </tt>
<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line"><tt class="py-docstring">so the webenv string is None.</tt> </tt>
<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print eutils.epost(dbids, usehistory = 1, webenv = None).read()</tt> </tt>
<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line"><tt class="py-docstring">&lt;?xml version="1.0"?&gt;</tt> </tt>
<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-docstring">&lt;!DOCTYPE ePostResult PUBLIC "-//NLM//DTD ePostResult, 11 May 2002//EN" "http://www.ncbi.nlm.nih.gov/entrez/query/DTD/ePost_020511.dtd"&gt;</tt> </tt>
<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"><tt class="py-docstring">&lt;ePostResult&gt;</tt> </tt>
<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;QueryKey&gt;1&lt;/QueryKey&gt;</tt> </tt>
<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;WebEnv&gt;%7BPgTHRHFBsJfC%3C%5C%5C%5B%3EAfJCKQ%5Ey%60%3CGkH%5DH%5E%3DJHGBKAJ%3F%40CbCiG%3FE%3C&lt;/WebEnv&gt;</tt> </tt>
<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"><tt class="py-docstring">&lt;/ePostResult&gt;</tt> </tt>
<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt;</tt> </tt>
<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-docstring">This says that the identifiers were saved as query #1, which will be</tt> </tt>
<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"><tt class="py-docstring">used later on as the "query_key" field.  The WebEnv is a cookie (or</tt> </tt>
<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"><tt class="py-docstring">token) used to tell the server where to find that query.  The WebEnv</tt> </tt>
<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"><tt class="py-docstring">changes after every history-enabled ESearch or EPost so you'll need to</tt> </tt>
<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"><tt class="py-docstring">parse the output from those to get the new WebEnv field.  You'll also</tt> </tt>
<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line"><tt class="py-docstring">need to unquote it since it is URL-escaped.</tt> </tt>
<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-docstring">Also, you will need to pass in the name of the database used for the</tt> </tt>
<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-docstring">query in order to access the history.  Why?  I don't know -- I figure</tt> </tt>
<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-docstring">the WebEnv and query_key should be enough to get the database name.</tt> </tt>
<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; import urllib</tt> </tt>
<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; webenv = urllib.unquote("%7BPgTHRHFBsJfC%3C%5C%5C%5B%3EAfJCKQ%5Ey%60%3CGkH%5DH%5E%3DJHGBKAJ%3F%40CbCiG%3FE%3C")</tt> </tt>
<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print webenv</tt> </tt>
<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-docstring">{PgTHRHFBsJfC&lt;\\[&gt;AfJCKQ^y`&lt;GkH]H^=JHGBKAJ?@CbCiG?E&lt;</tt> </tt>
<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt;</tt> </tt>
<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"><tt class="py-docstring">Okay, now to get the data in FASTA format.  Notice that I need the</tt> </tt>
<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-docstring">'retmax' in order to include all the records in the result.  (The</tt> </tt>
<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"><tt class="py-docstring">default is 20 records.)</tt> </tt>
<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; fasta = eutils.efetch_using_history("protein", webenv, query_key = "1",</tt> </tt>
<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-docstring">...                                     retmode = "text", rettype = "fasta",</tt> </tt>
<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-docstring">...                                     retmax = len(dbids)).read()</tt> </tt>
<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; fasta.count("&gt;")</tt> </tt>
<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring">222</tt> </tt>
<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print fasta[:694]</tt> </tt>
<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-docstring">&gt;gi|14194475|sp|O93742|BACH_HALSD Halorhodopsin (HR)</tt> </tt>
<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-docstring">MMETAADALASGTVPLEMTQTQIFEAIQGDTLLASSLWINIALAGLSILLFVYMGRNLEDPRAQLIFVAT</tt> </tt>
<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-docstring">LMVPLVSISSYTGLVSGLTVSFLEMPAGHALAGQEVLTPWGRYLTWALSTPMILVALGLLAGSNATKLFT</tt> </tt>
<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-docstring">AVTADIGMCVTGLAAALTTSSYLLRWVWYVISCAFFVVVLYVLLAEWAEDAEVAGTAEIFNTLKLLTVVL</tt> </tt>
<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-docstring">WLGYPIFWALGAEGLAVLDVAVTSWAYSGMDIVAKYLFAFLLLRWVVDNERTVAGMAAGLGAPLARCAPA</tt> </tt>
<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"><tt class="py-docstring">DD</tt> </tt>
<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"><tt class="py-docstring">&gt;gi|14194474|sp|O93741|BACH_HALS4 Halorhodopsin (HR)</tt> </tt>
<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line"><tt class="py-docstring">MRSRTYHDQSVCGPYGSQRTDCDRDTDAGSDTDVHGAQVATQIRTDTLLHSSLWVNIALAGLSILVFLYM</tt> </tt>
<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line"><tt class="py-docstring">ARTVRANRARLIVGATLMIPLVSLSSYLGLVTGLTAGPIEMPAAHALAGEDVLSQWGRYLTWTLSTPMIL</tt> </tt>
<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"><tt class="py-docstring">LALGWLAEVDTADLFVVIAADIGMCLTGLAAALTTSSYAFRWAFYLVSTAFFVVVLYALLAKWPTNAEAA</tt> </tt>
<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"><tt class="py-docstring">GTGDIFGTLRWLTVILWLGYPILWALGVEGFALVDSVGLTSWGYSLLDIGAKYLFAALLLRWVANNERTI</tt> </tt>
<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"><tt class="py-docstring">AVGQRSGRGAIGDPVED</tt> </tt>
<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; </tt> </tt>
<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"><tt class="py-docstring">To round things out, here's a query which refines the previous query.</tt> </tt>
<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"><tt class="py-docstring">I want to get all records from the first search which also have the</tt> </tt>
<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"><tt class="py-docstring">word "Structure" in them.  (My background was originally structural</tt> </tt>
<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line"><tt class="py-docstring">biophysics, whaddya expect?  :)</tt> </tt>
<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; print eutils.search("#1 AND structure", db = "protein", usehistory = 1,</tt> </tt>
<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line"><tt class="py-docstring">...                     webenv = webenv).read()</tt> </tt>
<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"><tt class="py-docstring">&lt;?xml version="1.0"?&gt;</tt> </tt>
<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"><tt class="py-docstring">&lt;!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD eSearchResult, 11 May 2002//EN" "http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eSearch_020511.dtd"&gt;</tt> </tt>
<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"><tt class="py-docstring">&lt;eSearchResult&gt;</tt> </tt>
<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;Count&gt;67&lt;/Count&gt;</tt> </tt>
<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;RetMax&gt;20&lt;/RetMax&gt;</tt> </tt>
<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;RetStart&gt;0&lt;/RetStart&gt;</tt> </tt>
<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;QueryKey&gt;2&lt;/QueryKey&gt;</tt> </tt>
<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;WebEnv&gt;UdvMf%3F%60G%3DIE%60bG%3DGec%3E%3D%3Cbc_%5DgBAf%3EAi_e%5EAJcHgDi%3CIqGdE%7BmC%3C&lt;/WebEnv&gt;</tt> </tt>
<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;IdList&gt;</tt> </tt>
<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;461608&lt;/Id&gt;</tt> </tt>
<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;114808&lt;/Id&gt;</tt> </tt>
<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;1364150&lt;/Id&gt;</tt> </tt>
<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;1363466&lt;/Id&gt;</tt> </tt>
<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;1083906&lt;/Id&gt;</tt> </tt>
<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;99232&lt;/Id&gt;</tt> </tt>
<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;99212&lt;/Id&gt;</tt> </tt>
<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;81076&lt;/Id&gt;</tt> </tt>
<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;114811&lt;/Id&gt;</tt> </tt>
<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;24158915&lt;/Id&gt;</tt> </tt>
<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;24158914&lt;/Id&gt;</tt> </tt>
<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;24158913&lt;/Id&gt;</tt> </tt>
<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;1168615&lt;/Id&gt;</tt> </tt>
<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;114812&lt;/Id&gt;</tt> </tt>
<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;114809&lt;/Id&gt;</tt> </tt>
<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;17942995&lt;/Id&gt;</tt> </tt>
<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;17942994&lt;/Id&gt;</tt> </tt>
<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;17942993&lt;/Id&gt;</tt> </tt>
<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;20151159&lt;/Id&gt;</tt> </tt>
<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;Id&gt;20150922&lt;/Id&gt;</tt> </tt>
<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;/IdList&gt;</tt> </tt>
<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;TranslationSet&gt;</tt> </tt>
<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;/TranslationSet&gt;</tt> </tt>
<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;TranslationStack&gt;</tt> </tt>
<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;TermSet&gt;</tt> </tt>
<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Term&gt;#1&lt;/Term&gt;</tt> </tt>
<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Field&gt;All Fields&lt;/Field&gt;</tt> </tt>
<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Count&gt;222&lt;/Count&gt;</tt> </tt>
<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Explode&gt;Y&lt;/Explode&gt;</tt> </tt>
<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/TermSet&gt;</tt> </tt>
<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;TermSet&gt;</tt> </tt>
<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Term&gt;structure[All Fields]&lt;/Term&gt;</tt> </tt>
<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Field&gt;All Fields&lt;/Field&gt;</tt> </tt>
<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Count&gt;142002&lt;/Count&gt;</tt> </tt>
<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line"><tt class="py-docstring">                        &lt;Explode&gt;Y&lt;/Explode&gt;</tt> </tt>
<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;/TermSet&gt;</tt> </tt>
<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"><tt class="py-docstring">                &lt;OP&gt;AND&lt;/OP&gt;</tt> </tt>
<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line"><tt class="py-docstring">        &lt;/TranslationStack&gt;</tt> </tt>
<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"><tt class="py-docstring">&lt;/eSearchResult&gt;</tt> </tt>
<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; </tt> </tt>
<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"><tt class="py-docstring">One last thing about history.  It doesn't last very long -- perhaps an</tt> </tt>
<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line"><tt class="py-docstring">hour or so.  (Untested.)  You may be able to toss it some keep-alive</tt> </tt>
<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"><tt class="py-docstring">signal every once in a while.  Or you may want to keep </tt> </tt>
<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"><tt class="py-docstring">The known 'db' fields and primary IDs (if known) are</tt> </tt>
<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line"><tt class="py-docstring">  genome -- GI number</tt> </tt>
<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line"><tt class="py-docstring">  nucleotide -- GI number</tt> </tt>
<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line"><tt class="py-docstring">  omim  -- MIM number</tt> </tt>
<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-docstring">  popset -- GI number</tt> </tt>
<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line"><tt class="py-docstring">  protein -- GI number</tt> </tt>
<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"><tt class="py-docstring">  pubmed  -- PMID</tt> </tt>
<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"><tt class="py-docstring">  sequences (not available; this will combine all sequence databases)</tt> </tt>
<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"><tt class="py-docstring">  structure -- MMDB ID</tt> </tt>
<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"><tt class="py-docstring">  taxonomy -- TAXID</tt> </tt>
<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-docstring">The 'field' parameter is different for different databases.  The</tt> </tt>
<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line"><tt class="py-docstring">fields for PubMed are listed at</tt> </tt>
<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"><tt class="py-docstring">http://www.ncbi.nlm.nih.gov/entrez/query/static/help/pmhelp.html#SearchFieldDescriptionsandTags</tt> </tt>
<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"><tt class="py-docstring">  Affiliation -- AD</tt> </tt>
<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line"><tt class="py-docstring">  All Fields -- All</tt> </tt>
<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"><tt class="py-docstring">  Author -- AU</tt> </tt>
<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"><tt class="py-docstring">  EC/RN Number -- RN</tt> </tt>
<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"><tt class="py-docstring">  Entrez Date -- EDAT  (also valid for 'datetype')</tt> </tt>
<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line"><tt class="py-docstring">  Filter -- FILTER</tt> </tt>
<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line"><tt class="py-docstring">  Issue -- IP</tt> </tt>
<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line"><tt class="py-docstring">  Journal Title -- TA</tt> </tt>
<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line"><tt class="py-docstring">  Language -- LA</tt> </tt>
<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line"><tt class="py-docstring">  MeSH Date -- MHDA  (also valid for 'datetype')</tt> </tt>
<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line"><tt class="py-docstring">  MeSH Major Topic -- MAJR</tt> </tt>
<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"><tt class="py-docstring">  MeSH Subheadings -- SH</tt> </tt>
<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line"><tt class="py-docstring">  MeSH Terms -- MH</tt> </tt>
<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line"><tt class="py-docstring">  Pagination -- PG</tt> </tt>
<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line"><tt class="py-docstring">  Personal Name as Subject -- PS</tt> </tt>
<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"><tt class="py-docstring">  Publication Date -- DP  (also valid for 'datetype')</tt> </tt>
<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"><tt class="py-docstring">  Publication Type -- PT</tt> </tt>
<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"><tt class="py-docstring">  Secondary Source ID -- SI</tt> </tt>
<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"><tt class="py-docstring">  Subset -- SB</tt> </tt>
<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-docstring">  Substance Name -- NM</tt> </tt>
<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-docstring">  Text Words -- TW</tt> </tt>
<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-docstring">  Title -- TI</tt> </tt>
<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-docstring">  Title/Abstract -- TIAB</tt> </tt>
<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-docstring">  Unique Identifiers -- UID</tt> </tt>
<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-docstring">  Volume -- VI</tt> </tt>
<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"><tt class="py-docstring">The fields marked as 'datetype' can also be used for date searches.</tt> </tt>
<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-docstring">Date searches can be done in the query (for example, as</tt> </tt>
<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-docstring">   1990/01/01:1999/12/31[edat]</tt> </tt>
<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-docstring">or by passing a WithinNDays or DateRange field to the 'date' parameter</tt> </tt>
<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-docstring">of the search.</tt> </tt>
<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-docstring">Please pay attention to the usage limits!  The are listed at</tt> </tt>
<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-docstring">  http://www.ncbi.nlm.nih.gov/entrez/query/static/eutils_help.html</tt> </tt>
<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-docstring">At the time of this writing they are:</tt> </tt>
<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-docstring">    * Run retrieval scripts on weekends or between 9 PM and 5 AM ET</tt> </tt>
<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-docstring">            weekdays for any series of more than 100 requests.</tt> </tt>
<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-docstring">    * Make no more than one request every 3 seconds.</tt> </tt>
<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-docstring">    * Only 5000 PubMed records may be retrieved in a single day.</tt> </tt>
<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line"><tt class="py-docstring">    * NCBI's Disclaimer and Copyright notice must be evident to users</tt> </tt>
<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-docstring">      of your service.  NLM does not hold the copyright on the PubMed</tt> </tt>
<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-docstring">      abstracts the journal publishers do.  NLM provides no legal</tt> </tt>
<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-docstring">      advice concerning distribution of copyrighted materials, consult</tt> </tt>
<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"><tt class="py-docstring">      your legal counsel.</tt> </tt>
<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"><tt class="py-docstring">(Their disclaimer is at</tt> </tt>
<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"><tt class="py-docstring">       http://www.ncbi.nlm.nih.gov/About/disclaimer.html )</tt> </tt>
<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> <tt class="py-comment"># "  # Emacs cruft</tt> </tt>
<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"> </tt>
<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt><tt class="py-op">,</tt> <tt class="py-name">urllib2</tt><tt class="py-op">,</tt> <tt class="py-name">cStringIO</tt> </tt>
<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Method Bio.Sequencing.Phd._RecordConsumer.time()=Bio.Sequencing.Phd._RecordConsumer-class.html#time"><a title="Bio.Sequencing.Phd._RecordConsumer.time" class="py-name" href="#" onclick="return doclink('link-0', 'time', 'link-0');">time</a></tt> </tt>
<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line"> </tt>
<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable Bio.EUtils.ThinClient.DUMP_URL=Bio.EUtils.ThinClient-module.html#DUMP_URL"><a title="Bio.EUtils.ThinClient.DUMP_URL" class="py-name" href="#" onclick="return doclink('link-1', 'DUMP_URL', 'link-1');">DUMP_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable Bio.EUtils.ThinClient.DUMP_RESULT=Bio.EUtils.ThinClient-module.html#DUMP_RESULT"><a title="Bio.EUtils.ThinClient.DUMP_RESULT" class="py-name" href="#" onclick="return doclink('link-2', 'DUMP_RESULT', 'link-2');">DUMP_RESULT</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"> </tt>
<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"><tt class="py-comment"># These tell NCBI who is using the tool.  They are meant to provide</tt> </tt>
<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># hints to NCBI about how their service is being used and provide a</tt> </tt>
<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># means of getting ahold of the author.</tt> </tt>
<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># To use your own values, pass them in to the EUtils constructor.</tt> </tt>
<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-3" class="py-name" targets="Variable Bio.EUtils.ThinClient.TOOL=Bio.EUtils.ThinClient-module.html#TOOL"><a title="Bio.EUtils.ThinClient.TOOL" class="py-name" href="#" onclick="return doclink('link-3', 'TOOL', 'link-3');">TOOL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"EUtils_Python_client"</tt> </tt>
<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable Bio.EUtils.ThinClient.EMAIL=Bio.EUtils.ThinClient-module.html#EMAIL"><a title="Bio.EUtils.ThinClient.EMAIL" class="py-name" href="#" onclick="return doclink('link-4', 'EMAIL', 'link-4');">EMAIL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"biopython-dev@biopython.org"</tt> </tt>
<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"> </tt>
<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-keyword">assert</tt> <tt class="py-string">" "</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-5" class="py-name"><a title="Bio.EUtils.ThinClient.TOOL" class="py-name" href="#" onclick="return doclink('link-5', 'TOOL', 'link-3');">TOOL</a></tt> </tt>
<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"><tt class="py-keyword">assert</tt> <tt class="py-string">" "</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-6" class="py-name"><a title="Bio.EUtils.ThinClient.EMAIL" class="py-name" href="#" onclick="return doclink('link-6', 'EMAIL', 'link-4');">EMAIL</a></tt> </tt>
<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"> </tt>
<a name="_dbids_to_id_string"></a><div id="_dbids_to_id_string-def"><a name="L549"></a><tt class="py-lineno"> 549</tt> <a class="py-toggle" href="#" id="_dbids_to_id_string-toggle" onclick="return toggle('_dbids_to_id_string');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient-module.html#_dbids_to_id_string">_dbids_to_id_string</a><tt class="py-op">(</tt><tt class="py-param">dbids</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_dbids_to_id_string-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_dbids_to_id_string-expanded"><a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">    <tt class="py-docstring">"""Internal function: convert a list of ids to a comma-seperated string"""</tt> </tt>
<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">    <tt class="py-comment"># NOTE: the server strips out non-numeric characters</tt> </tt>
<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Eg, "-1" is treated as "1".  So do some sanity checking.</tt> </tt>
<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># XXX Should I check for non-digits?</tt> </tt>
<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Are any of the IDs non-integers?</tt> </tt>
<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-7" class="py-name" targets="Variable Bio.EUtils.DBIdsClient.DBIdsLookup.dbids=Bio.EUtils.DBIdsClient.DBIdsLookup-class.html#dbids,Variable Bio.EUtils.Datatypes.CheckLinkSet.dbids=Bio.EUtils.Datatypes.CheckLinkSet-class.html#dbids,Variable Bio.EUtils.Datatypes.LinkSetDb.dbids=Bio.EUtils.Datatypes.LinkSetDb-class.html#dbids,Variable Bio.EUtils.HistoryClient.HistoryLookup.dbids=Bio.EUtils.HistoryClient.HistoryLookup-class.html#dbids"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-7', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">:</tt> </tt>
<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"dbids list must have at least one term"</tt><tt class="py-op">)</tt> </tt>
<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt id="link-8" class="py-name" targets="Variable Bio.MarkovModel.x=Bio.MarkovModel-module.html#x,Variable Bio.Statistics.lowess.x=Bio.Statistics.lowess-module.html#x"><a title="Bio.MarkovModel.x
Bio.Statistics.lowess.x" class="py-name" href="#" onclick="return doclink('link-8', 'x', 'link-8');">x</a></tt> <tt class="py-keyword">in</tt> <tt id="link-9" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-9', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Variable Bio.expressions.fasta.ids=Bio.expressions.fasta-module.html#ids"><a title="Bio.expressions.fasta.ids" class="py-name" href="#" onclick="return doclink('link-10', 'ids', 'link-10');">ids</a></tt><tt class="py-op">:</tt> </tt>
<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">","</tt> <tt class="py-keyword">in</tt> <tt id="link-11" class="py-name"><a title="Bio.MarkovModel.x
Bio.Statistics.lowess.x" class="py-name" href="#" onclick="return doclink('link-11', 'x', 'link-8');">x</a></tt><tt class="py-op">:</tt> </tt>
<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"identifiers cannot contain a comma: %r "</tt> <tt class="py-op">%</tt> </tt>
<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt id="link-12" class="py-name"><a title="Bio.MarkovModel.x
Bio.Statistics.lowess.x" class="py-name" href="#" onclick="return doclink('link-12', 'x', 'link-8');">x</a></tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">    <tt class="py-name">id_string</tt> <tt class="py-op">=</tt> <tt class="py-string">","</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-13" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-13', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="Bio.expressions.fasta.ids" class="py-name" href="#" onclick="return doclink('link-14', 'ids', 'link-10');">ids</a></tt><tt class="py-op">)</tt> </tt>
<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">id_string</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method Bio.Crystal.Chain.count()=Bio.Crystal.Chain-class.html#count,Method Bio.NeuralNetwork.Gene.Pattern.PatternRepository.count()=Bio.NeuralNetwork.Gene.Pattern.PatternRepository-class.html#count,Method Bio.Seq.MutableSeq.count()=Bio.Seq.MutableSeq-class.html#count,Method Bio.Seq.Seq.count()=Bio.Seq.Seq-class.html#count,Function Bio.listfns.count()=Bio.listfns-module.html#count"><a title="Bio.Crystal.Chain.count
Bio.NeuralNetwork.Gene.Pattern.PatternRepository.count
Bio.Seq.MutableSeq.count
Bio.Seq.Seq.count
Bio.listfns.count" class="py-name" href="#" onclick="return doclink('link-15', 'count', 'link-15');">count</a></tt><tt class="py-op">(</tt><tt class="py-string">","</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-16', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="Bio.expressions.fasta.ids" class="py-name" href="#" onclick="return doclink('link-17', 'ids', 'link-10');">ids</a></tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-string">"double checking"</tt> </tt>
<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">id_string</tt> </tt>
</div><a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"> </tt>
<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-comment">#Record the time at module level, in case the user has multiple copies</tt> </tt>
<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#of the ThinClient class in operation at once.</tt> </tt>
<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-18" class="py-name" targets="Variable Bio.EUtils.ThinClient._open_previous=Bio.EUtils.ThinClient-module.html#_open_previous"><a title="Bio.EUtils.ThinClient._open_previous" class="py-name" href="#" onclick="return doclink('link-18', '_open_previous', 'link-18');">_open_previous</a></tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="Bio.Sequencing.Phd._RecordConsumer.time" class="py-name" href="#" onclick="return doclink('link-19', 'time', 'link-0');">time</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="Bio.Sequencing.Phd._RecordConsumer.time" class="py-name" href="#" onclick="return doclink('link-20', 'time', 'link-0');">time</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"> </tt>
<a name="ThinClient"></a><div id="ThinClient-def"><a name="L569"></a><tt class="py-lineno"> 569</tt> <a class="py-toggle" href="#" id="ThinClient-toggle" onclick="return toggle('ThinClient');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html">ThinClient</a><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ThinClient-expanded"><a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">    <tt class="py-docstring">"""Client-side interface to the EUtils services</tt> </tt>
<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"><tt class="py-docstring">    See the module docstring for much more complete information.</tt> </tt>
<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
<a name="ThinClient.__init__"></a><div id="ThinClient.__init__-def"><a name="L574"></a><tt class="py-lineno"> 574</tt> <a class="py-toggle" href="#" id="ThinClient.__init__-toggle" onclick="return toggle('ThinClient.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">                 <tt class="py-param">opener</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">                 <tt class="py-param">tool</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="Bio.EUtils.ThinClient.TOOL" class="py-name" href="#" onclick="return doclink('link-21', 'TOOL', 'link-3');">TOOL</a></tt><tt class="py-op">,</tt> </tt>
<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">                 <tt class="py-param">email</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="Bio.EUtils.ThinClient.EMAIL" class="py-name" href="#" onclick="return doclink('link-22', 'EMAIL', 'link-4');">EMAIL</a></tt><tt class="py-op">,</tt> </tt>
<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">                 <tt class="py-param">baseurl</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient.__init__-expanded"><a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">        <tt class="py-docstring">"""opener = None, tool = TOOL, email = EMAIL, baseurl = ".../eutils/"</tt> </tt>
<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line"><tt class="py-docstring">        'opener' -- an object which implements the 'open' method like a</tt> </tt>
<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"><tt class="py-docstring">             urllib2.OpenDirector.  Defaults to urllib2.build_opener()</tt> </tt>
<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"><tt class="py-docstring">        'tool' -- the term to use for the 'tool' field, used by NCBI to</tt> </tt>
<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"><tt class="py-docstring">             track which programs use their services.  If you write your</tt> </tt>
<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"><tt class="py-docstring">             own tool based on this package, use your own tool name.</tt> </tt>
<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-docstring">        'email' -- a way for NCBI to contact you (the developer, not</tt> </tt>
<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-docstring">             the user!) if there are problems and to tell you about</tt> </tt>
<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"><tt class="py-docstring">             updates or changes to their system.</tt> </tt>
<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"><tt class="py-docstring">        'baseurl' -- location of NCBI's EUtils directory.  Shouldn't need</tt> </tt>
<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"><tt class="py-docstring">             to change this at all.</tt> </tt>
<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">         </tt>
<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tool</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-string">" "</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tool</tt><tt class="py-op">:</tt> </tt>
<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"No spaces allowed in 'tool'"</tt><tt class="py-op">)</tt> </tt>
<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">email</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-string">" "</tt> <tt class="py-keyword">in</tt> <tt class="py-name">email</tt><tt class="py-op">:</tt> </tt>
<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"No spaces allowed in 'email'"</tt><tt class="py-op">)</tt> </tt>
<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"> </tt>
<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">opener</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">            <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">build_opener</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"> </tt>
<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt class="py-name">opener</tt> </tt>
<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tool</tt> <tt class="py-op">=</tt> <tt class="py-name">tool</tt> </tt>
<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">email</tt> <tt class="py-op">=</tt> <tt class="py-name">email</tt> </tt>
<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">baseurl</tt> <tt class="py-op">=</tt> <tt class="py-name">baseurl</tt> </tt>
</div><a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"> </tt>
<a name="ThinClient._fixup_query"></a><div id="ThinClient._fixup_query-def"><a name="L609"></a><tt class="py-lineno"> 609</tt> <a class="py-toggle" href="#" id="ThinClient._fixup_query-toggle" onclick="return toggle('ThinClient._fixup_query');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#_fixup_query">_fixup_query</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">query</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient._fixup_query-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient._fixup_query-expanded"><a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt class="py-docstring">"""Internal function to add and remove fields from a query"""</tt> </tt>
<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">        <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name" targets="Method Bio.Blast.NCBIStandalone._HSPConsumer.query()=Bio.Blast.NCBIStandalone._HSPConsumer-class.html#query,Function Bio.Entrez.query()=Bio.Entrez-module.html#query,Function Bio.WWW.NCBI.query()=Bio.WWW.NCBI-module.html#query"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-23', 'query', 'link-23');">query</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method Bio.Crystal.Crystal.copy()=Bio.Crystal.Crystal-class.html#copy,Method Bio.GA.Organism.Organism.copy()=Bio.GA.Organism.Organism-class.html#copy,Method Bio.GenBank.NCBIDictionary.copy()=Bio.GenBank.NCBIDictionary-class.html#copy,Method Bio.PDB.Vector'.Vector.copy()=Bio.PDB.Vector%27.Vector-class.html#copy,Method Bio.Prosite.ExPASyDictionary.copy()=Bio.Prosite.ExPASyDictionary-class.html#copy,Method Bio.Prosite.Pattern.PrositeTerm.copy()=Bio.Prosite.Pattern.PrositeTerm-class.html#copy,Method Bio.Prosite.Prodoc.ExPASyDictionary.copy()=Bio.Prosite.Prodoc.ExPASyDictionary-class.html#copy,Method Bio.PubMed.Dictionary.copy()=Bio.PubMed.Dictionary-class.html#copy,Method Bio.SwissProt.SProt.ExPASyDictionary.copy()=Bio.SwissProt.SProt.ExPASyDictionary-class.html#copy,Method Martel.Expression.Any.copy()=Martel.Expression.Any-class.html#copy,Method Martel.Expression.AnyEol.copy()=Martel.Expression.AnyEol-class.html#copy,Method Martel.Expression.Assert.copy()=Martel.Expression.Assert-class.html#copy,Method Martel.Expression.AtBeginning.copy()=Martel.Expression.AtBeginning-class.html#copy,Method Martel.Expression.AtEnd.copy()=Martel.Expression.AtEnd-class.html#copy,Method Martel.Expression.Debug.copy()=Martel.Expression.Debug-class.html#copy,Method Martel.Expression.Dot.copy()=Martel.Expression.Dot-class.html#copy,Method Martel.Expression.Expression.copy()=Martel.Expression.Expression-class.html#copy,Method Martel.Expression.ExpressionList.copy()=Martel.Expression.ExpressionList-class.html#copy,Method Martel.Expression.FastFeature.copy()=Martel.Expression.FastFeature-class.html#copy,Method Martel.Expression.Group.copy()=Martel.Expression.Group-class.html#copy,Method Martel.Expression.GroupRef.copy()=Martel.Expression.GroupRef-class.html#copy,Method Martel.Expression.HeaderFooter.copy()=Martel.Expression.HeaderFooter-class.html#copy,Method Martel.Expression.Literal.copy()=Martel.Expression.Literal-class.html#copy,Method Martel.Expression.MaxRepeat.copy()=Martel.Expression.MaxRepeat-class.html#copy,Method Martel.Expression.NullOp.copy()=Martel.Expression.NullOp-class.html#copy,Method Martel.Expression.ParseRecords.copy()=Martel.Expression.ParseRecords-class.html#copy,Method Martel.Expression.PassThrough.copy()=Martel.Expression.PassThrough-class.html#copy,Method Martel.Expression.Str.copy()=Martel.Expression.Str-class.html#copy,Method Martel.IterParser.IterHeaderFooter.copy()=Martel.IterParser.IterHeaderFooter-class.html#copy,Method Martel.IterParser.IterRecords.copy()=Martel.IterParser.IterRecords-class.html#copy,Method Martel.Iterator.IteratorRecords.copy()=Martel.Iterator.IteratorRecords-class.html#copy,Method Martel.Parser.HeaderFooterParser.copy()=Martel.Parser.HeaderFooterParser-class.html#copy,Method Martel.Parser.Parser.copy()=Martel.Parser.Parser-class.html#copy,Method Martel.Parser.RecordParser.copy()=Martel.Parser.RecordParser-class.html#copy"><a title="Bio.Crystal.Crystal.copy
Bio.GA.Organism.Organism.copy
Bio.GenBank.NCBIDictionary.copy
Bio.PDB.Vector'.Vector.copy
Bio.Prosite.ExPASyDictionary.copy
Bio.Prosite.Pattern.PrositeTerm.copy
Bio.Prosite.Prodoc.ExPASyDictionary.copy
Bio.PubMed.Dictionary.copy
Bio.SwissProt.SProt.ExPASyDictionary.copy
Martel.Expression.Any.copy
Martel.Expression.AnyEol.copy
Martel.Expression.Assert.copy
Martel.Expression.AtBeginning.copy
Martel.Expression.AtEnd.copy
Martel.Expression.Debug.copy
Martel.Expression.Dot.copy
Martel.Expression.Expression.copy
Martel.Expression.ExpressionList.copy
Martel.Expression.FastFeature.copy
Martel.Expression.Group.copy
Martel.Expression.GroupRef.copy
Martel.Expression.HeaderFooter.copy
Martel.Expression.Literal.copy
Martel.Expression.MaxRepeat.copy
Martel.Expression.NullOp.copy
Martel.Expression.ParseRecords.copy
Martel.Expression.PassThrough.copy
Martel.Expression.Str.copy
Martel.IterParser.IterHeaderFooter.copy
Martel.IterParser.IterRecords.copy
Martel.Iterator.IteratorRecords.copy
Martel.Parser.HeaderFooterParser.copy
Martel.Parser.Parser.copy
Martel.Parser.RecordParser.copy" class="py-name" href="#" onclick="return doclink('link-24', 'copy', 'link-24');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"> </tt>
<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">        <tt class="py-comment"># Set the 'tool' and 'email' fields</tt> </tt>
<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-string">"tool"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tool</tt> </tt>
<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-string">"email"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">email</tt> </tt>
<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line"> </tt>
<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">        <tt class="py-comment"># Kinda cheesy -- shouldn't really do this here.</tt> </tt>
<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># If 'usehistory' is true, use the value of 'Y' instead.</tt> </tt>
<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Otherwise, don't use history</tt> </tt>
<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-string">"usehistory"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">q</tt><tt class="py-op">:</tt> </tt>
<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-string">"usehistory"</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">                <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-string">"usehistory"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"y"</tt> </tt>
<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">                <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-string">"usehistory"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"> </tt>
<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">        <tt class="py-comment"># This will also remove the history, email, etc. fields</tt> </tt>
<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># if they are set to None.</tt> </tt>
<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt id="link-25" class="py-name" targets="Variable Martel.Time.v=Martel.Time-module.html#v"><a title="Martel.Time.v" class="py-name" href="#" onclick="return doclink('link-25', 'v', 'link-25');">v</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">q</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method Bio.Crystal.Crystal.items()=Bio.Crystal.Crystal-class.html#items,Method Bio.EUtils.MultiDict._BaseMultiDict.items()=Bio.EUtils.MultiDict._BaseMultiDict-class.html#items,Variable Bio.Entrez.SerialSet.items=Bio.Entrez.SerialSet-module.html#items,Method Bio.GenBank.NCBIDictionary.items()=Bio.GenBank.NCBIDictionary-class.html#items,Method Bio.Mindy.BaseDB.DictLookup.items()=Bio.Mindy.BaseDB.DictLookup-class.html#items,Method Bio.Prosite.ExPASyDictionary.items()=Bio.Prosite.ExPASyDictionary-class.html#items,Method Bio.Prosite.Prodoc.ExPASyDictionary.items()=Bio.Prosite.Prodoc.ExPASyDictionary-class.html#items,Method Bio.PubMed.Dictionary.items()=Bio.PubMed.Dictionary-class.html#items,Method Bio.SwissProt.SProt.ExPASyDictionary.items()=Bio.SwissProt.SProt.ExPASyDictionary-class.html#items,Method Bio.config.Registry.Registry.items()=Bio.config.Registry.Registry-class.html#items,Function Bio.listfns.items()=Bio.listfns-module.html#items,Method BioSQL.BioSeqDatabase.BioSeqDatabase.items()=BioSQL.BioSeqDatabase.BioSeqDatabase-class.html#items,Method BioSQL.BioSeqDatabase.DBServer.items()=BioSQL.BioSeqDatabase.DBServer-class.html#items,Method Martel.Parser.MartelAttributeList.items()=Martel.Parser.MartelAttributeList-class.html#items"><a title="Bio.Crystal.Crystal.items
Bio.EUtils.MultiDict._BaseMultiDict.items
Bio.Entrez.SerialSet.items
Bio.GenBank.NCBIDictionary.items
Bio.Mindy.BaseDB.DictLookup.items
Bio.Prosite.ExPASyDictionary.items
Bio.Prosite.Prodoc.ExPASyDictionary.items
Bio.PubMed.Dictionary.items
Bio.SwissProt.SProt.ExPASyDictionary.items
Bio.config.Registry.Registry.items
Bio.listfns.items
BioSQL.BioSeqDatabase.BioSeqDatabase.items
BioSQL.BioSeqDatabase.DBServer.items
Martel.Parser.MartelAttributeList.items" class="py-name" href="#" onclick="return doclink('link-26', 'items', 'link-26');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-27" class="py-name"><a title="Martel.Time.v" class="py-name" href="#" onclick="return doclink('link-27', 'v', 'link-25');">v</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> </tt>
<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"> </tt>
<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">        <tt class="py-comment"># Convert the query into the form needed for a GET.</tt> </tt>
<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">q</tt><tt class="py-op">)</tt> </tt>
</div><a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"> </tt>
<a name="ThinClient._wait"></a><div id="ThinClient._wait-def"><a name="L635"></a><tt class="py-lineno"> 635</tt> <a class="py-toggle" href="#" id="ThinClient._wait-toggle" onclick="return toggle('ThinClient._wait');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#_wait">_wait</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt> <tt class="py-op">=</tt> <tt class="py-number">3.0</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="ThinClient._wait-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient._wait-expanded"><a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">        <tt class="py-docstring">"""Enforce the NCBI requirement of one request every three seconds.</tt> </tt>
<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-docstring">        Ideally the calling code would have respected the 3 second rule,</tt> </tt>
<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-docstring">        but as this often hasn't happenend we check this here.</tt> </tt>
<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-docstring">        wait - number of seconds between queries."""</tt> </tt>
<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt id="link-28" class="py-name"><a title="Bio.EUtils.ThinClient._open_previous" class="py-name" href="#" onclick="return doclink('link-28', '_open_previous', 'link-18');">_open_previous</a></tt> </tt>
<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt id="link-29" class="py-name" targets="Method Bio.WWW.RequestLimiter.wait()=Bio.WWW.RequestLimiter-class.html#wait"><a title="Bio.WWW.RequestLimiter.wait" class="py-name" href="#" onclick="return doclink('link-29', 'wait', 'link-29');">wait</a></tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="Bio.EUtils.ThinClient._open_previous" class="py-name" href="#" onclick="return doclink('link-30', '_open_previous', 'link-18');">_open_previous</a></tt> <tt class="py-op">+</tt> <tt class="py-name">delay</tt> <tt class="py-op">-</tt> <tt id="link-31" class="py-name"><a title="Bio.Sequencing.Phd._RecordConsumer.time" class="py-name" href="#" onclick="return doclink('link-31', 'time', 'link-0');">time</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="Bio.Sequencing.Phd._RecordConsumer.time" class="py-name" href="#" onclick="return doclink('link-32', 'time', 'link-0');">time</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-33" class="py-name"><a title="Bio.WWW.RequestLimiter.wait" class="py-name" href="#" onclick="return doclink('link-33', 'wait', 'link-29');">wait</a></tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">            <tt id="link-34" class="py-name"><a title="Bio.Sequencing.Phd._RecordConsumer.time" class="py-name" href="#" onclick="return doclink('link-34', 'time', 'link-0');">time</a></tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="Bio.WWW.RequestLimiter.wait" class="py-name" href="#" onclick="return doclink('link-35', 'wait', 'link-29');">wait</a></tt><tt class="py-op">)</tt> </tt>
<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">        <tt id="link-36" class="py-name"><a title="Bio.EUtils.ThinClient._open_previous" class="py-name" href="#" onclick="return doclink('link-36', '_open_previous', 'link-18');">_open_previous</a></tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="Bio.Sequencing.Phd._RecordConsumer.time" class="py-name" href="#" onclick="return doclink('link-37', 'time', 'link-0');">time</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="Bio.Sequencing.Phd._RecordConsumer.time" class="py-name" href="#" onclick="return doclink('link-38', 'time', 'link-0');">time</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">     </tt>
<a name="ThinClient._get"></a><div id="ThinClient._get-def"><a name="L648"></a><tt class="py-lineno"> 648</tt> <a class="py-toggle" href="#" id="ThinClient._get-toggle" onclick="return toggle('ThinClient._get');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#_get">_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">program</tt><tt class="py-op">,</tt> <tt class="py-param">query</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient._get-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient._get-expanded"><a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">        <tt class="py-docstring">"""Internal function: send the query string to the program as GET"""</tt> </tt>
<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">        <tt class="py-comment"># NOTE: epost uses a different interface</tt> </tt>
<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method Bio.EUtils.ThinClient.ThinClient._wait()=Bio.EUtils.ThinClient.ThinClient-class.html#_wait"><a title="Bio.EUtils.ThinClient.ThinClient._wait" class="py-name" href="#" onclick="return doclink('link-39', '_wait', 'link-39');">_wait</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line"> </tt>
<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">        <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method Bio.EUtils.ThinClient.ThinClient._fixup_query()=Bio.EUtils.ThinClient.ThinClient-class.html#_fixup_query"><a title="Bio.EUtils.ThinClient.ThinClient._fixup_query" class="py-name" href="#" onclick="return doclink('link-40', '_fixup_query', 'link-40');">_fixup_query</a></tt><tt class="py-op">(</tt><tt id="link-41" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-41', 'query', 'link-23');">query</a></tt><tt class="py-op">)</tt> </tt>
<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">        <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">baseurl</tt> <tt class="py-op">+</tt> <tt class="py-name">program</tt> <tt class="py-op">+</tt> <tt class="py-string">"?"</tt> <tt class="py-op">+</tt> <tt class="py-name">q</tt> </tt>
<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-42" class="py-name"><a title="Bio.EUtils.ThinClient.DUMP_URL" class="py-name" href="#" onclick="return doclink('link-42', 'DUMP_URL', 'link-1');">DUMP_URL</a></tt><tt class="py-op">:</tt> </tt>
<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">"Opening with GET:"</tt><tt class="py-op">,</tt> <tt class="py-name">url</tt> </tt>
<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-43" class="py-name"><a title="Bio.EUtils.ThinClient.DUMP_RESULT" class="py-name" href="#" onclick="return doclink('link-43', 'DUMP_RESULT', 'link-2');">DUMP_RESULT</a></tt><tt class="py-op">:</tt> </tt>
<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">" ================== Results ============= "</tt> </tt>
<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">            <tt id="link-44" class="py-name" targets="Variable Martel.test.test_swissprot38.s=Martel.test.test_swissprot38-module.html#s"><a title="Martel.test.test_swissprot38.s" class="py-name" href="#" onclick="return doclink('link-44', 's', 'link-44');">s</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opener</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Function Bio.Mindy.FlatDB.open()=Bio.Mindy.FlatDB-module.html#open,Function Bio.Mindy.open()=Bio.Mindy-module.html#open"><a title="Bio.Mindy.FlatDB.open
Bio.Mindy.open" class="py-name" href="#" onclick="return doclink('link-45', 'open', 'link-45');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method Bio.AlignAce.Motif.Motif.read()=Bio.AlignAce.Motif.Motif-class.html#read,Function Bio.AlignIO.read()=Bio.AlignIO-module.html#read,Function Bio.Cluster.read()=Bio.Cluster-module.html#read,Method Bio.EUtils.ReseekFile.ReseekFile.read()=Bio.EUtils.ReseekFile.ReseekFile-class.html#read,Function Bio.Entrez.read()=Bio.Entrez-module.html#read,Method Bio.File.SGMLHandle.read()=Bio.File.SGMLHandle-class.html#read,Method Bio.File.UndoHandle.read()=Bio.File.UndoHandle-class.html#read,Method Bio.FilteredReader.FilteredReader.read()=Bio.FilteredReader.FilteredReader-class.html#read,Method Bio.NeuralNetwork.Gene.Pattern.PatternIO.read()=Bio.NeuralNetwork.Gene.Pattern.PatternIO-class.html#read,Method Bio.Nexus.Nexus.Nexus.read()=Bio.Nexus.Nexus.Nexus-class.html#read,Function Bio.Prosite.Prodoc.read()=Bio.Prosite.Prodoc-module.html#read,Function Bio.Prosite.read()=Bio.Prosite-module.html#read,Method Bio.SGMLExtractor.SGMLExtractorHandle.read()=Bio.SGMLExtractor.SGMLExtractorHandle-class.html#read,Function Bio.SeqIO.read()=Bio.SeqIO-module.html#read,Function Bio.SwissProt.read()=Bio.SwissProt-module.html#read"><a title="Bio.AlignAce.Motif.Motif.read
Bio.AlignIO.read
Bio.Cluster.read
Bio.EUtils.ReseekFile.ReseekFile.read
Bio.Entrez.read
Bio.File.SGMLHandle.read
Bio.File.UndoHandle.read
Bio.FilteredReader.FilteredReader.read
Bio.NeuralNetwork.Gene.Pattern.PatternIO.read
Bio.Nexus.Nexus.Nexus.read
Bio.Prosite.Prodoc.read
Bio.Prosite.read
Bio.SGMLExtractor.SGMLExtractorHandle.read
Bio.SeqIO.read
Bio.SwissProt.read" class="py-name" href="#" onclick="return doclink('link-46', 'read', 'link-46');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt id="link-47" class="py-name"><a title="Martel.test.test_swissprot38.s" class="py-name" href="#" onclick="return doclink('link-47', 's', 'link-44');">s</a></tt> </tt>
<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">" ================== Finished ============ "</tt> </tt>
<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">cStringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt id="link-48" class="py-name"><a title="Martel.test.test_swissprot38.s" class="py-name" href="#" onclick="return doclink('link-48', 's', 'link-44');">s</a></tt><tt class="py-op">)</tt> </tt>
<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opener</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="Bio.Mindy.FlatDB.open
Bio.Mindy.open" class="py-name" href="#" onclick="return doclink('link-49', 'open', 'link-45');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
</div><a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">             </tt>
<a name="ThinClient.esearch"></a><div id="ThinClient.esearch-def"><a name="L666"></a><tt class="py-lineno"> 666</tt> <a class="py-toggle" href="#" id="ThinClient.esearch-toggle" onclick="return toggle('ThinClient.esearch');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#esearch">esearch</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">                <tt class="py-param">term</tt><tt class="py-op">,</tt>           <tt class="py-comment"># In Entrez query language</tt> </tt>
<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">                <tt class="py-param">db</tt> <tt class="py-op">=</tt> <tt class="py-string">"pubmed"</tt><tt class="py-op">,</tt>  <tt class="py-comment"># Required field, default to PubMed</tt> </tt>
<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">                <tt class="py-param">field</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt>   <tt class="py-comment"># Field to use for unqualified words</tt> </tt>
<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">                <tt class="py-param">daterange</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt>    <tt class="py-comment"># Date restriction</tt> </tt>
<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"> </tt>
<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">                <tt class="py-param">retstart</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">                <tt class="py-param">retmax</tt> <tt class="py-op">=</tt> <tt class="py-number">20</tt><tt class="py-op">,</tt>     <tt class="py-comment"># Default from NCBI is 20, so I'll use that</tt> </tt>
<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"> </tt>
<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">                <tt class="py-param">usehistory</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt>  <tt class="py-comment"># Enable history tracking</tt> </tt>
<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">                <tt class="py-param">webenv</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt>   <tt class="py-comment"># If given, add to an existing history</tt> </tt>
<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">                <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient.esearch-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient.esearch-expanded"><a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">         </tt>
<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">        <tt class="py-docstring">"""term, db="pubmed", field=None, daterange=None, retstart=0, retmax=20, usehistory=0, webenv=none</tt> </tt>
<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line"><tt class="py-docstring">        Search the given database for records matching the query given</tt> </tt>
<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line"><tt class="py-docstring">        in the 'term'.  See the module docstring for examples.</tt> </tt>
<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"><tt class="py-docstring">        'term' -- the query string in the Entrez query language; see</tt> </tt>
<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"><tt class="py-docstring">           http://www.ncbi.nlm.nih.gov/entrez/query/static/help/pmhelp.html</tt> </tt>
<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-docstring">        'db' -- the database to search</tt> </tt>
<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-docstring">        'field' -- the field to use for unqualified words</tt> </tt>
<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-docstring">                  Eg, "dalke[au] AND gene" with field==None becomes</tt> </tt>
<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-docstring">                    dalke[au] AND (genes[MeSH Terms] OR gene[Text Word]</tt> </tt>
<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-docstring">                  and "dalke[au] AND gene" with field=="au" becomes</tt> </tt>
<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-docstring">                    dalke[au] AND genes[Author]</tt> </tt>
<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-docstring">                 (Yes, I think the first "au" should be "Author" too)</tt> </tt>
<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"><tt class="py-docstring">        'daterange' -- a date restriction; either WithinNDays or DateRange</tt> </tt>
<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-docstring">        'retstart' -- include identifiers in the output, starting with</tt> </tt>
<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-docstring">                  position 'retstart' (normally starts with 0)</tt> </tt>
<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-docstring">        'retmax' -- return at most 'retmax' identifiers in the output</tt> </tt>
<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-docstring">                  (if not specified, NCBI returns 20 identifiers)</tt> </tt>
<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-docstring">        'usehistory' -- flag to enable history tracking</tt> </tt>
<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring">        'webenv' -- if this string is given, add the search results</tt> </tt>
<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-docstring">                  to an existing history. (WARNING: the history disappers</tt> </tt>
<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-docstring">                  after about an hour of non-use.)</tt> </tt>
<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-docstring">        You will need to parse the output XML to get the new QueryKey</tt> </tt>
<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"><tt class="py-docstring">        and WebEnv fields.</tt> </tt>
<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line"><tt class="py-docstring">        Returns an input stream from an HTTP request.  The stream</tt> </tt>
<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"><tt class="py-docstring">        contents are in XML.</tt> </tt>
<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">        <tt id="link-50" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-50', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"term"</tt><tt class="py-op">:</tt> <tt class="py-name">term</tt><tt class="py-op">,</tt> </tt>
<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">                 <tt class="py-string">"db"</tt><tt class="py-op">:</tt> <tt id="link-51" class="py-name" targets="Variable Bio.LocusLink.locus_format.db=Bio.LocusLink.locus_format-module.html#db,Variable Bio.config.DBRegistry.db=Bio.config.DBRegistry-module.html#db"><a title="Bio.LocusLink.locus_format.db
Bio.config.DBRegistry.db" class="py-name" href="#" onclick="return doclink('link-51', 'db', 'link-51');">db</a></tt><tt class="py-op">,</tt> </tt>
<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">                 <tt class="py-string">"field"</tt><tt class="py-op">:</tt> <tt class="py-name">field</tt><tt class="py-op">,</tt> </tt>
<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">                 <tt class="py-string">"retstart"</tt><tt class="py-op">:</tt> <tt class="py-name">retstart</tt><tt class="py-op">,</tt> </tt>
<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">                 <tt class="py-string">"retmax"</tt><tt class="py-op">:</tt> <tt class="py-name">retmax</tt><tt class="py-op">,</tt> </tt>
<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">                 <tt class="py-string">"usehistory"</tt><tt class="py-op">:</tt> <tt class="py-name">usehistory</tt><tt class="py-op">,</tt> </tt>
<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">                 <tt class="py-string">"WebEnv"</tt><tt class="py-op">:</tt> <tt class="py-name">webenv</tt><tt class="py-op">,</tt> </tt>
<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">                 <tt class="py-op">}</tt> </tt>
<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">daterange</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">            <tt id="link-52" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-52', 'query', 'link-23');">query</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method Bio.GenBank.NCBIDictionary.update()=Bio.GenBank.NCBIDictionary-class.html#update,Method Bio.Index._InMemoryIndex.update()=Bio.Index._InMemoryIndex-class.html#update,Method Bio.NeuralNetwork.BackPropagation.Layer.HiddenLayer.update()=Bio.NeuralNetwork.BackPropagation.Layer.HiddenLayer-class.html#update,Method Bio.NeuralNetwork.BackPropagation.Layer.InputLayer.update()=Bio.NeuralNetwork.BackPropagation.Layer.InputLayer-class.html#update,Method Bio.NeuralNetwork.BackPropagation.Layer.OutputLayer.update()=Bio.NeuralNetwork.BackPropagation.Layer.OutputLayer-class.html#update,Method Bio.Prosite.ExPASyDictionary.update()=Bio.Prosite.ExPASyDictionary-class.html#update,Method Bio.Prosite.Prodoc.ExPASyDictionary.update()=Bio.Prosite.Prodoc.ExPASyDictionary-class.html#update,Method Bio.PubMed.Dictionary.update()=Bio.PubMed.Dictionary-class.html#update,Method Bio.Restriction._Update.Update.RebaseUpdate.update()=Bio.Restriction._Update.Update.RebaseUpdate-class.html#update,Method Bio.SwissProt.SProt.ExPASyDictionary.update()=Bio.SwissProt.SProt.ExPASyDictionary-class.html#update"><a title="Bio.GenBank.NCBIDictionary.update
Bio.Index._InMemoryIndex.update
Bio.NeuralNetwork.BackPropagation.Layer.HiddenLayer.update
Bio.NeuralNetwork.BackPropagation.Layer.InputLayer.update
Bio.NeuralNetwork.BackPropagation.Layer.OutputLayer.update
Bio.Prosite.ExPASyDictionary.update
Bio.Prosite.Prodoc.ExPASyDictionary.update
Bio.PubMed.Dictionary.update
Bio.Restriction._Update.Update.RebaseUpdate.update
Bio.SwissProt.SProt.ExPASyDictionary.update" class="py-name" href="#" onclick="return doclink('link-53', 'update', 'link-53');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">daterange</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method Bio.EUtils.Datatypes.DateRange.get_query_params()=Bio.EUtils.Datatypes.DateRange-class.html#get_query_params,Method Bio.EUtils.Datatypes.WithinNDays.get_query_params()=Bio.EUtils.Datatypes.WithinNDays-class.html#get_query_params"><a title="Bio.EUtils.Datatypes.DateRange.get_query_params
Bio.EUtils.Datatypes.WithinNDays.get_query_params" class="py-name" href="#" onclick="return doclink('link-54', 'get_query_params', 'link-54');">get_query_params</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">         </tt>
<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method Bio.EUtils.ThinClient.ThinClient._get()=Bio.EUtils.ThinClient.ThinClient-class.html#_get,Method Bio.config.DBRegistry.BioCorbaDB._get()=Bio.config.DBRegistry.BioCorbaDB-class.html#_get,Method Bio.config.DBRegistry.BioSQLDB._get()=Bio.config.DBRegistry.BioSQLDB-class.html#_get,Method Bio.config.DBRegistry.CGIDB._get()=Bio.config.DBRegistry.CGIDB-class.html#_get,Method Bio.config.DBRegistry.DBObject._get()=Bio.config.DBRegistry.DBObject-class.html#_get,Method Bio.config.DBRegistry.EUtilsDB._get()=Bio.config.DBRegistry.EUtilsDB-class.html#_get,Method Bio.config.DBRegistry.IndexedFileDB._get()=Bio.config.DBRegistry.IndexedFileDB-class.html#_get"><a title="Bio.EUtils.ThinClient.ThinClient._get
Bio.config.DBRegistry.BioCorbaDB._get
Bio.config.DBRegistry.BioSQLDB._get
Bio.config.DBRegistry.CGIDB._get
Bio.config.DBRegistry.DBObject._get
Bio.config.DBRegistry.EUtilsDB._get
Bio.config.DBRegistry.IndexedFileDB._get" class="py-name" href="#" onclick="return doclink('link-55', '_get', 'link-55');">_get</a></tt><tt class="py-op">(</tt><tt class="py-name">program</tt> <tt class="py-op">=</tt> <tt class="py-string">"esearch.fcgi"</tt><tt class="py-op">,</tt> <tt id="link-56" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-56', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-57', 'query', 'link-23');">query</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">     </tt>
<a name="ThinClient.epost"></a><div id="ThinClient.epost-def"><a name="L725"></a><tt class="py-lineno"> 725</tt> <a class="py-toggle" href="#" id="ThinClient.epost-toggle" onclick="return toggle('ThinClient.epost');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#epost">epost</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">              <tt class="py-param">dbids</tt><tt class="py-op">,</tt> </tt>
<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"> </tt>
<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">              <tt class="py-param">webenv</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt>    <tt class="py-comment"># If given, add to an existing history</tt> </tt>
<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">              <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient.epost-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient.epost-expanded"><a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">        <tt class="py-docstring">"""dbids, webenv = None</tt> </tt>
<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-docstring">        Create a new collection in the history containing the given</tt> </tt>
<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-docstring">        list of identifiers for a database.</tt> </tt>
<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"><tt class="py-docstring">        'dbids' -- a DBIds, which contains the database name and</tt> </tt>
<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-docstring">             a list of identifiers in that database</tt> </tt>
<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-docstring">        'webenv' -- if this string is given, add the collection</tt> </tt>
<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-docstring">                  to an existing history. (WARNING: the history disappers</tt> </tt>
<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-docstring">                  after about an hour of non-use.)</tt> </tt>
<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring">        You will need to parse the output XML to get the new QueryKey</tt> </tt>
<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-docstring">        and WebEnv fields.  NOTE: The order of the IDs on the server</tt> </tt>
<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-docstring">        is NOT NECESSARILY the same as the upload order.</tt> </tt>
<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-docstring">        Returns an input stream from an HTTP request.  The stream</tt> </tt>
<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-docstring">        contents are in XML.</tt> </tt>
<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">        <tt class="py-name">id_string</tt> <tt class="py-op">=</tt> <tt id="link-58" class="py-name" targets="Function Bio.EUtils.ThinClient._dbids_to_id_string()=Bio.EUtils.ThinClient-module.html#_dbids_to_id_string"><a title="Bio.EUtils.ThinClient._dbids_to_id_string" class="py-name" href="#" onclick="return doclink('link-58', '_dbids_to_id_string', 'link-58');">_dbids_to_id_string</a></tt><tt class="py-op">(</tt><tt id="link-59" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-59', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">)</tt> </tt>
<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"> </tt>
<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">        <tt class="py-comment"># Looks like it will accept *any* ids.  Wonder what that means.</tt> </tt>
<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">program</tt> <tt class="py-op">=</tt> <tt class="py-string">"epost.fcgi"</tt> </tt>
<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">        <tt id="link-60" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-60', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"id"</tt><tt class="py-op">:</tt> <tt class="py-name">id_string</tt><tt class="py-op">,</tt> </tt>
<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">                 <tt class="py-string">"db"</tt><tt class="py-op">:</tt> <tt id="link-61" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-61', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="Bio.LocusLink.locus_format.db
Bio.config.DBRegistry.db" class="py-name" href="#" onclick="return doclink('link-62', 'db', 'link-51');">db</a></tt><tt class="py-op">,</tt> </tt>
<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">                 <tt class="py-string">"WebEnv"</tt><tt class="py-op">:</tt> <tt class="py-name">webenv</tt><tt class="py-op">,</tt> </tt>
<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">                 <tt class="py-op">}</tt> </tt>
<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">        <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="Bio.EUtils.ThinClient.ThinClient._fixup_query" class="py-name" href="#" onclick="return doclink('link-63', '_fixup_query', 'link-40');">_fixup_query</a></tt><tt class="py-op">(</tt><tt id="link-64" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-64', 'query', 'link-23');">query</a></tt><tt class="py-op">)</tt> </tt>
<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line"> </tt>
<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="Bio.EUtils.ThinClient.ThinClient._wait" class="py-name" href="#" onclick="return doclink('link-65', '_wait', 'link-39');">_wait</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line"> </tt>
<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">        <tt class="py-comment"># Need to use a POST since the data set can be *very* long;</tt> </tt>
<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># even too long for GET.</tt> </tt>
<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-66" class="py-name"><a title="Bio.EUtils.ThinClient.DUMP_URL" class="py-name" href="#" onclick="return doclink('link-66', 'DUMP_URL', 'link-1');">DUMP_URL</a></tt><tt class="py-op">:</tt> </tt>
<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">"Opening with POST:"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">baseurl</tt> <tt class="py-op">+</tt> <tt class="py-name">program</tt> <tt class="py-op">+</tt> <tt class="py-string">"?"</tt> <tt class="py-op">+</tt> <tt class="py-name">q</tt> </tt>
<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-67" class="py-name"><a title="Bio.EUtils.ThinClient.DUMP_RESULT" class="py-name" href="#" onclick="return doclink('link-67', 'DUMP_RESULT', 'link-2');">DUMP_RESULT</a></tt><tt class="py-op">:</tt> </tt>
<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">" ================== Results ============= "</tt> </tt>
<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">            <tt id="link-68" class="py-name"><a title="Martel.test.test_swissprot38.s" class="py-name" href="#" onclick="return doclink('link-68', 's', 'link-44');">s</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opener</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="Bio.Mindy.FlatDB.open
Bio.Mindy.open" class="py-name" href="#" onclick="return doclink('link-69', 'open', 'link-45');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">baseurl</tt> <tt class="py-op">+</tt> <tt class="py-name">program</tt><tt class="py-op">,</tt> <tt class="py-name">q</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="Bio.AlignAce.Motif.Motif.read
Bio.AlignIO.read
Bio.Cluster.read
Bio.EUtils.ReseekFile.ReseekFile.read
Bio.Entrez.read
Bio.File.SGMLHandle.read
Bio.File.UndoHandle.read
Bio.FilteredReader.FilteredReader.read
Bio.NeuralNetwork.Gene.Pattern.PatternIO.read
Bio.Nexus.Nexus.Nexus.read
Bio.Prosite.Prodoc.read
Bio.Prosite.read
Bio.SGMLExtractor.SGMLExtractorHandle.read
Bio.SeqIO.read
Bio.SwissProt.read" class="py-name" href="#" onclick="return doclink('link-70', 'read', 'link-46');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt id="link-71" class="py-name"><a title="Martel.test.test_swissprot38.s" class="py-name" href="#" onclick="return doclink('link-71', 's', 'link-44');">s</a></tt> </tt>
<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">" ================== Finished ============ "</tt> </tt>
<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">cStringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="Martel.test.test_swissprot38.s" class="py-name" href="#" onclick="return doclink('link-72', 's', 'link-44');">s</a></tt><tt class="py-op">)</tt> </tt>
<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opener</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="Bio.Mindy.FlatDB.open
Bio.Mindy.open" class="py-name" href="#" onclick="return doclink('link-73', 'open', 'link-45');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">baseurl</tt> <tt class="py-op">+</tt> <tt class="py-name">program</tt><tt class="py-op">,</tt> <tt class="py-name">q</tt><tt class="py-op">)</tt> </tt>
</div><a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"> </tt>
<a name="ThinClient.esummary_using_history"></a><div id="ThinClient.esummary_using_history-def"><a name="L772"></a><tt class="py-lineno"> 772</tt> <a class="py-toggle" href="#" id="ThinClient.esummary_using_history-toggle" onclick="return toggle('ThinClient.esummary_using_history');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#esummary_using_history">esummary_using_history</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">                               <tt class="py-param">db</tt><tt class="py-op">,</tt>  <tt class="py-comment"># This is required.  Don't use a</tt> </tt>
<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">                                    <tt class="py-comment"># default here because it must match</tt> </tt>
<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">                                    <tt class="py-comment"># that of the webenv</tt> </tt>
<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">                               <tt class="py-param">webenv</tt><tt class="py-op">,</tt> </tt>
<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">                               <tt class="py-param">query_key</tt><tt class="py-op">,</tt> </tt>
<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">                               <tt class="py-param">retstart</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">                               <tt class="py-param">retmax</tt> <tt class="py-op">=</tt> <tt class="py-number">20</tt><tt class="py-op">,</tt> </tt>
<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">                               <tt class="py-param">retmode</tt> <tt class="py-op">=</tt> <tt class="py-string">"xml"</tt><tt class="py-op">,</tt>  <tt class="py-comment"># any other modes?</tt> </tt>
<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">                               <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient.esummary_using_history-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient.esummary_using_history-expanded"><a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">        <tt class="py-docstring">"""db, webenv, query_key, retstart = 0, retmax = 20, retmode = "xml"</tt> </tt>
<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line"><tt class="py-docstring">        Get the summary for a collection of records in the history</tt> </tt>
<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line"><tt class="py-docstring">        'db' -- the database containing the history/collection</tt> </tt>
<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line"><tt class="py-docstring">        'webenv' -- the WebEnv cookie for the history</tt> </tt>
<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"><tt class="py-docstring">        'query_key' -- the collection in the history</tt> </tt>
<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"><tt class="py-docstring">        'retstart' -- get the summaries starting with this position</tt> </tt>
<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-docstring">        'retmax' -- get at most this many summaries</tt> </tt>
<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line"><tt class="py-docstring">        'retmode' -- can only be 'xml'.  (Are there others?)</tt> </tt>
<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line"><tt class="py-docstring">        Returns an input stream from an HTTP request.  The stream</tt> </tt>
<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line"><tt class="py-docstring">        contents are in 'retmode' format.</tt> </tt>
<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="Bio.EUtils.ThinClient.ThinClient._get
Bio.config.DBRegistry.BioCorbaDB._get
Bio.config.DBRegistry.BioSQLDB._get
Bio.config.DBRegistry.CGIDB._get
Bio.config.DBRegistry.DBObject._get
Bio.config.DBRegistry.EUtilsDB._get
Bio.config.DBRegistry.IndexedFileDB._get" class="py-name" href="#" onclick="return doclink('link-74', '_get', 'link-55');">_get</a></tt><tt class="py-op">(</tt><tt class="py-name">program</tt> <tt class="py-op">=</tt> <tt class="py-string">"esummary.fcgi"</tt><tt class="py-op">,</tt> </tt>
<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">                         <tt id="link-75" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-75', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"db"</tt><tt class="py-op">:</tt> <tt id="link-76" class="py-name"><a title="Bio.LocusLink.locus_format.db
Bio.config.DBRegistry.db" class="py-name" href="#" onclick="return doclink('link-76', 'db', 'link-51');">db</a></tt><tt class="py-op">,</tt> </tt>
<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">                                  <tt class="py-string">"WebEnv"</tt><tt class="py-op">:</tt> <tt class="py-name">webenv</tt><tt class="py-op">,</tt> </tt>
<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">                                  <tt class="py-string">"query_key"</tt><tt class="py-op">:</tt> <tt class="py-name">query_key</tt><tt class="py-op">,</tt> </tt>
<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">                                  <tt class="py-string">"retstart"</tt><tt class="py-op">:</tt> <tt class="py-name">retstart</tt><tt class="py-op">,</tt> </tt>
<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">                                  <tt class="py-string">"retmax"</tt><tt class="py-op">:</tt> <tt class="py-name">retmax</tt><tt class="py-op">,</tt> </tt>
<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">                                  <tt class="py-string">"retmode"</tt><tt class="py-op">:</tt> <tt class="py-name">retmode</tt><tt class="py-op">,</tt> </tt>
<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">                                  <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
</div><a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">                         </tt>
<a name="ThinClient.esummary_using_dbids"></a><div id="ThinClient.esummary_using_dbids-def"><a name="L805"></a><tt class="py-lineno"> 805</tt> <a class="py-toggle" href="#" id="ThinClient.esummary_using_dbids-toggle" onclick="return toggle('ThinClient.esummary_using_dbids');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#esummary_using_dbids">esummary_using_dbids</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">                             <tt class="py-param">dbids</tt><tt class="py-op">,</tt> </tt>
<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">                             <tt class="py-param">retmode</tt> <tt class="py-op">=</tt> <tt class="py-string">"xml"</tt><tt class="py-op">,</tt>  <tt class="py-comment"># any other modes?</tt> </tt>
<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">                             <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient.esummary_using_dbids-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient.esummary_using_dbids-expanded"><a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">        <tt class="py-docstring">"""dbids, retmode = "xml"</tt> </tt>
<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line"><tt class="py-docstring">        Get the summary for records specified by identifier</tt> </tt>
<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"><tt class="py-docstring">        'dbids' -- a DBIds containing the database name and list</tt> </tt>
<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"><tt class="py-docstring">                       of record identifiers</tt> </tt>
<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"><tt class="py-docstring">        'retmode' -- can only be 'xml'</tt> </tt>
<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"><tt class="py-docstring">        Returns an input stream from an HTTP request.  The stream</tt> </tt>
<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"><tt class="py-docstring">        contents are in 'retmode' format.</tt> </tt>
<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">         </tt>
<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">        <tt class="py-name">id_string</tt> <tt class="py-op">=</tt> <tt id="link-77" class="py-name"><a title="Bio.EUtils.ThinClient._dbids_to_id_string" class="py-name" href="#" onclick="return doclink('link-77', '_dbids_to_id_string', 'link-58');">_dbids_to_id_string</a></tt><tt class="py-op">(</tt><tt id="link-78" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-78', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">)</tt> </tt>
<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="Bio.EUtils.ThinClient.ThinClient._get
Bio.config.DBRegistry.BioCorbaDB._get
Bio.config.DBRegistry.BioSQLDB._get
Bio.config.DBRegistry.CGIDB._get
Bio.config.DBRegistry.DBObject._get
Bio.config.DBRegistry.EUtilsDB._get
Bio.config.DBRegistry.IndexedFileDB._get" class="py-name" href="#" onclick="return doclink('link-79', '_get', 'link-55');">_get</a></tt><tt class="py-op">(</tt><tt class="py-name">program</tt> <tt class="py-op">=</tt> <tt class="py-string">"esummary.fcgi"</tt><tt class="py-op">,</tt> </tt>
<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">                         <tt id="link-80" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-80', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"id"</tt><tt class="py-op">:</tt> <tt class="py-name">id_string</tt><tt class="py-op">,</tt> </tt>
<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">                                  <tt class="py-string">"db"</tt><tt class="py-op">:</tt> <tt id="link-81" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-81', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="Bio.LocusLink.locus_format.db
Bio.config.DBRegistry.db" class="py-name" href="#" onclick="return doclink('link-82', 'db', 'link-51');">db</a></tt><tt class="py-op">,</tt> </tt>
<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">                                  <tt class="py-comment"># "retmax": len(dbids.ids), # needed?</tt> </tt>
<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">                                  <tt class="py-string">"retmode"</tt><tt class="py-op">:</tt> <tt class="py-name">retmode</tt><tt class="py-op">,</tt> </tt>
<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">                                  <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
</div><a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"> </tt>
<a name="ThinClient.efetch_using_history"></a><div id="ThinClient.efetch_using_history-def"><a name="L829"></a><tt class="py-lineno"> 829</tt> <a class="py-toggle" href="#" id="ThinClient.efetch_using_history-toggle" onclick="return toggle('ThinClient.efetch_using_history');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#efetch_using_history">efetch_using_history</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">                             <tt class="py-param">db</tt><tt class="py-op">,</tt> </tt>
<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">                             <tt class="py-param">webenv</tt><tt class="py-op">,</tt> </tt>
<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">                             <tt class="py-param">query_key</tt><tt class="py-op">,</tt> </tt>
<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"> </tt>
<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">                             <tt class="py-param">retstart</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">                             <tt class="py-param">retmax</tt> <tt class="py-op">=</tt> <tt class="py-number">20</tt><tt class="py-op">,</tt> </tt>
<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"> </tt>
<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">                             <tt class="py-param">retmode</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">                             <tt class="py-param">rettype</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"> </tt>
<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">                             <tt class="py-comment"># sequence only</tt> </tt>
<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">                             <tt class="py-param">seq_start</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">                             <tt class="py-param">seq_stop</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">                             <tt class="py-param">strand</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">                             <tt class="py-param">complexity</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">                             <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient.efetch_using_history-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient.efetch_using_history-expanded"><a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">        <tt class="py-docstring">"""db, webenv, query_key, retstart=0, retmax=20, retmode=None, rettype=None, seq_start=None, seq_stop=None, strand=None, complexity=None</tt> </tt>
<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"><tt class="py-docstring">        Fetch information for a collection of records in the history,</tt> </tt>
<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line"><tt class="py-docstring">        in a variety of formats.</tt> </tt>
<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line"><tt class="py-docstring">        'db' -- the database containing the history/collection</tt> </tt>
<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"><tt class="py-docstring">        'webenv' -- the WebEnv cookie for the history</tt> </tt>
<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-docstring">        'query_key' -- the collection in the history</tt> </tt>
<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"><tt class="py-docstring">        'retstart' -- get the formatted data starting with this position</tt> </tt>
<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-docstring">        'retmax' -- get data for at most this many records</tt> </tt>
<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-docstring">        These options work for sequence databases</tt> </tt>
<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-docstring">        'seq_start' -- return the sequence starting at this position.</tt> </tt>
<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-docstring">               The first position is numbered 1</tt> </tt>
<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"><tt class="py-docstring">        'seq_stop' -- return the sequence ending at this position</tt> </tt>
<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-docstring">               Includes the stop position, so seq_start = 1 and</tt> </tt>
<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-docstring">               seq_stop = 5 returns the first 5 bases/residues.</tt> </tt>
<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-docstring">        'strand' -- strand.  Use EUtils.PLUS_STRAND (== 1) for plus</tt> </tt>
<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"><tt class="py-docstring">               strand and EUtils.MINUS_STRAND (== 2) for negative</tt> </tt>
<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"><tt class="py-docstring">        'complexity' -- regulates the level of display.  Options are</tt> </tt>
<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-docstring">            0 - get the whole blob</tt> </tt>
<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line"><tt class="py-docstring">            1 - get the bioseq for gi of interest (default in Entrez)</tt> </tt>
<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-docstring">            2 - get the minimal bioseq-set containing the gi of interest</tt> </tt>
<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-docstring">            3 - get the minimal nuc-prot containing the gi of interest</tt> </tt>
<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-docstring">            4 - get the minimal pub-set containing the gi of interest</tt> </tt>
<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"><tt class="py-docstring">        http://www.ncbi.nlm.nih.gov/entrez/query/static/efetchseq_help.html</tt> </tt>
<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-docstring">        The valid retmode and rettype values are</tt> </tt>
<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-docstring">        For publication databases (omim, pubmed, journals) the</tt> </tt>
<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-docstring">        retmodes are 'xml', 'asn.1', 'text', and 'html'.</tt> </tt>
<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-docstring">          If retmode == xml     ---&gt; XML (default)</tt> </tt>
<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"><tt class="py-docstring">          if retmode == asn.1   ---&gt; ASN.1</tt> </tt>
<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line"><tt class="py-docstring">          The following rettype values work for retmode == 'text'.</tt> </tt>
<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line"><tt class="py-docstring">           </tt> </tt>
<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"><tt class="py-docstring">             docsum    ----&gt; author / title / cite / PMID</tt> </tt>
<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"><tt class="py-docstring">             brief     ----&gt; a one-liner up to about 66 chars</tt> </tt>
<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-docstring">             abstract  ----&gt; cite / title / author / dept /</tt> </tt>
<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-docstring">                                    full abstract / PMID</tt> </tt>
<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"><tt class="py-docstring">             citation  ----&gt; cite / title / author / dept /</tt> </tt>
<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"><tt class="py-docstring">                                    full abstract / MeSH terms /</tt> </tt>
<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"><tt class="py-docstring">                                    substances / PMID</tt> </tt>
<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line"><tt class="py-docstring">             medline   ----&gt; full record in medline format</tt> </tt>
<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line"><tt class="py-docstring">             asn.1     ----&gt; full record in one ASN.1 format</tt> </tt>
<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"><tt class="py-docstring">             mlasn1    ----&gt; full record in another ASN.1 format</tt> </tt>
<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line"><tt class="py-docstring">             uilist    ----&gt; list of uids, one per line</tt> </tt>
<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line"><tt class="py-docstring">             sgml      ----&gt; same as retmode="xml"</tt> </tt>
<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"><tt class="py-docstring">        Sequence databases (genome, protein, nucleotide, popset)</tt> </tt>
<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"><tt class="py-docstring">        also have retmode values of 'xml', 'asn.1', 'text', and</tt> </tt>
<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"><tt class="py-docstring">        'html'.</tt> </tt>
<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"><tt class="py-docstring">          If retmode == 'xml'   ---&gt; XML (default; only supports</tt> </tt>
<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line"><tt class="py-docstring">                                        rettype == 'native')</tt> </tt>
<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"><tt class="py-docstring">          If retmode == 'asn.1' ---&gt; ASN.1 text (only works for rettype</tt> </tt>
<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"><tt class="py-docstring">                                        of 'native' and 'sequin')</tt> </tt>
<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line"><tt class="py-docstring">          The following work with a retmode of 'text' or 'html' </tt> </tt>
<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-docstring">             native    ----&gt; Default format for viewing sequences</tt> </tt>
<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"><tt class="py-docstring">             fasta     ----&gt; FASTA view of a sequence</tt> </tt>
<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line"><tt class="py-docstring">             gb        ----&gt;  GenBank view for sequences, constructed sequences</tt> </tt>
<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"><tt class="py-docstring">                          will be shown as contigs (by pointing to its parts).</tt> </tt>
<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"><tt class="py-docstring">                          Valid for nucleotides.</tt> </tt>
<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"><tt class="py-docstring">             gbwithparts --&gt; GenBank view for sequences, the sequence will</tt> </tt>
<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"><tt class="py-docstring">                          always be shown.  Valid for nucleotides.</tt> </tt>
<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"><tt class="py-docstring">             est       ----&gt; EST Report.  Valid for sequences from</tt> </tt>
<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"><tt class="py-docstring">                          dbEST database.</tt> </tt>
<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line"><tt class="py-docstring">             gss       ----&gt; GSS Report.  Valid for sequences from dbGSS</tt> </tt>
<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"><tt class="py-docstring">                          database.</tt> </tt>
<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line"><tt class="py-docstring">             gp        ----&gt; GenPept view.  Valid for proteins.</tt> </tt>
<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line"><tt class="py-docstring">             seqid     ----&gt; To convert list of gis into list of seqids</tt> </tt>
<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"><tt class="py-docstring">             acc       ----&gt; To convert list of gis into list of accessions</tt> </tt>
<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-docstring">             # XXX TRY THESE</tt> </tt>
<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-docstring">             fasta_xml</tt> </tt>
<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-docstring">             gb_xml</tt> </tt>
<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"><tt class="py-docstring">             gi  (same as uilist?)</tt> </tt>
<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-docstring">             </tt> </tt>
<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-docstring">        A retmode of 'file' is the same as 'text' except the data is</tt> </tt>
<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"><tt class="py-docstring">        sent with a Content-Type of application/octet-stream, which tells</tt> </tt>
<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-docstring">        the browser to save the data to a file.</tt> </tt>
<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-docstring">        A retmode of 'html' is the same as 'text' except a HTML header</tt> </tt>
<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-docstring">        and footer are added and special character are properly escaped.</tt> </tt>
<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-docstring">        Returns an input stream from an HTTP request.  The stream</tt> </tt>
<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-docstring">        contents are in the requested format.</tt> </tt>
<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"> </tt>
<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">        <tt class="py-comment"># NOTE: found the list of possible values by sending illegal</tt> </tt>
<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># parameters, to see which comes up as an error message.  Used</tt> </tt>
<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># that to supplement the information from the documentation.</tt> </tt>
<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Looks like efetch is based on pmfetch code and uses the same</tt> </tt>
<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># types.</tt> </tt>
<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">        <tt class="py-comment"># if retmax is specified and larger than 500, NCBI only returns </tt> </tt>
<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># 500 sequences. Removing it from the URL relieves this constraint.</tt> </tt>
<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># To get around this, if retstart is 0 and retmax is greater than 500,</tt> </tt>
<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># we set retmax to be None.</tt> </tt>
<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">retstart</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">retmax</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">500</tt><tt class="py-op">:</tt> </tt>
<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">            <tt class="py-name">retmax</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="Bio.EUtils.ThinClient.ThinClient._get
Bio.config.DBRegistry.BioCorbaDB._get
Bio.config.DBRegistry.BioSQLDB._get
Bio.config.DBRegistry.CGIDB._get
Bio.config.DBRegistry.DBObject._get
Bio.config.DBRegistry.EUtilsDB._get
Bio.config.DBRegistry.IndexedFileDB._get" class="py-name" href="#" onclick="return doclink('link-83', '_get', 'link-55');">_get</a></tt><tt class="py-op">(</tt><tt class="py-name">program</tt> <tt class="py-op">=</tt> <tt class="py-string">"efetch.fcgi"</tt><tt class="py-op">,</tt> </tt>
<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">                         <tt id="link-84" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-84', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"db"</tt><tt class="py-op">:</tt> <tt id="link-85" class="py-name"><a title="Bio.LocusLink.locus_format.db
Bio.config.DBRegistry.db" class="py-name" href="#" onclick="return doclink('link-85', 'db', 'link-51');">db</a></tt><tt class="py-op">,</tt> </tt>
<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">                                  <tt class="py-string">"WebEnv"</tt><tt class="py-op">:</tt> <tt class="py-name">webenv</tt><tt class="py-op">,</tt> </tt>
<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">                                  <tt class="py-string">"query_key"</tt><tt class="py-op">:</tt> <tt class="py-name">query_key</tt><tt class="py-op">,</tt> </tt>
<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">                                  <tt class="py-string">"retstart"</tt><tt class="py-op">:</tt> <tt class="py-name">retstart</tt><tt class="py-op">,</tt> </tt>
<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">                                  <tt class="py-string">"retmax"</tt><tt class="py-op">:</tt> <tt class="py-name">retmax</tt><tt class="py-op">,</tt> </tt>
<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">                                  <tt class="py-string">"retmode"</tt><tt class="py-op">:</tt> <tt class="py-name">retmode</tt><tt class="py-op">,</tt> </tt>
<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">                                  <tt class="py-string">"rettype"</tt><tt class="py-op">:</tt> <tt class="py-name">rettype</tt><tt class="py-op">,</tt> </tt>
<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">                                  <tt class="py-string">"seq_start"</tt><tt class="py-op">:</tt> <tt class="py-name">seq_start</tt><tt class="py-op">,</tt> </tt>
<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">                                  <tt class="py-string">"seq_stop"</tt><tt class="py-op">:</tt> <tt class="py-name">seq_stop</tt><tt class="py-op">,</tt> </tt>
<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">                                  <tt class="py-string">"strand"</tt><tt class="py-op">:</tt> <tt id="link-86" class="py-name" targets="Method Bio.Blast.NCBIStandalone._HSPConsumer.strand()=Bio.Blast.NCBIStandalone._HSPConsumer-class.html#strand,Variable Bio.expressions.blast.ncbiblast.strand=Bio.expressions.blast.ncbiblast-module.html#strand"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.strand
Bio.expressions.blast.ncbiblast.strand" class="py-name" href="#" onclick="return doclink('link-86', 'strand', 'link-86');">strand</a></tt><tt class="py-op">,</tt> </tt>
<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">                                  <tt class="py-string">"complexity"</tt><tt class="py-op">:</tt> <tt class="py-name">complexity</tt><tt class="py-op">,</tt> </tt>
<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">                                  <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
</div><a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"> </tt>
<a name="ThinClient.efetch_using_dbids"></a><div id="ThinClient.efetch_using_dbids-def"><a name="L968"></a><tt class="py-lineno"> 968</tt> <a class="py-toggle" href="#" id="ThinClient.efetch_using_dbids-toggle" onclick="return toggle('ThinClient.efetch_using_dbids');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#efetch_using_dbids">efetch_using_dbids</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">                       <tt class="py-param">dbids</tt><tt class="py-op">,</tt> </tt>
<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">                       <tt class="py-param">retmode</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">                       <tt class="py-param">rettype</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"> </tt>
<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">                       <tt class="py-comment"># sequence only</tt> </tt>
<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">                       <tt class="py-param">seq_start</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">                       <tt class="py-param">seq_stop</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">                       <tt class="py-param">strand</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">                       <tt class="py-param">complexity</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">                       <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient.efetch_using_dbids-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient.efetch_using_dbids-expanded"><a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">        <tt class="py-docstring">"""dbids, retmode = None, rettype = None, seq_start = None, seq_stop = None, strand = None, complexity = None</tt> </tt>
<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line"><tt class="py-docstring">        Fetch information for records specified by identifier</tt> </tt>
<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"><tt class="py-docstring">        'dbids' -- a DBIds containing the database name and list</tt> </tt>
<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"><tt class="py-docstring">                       of record identifiers</tt> </tt>
<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-docstring">        'retmode' -- See the docstring for 'efetch_using_history'</tt> </tt>
<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-docstring">        'rettype' -- See the docstring for 'efetch_using_history'</tt> </tt>
<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-docstring">        These options work for sequence databases</tt> </tt>
<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line"><tt class="py-docstring">        'seq_start' -- return the sequence starting at this position.</tt> </tt>
<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line"><tt class="py-docstring">               The first position is numbered 1</tt> </tt>
<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"><tt class="py-docstring">        'seq_stop' -- return the sequence ending at this position</tt> </tt>
<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-docstring">               Includes the stop position, so seq_start = 1 and</tt> </tt>
<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line"><tt class="py-docstring">               seq_stop = 5 returns the first 5 bases/residues.</tt> </tt>
<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"><tt class="py-docstring">        'strand' -- strand.  Use EUtils.PLUS_STRAND (== 1) for plus</tt> </tt>
<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"><tt class="py-docstring">               strand and EUtils.MINUS_STRAND (== 2) for negative</tt> </tt>
<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-docstring">        'complexity' -- regulates the level of display.  Options are</tt> </tt>
<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-docstring">            0 - get the whole blob</tt> </tt>
<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"><tt class="py-docstring">            1 - get the bioseq for gi of interest (default in Entrez)</tt> </tt>
<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"><tt class="py-docstring">            2 - get the minimal bioseq-set containing the gi of interest</tt> </tt>
<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"><tt class="py-docstring">            3 - get the minimal nuc-prot containing the gi of interest</tt> </tt>
<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"><tt class="py-docstring">            4 - get the minimal pub-set containing the gi of interest</tt> </tt>
<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"><tt class="py-docstring">        Returns an input stream from an HTTP request.  The stream</tt> </tt>
<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-docstring">        contents are in the requested format.</tt> </tt>
<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">        <tt class="py-name">id_string</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="Bio.EUtils.ThinClient._dbids_to_id_string" class="py-name" href="#" onclick="return doclink('link-87', '_dbids_to_id_string', 'link-58');">_dbids_to_id_string</a></tt><tt class="py-op">(</tt><tt id="link-88" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-88', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="Bio.EUtils.ThinClient.ThinClient._get
Bio.config.DBRegistry.BioCorbaDB._get
Bio.config.DBRegistry.BioSQLDB._get
Bio.config.DBRegistry.CGIDB._get
Bio.config.DBRegistry.DBObject._get
Bio.config.DBRegistry.EUtilsDB._get
Bio.config.DBRegistry.IndexedFileDB._get" class="py-name" href="#" onclick="return doclink('link-89', '_get', 'link-55');">_get</a></tt><tt class="py-op">(</tt><tt class="py-name">program</tt> <tt class="py-op">=</tt> <tt class="py-string">"efetch.fcgi"</tt><tt class="py-op">,</tt> </tt>
<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">                         <tt id="link-90" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-90', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"id"</tt><tt class="py-op">:</tt> <tt class="py-name">id_string</tt><tt class="py-op">,</tt> </tt>
<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">                                  <tt class="py-string">"db"</tt><tt class="py-op">:</tt> <tt id="link-91" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-91', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="Bio.LocusLink.locus_format.db
Bio.config.DBRegistry.db" class="py-name" href="#" onclick="return doclink('link-92', 'db', 'link-51');">db</a></tt><tt class="py-op">,</tt> </tt>
<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">                                  <tt class="py-comment"># "retmax": len(dbids.ids), # needed?</tt> </tt>
<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">                                  <tt class="py-string">"retmode"</tt><tt class="py-op">:</tt> <tt class="py-name">retmode</tt><tt class="py-op">,</tt> </tt>
<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">                                  <tt class="py-string">"rettype"</tt><tt class="py-op">:</tt> <tt class="py-name">rettype</tt><tt class="py-op">,</tt> </tt>
<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">                                  <tt class="py-string">"seq_start"</tt><tt class="py-op">:</tt> <tt class="py-name">seq_start</tt><tt class="py-op">,</tt> </tt>
<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">                                  <tt class="py-string">"seq_stop"</tt><tt class="py-op">:</tt> <tt class="py-name">seq_stop</tt><tt class="py-op">,</tt> </tt>
<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">                                  <tt class="py-string">"strand"</tt><tt class="py-op">:</tt> <tt id="link-93" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.strand
Bio.expressions.blast.ncbiblast.strand" class="py-name" href="#" onclick="return doclink('link-93', 'strand', 'link-86');">strand</a></tt><tt class="py-op">,</tt> </tt>
<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">                                  <tt class="py-string">"complexity"</tt><tt class="py-op">:</tt> <tt class="py-name">complexity</tt><tt class="py-op">,</tt> </tt>
<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">                                  <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
</div><a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"> </tt>
<a name="ThinClient.elink_using_history"></a><div id="ThinClient.elink_using_history-def"><a name="L1020"></a><tt class="py-lineno">1020</tt> <a class="py-toggle" href="#" id="ThinClient.elink_using_history-toggle" onclick="return toggle('ThinClient.elink_using_history');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#elink_using_history">elink_using_history</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">                            <tt class="py-param">dbfrom</tt><tt class="py-op">,</tt> </tt>
<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">                            <tt class="py-param">webenv</tt><tt class="py-op">,</tt> </tt>
<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">                            <tt class="py-param">query_key</tt><tt class="py-op">,</tt> </tt>
<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"> </tt>
<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">                            <tt class="py-param">db</tt> <tt class="py-op">=</tt> <tt class="py-string">"pubmed"</tt><tt class="py-op">,</tt> </tt>
<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"> </tt>
<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">                            <tt class="py-param">retstart</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">                            <tt class="py-param">retmax</tt> <tt class="py-op">=</tt> <tt class="py-number">20</tt><tt class="py-op">,</tt> </tt>
<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"> </tt>
<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">                            <tt class="py-param">cmd</tt> <tt class="py-op">=</tt> <tt class="py-string">"neighbor"</tt><tt class="py-op">,</tt> </tt>
<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">                            <tt class="py-param">retmode</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"> </tt>
<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">                            <tt class="py-param">term</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">                            <tt class="py-param">field</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">                            <tt class="py-comment"># "Date limits not valid for link commands"</tt> </tt>
<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">                            <tt class="py-param">daterange</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">                            <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient.elink_using_history-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient.elink_using_history-expanded"><a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">        <tt class="py-docstring">"""dbfrom, webenv, query_key, db="pubmed", retstart=0, retmax=20, cmd="neighbor", retmode=None, term=None, field=None, daterange=None, </tt> </tt>
<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-docstring">        Find records related (in various ways) to a collection of</tt> </tt>
<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-docstring">        records in the history.</tt> </tt>
<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"><tt class="py-docstring">        'dbfrom' -- this is the name of the database containing the</tt> </tt>
<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-docstring">                      collection of record.  NOTE!  For the other methods</tt> </tt>
<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt class="py-docstring">                      this is named 'db'.  But I'm keeping NCBI's notation.</tt> </tt>
<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-docstring">                      This is where the records come FROM.</tt> </tt>
<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-docstring">        'webenv' -- the WebEnv cookie for the history</tt> </tt>
<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-docstring">        'query_key' -- the collection in the history</tt> </tt>
<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-docstring">        'db' -- Where the records link TO.  This is where you want to</tt> </tt>
<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-docstring">                  find the new records.  For example, if you want to</tt> </tt>
<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-docstring">                  find PubMed records related to a protein then 'dbfrom'</tt> </tt>
<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-docstring">                  is 'protein' and 'db' is 'pubmed'</tt> </tt>
<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring">        'cmd'-- one of the following (unless specified, retmode is the</tt> </tt>
<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring">                      default value, which returns data in XML)</tt> </tt>
<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring">           neighbor:  Display neighbors and their scores by database and ID.</tt> </tt>
<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring">                         (This is the default 'cmd'.)</tt> </tt>
<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-docstring">           prlinks: List the hyperlink to the primary LinkOut provider</tt> </tt>
<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"><tt class="py-docstring">                         for multiple IDs and database.</tt> </tt>
<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-docstring">                    When retmode == 'ref' this URL redirects the browser</tt> </tt>
<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-docstring">                         to the primary LinkOut provider for a single ID</tt> </tt>
<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-docstring">                         and database.</tt> </tt>
<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"><tt class="py-docstring">           llinks:  List LinkOut URLs and Attributes for multiple IDs</tt> </tt>
<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"><tt class="py-docstring">                         and database.</tt> </tt>
<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-docstring">           lcheck:  Check for the existence (Y or N) of an external</tt> </tt>
<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-docstring">                         link in for multiple IDs and database.</tt> </tt>
<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-docstring">           ncheck:  Check for the existence of a neighbor link for</tt> </tt>
<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"><tt class="py-docstring">                         each ID, e.g., Related Articles in PubMed.</tt> </tt>
<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-docstring">        'retstart' -- get the formatted data starting with this position</tt> </tt>
<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"><tt class="py-docstring">        'retmax' -- get data for at most this many records</tt> </tt>
<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"><tt class="py-docstring">        'retmode' -- only used with 'prlinks'</tt> </tt>
<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line"><tt class="py-docstring">        'term' -- restrict results to records which also match this</tt> </tt>
<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line"><tt class="py-docstring">                         Entrez search</tt> </tt>
<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"><tt class="py-docstring">        'field' -- the field to use for unqualified words</tt> </tt>
<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"><tt class="py-docstring">        'daterange' -- restrict results to records which also match this</tt> </tt>
<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-docstring">                         date criteria; either WithinNDays or DateRange</tt> </tt>
<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-docstring">                         NOTE: DateRange must have both mindate and maxdate</tt> </tt>
<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"><tt class="py-docstring">        Some examples:</tt> </tt>
<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-docstring">          In PubMed, to get a list of "Related Articles"</tt> </tt>
<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-docstring">            dbfrom = pubmed</tt> </tt>
<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"><tt class="py-docstring">            cmd = neighbor</tt> </tt>
<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line"><tt class="py-docstring">          To get MEDLINE index only related article</tt> </tt>
<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"><tt class="py-docstring">            dbfrom = pubmed</tt> </tt>
<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line"><tt class="py-docstring">            db = pubmed</tt> </tt>
<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"><tt class="py-docstring">            term = medline[sb]</tt> </tt>
<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"><tt class="py-docstring">            cmd = neighbor</tt> </tt>
<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-docstring">          Given a PubMed record, find the related nucleotide records</tt> </tt>
<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-docstring">            dbfrom = pubmed</tt> </tt>
<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-docstring">            db = nucleotide  (or "protein" for related protein records)</tt> </tt>
<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt class="py-docstring">            cmd = neighbor</tt> </tt>
<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"><tt class="py-docstring">          To get "LinkOuts" (external links) for a PubMed record set</tt> </tt>
<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-docstring">            dbfrom = pubmed</tt> </tt>
<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-docstring">            cmd = llinks</tt> </tt>
<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"><tt class="py-docstring">          Get the primary link information for a PubMed document; includes</tt> </tt>
<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"><tt class="py-docstring">              various hyperlinks, image URL for the provider, etc.</tt> </tt>
<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"><tt class="py-docstring">            dbfrom = pubmed</tt> </tt>
<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-docstring">            cmd = prlinks</tt> </tt>
<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"><tt class="py-docstring">            (optional) retmode = "ref" (causes a redirect to the privder)</tt> </tt>
<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt>
<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-docstring">        Returns an input stream from an HTTP request.  The stream</tt> </tt>
<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"><tt class="py-docstring">        contents are in XML unless 'retmode' is 'ref'.</tt> </tt>
<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">        <tt id="link-94" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-94', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"WebEnv"</tt><tt class="py-op">:</tt> <tt class="py-name">webenv</tt><tt class="py-op">,</tt> </tt>
<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">                 <tt class="py-string">"query_key"</tt><tt class="py-op">:</tt> <tt class="py-name">query_key</tt><tt class="py-op">,</tt> </tt>
<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">                 <tt class="py-string">"db"</tt><tt class="py-op">:</tt> <tt id="link-95" class="py-name"><a title="Bio.LocusLink.locus_format.db
Bio.config.DBRegistry.db" class="py-name" href="#" onclick="return doclink('link-95', 'db', 'link-51');">db</a></tt><tt class="py-op">,</tt> </tt>
<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">                 <tt class="py-string">"dbfrom"</tt><tt class="py-op">:</tt> <tt class="py-name">dbfrom</tt><tt class="py-op">,</tt> </tt>
<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">                 <tt class="py-string">"cmd"</tt><tt class="py-op">:</tt> <tt class="py-name">cmd</tt><tt class="py-op">,</tt> </tt>
<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">                 <tt class="py-string">"retstart"</tt><tt class="py-op">:</tt> <tt class="py-name">retstart</tt><tt class="py-op">,</tt> </tt>
<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">                 <tt class="py-string">"retmax"</tt><tt class="py-op">:</tt> <tt class="py-name">retmax</tt><tt class="py-op">,</tt> </tt>
<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">                 <tt class="py-string">"retmode"</tt><tt class="py-op">:</tt> <tt class="py-name">retmode</tt><tt class="py-op">,</tt> </tt>
<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">                 <tt class="py-string">"term"</tt><tt class="py-op">:</tt> <tt class="py-name">term</tt><tt class="py-op">,</tt> </tt>
<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">                 <tt class="py-string">"field"</tt><tt class="py-op">:</tt> <tt class="py-name">field</tt><tt class="py-op">,</tt> </tt>
<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">                 <tt class="py-op">}</tt> </tt>
<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">daterange</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">daterange</tt><tt class="py-op">.</tt><tt class="py-name">mindate</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">daterange</tt><tt class="py-op">.</tt><tt class="py-name">maxdate</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Both mindate and maxdate must be set for eLink"</tt><tt class="py-op">)</tt> </tt>
<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">            <tt id="link-96" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-96', 'query', 'link-23');">query</a></tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="Bio.GenBank.NCBIDictionary.update
Bio.Index._InMemoryIndex.update
Bio.NeuralNetwork.BackPropagation.Layer.HiddenLayer.update
Bio.NeuralNetwork.BackPropagation.Layer.InputLayer.update
Bio.NeuralNetwork.BackPropagation.Layer.OutputLayer.update
Bio.Prosite.ExPASyDictionary.update
Bio.Prosite.Prodoc.ExPASyDictionary.update
Bio.PubMed.Dictionary.update
Bio.Restriction._Update.Update.RebaseUpdate.update
Bio.SwissProt.SProt.ExPASyDictionary.update" class="py-name" href="#" onclick="return doclink('link-97', 'update', 'link-53');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">daterange</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="Bio.EUtils.Datatypes.DateRange.get_query_params
Bio.EUtils.Datatypes.WithinNDays.get_query_params" class="py-name" href="#" onclick="return doclink('link-98', 'get_query_params', 'link-54');">get_query_params</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="Bio.EUtils.ThinClient.ThinClient._get
Bio.config.DBRegistry.BioCorbaDB._get
Bio.config.DBRegistry.BioSQLDB._get
Bio.config.DBRegistry.CGIDB._get
Bio.config.DBRegistry.DBObject._get
Bio.config.DBRegistry.EUtilsDB._get
Bio.config.DBRegistry.IndexedFileDB._get" class="py-name" href="#" onclick="return doclink('link-99', '_get', 'link-55');">_get</a></tt><tt class="py-op">(</tt><tt class="py-name">program</tt> <tt class="py-op">=</tt> <tt class="py-string">"elink.fcgi"</tt><tt class="py-op">,</tt> <tt id="link-100" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-100', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-101', 'query', 'link-23');">query</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"> </tt>
<a name="ThinClient.elink_using_dbids"></a><div id="ThinClient.elink_using_dbids-def"><a name="L1130"></a><tt class="py-lineno">1130</tt> <a class="py-toggle" href="#" id="ThinClient.elink_using_dbids-toggle" onclick="return toggle('ThinClient.elink_using_dbids');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="Bio.EUtils.ThinClient.ThinClient-class.html#elink_using_dbids">elink_using_dbids</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">                          <tt class="py-param">dbids</tt><tt class="py-op">,</tt> </tt>
<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">                          <tt class="py-param">db</tt> <tt class="py-op">=</tt> <tt class="py-string">"pubmed"</tt><tt class="py-op">,</tt> </tt>
<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line"> </tt>
<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">                          <tt class="py-param">cmd</tt> <tt class="py-op">=</tt> <tt class="py-string">"neighbor"</tt><tt class="py-op">,</tt> </tt>
<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">                           </tt>
<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">                          <tt class="py-param">retmode</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">                          <tt class="py-param">term</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">                          <tt class="py-param">field</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"> </tt>
<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">                          <tt class="py-param">daterange</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">                           </tt>
<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">                          <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ThinClient.elink_using_dbids-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ThinClient.elink_using_dbids-expanded"><a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">        <tt class="py-docstring">"""dbids, db="pubmed", cmd="neighbor", retmode=None, term=None, daterange=None</tt> </tt>
<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"><tt class="py-docstring">        Find records related (in various ways) to a set of records</tt> </tt>
<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt class="py-docstring">        specified by identifier.</tt> </tt>
<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"><tt class="py-docstring">        'dbids' -- a DBIds containing the database name and list</tt> </tt>
<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"><tt class="py-docstring">                       of record identifiers</tt> </tt>
<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-docstring">        'db' -- Where the records link TO.  This is where you want to</tt> </tt>
<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"><tt class="py-docstring">                  find the new records.  For example, if you want to</tt> </tt>
<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"><tt class="py-docstring">                  find PubMed records related to a protein then 'db'</tt> </tt>
<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"><tt class="py-docstring">                  is 'pubmed'.  (The database they are from is part</tt> </tt>
<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"><tt class="py-docstring">                  of the DBIds object.)</tt> </tt>
<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"><tt class="py-docstring">        'cmd' -- see the docstring for 'elink_using_history'</tt> </tt>
<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"><tt class="py-docstring">        'retmode' -- see 'elink_using_history'</tt> </tt>
<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"><tt class="py-docstring">        'term' -- see 'elink_using_history'</tt> </tt>
<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line"><tt class="py-docstring">        'daterange' -- see 'elink_using_history'</tt> </tt>
<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-docstring">        Returns an input stream from an HTTP request.  The stream</tt> </tt>
<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"><tt class="py-docstring">        contents are in XML unless 'retmode' is 'ref'.</tt> </tt>
<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">        <tt class="py-name">id_string</tt> <tt class="py-op">=</tt> <tt id="link-102" class="py-name"><a title="Bio.EUtils.ThinClient._dbids_to_id_string" class="py-name" href="#" onclick="return doclink('link-102', '_dbids_to_id_string', 'link-58');">_dbids_to_id_string</a></tt><tt class="py-op">(</tt><tt id="link-103" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-103', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">)</tt> </tt>
<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">        <tt id="link-104" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-104', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"id"</tt><tt class="py-op">:</tt> <tt class="py-name">id_string</tt><tt class="py-op">,</tt> </tt>
<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">                 <tt class="py-string">"db"</tt><tt class="py-op">:</tt> <tt id="link-105" class="py-name"><a title="Bio.LocusLink.locus_format.db
Bio.config.DBRegistry.db" class="py-name" href="#" onclick="return doclink('link-105', 'db', 'link-51');">db</a></tt><tt class="py-op">,</tt> </tt>
<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">                 <tt class="py-string">"dbfrom"</tt><tt class="py-op">:</tt> <tt id="link-106" class="py-name"><a title="Bio.EUtils.DBIdsClient.DBIdsLookup.dbids
Bio.EUtils.Datatypes.CheckLinkSet.dbids
Bio.EUtils.Datatypes.LinkSetDb.dbids
Bio.EUtils.HistoryClient.HistoryLookup.dbids" class="py-name" href="#" onclick="return doclink('link-106', 'dbids', 'link-7');">dbids</a></tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="Bio.LocusLink.locus_format.db
Bio.config.DBRegistry.db" class="py-name" href="#" onclick="return doclink('link-107', 'db', 'link-51');">db</a></tt><tt class="py-op">,</tt> </tt>
<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">                 <tt class="py-string">"cmd"</tt><tt class="py-op">:</tt> <tt class="py-name">cmd</tt><tt class="py-op">,</tt> </tt>
<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">                 <tt class="py-string">"retmode"</tt><tt class="py-op">:</tt> <tt class="py-name">retmode</tt><tt class="py-op">,</tt> </tt>
<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">                 <tt class="py-string">"field"</tt> <tt class="py-op">:</tt> <tt class="py-name">field</tt><tt class="py-op">,</tt> </tt>
<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">                 <tt class="py-string">"term"</tt><tt class="py-op">:</tt> <tt class="py-name">term</tt><tt class="py-op">,</tt> </tt>
<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">                 <tt class="py-op">}</tt> </tt>
<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">daterange</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt id="link-108" class="py-name" targets="Module Bio.EUtils.Datatypes=Bio.EUtils.Datatypes-module.html"><a title="Bio.EUtils.Datatypes" class="py-name" href="#" onclick="return doclink('link-108', 'Datatypes', 'link-108');">Datatypes</a></tt> </tt>
<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">daterange</tt><tt class="py-op">,</tt> <tt id="link-109" class="py-name"><a title="Bio.EUtils.Datatypes" class="py-name" href="#" onclick="return doclink('link-109', 'Datatypes', 'link-108');">Datatypes</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Class Bio.EUtils.Datatypes.DateRange=Bio.EUtils.Datatypes.DateRange-class.html"><a title="Bio.EUtils.Datatypes.DateRange" class="py-name" href="#" onclick="return doclink('link-110', 'DateRange', 'link-110');">DateRange</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> \ </tt>
<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">               <tt class="py-op">(</tt><tt class="py-name">daterange</tt><tt class="py-op">.</tt><tt class="py-name">mindate</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">daterange</tt><tt class="py-op">.</tt><tt class="py-name">maxdate</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Both mindate and maxdate must be set for eLink"</tt><tt class="py-op">)</tt> </tt>
<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">            <tt id="link-111" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-111', 'query', 'link-23');">query</a></tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="Bio.GenBank.NCBIDictionary.update
Bio.Index._InMemoryIndex.update
Bio.NeuralNetwork.BackPropagation.Layer.HiddenLayer.update
Bio.NeuralNetwork.BackPropagation.Layer.InputLayer.update
Bio.NeuralNetwork.BackPropagation.Layer.OutputLayer.update
Bio.Prosite.ExPASyDictionary.update
Bio.Prosite.Prodoc.ExPASyDictionary.update
Bio.PubMed.Dictionary.update
Bio.Restriction._Update.Update.RebaseUpdate.update
Bio.SwissProt.SProt.ExPASyDictionary.update" class="py-name" href="#" onclick="return doclink('link-112', 'update', 'link-53');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">daterange</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="Bio.EUtils.Datatypes.DateRange.get_query_params
Bio.EUtils.Datatypes.WithinNDays.get_query_params" class="py-name" href="#" onclick="return doclink('link-113', 'get_query_params', 'link-54');">get_query_params</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">         </tt>
<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="Bio.EUtils.ThinClient.ThinClient._get
Bio.config.DBRegistry.BioCorbaDB._get
Bio.config.DBRegistry.BioSQLDB._get
Bio.config.DBRegistry.CGIDB._get
Bio.config.DBRegistry.DBObject._get
Bio.config.DBRegistry.EUtilsDB._get
Bio.config.DBRegistry.IndexedFileDB._get" class="py-name" href="#" onclick="return doclink('link-114', '_get', 'link-55');">_get</a></tt><tt class="py-op">(</tt><tt class="py-name">program</tt> <tt class="py-op">=</tt> <tt class="py-string">"elink.fcgi"</tt><tt class="py-op">,</tt> <tt id="link-115" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-115', 'query', 'link-23');">query</a></tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="Bio.Blast.NCBIStandalone._HSPConsumer.query
Bio.Entrez.query
Bio.WWW.NCBI.query" class="py-name" href="#" onclick="return doclink('link-116', 'query', 'link-23');">query</a></tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

      <th class="navbar" width="100%"></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0.1 on Mon Sep 15 09:26:57 2008
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>