<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Many thanks. I’ll try that for my production code. As it is for student novices just getting in to biopython I’ll restructure the assignment
 to read a genbank file they have downloaded instead of retrieving the entry from the DB.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">..d<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Leighton Pritchard [mailto:Leighton.Pritchard@hutton.ac.uk]
<br>
<b>Sent:</b> 02 November 2016 09:29<br>
<b>To:</b> David Martin (Staff) <d.m.a.martin@dundee.ac.uk><br>
<b>Cc:</b> biopython@lists.open-bio.org <biopython@mailman.open-bio.org><br>
<b>Subject:</b> Re: [Biopython] Errors with retrieval from Entrez<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Hi David,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">NCBI/Entrez queries are prone to this - I usually wrap the request in a structure that allows retries in case of errors, e.g. something like<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">```<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># Report last exception as string<br>
def last_exception():<br>
    """ Returns last exception as a string, or use in logging."""<br>
    exc_type, exc_value, exc_traceback = sys.exc_info()<br>
    return ''.join(traceback.format_exception(exc_type, exc_value,<br>
                                              exc_traceback))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><br>
# Retry Entrez requests (or any other function)<br>
def entrez_retry(fn, logger, *fnargs, **fnkwargs):<br>
    """Retries the passed function up to the number of times specified<br>
    by args.retries<br>
    """<br>
    tries, success = 0, False<br>
    while not success and tries < args.retries:<br>
        try:<br>
            output = fn(*fnargs, **fnkwargs)<br>
            success = True<br>
        except:<br>
            tries += 1<br>
            logger.warning("Entrez query %s(%s, %s) failed (%d/%d)",<br>
                           fn, fnargs, fnkwargs, tries+1, args.retries)<br>
            logger.warning(last_exception())<br>
    if not success:<br>
        logger.error("Too many Entrez failures (exiting)")<br>
        sys.exit(1)<br>
    return output<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">```<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The except: clause would be better if it caught IncompleteRead…<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Cheers,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">L.<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On 2 Nov 2016, at 08:57, David Martin (Staff) <<a href="mailto:d.m.a.martin@dundee.ac.uk">d.m.a.martin@dundee.ac.uk</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">I’m trying to retrieve a sequence from NCBI and am getting incomplete reads. Any hints or tips?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">..d<span class="apple-converted-space"> </span><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">handle= Entrez.efetch(db="nuccore", id=gi, retmode='text', rettype='gb')<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">seq= handle.read()<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Traceback (most recent call last):<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">  File "<ipython-input-11-f879be0f80fe>", line 2, in <module><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">    seq= handle.read()<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">  File "C:\Anaconda3\lib\http\client.py", line 440, in read<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">    return self._readall_chunked()<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">  File "C:\Anaconda3\lib\http\client.py", line 550, in _readall_chunked<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">    raise IncompleteRead(b''.join(value))<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">IncompleteRead: IncompleteRead(6841762 bytes read)<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica",sans-serif"><br>
</span><span style="font-size:10.0pt;font-family:"Helvetica",sans-serif">The University of Dundee is a registered Scottish Charity, No: SC015096</span><span class="apple-converted-space"><span style="font-size:7.5pt;font-family:"Helvetica",sans-serif"> </span></span><span style="font-size:7.5pt;font-family:"Helvetica",sans-serif">_______________________________________________<br>
Biopython mailing list  -  </span><a href="mailto:Biopython@mailman.open-bio.org"><span style="font-size:7.5pt;font-family:"Helvetica",sans-serif;color:#954F72">Biopython@mailman.open-bio.org</span></a><span style="font-size:7.5pt;font-family:"Helvetica",sans-serif"><br>
</span><a href="http://mailman.open-bio.org/mailman/listinfo/biopython"><span style="font-size:7.5pt;font-family:"Helvetica",sans-serif;color:#954F72">http://mailman.open-bio.org/mailman/listinfo/biopython</span></a><o:p></o:p></p>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Helvetica",sans-serif;color:black">--<br>
Dr Leighton Pritchard<br>
Information and Computing Sciences Group; Weeds, Pests and Diseases Theme<br>
DG31, James Hutton Institute (Dundee)<br>
Errol Road, Invergowrie, Perth and Kinross, Scotland, DD2 5DA<br>
e: <a href="mailto:leighton.pritchard@hutton.ac.uk">leighton.pritchard@hutton.ac.uk</a>       w:
<a href="http://www.hutton.ac.uk/staff/leighton-pritchard">http://www.hutton.ac.uk/staff/leighton-pritchard</a><br>
gpg/pgp: 0xFEFC205C tel: +44(0)844 928 5428 x8827 or +44(0)1382 568827<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
<br>
<o:p></o:p></p>
<p>This email is from the James Hutton Institute, however the views expressed by the sender are not necessarily the views of the James Hutton Institute and its subsidiaries. This email and any attachments are confidential and are intended solely for the use
 of the recipient(s) to whom they are addressed.<o:p></o:p></p>
<p>If you are not the intended recipient, you should not read, copy, disclose or rely on any information contained in this email, and we would ask you to contact the sender immediately and delete the email from your system.  Although the James Hutton Institute
 has taken reasonable precautions to ensure no viruses are present in this email, neither the Institute nor the sender accepts any responsibility for any viruses, and it is your responsibility to scan the email and any attachments.<o:p></o:p></p>
<p class="MsoNormal">The James Hutton Institute is a Scottish charitable company limited by guarantee.
<br>
Registered in Scotland No. SC374831 <br>
Registered Office: The James Hutton Institute, Invergowrie Dundee DD2 5DA. <br>
Charity No. SC041796<o:p></o:p></p>
</div>
<br>
<span style="font-size:10pt;">The University of Dundee is a registered Scottish Charity, No: SC015096</span>
</body>
</html>