# Unable to read all alignments in stockholm format : UnicodeDecodeError: 'utf-8'

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__
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?

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

• 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.
• 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.