1
$\begingroup$

I have a file in Stockholm format and I am trying to read it using the Biopython package. The code is as follows :

import numpy as np
from Bio import AlignIO

alignments = AlignIO.parse("Rfam.seed", "stockholm")
for alignment in alignments:
    print(alignment)

It gets read for some alignments and then throws up following error :

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    for alignment in alignments:
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/Bio/AlignIO/__init__.py", line 394, in parse
    for a in i:
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/Bio/AlignIO/StockholmIO.py", line 408, in __next__
    line = handle.readline()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe1 in position 2468: invalid continuation byte

How to resolve this error?

$\endgroup$
1
  • $\begingroup$ Can you not just remove the unicode character from your file? The error is due to a Unicode character (å)... $\endgroup$ Dec 31 '19 at 10:44
2
$\begingroup$

The last line indicates that this is an encoding problem. Try to see if the function you are using to read the data has an "encoding" parameter that you can set to whatever encoding your file is using. If that doesn't work, you can change the encoding of your file by:

  • with save as using a text editor of your choice and selecting "UTF8" as the encoding. That would be a quick work-around if you have a small number of files.

or

  • You can use the codecs library to check and convert file encodings within your code. Here is an example.

Warning: I haven't used Biopython in ages but encountered similar problems with Python in the past.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.