Overview
DISOPRED
是一个蛋白质内部非结构区域的预测软件,使用DISOPRED
,我们可以很方便地得到一个蛋白质序列的非结构区域信息,能够为蛋白质特征分析提供更多的信息。
1.DISOPRED
的下载
去http://bioinfadmin.cs.ucl.ac.uk/downloads/DISOPRED/这里就可以下载各个版本的DISOPRED
,这里我们下载最新版本的DISOPRED3.16.tar.gz
。
2.DISOPRED
的安装
因为DISOPRED
也是以源码包的形式提供下载,因此也需要下载之后自己编译。先将下载好的 解压解压之后的文件夹为DISOPRED
,进入DISOPRED
目录,按照README
文件的步骤安装。
2.1 常规的安装步骤
进入DISOPRED
目录,使用下面的三行命令安装:
make clean
make
make install
如果是linux
的话通常就可以正常使用了。
2.2 MAC下的不兼容
如果是MAC
系统,会有两个地方需要修改。
在执行
make
这一步的时候会报以下错误:disord_pred.c:246:43: error: use of undeclared identifier 'CLKRATE' runtime += (double) abs(temp - last_t) / CLKRATE; ^ disord_pred.c:248:59: error: use of undeclared identifier 'CLKRATE' runtime += (double) (0x7fffffff - last_t + (temp + 1)) / CLKRATE;
查看
disord_pred.c
,我们发现下面的几行代码:#ifdef unix #define CLKRATE 1000000 #endif
这个宏在
unix
系统下才定义了CLKRATE
变量,因此在MAC
下编译时就会报CLKRATE
未声明的错误,我们在disord_pred.c
中上面这几句代码后面添加如下代码:#ifdef __MACH__ #define CLKRATE 1000000 #endif
这样在
MAC
系统下一样会执行#define
语句,重新执行make
命令,这次就可以顺利通过了。在执行
make install
的时候会报以下错误:mv -t ../bin disopred2 diso_neu_net diso_neighb combine svm-predict mv: illegal option -- t usage: mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory make: *** [install] Error 64
查看
Makefile
文件,发现下面的代码:install: mkdir ../bin/ mv -t ../bin disopred2 diso_neu_net diso_neighb combine svm-predict
可以看出来,
make install
步骤就是在DISOPRED
目录下建立一个bin
文件夹,并将make
步骤中生成的可执行程序都复制到bin
文件夹下,只是在使用mv
命令时用了-t
参数,MAC
下不支持这个参数,所以我们用下面的mv
命令替换上面的mv -t
命令,修改后如下:install: mkdir ../bin/ mv disopred2 diso_neu_net diso_neighb combine svm-predict ../bin/
注意,修改完之后,需要重新执行
make clean
和make
步骤,再执行make install
就可以了。
3.DISOPRED
的配置
安装成功之后,我们就可以通过DISOPRED
目录下的run_disopred.pl
脚本使用DISOPRED
程序了。
但在使用之前,我们还需要配置一下run_disopred.pl
脚本,打开这个脚本,找到下面的代码:
## IMPORTANT: Set the paths to folder with the NCBI executables and to the
## sequence database
my $NCBI_DIR = "/home/bin/blast-2.2.26/bin/";
my $SEQ_DB = "/home/uniref/uniref90";
在有了SCRATCH
和PSIPRED
的使用经验之后,我们很容易就知道这两行代码的意思,那就是设置DISOPRED
调用BLAST
程序的路径以及配置BLAST
程序所要用到的数据库。
因为我们已经将BLAST
程序加入了$PATH
路径,所以在使用时我们不再需要指定绝对路径,因此我们通过下面的代码修改这两个变量,如下所示:
## IMPORTANT: Set the paths to folder with the NCBI executables and to the
## sequence database
my $NCBI_DIR = "";
my $SEQ_DB = "/Users/wangjiawei/Bioinformatics/Data/blast/uniref50";
其中/Users/wangjiawei/Bioinformatics/Data/blast/uniref50
为我们为BLAST
配置的数据库的地址。
4.DISOPRED
的使用
现在我们就可以通过run_disopred.pl
脚本使用DISOPRED
程序了。在examples
文件夹中,也提供了example.fasta
和small_example.fasta
供测试使用。使用下面的命令运行DISOPRED
程序:
./run_disopred.pl examples/example.fasta
产生如下输出结果:
Running PSI-BLAST search ...
Generating PSSM ...
Predicting disorder with DISOPRED2 ...
Running neural network classifier ...
Running nearest neighbour classifier ...
Combining disordered residue predictions ...
Predicting protein binding residues within disordered regions ...
Cleaning up ...
Finished
Disordered residue predictions in /Users/wangjiawei/Bioinformatics/Softwares/DISOPRED/examples/example.diso
Protein binding disordered residue predictions in /Users/wangjiawei/Bioinformatics/Softwares/DISOPRED/examples/example.pbdat
多数时间还是花在Running PSI-BLAST search ...
这一步,以及Running nearest neighbour classifier ...
Hi,
I have another warning also in make step:
>make
g++ -Wall -O pred_dis.cpp weights.cpp -lm -o disopred2
gcc -Wall -O disord_pred.c -lm -o diso_neu_net
disord_pred.c:252:22: warning: taking the absolute value of unsigned type 'unsigned long' has no effect [-Wabsolute-value]
runtime += (double) abs(temp - last_t) / CLKRATE;
^
disord_pred.c:252:22: note: remove the call to 'abs' since unsigned values cannot be negative
runtime += (double) abs(temp - last_t) / CLKRATE;
^~~
1 warning generated.
gcc -Wall -O diso_neighb.c -o diso_neighb
gcc -Wall -O disordcomb_pred.c -lm -o combine
g++ -Wall -O svm-predict.c svm.cpp -lm -o svm-predict
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
What does it means?
do you know how fix it? (Mac)
Thanks a lot
alex
Hi Alex,
Please look at the source code of disord_pred.c, and you will find:
static unsigned long last_t;
unsigned long temp;
Since last_t and temp are all defined as unsigned long, (temp - last_t )will be always not negative, so the warning says abs() is not needed indeed.
Besides, the following code in disord_pred.c:
if (temp >= last_t)
runtime += (double) abs(temp - last_t) / CLKRATE;
the if statement ensures that the value of (temp - last_t) is absolutely >=0, so the abs() is redundant.
Actually, it is just a warning, you can attempt to remove the abs() method, or change the MAKFILE in src/ folder.
If you choose the former option, change
runtime += (double) abs(temp - last_t) / CLKRATE;
in disord_pred.c to
runtime += (double)(temp - last_t) / CLKRATE;
If you choose the latter option, change
CXXFLAGS = -Wall -O
CCFLAGS = -Wall -O
in MAKEFILE to
CXXFLAGS = -O
CCFLAGS = -O
so that you can ignore the warning.
Hope it helps.
Dear Chris,
Thank you very much for your reply. I got it! Actually I am receiving a warning after run the test file with DISOPRED, so I thought that this was because my original question. Now I will focus in find the problem. Step by step.
I am receiving this warning after run DISOPRED test
failed : 256
Thanks a lot
--alex
Hi alex,
When I tried to compile DISOPRED on a new server (Ubuntu 14.04) yesterday, I also got a lot of warnings during the make process. I just ignored the warning infomation and continued to make install. Then I could use DISOPRED normally.