这篇文章是我在2017年12月开的坑,但是AFK了将近一年,本质原因还是因为懒(借口)。不过在2018年9月19日开始,我正式开始了实验室生涯,做稀土光功能材料与计算方向,就不得不重新来填这个坑了2333。稀土元素独特的4f电子层轨道,让其具有独特的光、电、磁特性,使得稀土元素具有“点石成金”的能力,在先端科技产品的应用中有着不可替代的作用。然而稀土元素由于其原子半径相近,化学性质相似,使得高纯度单一稀土元素难以分离,试剂纯级的稀土试剂价格极高,作为实验耗材来说其高昂的价格往往使课题组难以承受。同时,复杂的4f轨道是人类还未真正探索的量子领域之一,探索、表征以及实现对4f电子层的量化建模,必将对化学科研和量子力学领域产生极大的推动和影响。利用机器学习方法,对4f电子层轨道进行计算拟合,会成为我接下来要做的一些微小的工作之一。本文也将成为接下来这一年的科研笔记。


种一棵树的最佳时间是十年前,其次是现在。

以记录机器学习和计算化学的单元操作coding为主,防止出现版权问题和“基础不牢地动山摇”的情况。
以记录机器学习基础与量子化学基础理论为主,纯粹作为一个技术笔记。

数学参考:

重要配置——关闭win10自动更新

首先要写的是与机器学习无关的内容,因为我所使用的设备是Windows 10系统的辣鸡电脑,而这坑爹系统总容易因为蜜汁更新导致文件缺失,所以,为了解决这个问题就一定要在进行任何软件/环境配置之前关闭自动更新!
操作方法为:计算机(此电脑)-右键-管理-服务和应用程序-服务-Windows update-右键-属性-禁用-关闭

Windows10搭建python数据分析/机器学习环境

这里同理于Linux上搭建机器学习环境,下载安装Anaconda,为了方便和现有开源包的匹配,我选择python2.7版本,对应Anaconda是2.X版本。之后像常规安装软件一样安装就行了。

在安装过程中,可能会遇到

1
failed to create anacoda menue?

解决方案有:

  • 安装目录中不得出现中文或其他奇怪的符号
  • CMD中进入安装目录,然后执行 python .\Libs_nsis.py mkmenus
  • 将JAVA的环境变量JAVA_HOME和PATH先删掉,就可以顺利安装了。

安装好之后,其中Navigator是图形界面,可以切换python版本,同时能够在右侧搜索未安装的包,然而出于众所周知的原因,Anaconda官方的源下载速度基本上你懂的,所以这个时候建议切换国内的源。
添加Anaconda的TUNA镜像

1
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

设置搜索时显示通道地址

1
conda config --set show_channel_urls yes

对于anaconda,建议直接使用其自带的IDE——Spyder,打开后,默认就加载了ipython和python两个解释器。对于conda命令无法使用的情况,在环境变量中添加将anaconda安装目录下的Scripts。对于CMD下不能使用anaconda同理,添加安装目录到环境变量即可。

关于机器学习环境,直接借助开源包即可,这里直接pass掉某显卡包,毕竟我的电脑还要自己用!!直接使用Scikit-Learn,Numpy ,Scipy ,Matplotlib。关于这个网上有很多安装教程,我直接用conda和pip安装,之后遇到需要再拓展的包,随用随装。

1
2
3
4
5
6
7
conda install scipy
conda install theano
conda install keras
pip install tensorflow
pip install sklearn
pip install numpy
pip install matplotlib

emmmm实际上上面有点多此一举了,貌似Anaconda已经集成了这些。总之环境搭建的重心还是放在Anaconda的安装上,其他不懂的就问Google吧。

Runge-Kutta 的python实现

龙格库塔法是工程上常用的微分方程的数值计算方法,因为在冶金、化工过程当中,很多简单模型(如极其简单的那种有边界条件的一维稳态计算)都可以化简为简单的4阶龙哥库塔法模型,所以使用计算机语言掌握这种方法也是很有必要的!!

而在计算机程序运作当中,节约时间成本是非!常!必!要!的!所以这种情况下一般使用构造-调用函数的方法来完成计算。下面具体分析:
首先,根据常微分方程,将其构造为一个自定义函数,如果你是一个常微分方程的计算,就构造一个;如果是常微分方程组就构造多个。python当中使用def语法来构造,比如我将方程f=y-(2*x/y)构造为fxy,代码如下:

1
2
3
def fxy(x,y):  
f = y - (2 * x / y)
return f

接下来就是构造一个迭代器,用于解常微分方程(组)。龙格库塔法的数学表达并不难,这里必须强调的几个点是:

  • x0,y0均为初值条件
  • h为步长,即微积分当中所谓的极小长度dx或dy
  • N为迭代数,迭代次数为N-n,一般来说迭代次数越多,输出值约精确。这是一种迭代逼近。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
def rk4(x0,y0,h,N):  
n = 1
while(n != N):
x1 = x0 + h
k1 = fxy(x0, y0)
k2 = fxy(x0+h/2, y0+h*k1/2)
k3 = fxy(x0+h/2, y0+h*k2/2)
k4 = fxy(x1, y0+h*k3)
y1 = y0 + h * (k1 + 2* k2 + 2 * k3 + k4) / 6
print("%.2f, %.6f" %(x1, y1))
n = n + 1
x0 = x1
y0 = y1

接下来就是主要计算的部分了,为了方便设定,初值条件、步长、迭代数实现自设定,直接人工输入,之后调用上面写好的函数即可,这里你也可以把主要计算构造成一个函数,然后执行即可。代码如下:

1
2
3
4
5
6
7
def main():  
x0=float(input("x0= "))
y0=float(input("y0= "))
h=float(input("h= "))
N=float(input("N= "))
rk4(x0,y0,h,N)
main()

接下来可以举个例子来计算常微分方程组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def fxyzw(x, y, z, w):
f = z * 0.1
return f
def gxyzw(x, y, z, w):
g = w * 0.1
return g
def pxyzw(x, y, z, w):
p = (x **2 + y ** 2 + z ** 2 + w ** 2) ** (1 / 2) * 0.1
return p
def rg4(x0,y0,z0,w0,h,N):
n = 1
while(n != N):
x1 = x0 + h
k1 = fxyzw(x0, y0, z0, w0)
l1 = gxyzw(x0, y0, z0, w0)
m1 = pxyzw(x0, y0, z0, w0)
k2 = fxyzw(x0+h/2, y0+h*k1/2, z0+h*l1/2, w0+h*m1/2)
l2 = gxyzw(x0+h/2, y0+h*k1/2, z0+h*l1/2, w0+h*m1/2)
m2 = pxyzw(x0+h/2, y0+h*k1/2, z0+h*l1/2, w0+h*m1/2)
k3 = fxyzw(x0+h/2, y0+h*k2/2, z0+h*l2/2, w0+h*m2/2)
l3 = gxyzw(x0+h/2, y0+h*k2/2, z0+h*l2/2, w0+h*m2/2)
m3 = pxyzw(x0+h/2, y0+h*k2/2, z0+h*l2/2, w0+h*m2/2)
k4 = fxyzw(x1, y0+h*k3, z0+h*l3, w0+h*m3)
l4 = gxyzw(x1, y0+h*k3, z0+h*l3, w0+h*m3)
m4 = pxyzw(x1, y0+h*k3, z0+h*l3, w0+h*m3)
y1 = y0 + h * (k1 + 2* k2 + 2 * k3 + k4) / 6
z1 = z0 + h * (l1 + 2* l2 + 2 * l3 + l4) / 6
w1 = w0 + h * (m1 + 2* m2 + 2 * m3 + m4) / 6
print("%.2f, %.6f, %.6f, %.6f" %(x1, y1, z1, w1))
n = n + 1
x0 = x1
y0 = y1
z0 = z1
w0 = w1
def main():
x0=float(input("x0= "))
y0=float(input("y0= "))
z0=float(input("z0= "))
w0=float(input("w0= "))
h=float(input("h= "))
N=float(input("N= "))
rg4(x0,y0,z0,w0,h,N)
main()

这里注意2点:

  • Python中有单目运算符+(正号)、-(负号)。双目运算符:+、 - 、 *、 /、 %、**、//,分别表示加、减、乘、除法、取余、求幂、整除。所以要用对符号!!
  • 类似一个多元常微分方程组,记得把程序里的变量数和元数匹配!!

经典机器学习方法

1.数据降维与回归方法

2.数据聚类与分类方法

争对上述2类方法,一般在实际数据处理时要进行补值(暂且认为在已做好降维的情况下),不同的方法有与之对应不同的补值方法。而特征选择方法一般有以下2种:

  • 集成式特征选择方法(排序过滤算法方法部分):BLogReg、SBMLR、T-test、Relief、Fisher、ChiSquare、InforGain、Gini
  • RPFS方法:RSM、PCA、Fisher得分、SFS

常用软件与数据库

对合成材料进行表征,之后一般需要计算机绘图,比如画一些二维的分子式、反应过程,或者三维的分子式。还有就是数据图的精修,比如XRD精修一类的。目前在做的主要有生物分子和无机材料2个方向,当然这里也有一部分是和有机材料通用的。

  • 生物分子

关于生物分子,一般是做分子对接,其步骤如下:
从数据库下载分子结构文件,然后用chemdraw软件绘制分子式,之后保存为pdb格式。使用网页程序Z-Dock进行结合位点的选择和绑定点残留的选择,并利用分子对接软件Accelrys Discovery Studio 3.5采用CDOCKER模块进行分子对接模拟。

常用数据库:RCSB Protein Data Bank

网页程序:Z-Dock

  • 无机材料

对于无机材料主要是绘制3D分子结构图,虽然chemdraw也可以画,但是crystalmaker更方便一些,而只要有了无机晶体的一些晶体参数即可画晶体结构,这类参数主要有:晶体常数、对称性以及位置坐标、原子半径,定义化学键等。可以使用数据编辑器来编辑它们。

而一般晶体文件可以从数据库里找,主要是cif文件。

常用的cif数据库有:The Cambridge Crystallographic Data CentreIUCR

常用软件:mercury
(实际上crystalmaker和chemdraw更好用)
还有一些文件是mol文件,这类文件的格式是:cas号.mol

基本上应用第一广泛的分子结构文件。因为它就是一段标准文本,可以用文本编辑器看。几乎所有的可视化分子结构软件都能读取mol文件并渲染其描述的结构。

常用mol数据库:chemexperchemicalbook

  • 有机材料

至于绘画什么的都按照分子式来,具体的和上面那些相同,可以下载现成的mol/cif文件,或者用chemdraw自己画。

最后,关于有机/生物材料,最大的问题是结构式/分子式很难获得,即使得到cif文件也难以去进行后期处理,这里推荐Jmol这个软件,获取mol或获取pdb都不错,而且可读DDL2 的CIF文件。

至于软件库,可以看看这里IUCr

pdb数据库与pymol的安装(for Windows)、蛋白质在线计算库

由于项目涉及到做蛋白质分子对接这一块儿,所以必须自己去搞相关工作,然而之前用jmol提取了cif文件的三维结构,不过显示的是球棒模型,而非蛋白质一般的带条模型,本来去问老板联系的另一个老师,结果她啥都不会,所以只能是我自己去搞了。

蛋白质分子对接的思路有重要的一点就是由cif文件提取pdb文件,之后才能做下一步工作:计算位点、对接。

因此,pdb数据库有时候也是急需的,可以节省大量时间。这里从小木虫上找了几个:

另外就是需要比较好的编辑工具,比较同源建模获得的pdb文件是需要优化一下H的,使得能量最低。这里所找到的最合适也最有普遍意义的就是pymol了,然而pymol在官网上找不到免费版本!!而它是开源软件!原则上是免费的!!因此只能找国外大学的源,这里就要用UCI的源了(国内需要梯子访问!!):

从这里找到pymol即可,可惜只有Windows版本的。由于我之前在电脑上装过Anconada2,所以是集成了python2.7环境的。就下载python2.7版本64位的。之后,在dos下输入

1
python

验证是打开了Anconada2中集成的python2.7,随后输入

1
quite()

退回到dos之后,输入

1
pip

显示已经装好pip了。由于下载的文件是whl文件,需要用到wheel来安装,所以

1
pip install wheel

安装之后,安装pymol,我下载的是pymol-2.1.0-cp27-cp27m-win_amd64.whl

1
pip install pymol-2.1.0-cp27-cp27m-win_amd64.whl

到这里就安装好了,接下来就能愉快的使用pymol了,输入

1
pymol

即可打开,可视化界面就不多说了,关于教程网上有很多,这里也不废话了。但是个人觉得如果单纯是用球棍模型,jmol就完全够用了。

而最后,由于蛋白质分子领域的计算很麻烦,装很多软件的操作实在是坑爹,这里参考这篇文章找到了一些在线计算的网站:

蛋白质理化性质分析:

点击Resources A…Z,从右侧选择要检测的项目即可,基本上需要的检测项目都有。

ICSD数据库的使用

无机晶体结构数据库(The Inorganic Crystal Structure Database,简称ICSD)由德国的The Gmelin Institute (Frankfurt)和FIZ(Fachinformationszentrum Karlsruhe)合办。该数据库从1913年开始出版,至今已包含近10万条化合物目录。每年更新两次,每次更新会增加2000种新化合物,所有的数据都是由专家记录并且经过几次的修正,是国际最权威的无机晶体结构数据库。它只收集并提供除了金属和合金以外、不含C–H键的所有无机化合物晶体结构信息。包括化学名和化学式、矿物名和相名称、晶胞参数、空间群、原子坐标、热参数、位置占位度、R因子及有关文献等各种信息。

这几天折腾了一下,就简单的说说如何使用吧。首先我校并没有购买这个数据库,因此原则上是不能使用的,但是ICSD很人性化,从右侧可以注册一个试用账号(可使用数据库容量为3%,试用期是30天)。注册是试用账号和密码会发送到注册邮箱里。

之后,就是检索页面,左上角是检索内容的选择,包括:仅实验结构、仅理论结构、所有结构。回到正面(页面中间部分),第一部分是参考文献,即作者、文献什么的。而第二部分是化学,即所要检索的化学组成、元素数量等。第三部分是晶胞参数、晶胞体积等晶胞的参数设置。第四部分是对称性,即空间组符号,空间组号等。最后一部分是实验及代码信息,这里支持PDF卡片和ICSD收集代码。写好信息之后,到页面的右上角点击Run Query来运行检索。

实际检索可以结合浏览器的翻译插件来使用,但是对于复杂的掺杂晶体,里面的数据库可能是我能用的数据库容量太小了,依然感觉远远不够。而关于ICSD的账号在某宝上应该也很难买到,对于高校也是IP控制。

使用origin绘制标准PDF卡片的数据图

做XRD都要用到标准PDF卡片,常用数据库是PDF2004。所测得的样品一边都有2列数据,X轴是度数,Y轴是强度。关于PDF卡片的具体内容就不多说了。在我们有需求去画一个基于PDF标准卡片的数据图,一般步骤如下:

1.打开jade软件,在光盘符号旁边输入标准卡片号,然后回车。如果不知道标准PDF卡片的编号,就在jade里,PDF-chemistry-选择元素,之后可以从里面找到对应卡片

2.双击它,在弹出的窗口中,lines-输出-txt格式保存

3.建议用SublimeText打开所保存的PDF卡片txt,虽然笔记本也能打开,但是往往排版很奇怪。而考虑到固定光栅的相对强度和实际度数,对txt内的数据,到origin中,取2-Theta为X轴,I(f)为y轴,作图。

4.在图中空白区域右击,选中plot details。symbol中设置sig为0,drop line中勾选vertical,plot type设置为scatter。即可得到XRD标准谱图

5.在一般的XRD峰叠加对比图中,一般做到步骤3就够了,不需要做到步骤4

已只XRD数据去绘制晶体结构图

目的是获得该物质的cif晶体结构图,关于绘图软件有很多,常用的有crystalmaker、MaterialsStudio等。而关键在于所得样品是有什么需求??

  • 某个标准化合物

如果仅仅是要一个标准化合物的数据,一般是知道其名称的,不过同意物质可能有不同晶相,所以做XRD对比测试寻找匹配的标准PDF卡片,再由此从晶体数据库中下载cif文件。当然,也可以直接根据名称从数据库下载,毕竟不同晶相是有较大条件差异时才存在,对一般物质可无视。

  • 某个未知化合物

这就涉及到2个思路了:

  • 通过实验测定了原子坐标、热偏振系数,并且通过XRD确定了其是什么物质,找到了与之匹配的标准PDF卡片,则可由此使用软件去绘图,可以认为这种绘制的cif是基本可靠,一是因为其主要的晶格参数基本上完全是copy标准PDF卡片,与物质实际的还是有细微差异的,二是原子坐标和热偏振参数的测定并不100%准确,但是在极小误差范围内的,一般认为是可靠的。

  • 上述原子坐标等,实际上一般是通过XRD精修获得的。而在使用GSAS或者其他一些精修软件时,所得结果的cif文件是可以直接输出的,即免去了一些再绘图的工作。

不过对于未知化合物的晶体结构的绘制,一般建议具体问题具体分析,第一种方法是比较通用的方法。

由XRD数据文件确定扫描速度和条件

一般做完XRD会有RAS、ASC、JIP、RAW文件,之后用jade另存为txt文件方便使用。但是一般情况下可能会因为年代久远而忘记样品测试的具体条件,这就需要从原始数据中去找了。

在说数据处理之前,先说XRD的一个操作问题:那个载玻片,距离凹糟远的那一端是插到卡槽里的,而近的那一段是暴露在X光源下的

使用SublimeText打开RAS文件和ASC文件,可以在开头的信息里看到具体的扫描参数。但是对于扫描速度(步数)则很难确定。这就要针对这2类文件来分别讨论了。

  • 对ASC文件

在ASC文件中找到“*SPEED”这个参数,与之对应的数值单位是小时,即如果数值为0.3,则时间为0.3×60=18分钟,再由扫描范围除以时间,则可得到步数。这里要注意所得数值均进位取整数,比如扫描时间18分钟,范围70°,计算结果为3.8888,但结果取正整数,所以速度为4°/min

  • 对RAS文件

RAS文件的扫描速度作为参数可以找到,打开之后找到“MEAS_SCAN_SPEED_USER”这个参数,所对应的数值就是步数。单位是°/min。

对科学绘图的建议

实际上是写给我的导师(老板)、研究生、本科生的。关于科学绘图的技术实现就不多说了,这里仅以origin为例,针对XRD、磷光寿命、荧光光谱给出一些绘图参考。从原则上来说,绘图只要达到了图表示意的作用,就是合格的,但是一些协调性和规范性上的小问题,还是需要注意一下的。提高绘图和写作思路的最佳途径就是看论文!!!Reading is important!!

  • XRD:

1.X轴上的degree要在括号里,即2 theta(degree),表示单位为度,Y轴可不标注数值

2.晶面标注要尽可能在所对应的峰上面,尽量与峰对齐,是否需要标注晶面和那些样品需要标注晶面根据实际需求来定,正常情况下是不需要标注的

3.物质标注要严格按照规范来做,对于发光材料的格式是基质:激活剂:敏化剂

4.XRD图注释仅为变量,如pH=1、2、3等,对于具体某一物质,该物质是不需要标注出来的。除了不同变量用不同的符号表示,如酸碱度用pH表示

5.注释尽可能对齐,美观化的构图可以自行设计

  • 荧光:

1.X轴上的nm要放到括号里

2.对峰的能量跃迁标注要统一为竖的,且能量跃迁为特定跃迁,每个峰都是与之一一对应的,要检查有没有匹配错误

3.对于变量标注尽量用一个字母,如x=1、x=2,或无单词来表示,如1h、2h,方便论文写作,图片里不可以使用汉字注释!!

4.对于图像重叠严重看不清的,应调整成色差明显的颜色

  • 磷光寿命:

1.寿命标注要使用字母符号

2.统一X轴的单位,必须以时间为单位(ms或us),而非通道数

一些有用的数据库

毕竟是搞稀土方面的,一些优质文献还是以外文的为主,尤其是日本的!!可惜学校数据库比较渣,就只好自己去收集一些可在公网访问和使用的外文优质数据库。当然谷歌学术这些需要技术手段访问的就不说了。

  • SCI-HUB

对于它就不多说了,可根据题目、IDO来下载。

网址:http://www.sci-hub.io/

备用站点:http://www.sci-hub.cc/

中国版以及备用站点:http://www.sci-hub.cn/、http://www.sci-hub.xyz/

  • Library Genesis

sci-hub的难兄难弟,更新频率快,数据库容量也很大。由于是sci-hub的难兄难弟,这里也不多说废话了。

网址为:

1.http://gen.lib.rus.ec/

2.http://libgen.io/

3.http://libgen.org/

4.http://libgen.io/scimag/

  • Book

主要是专业书籍比较多,重点是能下载!!而且免费,毕竟比较稳定而且对中国用户比较友好,搜索一律用英文!!你要用哪国语言,就在网址的b-ok前加缩写,如中文网址:https://zh.b-ok.cc/

  • DOAJ

瑞典德隆大学图书馆设立,主要是收录OA期刊,网址:https://doaj.org/

  • NIMS日本国立材料研究机构

网址是:http://www.nims.go.jp

国内网络访问有点慢,里面有很多利于日本留学(虽然主要是招博士后和博士)的信息,并且它有个在线数据库:http://mits.nims.go.jp/

  • 日本国立情报研究所

查日本论文用的,虽然不太好用,网址:https://ci.nii.ac.jp/

  • 日本科学技术信息集成系统

由日本科学技术振兴机构开发,大部分内容可以免费浏览,虽然也不是太好用。网址:http://www.jstage.jst.go.jp

常用文档处理

不管是查阅参考文献还是书籍,很多电子版都是以pdf或者图片形式流出的。因此有时候为了写论文或是翻译时方便复制-粘贴,需要使用一些转换技术。同理,对于一些没有chemdraw但是需要画分子的情况,也需要一些替代技术。而在回复专利一通时,专利局给的文档都是图片,因此也需要处理一下,以方便阅读和更改。

对于pdf/图片信息扫描,使用OCR技术。而国内众多OCR软件都可以说是垃圾(还要钱),这里推荐用onlineocr,在网页执行操作,注册用户有50页的使用额度,一般足够用了。网址:https://www.onlineocr.net

对于分子结构的绘图,当没有chemdraw这种贵的吓人的软件的时候,可以考虑国产软件indraw,功能是足够应付平面绘图的。而这货的软件端很占用资源,比较坑,所以可以使用网页版,非常好用。网址:http://in.indraw.integle.com

对于图片整合,虽然可以直接使用OCR扫描,但是每次只能扫一个图片文件。因此,做成PDF再做OCR扫描是效率比较高的。不过,考虑到pdf的质量,这里只推荐使用Photoshop来生成PDF,之后OCR扫描即可。虽然也有很多在线生成的网站,但一般都会对图片格式有所限制….这里推荐一个在线pdf生成的网站,在图片为jpg时,或仅仅是使用doc,xsl文件去生成pdf时足以应付了。网址https://online2pdf.com

分子对接与蛋白质作用模拟的一些记录

最近在赶某篇SCI论文的终稿,所以也做了这方面的一些微小的工作。关于分子对接/蛋白质作用思路可以总结为:从PDB数据库找蛋白质,并且画自己合成的物质的PDB。用Z-DOCK计算,然后由位点用分子对接软件做对接。而蛋白质作用可以用pymol来画示意图,总体的图、仿真结构都是理论值,一切以结合仪器检测结果为准。

在实际操作中可能遇到以下问题,这里总结一些个人解决方案:

1.画物质结构的软件/绘图结构不准确。关于这部分,一定要使用chemdraw,破解版可以从淘宝买,对于已画好的结构可以用chem3D打开,并结合数据库里的标准物来进一步确认准确性。千万不要用indraw这类国产垃圾,读取文件数据都读不准,更别指望绘制结构了。

2.Z-DOCK需要校园邮箱问题。一般公立大学都有学生邮箱服务,详见各校官网。以内蒙古科技大学为例,在学校网络与信息办的官网有详细的关于学生邮箱系统的服务开通流程,就是绑定一下微信即可开通,很方便的。其他公益学术在线服务同理。

3.示意图的绘制,实际上pymol可以输出png,但是我没成功过。在pymol中设置显示配位离子,基本上能完成所有的化学/生物示意图。

4.分子对接软件,并不止一种,网上有很多也有很多教程,故具体需求由实验结果决定,因为并不是所有配合物方式都是基于作用/键来连接的,有时候仅要假说理论的示意图即可。

关于部分科研软件的安装和使用问题

最近换了新电脑,所以来说说软件重装的问题。

  • GSAS II

对于做XRD精修的人来说, GSAS是相当常用的一个软件,并且还有一个好处是教程多,且可靠。截至目前,GSAS II版本已经在官网更新了,而对于国内大多数人来说,或许是垃圾搜索引擎的锅,很多人的GSAS是从小木虫上下载的,而上面什么样的古董版本都有,本质上并不太合适使用。最好的方法是去官网下载和安装。

官网地址:https://subversion.xray.aps.anl.gov/trac/pyGSAS/wiki/InstallWindows

文档地址:https://gsas-ii.readthedocs.io/en/latest/

最新版集成了GSAS II和相应的Anaconda(一个python的集成开发包),总大小在300MB以上。这里推荐下载基于python2.7版本的,为了和pymol所依赖的python版本相同。(当然你也可以下载同为python3.7版本的GSAS和pymol)

如果你在安装时没有设置好,使得没能成功安装,在安装之后的文件夹GSAS II里找到proxy文本文档,把里面内容都删了,之后保存,随后运行bootstrap的py程序即可。

安装好后,把所在目录放到path里,之后用管理员权限的cmd去执行GSASII.py即可运行!!

  • CMPR

说到GSAS II就不得不说一下CMPR,这实际上是个数据转换工具,可获得一些需要的数据,以供使用GSAS进行精修。

官网:https://subversion.xray.aps.anl.gov/CMPR/trunk/doc/cmpr.html

  • JANA & RIETAN-FP

这两个都是XRD精修软件,前者源自欧洲,后者是日本的。精修还是需要自己看书或者看教程来学习的,至于软件则是有熟练的就好。因为我主要用GSAS,所以这俩就不多说了。

JANA:http://jana.fzu.cz

RIETAN-FP:http://fujioizumi.verse.jp/download/download_Eng.html#opennewwindow

  • Pymol

关于pymol也不用多说了,官网上也有下载,但是要钱。后来发现UCI有提供免费的pymol新版本的下载地址,就可以避免这个尴尬问题了。但是需要注意的是,pymol是一个开源软件,基于python2.7,当然也有python3.X版本,因此要注意自己所安装的python版本哦!!

UCI下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymol

如果像我一样在安装VS2017或者其他什么软件的时候安装了3.X版本的python怎么办呢??实际上很简单,在我的电脑-右键属性-环境变量设置里把这个python的path目录删除即可,然后换成我们所用的python2.X的目录。

当下载好之后是个whl文件,这里就要将python安装目录下的scripts目录添加到系统环境变量path里,然后用管理员权限打开cmd,使用pip命令进行安装。

  • AutoDock

这是一个免费且开源的分子对接软件,构成是AutoDock和ADT(即AutoDockTools,实际上就是MGLTools),关于软件下载和官方的用户手册,官网都有。官网:http://autodock.scripps.edu

这里说一下具体的安装,先安装AutoDock的程序包,安装目录中不得有中文,之后安装MGLTools,安装目录同样不得有中文。然后将AutoDock的安装目录添加到path里,随后用CMD执行autodock4.exe,返回扩展功能命令即说明安装成功。随后进入MGLTools的安装目录,打开里面的adt.bat,即可运行具有可视化窗口的AutoDock分子对接软件。一般情况下这个adt、pmv、cadd、vision等都会自己在桌面生成一个快捷方式。

至于AutoDock的使用,还是需要自学,虽然B站上有视频,网上有不少教程,这里找个新手入门的:

AutoDock实例教程:http://blog.sciencenet.cn/blog-3196388-1090023.html

这里补充一下,不存在软件报错问题!!一般报错要么是操作错误,要么是配体/受体没优化好!总之正常情况使用天然配体模拟都是正常的。

这里给出个硬件参考:我的电脑是i5-8300H的CPU,8G ddr4 RAM,跑上面这个分子对接例子,共50种可能性,跑了2.5小时,单个程序的CPU占用率在30%浮动。

  • 其他软件

我天朝自有国情在此,除了各大微信公众号可以提供软件下载,这里推荐一个“软件学堂”的网站,里面基本所有科研软件的破解版本都有,并且有详细的安装教程,所有的下载源走百度云….

分子对接

以Autodock为例,一般情况下在生物应用领域,我们合成了具体的小分子(无机或有机),并且找到了其所作用的蛋白质(大分子,充当受体)。而微观作用是难以表征的,其具体作用的可能性都是通过计算机仿真算出来的一个最具可能的结果。因此,分子对接技术就成为了材料应用领域的重要技术。

而市面上众多的分子对接软件里,AutoDock是一个开源免费且使用广泛的!!这意味着学术使用并不会涉及版权问题且仿真结果也是具有广泛认可度的。缺点则是运算量太大,用个人电脑跑对接会很耗时间,当然这也是所有科学软件的通病。那么具体来说一下分子对接的操作步骤:

  • 受体/配体的分子

一般从PDB数据库获取大分子(即所作用的蛋白质,通常也是受体),而小分子则是用chemdraw画出来,可是,一般情况下chemdraw画的分子式不一定与3D结构完全对应,且chemdraw无法保存为pdb格式。因此,通常在chemdraw画出配体小分子的分子式,再用chem3D打开,进行进一步修正,随后保存为pdb格式。如果是配位键(箭头)怎么办??先在chem3D的chemdraw panel里直接把配位离子和所在位点用直线连接,随后对直线右键-single-dative即可。

  • 位点的选择

直接用AutoDock打开配体和受体进行对接,一般情况下会报错!因为这是彼此都是独立的分子,其位点是未知的,可以理解为需要一个进行位点选择的预处理,这里使用Z-Dock网页程序进行,需要上传小分子pdb文件及学术邮箱来接收对接完的结果邮件。而收到的结果都是对接好的分子模型,但不一定是符合实验规律的!!因此,使用pymol将其受体、配体分开,分别储存为pdb格式,用于对接使用。

  • 分子对接

这部分就完全参考AutoDock的对接操作,这里不细讲了。只是一般认为受体是刚性,配体是柔性的。另外也要选择算法,一般是遗传算法或模拟退火算法。虽然AutoDock一般采用一种算法。

具体分子对接算法参考: http://www.sohu.com/a/202003514_99976553。

AutoDock的算法具体有:Lamarckian GA(拉马克遗传算法)、Genetic Algorithm(遗传算法)、Simulated Annealing(模拟退火算法)、Local Search(局部搜索算法)、evaluate energy等方法

这里要注意一下,如果你的PDB文件中有金属离子,那么需要在本地的AD4_parameters.dat中添加你的金属信息,否则会因为无法识别原子而报错。一般涉及到范德瓦尔斯方程的问题,自己计算就很不现实了,这里补充别人计算好的:

http://autodock.1369657.n2.nabble.com/ADL-Parameters-for-docking-with-metal-ions-in-receptor-td2505649.html

https://www.researchgate.net/post/Can_anyone_provide_me_the_Autodock_AD4_parameters_for_metal_ions_like_Ti_Ag_Au_Cu_Co

在更改好parameter之后,记得在grid和dock之前,把AD4_parameters.dat文件放到所在目录,并在各自的parameter设置当中读取这个文件(如果读取成功但仍然显示失败,报错信息后有#,就打开源文件,在#前加空格),随后就可以对接了。

当然,还有一种情况,是所生成的pdbqt文件缺失了金属离子,这也是因为无法识别而导致的,一般情况下直接手动改源文件添加即可!!

最后推荐个比较实用的元素周期表查询网站:http://periodictable.com/index.html

  • 数据分析与画图

AutoDock的对接结果,一般是会有50个结果,那么一般要怎么选择呢??由于通常使用的是遗传算法,而AutoDock使用的又是半经验自由能评价函数,因此,只要使用能量评价即可。对于每一种结果,显示具体参数,会有以下几个Binding Energy(结合能)、Intermolecular Energy(分子间能)、Internal Energy(内能)、Torsional Energy(扭矩能)、Unbound Extended Energy。

其中,Binding Energy=Intermolecular Energy +Internal Energy +Torsional Energy- Unbound Extended Energy,单位是kcal/mol。依据的评价函数是△G(bind)(评价函数)= △G(vdw)+△G(H-bond)+△G(ele)+△G(del-sol)+ △G(tor)。而Docked Energy: 对接能量=分子间能量+分子内能量。一般来说只要结合能越负,其自发的可能性越大,类似吉布斯自由能理论。故可根据结合能去选出最具可能的对接情况。关于这一部分的具体讨论,参考:http://muchong.com/html/200807/876387.html

而画图则使用pymol,这部分就不细讲了,网上的教程很多。输出为png即可。

关于Rietveld精修的一些碎碎念

这是关于XRD精修的一些废话

  • 可靠性参数

实际上就是结构因子一类的东西,对于做出来的数据结果,一般由3个参数来判断:Rwp(要小于15%,最好小于10%),Rwp/Rexp(最好接近于1,看一些资料上说它介于1和2之间即可),在布鲁克的结果(TOPAS)里这个值是GOF,GSAS是用CHI方来描述,范围也一致。Rp尽可能小

具体可以参考这里:https://wenku.baidu.com/view/cd4bb1bfddccda38366baf4d.html

  • 仪器参数

虽然XRD精修要尽可能的强峰,但是峰太强也不好。其次,不同仪器的功率不同,仪器的差异会影响数据的差异。一般写文章要注明仪器。如果遇到峰太强的情况,使用GSAS可能会导致CHI方数值过大。而且用GSAS精修,所精修的峰尽可能的要对称,并且选好基准线。关于GSAS,可以参考:

http://www.aps.anl.gov/Xray_Scie … rametersRecipes.pdf

https://wiki-ext.aps.anl.gov/ug11bm/index.php/GSAS_Profile_Terms

parrot上安装lammps

parrot基于Debian,而Ubuntu也基于Debian。从分子动力学仿真软件lammps的官方文档(https://lammps.sandia.gov/doc/Install_linux.html)上有这么一段描述:

1
A pre-built LAMMPS executable suitable for running on the latest Ubuntu Linux versions, can be downloaded as a Debian package. This allows you to install LAMMPS with a single command, and stay up-to-date with the current version of LAMMPS by simply updating your operating system.

并且还提到:

1
Thus it builds with FFTW3 and OpenMPI.

而FFTW3正好是parrot所自带的,因此,可确认在parrot上安装lammps是可以参考这部分文档来做的。

未完待续….