D3pockets移植及测试

配置在cpu256(dddc)上

主要是配置环境,安装相应的包

安装requirements.txt里面的要求安装相应的包。其他的包安装时版本都是参考的205上的配置
有些包用conda装不上,后面用pip装
  • conda create -n D3pockets python=2.7.14 biopython=1.71 cycler=0.10.0 enum34=1.1.6 kiwisolver=1.0.1 numpy=1.14.2 Pillow=5.1.0 pyparsing=2.2.0 python-dateutil=2.7.2 pytz=2018.4 scipy=1.0.1 six=1.11.0 subprocess32=3.2.7
  • conda activate D3pockets
  • pip install backports.functools-lru-cache==1.5 enum==0.4.6 pyclustering==0.8.0 matplotlib==2.2.2
  • pip install fire==0.1.3
  • pip install nested_dict==1.61
  • pip install networkx==2.1
  • pip install mdtraj==1.9.3
运行测试的时候缺什么装什么。
很多包直接用conda和pip都装不上,所以到conda-forge (Google conda加上相应包的名称就能搜索到)上下载相应版本的压缩包(相应的安装包附件在下面),再用conda安装
  • conda install --use-local pymol-2.2.0-py27hf484d3e_0.tar.bz2
  • conda install --use-local glew-2.0.0-0.tar.bz2
  • conda install --use-local pyqt-5.6.0-py27h22d08a2_6.tar.bz2
  • conda install --use-local sip-4.18.1-py27hf484d3e_2.tar.bz2
测试运行时报错
  • numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C header, got 192 from PyObject
猜测是numpy版本的问题,升级之后解决
  • pip install --upgrade numpy
import sip模块的时候报错
不过好像不影响运行,这个包是在pymol安装的时候需要的
把205服务器上的sip.so文件复制到相应的文件夹下面就好了!
测试时需要修改test 文件夹下D3Pockets_MD_Script.sh中相应的路径

已解决的bug

并且核数大于30的时候就会出现资源暂时不可用的错误,怀疑是服务器本身的设置所致
解决方案,每次运行之前,export OMP_NUM_THREADS=1

发现的问题(已解决)

clu_byresi_result.txt 文件不一样
clu*_clu*_commonPkts.txt 文件不一样,运行的结果就不一样
clusterpkt_resid.py文件
经测试,如果此处聚类结果不同,那口袋相关性的结果就不同,如果相同则口袋相关性的结果相同
  • pktatmfiles = glob("output_clu_*_atm.pdb") #glob模块用来查找文件目录和文件,并将搜索的到的结果返回到一个列表中,此处glob的输出顺序会影响后续根据口袋残基聚类的结果!!
  • cluster_all={}
  • cluster_current=[]
  • for pktatmf in pktatmfiles: #遍历output_clu_*_atm.pdb,如果最大共有残基比例大于0.5,就归到那个与之具有最大共有残基的cluster中,如果不是就新列为一个cluster,遍历的顺序就是上述glob输出的顺序
为何遍历顺序不一样,最后的聚类结果就不一样,口袋残基聚类逻辑上可能有点问题?
为何205服务器上glob的顺序能够重复,而dddc服务器上的不能重复,两个glob搜索文件的底层逻辑有何不同??

看两个文件是否完全一样(包括空格),算md5值

  • for i in `ls`;do a=`md5sum $i |awk '{print $1}'`;b=`md5sum "/home/dddc/software/D3Pockets_WEB_UCB/test3_numpy1.16.2-2/workspace-2/conformations/output/$i" | awk '{print $1}'`;if [ "$a" = "$b" ];then echo 1;else echo 0;fi;done

使用方法

修改D3Pockets_MD_Script.sh文件的名称
  • conda activate D3pockets
  • nohup bash D3Pockets_MD_Script.sh &