|
楼主 |
发表于 2024-11-5 14:51:04
|
显示全部楼层
改程序,找数据的输入,输出是RMSD,用一个python包搞定了。
程序的调用关系,本来是想看一整遍程序,一个,一个撸,效率太低。
折腾,一定是需要花时间的。但之后,所有的调用,都可以通过程序实现。这时间,花的值。
想想,经常会因为我觉得重要,别人觉得无关紧要的事,折腾好几天,还乐此不疲。
用graphviz和pycallgraph
几个小坑,
01. iteritems 变成items 这是python版本的事儿,grep 找到,改一下,能过。
02. 存图的时候,如果conda安装的graphviz 版本对不上,就
sudo apt-get install graphviz
返过来,也一样。
03. 存的图,是png ,太宽。
存成dot文件,自己修改,自己输出。
pycallgraph/output/graphviz.py
18 self.output_type='png'
改成
self.output_type='dot'
103 - 105
cmd = '{} -T{} -o{}'.format(****)
改成
cmd = 'cp {} ~/dot_file.dot'.format(temp_name)
这是将输出,写到~/下的dot_file.dot 文件中。
一般就是
/home/yourname/
下
虽然出来的图,还是不太容易看调用关系,但如果能对于简单的体系,应该相当好用。
04. 测试的code
- # simple_calculation.py
- from pycallgraph import PyCallGraph
- from pycallgraph.output import GraphvizOutput
- def multiply(a, b):
- return a*b
- def plus(a, b):
- return a+b
- if __name__ == '__main__':
- graphviz = GraphvizOutput()
- graphviz.output_file = 'simple_calculation.png'
- with PyCallGraph(output=graphviz):
- a = 10
- b = 2
- print ('The value of a*b+b is: {}'.format(plus(multiply(a, b), b)))
复制代码
|
|