AttributeError: module 'Bio.SeqIO' has no attribute 'parse'
1
0
Entering edit mode
5.4 years ago
oooyueooo ▴ 10

The codes which import Biopython and parse the files have worked on my laptop. Now I have a very big file that I can only parse it on another computer which also have installed python and Biopython. But on that computer, it gives me error message. I have uninstalled and reinstalled the latest python and biopython. The problem is still there.

The entire code is:

from Bio import SeqIO

with open('/Users/yuewang/work/18s_tree/aligned_fungi_rna.fasta', 'w') as output:
    output.write('')

with open('/Users/yuewang/work/18s_tree/SILVA_132_SSURef_tax_silva_full_align_trunc.fasta') as fastafile:
    record_iterator = SeqIO.parse(fastafile, 'fasta')

    fungi = 'Eukaryota;Opisthokonta;Nucletmycea;Fungi;'
        for record in record_iterator:
            if fungi in record.id:
                with open('/Users/yuewang/work/18s_tree/aligned_fungi_rna.fasta', 'a') as output:
                    output.write(record.format('fasta'))

Error message:

Traceback (most recent call last):
  File "copy.py", line 1, in <module>
    from Bio import SeqIO
  File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/Bio/SeqIO/__init__.py", line 391, in <module>
    from . import UniprotIO
  File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/Bio/SeqIO/UniprotIO.py", line 34, in <module>
    from xml.etree import cElementTree as ElementTree
  File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/xml/etree/cElementTree.py", line 3, in <module>
    from xml.etree.ElementTree import *
  File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/xml/etree/ElementTree.py", line 1660, in <module>
    from _elementtree import *
  File "/Users/yuewang/work/18s_tree/copy.py", line 7, in <module>
    record_iterator = SeqIO.parse(fastafile, 'fasta')
AttributeError: module 'Bio.SeqIO' has no attribute 'parse'

Please let me know if my question is not clear enough.

biopython • 4.3k views
ADD COMMENT
0
Entering edit mode

I dont think this is likely to solve the issue, but try it first (I think there’s something messed up in your install still).

You do not need to use the open() construct when using SeqIO, it does that for you, and also you open your output file twice needlessly.

Try refactoring this code to:

from Bio import SeqIO

record_iterator = SeqIO.parse(‘/path/to/fastafile.fa’, ‘fasta’)
with open(‘/path/to/output.fa’, ‘w’) as output:
    for record in record_iterator:
        if ‘Eukaryota;Opisthokonta;Nucletmycea;Fungi’ in record.id:
            output.write(record.format(‘fasta’)
ADD REPLY
1
Entering edit mode

Thanks Healey. Although it doesn't solve the issue, it does make the script better. I also posted my question on stackoverflow yesterday and it solved with the answer.

ADD REPLY
0
Entering edit mode

Interesting. I’ve been caught out by that before.

As a general rule, it’s a bad idea to name anything of your own the same as a python component. This means you’ll need to try and avoid names like copy, return, str which it might be tempting to name a script or a variable after etc.

ADD REPLY

Login before adding your answer.

Traffic: 1861 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6