azalea says

在Python中调用RNAfold

主要参考此页面最下方

首先下载 Vienna RNA Package,目前的版本是 1.8.4

在解压后的文件夹的Perl目录里,目前是 ViennaRNA-1.8.4/Perl

运行

swig -python RNA.i

这样会创建一个 RNA_wrap.c 文件以及 RNA.py 文件

如果提示没有swig,Ubuntu下可以 sudo apt-get install swig , 或者在此下载

然后编译 RNA_wrap.c 文件

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include/python2.6 -c RNA_wrap.c

如果报错,试着把 /usr/local/include/python2.6 改成其他可能的位置,比如 /usr/include/python2.6

然后创建 shared library

gcc -pthread -shared RNA_wrap.o -o _RNA.so -L../lib -lRNA -s

最后把创建的 _RNA.so 文件和 RNA.py 文件复制到 Python路径 (可以查看Python的sys.path变量),比如 /usr/local/lib/python2.6/dist-packages

sudo cp _RNA.so RNA.py /usr/local/lib/python2.6/dist-packages

看看效果吧

>>> import RNA
>>> RNA.fold('CCCCCAAAGGGGG')
['(((((...)))))', -7.5]
programming python RNAfold · Tweet Edit