以前也使用conda安装过busco,使用起来完全没问题。但是随着时间推移,很多底层的依赖库进行了更新, 导致原本可以非常流畅运行的程序总是出现一些奇奇怪怪的错误。
安装busco
conda install -c bioconda busco -y
此时安装的版本号是:
busco 5.2.2
biopython 1.79
libstdcxx-ng 11.2.0
错误1:metaeuk运行错误
在一大堆看不懂的python的报错中可以看到
subprocess.CalledProcessError: Command '['metaeuk', '-h']' returned non-zero exit status 1.
看起来似乎是metaeuk没法运行成功。busco在更新到v5之后就用metaeuk代替了原本augustus的流程,因为两者结果比较之后metaeuk的算法能大大地减少所需的时间:
the running time goes from days with Augustus to hours with Metaeuk.
https://gitlab.com/ezlab/busco/-/issues/306
于是运行 metaeuk -h
,报错:
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by xxx)
熟悉的libstdc++的问题。这个问题在之前使用conda时也经常出现,研究了一番发现可能是默认安装的libstdcxx-ng的版本太高导致的。最简单的办法就是安装一个低版本的libstdcxx-ng依赖库。
conda install libstdcxx-ng=9.4.0
之后再运行 metaeuk -h 就可以成功打印出帮助文档了。
错误2:Bio.Alphabet has been removed from Biopython.
这个错误也是由于busco所依赖的biopython的新版本而引起的。
Bio.Alphabet has been removed from Biopython. In many cases, the alphabet can simply be ignored and removed from scripts. In a few cases, you may need to specify the
molecule_type
as an annotation on a SeqRecord for your script to work correctly. Please see https://biopython.org/wiki/Alphabet for more information.
There was a problem installing BUSCO or importing one of its dependencies. See the user guide and the GitLab issue board (https://gitlab.com/ezlab/busco/issues) if you need further assistance.
到它提到的网站去看了看(https://biopython.org/wiki/Alphabet),更新历史如下:
Introduction
This page is intended to help people updating existing code using Biopython to cope with the removal of the Bio.Alphabet module in Biopython 1.78 (September 2020).
这个更改是从biopython的1.78版本之后才产生的,那么,只要把biopython的版本降低到1.78以下就可以了。或者如果你能力较强不嫌麻烦,也可以去尝试修改busco的源代码。但是通常不建议。
conda install -y biopython=1.77
解决完这两个问题之后就可以正常使用busco了。
希望这个笔记对你有帮助。如果你有其他的关于busco使用的相关问题,欢迎给我留言。
网友评论