在Python中调用RNAfold
May 19, 2010主要参考此页面最下方
首先下载 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]