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.
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 usingSeqIO
, it does that for you, and also you open your output file twice needlessly.Try refactoring this code to:
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.
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.