[Biopython-dev] [Bug 1968] New: GenBank parsing fails if REFERNCE (bases.. )line is split

bugzilla-daemon at portal.open-bio.org bugzilla-daemon at portal.open-bio.org
Tue Mar 7 14:36:26 EST 2006


           Summary: GenBank parsing fails if REFERNCE (bases.. )line is
           Product: Biopython
           Version: Not Applicable
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: major
          Priority: P2
         Component: Main Distribution
        AssignedTo: biopython-dev at biopython.org
        ReportedBy: kael.fischer at gmail.com

Using the  Bio/GenBank/__init__.py from the CVS HEAD, parsing of:  J01917.1 
GI:209811 fails.

The file pointer is at the end of the record and the traceback is:

Traceback (most recent call last):
  File "gb2fasta.py", line 21, in ?
    for gbr in GenBank.Iterator(f,parser=gbParser):
  File "/usr/local/lib/python2.4/site-packages/Bio/GenBank/__init__.py", line
146, in next
    return self._parser.parse(File.StringHandle(data))
  File "/usr/local/lib/python2.4/site-packages/Bio/GenBank/__init__.py", line
212, in parse
    self._scanner.feed(handle, self._consumer)
  File "/usr/local/lib/python2.4/site-packages/Bio/GenBank/__init__.py", line
1518, in feed
    line = self._feed_header(handle, consumer)
  File "/usr/local/lib/python2.4/site-packages/Bio/GenBank/__init__.py", line
1386, in _feed_header
    assert line[0:GENBANK_INDENT] <> GENBANK_SPACER, \
AssertionError: Unexpected continuation of an entry:

The _feed_header method does not deal with REFERENCE ... (bases ....) being
split across lines.

This diff fixes it (form is wordwrapping it):
*** 1425,1431 ****
--- 1425,1437 ----
                  #Need to call consumer.reference_num() and
                  # REFERENCE   1  (bases 1 to 86436)
                  data = data.strip()
+                 #check for closing pren
+                 while data.find(')') == -1:
+                     data=data+handle.readline().strip()
                  while data.find('  ')<>-1:
                      data = data.replace('  ',' ')
                  if data.find(' ')==-1 :

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

More information about the Biopython-dev mailing list