分子模拟中,Materials Studio 跑分子动力学很慢,效率是gromacs的1/20。为了提高效率,可先在gromacs上运行分子动力学,获得平衡结构。再将gro文件转换为car文件并导入MS软件,进行分析,譬如XRD。car文件可保持周期性体系在ms中打开,也可在其它分子模拟软件中打开。(openbabel软件可以轻松实现gro2cif,但是没有电荷。)

car文件主要参数是坐标和电荷。

根据rtp文件中的atoms,编写一个charge()函数。这个可用python解决,代码如下:

#!/bin/env python
# -*- encoding: utf-8 -*-f1 = open('atoms.txt','r',encoding='utf-8')   #打开txt文本进行读取
f2 = open('charge.py','w')f2.write("def chargefun(list0):\n")
f2.write("    if list0=='': print('There is at least one mistake!');\n")
while True:  #循环,读取文本里面的所有内容line = f1.readline() #一行一行读取if not line:  #如果没有内容,则退出循环breaklist = line.strip().split()a=list[0]b=list[2]f2.write("    elif list0=='%s': charge='%s';\n"%(a,b))f2.write("    else:  print('%s There is at least one mistake!'%list0);\n")
f2.write("    return charge\n")
f1.close()
f2.close()

将charge()复制到将要编写的gro2car文件中,也可以通过from...import...引用。完成之后的代码如下:

#!/bin/env python
# -*- encoding: utf-8 -*-import linecachecartype="{0:<8}{1:<16}{2:15}{3:12}{4:5}{5:7}{6:8}{7:4}{8:12}" #car格式'''
本例中有2个残基,30000+原子数,当原子编号大于9999时,gro文件的排版会有点小问题。
原子命名要求以元素名作为首字母,如果元素名多于1个字母,请自行修改代码。
'''
filename = 'as-c6'  #文件名
asname = 'ASC6'  #第一个残基名称
asmonum = 44    #第一个残基分子数
asatnum = 103   #第一个残基原子数
xyname = 'XYL'  #第二个残基名称
xymonum = 1508  #第二个残基分子数
xyatnum = 18    #第二个残基原子数f=open(filename+'.car','w')
f.write('!BIOSYM archive 3\n')
f.write('PBC=ON\n\n')line0=linecache.getline(filename+'.gro',asmonum*asatnum+xymonum*xyatnum+3)
list1=line0.strip().split()
f.write('PBC  ')
f.write("%.4f"%(float(list1[0])*10)+'  ')
f.write("%.4f"%(float(list1[1])*10)+'  ')
f.write("%.4f"%(float(list1[2])*10)+'  ')
f.write(' 90  90  90  (P1)\n')  def chargefun(list0):if list0=='': print('There is at least one mistake!');elif list0=='C00': charge='0.192834809';elif list0=='C01': charge='-0.215146234';elif list0=='C02': charge='-0.215146234';elif list0=='C03': charge='0.192834809';elif list0=='C04': charge='-0.215146234';elif list0=='C05': charge='-0.215146234';elif list0=='C06': charge='-0.30191933';elif list0=='C07': charge='-0.30150868';elif list0=='H08': charge='0.137690322';elif list0=='H09': charge='0.137690322';elif list0=='H0A': charge='0.137690322';elif list0=='H0B': charge='0.137690322';elif list0=='H0C': charge='0.087986654';elif list0=='H0D': charge='0.087986654';elif list0=='H0E': charge='0.087986654';elif list0=='H0F': charge='0.087874025';elif list0=='H0G': charge='0.087874025';elif list0=='H0H': charge='0.087874025';elif list0=='CA1': charge='-0.078872403';elif list0=='CA2': charge='-0.026597209';elif list0=='SA3': charge='-0.143768708';elif list0=='CA4': charge='0.122436546';elif list0=='CA5': charge='-0.09128223';elif list0=='CA6': charge='-0.016972759';elif list0=='CA7': charge='-0.051666657';elif list0=='CA8': charge='0.072415943';elif list0=='CA9': charge='-0.098128252';elif list0=='C10': charge='0.015977658';elif list0=='C11': charge='0.010712285';elif list0=='C12': charge='0.101163302';elif list0=='C13': charge='-0.106390879';elif list0=='C14': charge='-0.015252713';elif list0=='C15': charge='-0.079989225';elif list0=='C16': charge='-0.000709683';elif list0=='C17': charge='0.09768822';elif list0=='C18': charge='-0.053510792';elif list0=='C19': charge='0.142517064';elif list0=='C20': charge='-0.2267801';elif list0=='C21': charge='0.395621604';elif list0=='C22': charge='-0.261758512';elif list0=='C23': charge='-0.252534509';elif list0=='C24': charge='0.27182652';elif list0=='C25': charge='-0.191331297';elif list0=='C26': charge='-0.309404632';elif list0=='C27': charge='0.241462667';elif list0=='C28': charge='-0.352760417';elif list0=='C29': charge='0.395406331';elif list0=='C30': charge='-0.22393285';elif list0=='C31': charge='0.446527793';elif list0=='C32': charge='0.05058825';elif list0=='C33': charge='-0.21136208';elif list0=='C34': charge='0.112135968';elif list0=='C35': charge='-0.223662249';elif list0=='C36': charge='0.163394751';elif list0=='C37': charge='0.205184643';elif list0=='C38': charge='-0.25687363';elif list0=='C39': charge='0.121210537';elif list0=='C40': charge='-0.006678977';elif list0=='C41': charge='-0.109723519';elif list0=='C42': charge='-0.138282273';elif list0=='C43': charge='0.038438452';elif list0=='N44': charge='-0.619029003';elif list0=='C45': charge='0.549380131';elif list0=='C46': charge='0.79637388';elif list0=='O47': charge='-0.534260371';elif list0=='O48': charge='-0.695553722';elif list0=='H49': charge='0.091300257';elif list0=='H50': charge='0.014502848';elif list0=='H51': charge='0.024916171';elif list0=='H52': charge='0.024916171';elif list0=='H53': charge='-0.043693562';elif list0=='H54': charge='-0.043693562';elif list0=='H55': charge='0.065311821';elif list0=='H56': charge='0.065311821';elif list0=='H57': charge='0.028551782';elif list0=='H58': charge='0.028551782';elif list0=='H59': charge='0.027852007';elif list0=='H60': charge='0.027852007';elif list0=='H61': charge='0.058507846';elif list0=='H62': charge='0.013398577';elif list0=='H63': charge='0.465489805';elif list0=='O64': charge='-0.618537964';elif list0=='H65': charge='0.394856137';elif list0=='C66': charge='0.048424796';elif list0=='C67': charge='-0.12465115';elif list0=='H68': charge='0.007092517';elif list0=='H69': charge='0.007092517';elif list0=='H70': charge='0.019216233';elif list0=='H71': charge='0.019216233';elif list0=='C72': charge='-0.484752879';elif list0=='C73': charge='0.215843529';elif list0=='H74': charge='0.186113624';elif list0=='C75': charge='-0.039525099';elif list0=='C76': charge='0.012317379';elif list0=='H77': charge='0.046784136';elif list0=='H78': charge='0.003896272';elif list0=='H79': charge='0.044224354';elif list0=='H80': charge='0.044224354';elif list0=='H81': charge='0.032136325';elif list0=='C82': charge='0.231529919';elif list0=='H83': charge='-0.040730514';elif list0=='C84': charge='-0.084115552';elif list0=='H85': charge='0.043685559';elif list0=='H86': charge='0.043685559';elif list0=='C87': charge='0.162365787';elif list0=='C88': charge='-0.179017139';elif list0=='C89': charge='-0.302755841';elif list0=='H90': charge='-0.00225534';elif list0=='H91': charge='-0.00225534';elif list0=='H92': charge='0.048861202';elif list0=='H93': charge='0.048861202';elif list0=='H94': charge='0.048861202';elif list0=='H95': charge='0.067852469';elif list0=='H96': charge='0.067852469';elif list0=='H97': charge='0.067852469';elif list0=='H98': charge='0.058507846';elif list0=='H99': charge='0.035575034';elif list0=='HB0': charge='-0.008840012';elif list0=='HB1': charge='0.091300257';elif list0=='HB2': charge='-0.046659792';elif list0=='HB3': charge='0.013398577';else:  print('%s There is at least one mistake!'%list0);return chargef1=open(filename+'.gro','r')
i=-2
while True:line0=f1.readline()if not line0:breakif i >=0 and i< asmonum*asatnum:      line = [0,1,2,3,asname,5,'xx',7,8]      list1=line0.strip().split()line[0]=list1[1]line[1]="%.4f"%(float(list1[3])*10)line[2]="%.4f"%(float(list1[4])*10)line[3]="%.4f"%(float(list1[5])*10)line[5]=str(int(i/asatnum)+1)       line[7]=str(line[0])[0]line[8]=chargefun(line[0])f.write(cartype.format(line[0],line[1],line[2],line[3],line[4],line[5],line[6],line[7],line[8]))f.write('\n')if (i+1)%asatnum ==0 :      f.write('end\n')elif i >= asmonum*asatnum and i < 9999:     line = [0,1,2,3,xyname,5,'xx',7,8]      list1=line0.strip().split()j=i-asmonum*asatnum                  line[0]=list1[1]line[1]="%.4f"%(float(list1[3])*10)line[2]="%.4f"%(float(list1[4])*10)line[3]="%.4f"%(float(list1[5])*10)line[5]=str(int(j/xyatnum)+asmonum+1)      line[7]=str(line[0])[0]line[8]=chargefun(line[0])f.write(cartype.format(line[0],line[1],line[2],line[3],line[4],line[5],line[6],line[7],line[8]))f.write('\n')if (j+1)%xyatnum==0 :        f.write('end\n')elif i >= 9999 and i < (asmonum*asatnum+xymonum*xyatnum):         line = [0,1,2,3,xyname,5,'xx',7,8]   list1=line0.strip().split()j=i-asmonum*asatnum        line[0]=str(list1[1])[0:3]line[1]="%.4f"%(float(list1[2])*10)line[2]="%.4f"%(float(list1[3])*10)line[3]="%.4f"%(float(list1[4])*10)line[5]=str(int(j/xyatnum)+asmonum+1)       line[7]=str(line[0])[0]line[8]=chargefun(line[0])f.write(cartype.format(line[0],line[1],line[2],line[3],line[4],line[5],line[6],line[7],line[8]))f.write('\n')if (j+1)%xyatnum==0 :f.write('end\n')i+=1            f.write('end')
f.close()

以上操作也可以在excel里进行,逻辑思路是一致的。

分子动力学模拟gro格式转换为 car相关推荐

  1. gromacs manual_GROMACS蛋白配体分子动力学模拟结果分析简要笔记

    0. 引言 本文以前文(https://zhuanlan.zhihu.com/p/149862369)为基础,对蛋白配体复合物分子模拟体系的结果进行一系列的粗浅分析,本文记述了简要的分析方法. 1 M ...

  2. Amber小分子-蛋白复合体分子动力学模拟

    Amber小分子-蛋白复合体分子动力学模拟 以前经常用GROMACS进行分子动力学模拟,后来试了一下Amber后发现,在我当前配置的GPU资源上,果然还是Amber更快一些,GROMACS太吃CPU资 ...

  3. 基于Gromacs的蛋白水溶液分子动力学模拟

    1. 检查结构文件 有些结构文件存在少几个氢原子或者侧链的情况,所以先用spdbv软件打开结构文件,该软件可自动补加缺失的分子,用这个软件打开结构文件,再另存一下结构即可. Spdbv软件是windo ...

  4. GPU编程 CUDA C++ 分子动力学模拟【GPU加速版】迷你代码

    分子动力学模拟对一个具有一定初始条件和边界条件且具有相互作用(分子力场molecular force feild)的多粒子系统的运动方程进行数值积分,得到系统在相空间(phase space)中的一条 ...

  5. 分子动力学模拟之周期性边界处理

    技术背景 周期性边界是分子动力学模拟中常用的一种技术手段,不仅可以完整的概述完整的分子体系的特性,在一部分场景下还可以提升计算的效率,从作用上来看更像是一类的近似模型(假设有一个原子逃出这个周期性边界 ...

  6. 将Dos文档格式转换为Unix格式

    将Dos文档格式转换为Unix格式有多种方法这边列举一些,希望可以给大家提供些帮助 两种文本文档本质上的不同是由于不同系统下默认创建文件的行尾符不同,Windows系统以'\r\n'换行结尾,Lini ...

  7. 干货分享 | 分子对接与分子动力学模拟在药物研发中的应用

    前言 分子对接(Molecular docking)与分子动力学模拟(Molecular dynamics simulation)是计算生物学中重要的一部分,在生物学研究中不断发挥着重要的作用.分子对 ...

  8. Amber进行分子动力学模拟以及计算mmpbsa

    使用amber计算mmpbsa记录 1.文件处理 2.蛋白与分子处理 (1) 前处理 (2) 生成crd与prm文件 3.分子动力学模拟 (1)能量最小化 (2)体系加热 (3)均匀密度 (4)全局平 ...

  9. Gromacs分子动力学模拟流程概述

    Gromacs分子动力学模拟主要可以分为以下几个步骤,不同的体系步骤可能略有不同. 在开始之前,先简单了解一下预平衡: 分子动力学模拟的最终目的是对体系进行抽样,然后计算体系的能量,各种化学键,成分分 ...

最新文章

  1. 一文介绍机器学习中的三种特征选择方法
  2. Tomcat Servlet
  3. Zabbix server is not running: the information displayed may not be current.
  4. 线程池是怎样工作的?
  5. JZOJ 5281. 【NOIP提高组模拟A组8.15】钦点
  6. Boost:清理cleanup测试程序
  7. Eclipse中Build Path的使用介绍---学习笔记
  8. egret键盘事件监听
  9. win7重装系统后设置Python2.7环境
  10. Calendar类 set方法 get方法 add方法
  11. linux判断字符串命令行,bash – 将命令行参数与字符串进行比较
  12. 详解Python中的浅复制与深复制
  13. python报表自动化系列 - 按照文件名筛选文件
  14. 美国人太嚣张(爆笑呀!)
  15. 关于手心输入法配置完整自然码辅码
  16. hulk入门使用——ddos攻击
  17. 关系型数据库的ACID指的是什么?
  18. [渝粤教育] 中国地质大学 婚姻与家庭法 复习题 (2)
  19. Caporali HSK63A.H80.WE16
  20. 锁屏上显示Activity

热门文章

  1. 32 位 ARM® Cortex®-M0+内核 单片机
  2. 2022-2028全球与中国医学头骨CT市场现状及未来发展趋势
  3. html字体如何运用在ps上,PS新手怎么运用好工作中文本工具
  4. 大数据风控是在做什么?
  5. ubuntu 16.04下chrome浏览器Flash过期解决方法
  6. 技校考计算机专业大专考什么科目,高职专科考试科目有哪些 考什么内容
  7. 对于《西游记》的看法
  8. 2、Python绘制等值线图与填色图
  9. 总结Python设置Excel单元格样式的一切,比官方文档还详细
  10. 如何不改一行代码,让Hippy启动速度提升50%?