python之蟒开启理论计算化学的新时代

From  http://blog.sina.com.cn/s/blog_3dbbd3c70101upyk.html

首先谈一下个人的理论化学经历。由于本人是在一个实验为主的小组做计算,所做的课题又多次更换,所以学的软件用的方法都比较杂。在使用各种软件的过程中发 现,虽然现在有很多商业的或者开源的软件可以傻瓜式完成计算任务,但有个过程还是避免不了的:数据处理以及做图。数据处理有时需要编程去实现,尤其是分子 模拟的数据。本人先后尝试过fortran,shell script,octave (matlab open source clone),每个工具都各有所长,现在主要使用的是shell script 和octave。原因是它们都是脚本,结构比较简单,不需编译,实现数据处理基本上是绰绰有余了。做结构图有很多软件比如我常用的vmd,提供了tcl的 界面,从而可以实现更强大的功能。Sob 姐使用vmd可以使分子打太极 ( http://hi.baidu.com/sobereva/blog/item/8a394cf3de803858352acc2e
.html ) 。数据做图我目前主要使用 gnuplot,首先作出的图片比较漂亮,功能强大,最主要的是可以批处理,这一点对于数据量比较多的同学非常有用,省了许多复制粘贴的过程。结合shell script 和octave便可以实现更为复杂的操作。
虽然现在使用这些工具已经谈得上得心应手了,但还是有很多不方便的地方。比如程序之间的衔接和数据传递,另外在不同的工具之间切换也实在令人不爽。理论上可以使用shell script 将各个软件串在一起,但几乎不具有任何可移植性和通用性。
当我认识python之后发现这一切原来是可以实现的。python 本身可以作为script语言来使用;它的强大的数学库numpy和scipy几乎可以替代matlab完成复杂的数据处理;matplotlib 可以实现高质量的数据做图;pymol 本身就是 python 写成的,可以实现结构做图。python的面向对象的特点可以自己定义需要的库,方便以后调用。由于这些工具都集成在python中,移植性当然不成问 题。另外,python还提供了其他的很有用的库,比如wxpython可以用来做出一个图形界面;另外还有库可以将程序嵌入到网页当中,成为一个网页应 用。这些都可以使计算化学更加方便和友好。
本文的题目说python将开启理论计算化学的新时代,可能有点夸大其词了。但也并非不可能!就好像iphone之所以能开始一个新时代,本质并不在其技 术的革新,而是用户体验的优化,从这一点上说python可以让理论计算化学的数据处理的体验更好也可能开启一个新的时代。再比如,Android 开启了另一个时代,即人人都可以参与开发从而是手机更符合自己的要求;python使计算化学家可以自己定义自己的数据处理过程,不再受限于软件既有的功 能,从某种意义上说也算是开启了一个新的时代。
更重要的是python对与理论计算程序也会有实质性的贡献。PyQuante (Python Quantum Chemistry) 是一个使用python写成的量化计算软件。尽管PyQuante使用一些C语言来加速某些模块,它的计算速度与常用的量化软件还是差了很多。但 PyQuante的优势在于容易阅读和修改。我个人认为它对于教学的意义比它的实际应用的意义更大。但谁知道以后不会改变呢!而且对于新的算法的开发也将 更加方便。例如,可以使用python将fortran,C,C++,java 等语言写成的软件集成在一起,做一个统一的接口。ASE(Atomistic Simulation Environment)是一个代表,它集成了许多商业的和开源的模拟软件 (abinit,vasp,castep,lammps,DFTB+,siesta,turbomol 等等),提供了统一的接口。商业软件所做的实际上也是这样。chempython的网站 (http://www.chempython.org/applications.html) 列出了一些目前使用python写成的各种模拟软件。目前这些软件还不是很成熟,但是我们可以期待更多的人的加入使它们更加完善和强大。它们的优势就在 于,它们可以组成一个整体。我能想到的一个情景是这些不同功能的模块可以像积木一样随意的组合,每个人根据自己的喜好搭建自己的模拟软件。如果能够实现, 这也算是开启了一个新的时代。
大家做理论计算大多都是从研究生阶段开始的,很多人没有量化基础,没有编程基础,一下子进入到实验室开始计算便会晕头转向。如果python能作为大学化 学系或者物理系的一门必修课,那情况就会大不相同了。首先,对于非计算机专业的同学学习计算机语言,感觉python将比C语言更有用些。在学习物理化学 或者分析化学时,使用python作为辅助来帮助分析数据和理解概念将比仅仅从课本上得到更为直观和牢靠。上面提到的PyQuante对于学习量化编程的 同学也是很方便的。而最大的好处是,所有这些都在python的框架下完成,不需要学习更多的工具和语言。如果python能在大学教育中广泛推行,那么也将开启一个新的时代。
Python开启一个新时代的另一个意义是针对我自己而言的。说实话,本人目前还在python的未入门阶段,但从此以后将逐渐使用python完成各种工作。
以下是我积累的一些学习python的资料:
书籍:
A Primer on Scientific Programming with Python:书籍,非常0基础适合入门
A Student's Guide to Data and Error Analysis
Simulating the Physical World: Hierarchical Modeling from Quantum Mechanics to Fluid Dynamics
Python Scripting for Computational Science
网页:
http://www.chempython.org/:总结了许多python写的化学软件
Computational physics with python:http://www-personal.umich.edu/~mejn/computational-physics/ ,书籍,用于计算物理。
Python for physics: (http://www.phy.uct.ac.za/courses/python/),包含计算物理的一些代码。
Chemistry Programs – Python:http://homepage.univie.ac.at/felix.plasser/chemprogs/python.htm,分享了两个软件,一个是作反应势能面图,一个计算Huckel轨道。
Python for Chemistry in 21 minutes,ppt 介绍python 在化学中的应用
Python Software for computational chemistry: (http://theochem.mit.edu/theochem/Python_softwar

猜你喜欢

转载自blog.csdn.net/shixha/article/details/30093465