MI(mutual interaction).pyver.的重整测试日志
import KL/MI python ver #2025-11-3 截至
-----------------------------------------------------------------------------------------------------------------------------------------
主扇区:
重整测试原则:##如无必要,勿增实体
##阶段测试+优化策略
依赖:MDanalysis, requests, Biopython,openpyxl,matplotlib, seaborn,scikit-learn,numpy,networkx
test1:config.json加载并输出,测试通过
test2:数据加载,实体加载测试:测试通过
test2.1:数据加载重测试:测试通过
test3:align/align_structure测试:align(sequences)通过。结构对齐没通过。
test4: align_sequences重测试(返回residues)测试,测试通过。
test5. 不知道什么的label函数,通过
test6.xtc到dcd的转化测试,测试通过
test6.1 xtc2dcd封装测试:测试通过
test7.轨迹实体的生成和对齐测试:测试通过
test8.RMSD,RMSF的计算测试:未通过,下面也通过不了了。
test8.1:RMSD,RMSF(receptor)可视化。
test9: bfactor计算后,prot_rmsf.pdb的写入(可恶,因为上面RMSD和RMSF,导致
test10: plot_rmsd_rmsf,伪测试:test_rmsd_rmsf_visualization.py
test11:compute_contacts
test11.1:可视化contacts_map
test11.1.1:测试contacts_map的伪测试脚本:test_contact_map,测试通过。
test12:compute_gp_contacts
test12.1:测试gp_contacts_map的可视化:test_gp_contact_map.测试通过。
test13: PCA过程测试
test13.1:伪测试:test_pca.py,测试不了
test14: calcPlotOrderParameter测试,
test15:concatResId测试
test16: 计算二面角
test17:MI的计算
test18:交叉熵的计算
test18.1交叉熵的伪测试:测试不了
test19.prepareAlloPathCalc,路径计算预处理
test.20pre_MI
里面有TODO没实现,
test.21MIStatsResLevel
test22.graphanalysis
test23:ClusterMIpathways
test24:analyzeClusters
test25:analyzePathDomains
test26:MIanalysisBS2Effector
test27:pathwayBiasAnalysis
test28:visualizationClsGraph
test28.1:可视化伪测试:test_visualize_cls_graph.py
工作目录:
data/#用于输入的文件目录
data/pdb_cache 蛋白晶体的缓存目录
/bw_maptables 原来的那些xlsx文件,table文件
/traj 输入的轨迹文件
matlab_ref/原始matlab文件参考
python_ref/转化后python文件参考
logs/ 日志目录
output/输出目录
/rmsf_rmsd:rmsd和rmsf的输出目录
/contact_map:接触图目录
/dihedrals:二面角计算目录
/alloPathCalc:路径计算结果
main.py/主函数
tmpscripts/记录开发过程中用到的一次性脚本
1.matlab_to_json:将input_md2path转换为config.json
主要流程梳理:
1.加载实体
2.对齐
未解决的问题:
1.为什么要硬编码[receptorNum,gproteinNum,ligandNum]=[1,2,3]?????
2.Chain类和Entry类数据成员的兼并
3.main.py中的序列对齐过程可以进一步兼并到align中的align_sequence,align_structure
4.align_sequence中residues暂时还没有用到,也就暂时没有管
5.Entry/Chain/residue……的数据关系还没搞清楚。
6.finMut
7.为啥轨迹要对齐呢?
8.对齐和rmsd的过程可以合并的
9.专门的D3pockets的绘图模块,可能还要检查以下绘图完不完整。
10.合并contact_map和gp_contact_map
11.G蛋白接触图少了一点calc_plot_gp_map中的过程,比如prune_Array,好吧,是三个接触图
12:确认customSelection过程还要不要保留。
13.statefilter过程,完全不对。
14.熵评估的代码依赖
15.Simulation中成员函数的依赖
16.去除prepareAllogcPathCalc中的日志
17.一些可视化可以用pymol,那样好展示
补充说明:
1.entrystate:{
- 0:prot
- 1:pdbcode
- 2:pdbcodeinactive
- 3:extra
}
2.align(sequences)产生的residue,存于self.residues,可以被label/findResidue/findFeature调用。
3.给Database的label成员函数增加数据库接口。
4.好像matlab数组是从1开始的,而不是0
5.convertfile可以后续继续集成方法,作为D3pockets源代码的一个固定子模块。
-----------------------------------------------------------------------------------------------------------------------------------------
2025-11-8:直接把prepareAlloPathCalc转换python版本,
prepareAlloPathCalc中有多余的日志设置。
pre_MI
里面有TODO没实现,
MIStatsResLevel
graphanalysis
ClusterMIpathways
analyzeClusters
analyzePathDomains
MIanalysisBS2Effector
pathwayBiasAnalysis
visualizationClsGraph
全AI实现了,现在完整流程弄清了。然后需要确认一下有没有TODO,PreMI和preparePathCalc中有,修复了。
2025-11-7:接下来就是计算contact的,然后可视化,测试了一下,着contactmap是热点图。
函数还是没问题的,就是看满不满足需求了。好像到这一步就可以满足D3pockets的需求,但是好人做到底,已经3/5,剩下也弄完吧。
分析一下calc_plot_gp_contact_map这个函数和其他部分问题,好像calc_plot_gp_contact_map中的contact_map的图和plot_contact_map不太一样。不能合并吗?
暂时先把gprotein的contacts_map绘制,暂时作为一个单独的函数吧。
然后将calc_plot_gp_contact_map中的内容直接拿到main中,然后pruneArray也没有封装。
少了一点内容,后面补上。
好吧calc_gp_contact_map有三个接触图的计算。
好吧是gprotein接触图,对比接触图,和差异接触图,只有前面两个的接触图计算,后面是对比出来的
pruneArray直接用的三行代码。
接下来就是PCA过程,
然后是stateFilter过程
然后向Chain类中添加concatResId函数。
然后Simulation类中添加二面角计算函数
然后是互信息计算函数
然后是实现assessEntropyConvergence的函数,
先到这里吧
2025-11-6:接下来是添加轨迹类,我实在不明白为什么不用继承,而是类套类。。。。。
Entry中先不包含Simulation, Simulation直接实例化mainSim。
然后修改一下config.json,将trajPath,分成xtcPath, dcdPath。
然后xtc和dcd的转化,封装成一个函数:xtc2dcd。
然后开始RMSD,RMSF的计算函数和调用计算,对齐和rmsd计算过程好像可以合并的。。。
测试下来RMSD和RMSF需要计算好久好久,之后想想办法吧,要不用间隔着算,间隔frames2skip,后面要改过来。改回来了,发现不是并发,为啥我这边这么慢
然后就是bfactor的写入过程,没有封装,暂时没好。
先继续吧
然后就是可视化rmsd和rmsf,后面要想着怎么写一个通用绘图模块de D3pockets
2025-11-5:继续修复align_structure代码,现在的问题是:链标识系统不一致,主蛋白使用数字索引,参考蛋白使用字母标识。先要搞清楚一下,align_structure是怎么的对齐逻辑。问题反而没有出在get_chain(),然而 其实是mainEntry传参传错了,没有,chains,传成protchains。另外,我也不知道为什么他一定是ACB,pdb文件中是PROA,PROB划分链。matlab的mdtool.readpdb,chainid是返回的ACB,和python 的不一样,我们用自己的这一套:pdb_segids。没想到吧,重写之后全部对齐步骤全部通过了测试。
接下来是findMut,但是这个函数这么独立,跟后续好像几乎没什么关系。skip
终于来到xtc to dcd的过程,还是很简单的
然后就是加载轨迹文件了。
2025-11-4:通过Database类中的fetch_pdb获取蛋白,返回文件路径。
不知道Entry能不能由已有的类代替。现在先用着Entry,然后测试下是不是每个实体的加载过程。
然后align步骤先跳过,还是不能跳过,不然怎么一遍测试一遍编写代码。
完善了Entry中的chains数据成员的初始化,然后有个问题就是Entry中包含Chain类,然后需要把chain类移过来。注意Entry和Chain中有重复的数据成员,保留Chain中的。后续完成。
align_sequences和align_structure弄完了,放在align.py中,暂时作为独立的函数,其实不知道该放在哪里好。
然后把receptor/ligand/gproteinIndex(原来的Chains.receptor/gprotein/ligand),放到了config.json中,我不太明白为什么会硬编码这三个参数。
md2pathMain:line124-line131就是为了解决路径中/ \的问题,其实到line170行都可以不用管。
接下来就是label函数,这个是通过数据库的函数,虽然我还是不知道refPDBNdx是个什么参数。
另外还是要明确database的功能,目前是先保留从文件中读取,后面真正实现database接口。
仔细一看,又可以不用作为Database的成员函数,现在有没有连通数据库,但是后续肯定会连通数据库,不妨还是放在内部,以后好增加数据库端口。
label-->label_residues
matlab好像是从1开始,但是一般是从0开始
align_structure对齐不成功,因为原子数对不上
因为原来的对齐是残基级别上的对齐,不是整体上的对齐。
2025-11-3:重整化就是逐步将转化过来的python代码整理并测试.首先进行数据参数的加载。这里修改下,先不加命令行,用json记录input_md2path中所有参数,然后用的时候修改,在main函数中加载。现在通过命令行指定config.json文件,然后加载里面的参数。接下来就是一个纠结的问题,要不要连通数据库的,要的。
不过我们这里的db是真的database,老样子还是用mysql。
然后把实体放在外面,不放在database中。整体上说,Database类只是个接口,用于获取实体。
