24小时热门版块排行榜    

查看: 7102  |  回复: 22
【奖励】 本帖被评价14次,作者043114076增加金币 10.2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

043114076

木虫 (正式写手)


[资源] python之蟒开启理论计算化学的新时代

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


http://blog.sina.com.cn/s/blog_89cd04dd01017xof.html


就像iphone和android开创了手机的新时代,python也将开启理论化学的新时代。

首先谈一下个人的理论化学经历。由于本人是在一个实验为主的小组做计算,所做的课题又多次更换,所以学的软件用的方法都比较杂。在使用各种软件的过程中发现,虽然现在有很多商业的或者开源的软件可以傻瓜式完成计算任务,但有个过程还是避免不了的:数据处理以及做图。数据处理有时需要编程去实现,尤其是分子模拟的数据。本人先后尝试过fortran,shell script,octave (matlab open source clone),每个工具都各有所长,现在主要使用的是shell script 和octave。原因是它们都是脚本,结构比较简单,不需编译,实现数据处理基本上是绰绰有余了。做结构图有很多软件比如我常用的vmd,提供了tcl的界面,从而可以实现更强大的功能。Sob 姐使用vmd可以使分子打太极 ( http://hi.baidu.com/sobereva/blo ... 803858352acc2e.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 ... tational_chemistry),列出了一些python化学软件和提供python接口的软件。
用Python做科学计算:http://hyry.dip.jp:8000/pydoc/index.html,中文入门教程
NumPy_for_Matlab_Users :http://www.scipy.org/NumPy_for_Matlab_Users,适合从matlab转向python的同学

[ Last edited by 043114076 on 2012-8-19 at 22:32 ]
回复此楼

» 收录本帖的淘帖专辑推荐

资源收集 Python学习 量子化学资料 多孔材料
科研技巧 分子模拟 吾淘吾淘 第一性原理计算辅助工具
castep ATK和电子输运 计算模拟软件教程等 材料模拟基础书籍
good resources science 感悟心得 学学学
量子化学和计算化学 学习提高 分子模拟 计算机语言
计算机与化学知识

» 猜你喜欢

» 本主题相关商家推荐: (我也要在这里推广)

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

★★★★★ 五星级,优秀推荐

写得不错咯。

可但是,但可是,保守势力之大,超乎尊驾之想象。
可曾记否,当初之计算化学,乃命令行Geek横行,Windows只能作为写论文的打字机?
可曾记否,当初之计算化学,Fortran乃全副武装之主力军,C/C++只能算作油盐酱醋之佐料?
二十多年过去鸟,此一番大局仍未有革命性之改观。
3楼2012-08-20 06:01:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 23 个回答

cuiyoutian88

金虫 (小有名气)


★★★ 三星级,支持鼓励

好好学python,前途无限.
2楼2012-08-19 23:32:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

043114076

木虫 (正式写手)


引用回帖:
3楼: Originally posted by yalefield at 2012-08-20 06:01:23
写得不错咯。

可但是,但可是,保守势力之大,超乎尊驾之想象。
可曾记否,当初之计算化学,乃命令行Geek横行,Windows只能作为写论文的打字机?
可曾记否,当初之计算化学,Fortran乃全副武装之主力军,C/C++ ...

谢谢yalefield的鼓励。
是的,人一旦习惯了一些工具确实不愿意去尝试新的东西,因为大多时候是想只要能完成工作就行了。而实际上工具的革新是非常重要的。我不能说这一现状一定会改变,但我愿为之努力,贡献自己的力量。
写这个东西还有一个初衷。深感于国内理论计算化学的不景气,尤其是没有自己拿得出手的程序软件。python或许是个机会,一方面使更多的人参与到软件当中去,而不只是使用现成的商业软件;另一方面可能改变本科生学习理论化学的现状,使之不再纸上谈兵,谈过就忘。
4楼2012-08-20 08:53:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

★★★ 三星级,支持鼓励

欢迎常来~

谢谢分享。我也开始学习Python了,一直没有实质性进展~

交流~
5楼2012-08-20 10:58:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复(可上传附件)
信息提示
请填处理意见