KL/MI python ver

##如无必要,勿增实体
##由整体到局部
##阶段测试+优化策略
python ver架构设计:
依赖库:request, Numpy,Scipy, MDanalysis, NetworkX, Biopython,matplotlib, seaborn
1)总控main
1.命令行解析参数argparse{
  • logdir: 日志文件
  • MI:仅执行MI计算
  • pdbfile: 指定目标蛋白的pdbfile
  • chains:指定蛋白链,##这里是string,如‘ACD’,说是[receptor,G protein,ligand]顺序??
  • pdbCode:对应原来pdbCode
  • pdbChains: 好像与pdbcode成对的,也是指定链的
  • pdbCodeInactive:和原来的一样
  • pdbChainsInactive:和原来一样
  • pdbCodeExtra:和原来一样
  • pdbChainsExtra:和原来一样###注意用这对数据的时候,先str->list
  • systemName:用于定位databasepath下用到的表
  • xtcPath:轨迹文件,为什么用xtcfile_dir而不是trajfile_dir,因为一般用.xtc文件。
  • helices:和原来一样,用于rmsd/rmsf的可视化
  • frams2skip:不知道到底是啥参数
  • bsResidues: 用于 Contact Map的计算过程
  • gpiResidues:用于G蛋白的contact Map过程
  • doPCA:进行PCA的控制按钮
  • CustomPCAselection:原来的我也不会用,不知道干什么的
  • cullStates:
  • isGPCR:都是用来区分系统状态的
  • includeLigPathwayCalc:我也不知道是个什么参数
  • KL:隐含执行MI并执行KL计算##MI计算和KL计算是独立的还是存在依赖关系的
  • output:输出目录
}
2)MI
p1:Load and Align PDB file:
需要明确的一点就是说Database类到底是什么数据库&&从数据库中要获取的数据是什么{
1.这里的数据库实际上还是输入的文件中查询,应该主要是Entry要求的成员对象
2.获取的数据貌似可以从PDB数据库中获取(fetch)
3.fetch 要获取的(pdbcode,pdbcodeInactive, pdbcodeExtra是指的什么?和prot.pdb有什么关系吗?至少给出的测试体系看来,pdbcode,pdbcodeInactive都是D2,pdbcodeEtra就不是了
}
合并fetch和read函数,也只不过是增加一个从pdb中获取pdbfile的过程,下载的pdbfile的路径在database_path下的tmp
pdbstate数字含义{
  • 0:simulation pdbdata
  • 1:pdbCode的pdbdata
  • 2.:pdbInactive pdbdata
  • 3:other pdbdata
  • }
align&&alignStructure内部的问题之后再修正吧
还有一个映射表:{
  • chains.receptor=1
  • chains.gprotein=2
  • chains.ligand=3
}##这是什么映射??
##refPDBname:用于参考的pdb名称(在entry列表中的名称)但是实际上用到database的label函数中。对应原来的refPDBNdx,对应pdbCode的pdbid,就是label函数用到了name而不是idx
label就用到了databasepath中的表
fasta文件用于db.findMut函数,然后传参有问题,因为上面的映射表和(字典索引和列表索引的转换对应)
p2: xtc 装换为dcd
#注意numRuns等于轨迹文件的数目,所以实际上没必要多增加这一个参数。
这里利用mdanalysis中的mda转换xtc
p3:计算receptor、ligand和gprotein(effector)的rmsd/rmsf
Entry.py中的init_chains和get_sequence方法有待商议
分别计算receptor、ligand和effector(gprotein)的RMSD,RMSF然后保存到输出目录下
问题是bfactor是个啥,这部分运算存在问题。
然后根据bfactor,修改mainEntry写入pdb
然后可视化所有计算的receptor、ligand和effector的RMSD/RMSF:plot_utils.py
p4:计算receptor和ligand的contact map
computeContacts和原来的函数差别有点大,并且漏掉了frames2skip参数
plot_utils.py增加了plot_contact_map函数
p5.PCA过程:
CustomPCAselection先不保留了。好像这个过程也没有Gprotein的事
p6.系统状态的判别
p7.二面角的计算:
p8.交互/交叉熵计算
p10路径分析:
原alloPathCalc函数方法。全部转化。
3)KL
4)PP(postprecessing)
输出目录格式:
1.systemName_rmsd_rmsf.npz
2.prot_rmsf.pdb
3.(rmsd,rmsf)×(receptor,ligand, gprotein).pdf
4.contact×(receptor-ligand, receptor-gprotein).pdf
5.GPI_residues.txt
6./pca_test/systemName_ligand_pca_results.npz
7.dihedrals.mat,reSort.txt
8.MI.mat(要换个格式)
9./convergence
10.
主要任务:
1)matlab复现MI/KL√
2)python 版本MI
3)python版本优化:{
  • 1.Database真正采用数据库而不是files读取,当然可以保留pdb的api获取。
  • 2.
复现实验:
1)MI测试
测试条件:matlab2025b (Bioinformatics toolbox included)
MDprot:matlab命令行:gitclone *-> addpath(genpath('*'))->savepath
测试输入:
settings_file=demo.step1.1&2-D2_DA_WT.input_md2path.m{
关键修改:settings.mydir, settings.databasePath,其他的先保留default
}
轨迹用他们的:run1/2:traj.dcd, 蛋白用他们的:prot.pdb
过程记录:
1.需要将src加入路径,md2pathMain中没有导入语句
2.util也同上(版本不用担心,只要搞清楚内建依赖)
3.calcPlotOrderParameters.m中59行,size(plots)返回向量,但是:要求标量。不知道是不是应该用length
4.alloPathCalc也是
5.需要输入向量[xmin xmax ymin ymax], X定义TM3-6距离筛选范围,Y表示NPxxY RMSD范围, TM3-7??
#只有同时满足 Xmin<= TM3-6 <= Xmax 和 Ymin<= (NPxxY或TM3-7)<Ymax的帧才会被保留。用于分离不同构象状态
这个值的范围应该怎么给出,这里用的[3 10 3 10]
6.MIanalysisBS2Effector中BS_GPI没有创建,好像是setting中缺少bsResidues,gpiResidues参数的缘故,然后导致进行不下去,然后 fail
1&2-D2_DA_WT都通过了以上md2pathMain过程,只是一个保存在md2path(1)路径,一个是test1029
上面主要是md2pathMain和相应input
2)KL测试
测试条件同上
过程记录:
没问题
源代码分析:
1)依赖关系:
第三方依赖:
python 平替可能MDanalysis & MDtraj
## Matlab Bioinformatics toolbox
Biopython + ??
##VMD ??  .xtc 到.dcd转化,补足二级结构的脚本,如果轨迹文件有,那就不用了。
内建依赖:(自顶向下)
md2pathMain.m
├── Database.m/Entry/Simulation/√
│   ├── alignSequences.m
│   └── formatBw (局部函数)
├── plot_save_rmsd_rmsf.m√
│   ├── print2pdf
│   ├── add2log
│   └── drawTMhelices
├── plot_save_contact_map.m√
│   ├── pruneArray.m
│   └── print2pdf
└── input_md2path (用户输入脚本)
|——calPlotpca.m√
|——calcPlotOrderParameters√
kldivMain.m
├── Database.m
│   ├── alignSequences.m
│   └── formatBw (局部函数)
├── Simulation.m
│   └── (MATLAB内置函数)
├── print2pdf
└── savefig (MATLAB内置)
2)IO分析:
Input={
  • files:{
    • params_files:{
      • setting:{
  • ……
  • }* ## 由input_md2path提供???这是参数化文档??
  • },
    • PDB_files:{skip,看demo中的pdb是不是一般的pdb},
    • Traj_files: 轨迹文件,
    • }
Output={
  • folder_name:'md2pathdev',
  • contains:{
  • }
}
3)流程分析
#3-1 process1: input -> input_md2path.m -> md2pathMain.m -> output
#3-2 process2: input -> input_kldiv.m -> kldivMain.m -> output
postprocess:pca_1b_ligandPathCalcClusters.m ???