我写的一个简单的Python脚本永远从ener文件中提取能量。
- from ase.io import read, write
- import os
- import MDAnalysis
- import MDAnalysis.analysis.rdf
- import MDAnalysis.analysis.rms
- import matplotlib.pyplot as plt
- import pandas as pd
- import re
- os.chdir(‘Your file directory’)
- font1 = {'family' : 'Times New Roman',
- 'weight' : 'normal','size':'24'
- }
-
- df = pd.read_csv('your file name.ener',sep='\s+',skipinitialspace=True,engine='python',)
- a1=df['Step']
- a2=df['Nr.']
- a3=df['Time[fs]']
- a4=df['Kin.[a.u.]']
- a5=df['Temp[K]']
- a6=df['Pot.[a.u.]']
- fig = plt.figure(figsize=(24,16),dpi=300)
- plt.subplot(2,3,1)
- plt.scatter(a1, a2, alpha=0.85, label='Kin',linewidth=2)
- plt.xlabel(r"Time (fs)",fontsize=24,family='Times New Roman')
- plt.ylabel(r"Energy (a.u).",fontsize=24,family='Times New Roman')
- plt.legend(edgecolor='none', prop=font1,)
- plt.tick_params(labelsize=16)
- plt.subplot(2,3,2)
- plt.scatter(a1, a4, alpha=0.85, label='Pot',linewidth=2,c='orange')
- plt.xlabel(r"Time (fs)",fontsize=24,family='Times New Roman')
- plt.ylabel(r"Energy (a.u).",fontsize=24,family='Times New Roman')
- plt.legend(edgecolor='none', prop=font1,)
- plt.tick_params(labelsize=16)
- plt.subplot(2,3,3)
- plt.scatter(a1, a5, alpha=0.85, label='Cons Qty',linewidth=2,c='grey')
- plt.xlabel(r"Time (fs)",fontsize=24,family='Times New Roman')
- plt.ylabel(r"Energy (a.u).",fontsize=24,family='Times New Roman')
- plt.legend(edgecolor='none', prop=font1,)
- plt.tick_params(labelsize=16)
- plt.subplot(2,3,4)
- plt.scatter(a1, a3, alpha=0.85, label='Temp',linewidth=2,c='forestgreen')
- plt.xlabel(r"Time (fs)",fontsize=24,family='Times New Roman')
- plt.ylabel(r"Temp (K)",fontsize=24,family='Times New Roman')
- plt.legend(edgecolor='none', prop=font1,)
- plt.tick_params(labelsize=16)
- plt.subplot(2,3,5)
- plt.scatter(a1, a6, alpha=0.85, label='UsedTime',linewidth=2,c='purple')
- plt.xlabel(r"Time (fs)",fontsize=24,family='Times New Roman')
- plt.ylabel(r"UsedTime (s)",fontsize=24,family='Times New Roman')
- plt.legend(edgecolor='none', prop=font1,)
- plt.tick_params(labelsize=16)
-
- a8=[]
- for i, element in enumerate(a6):
- nv=a6[:i]
- su = sum(nv)
- a8.append(su/60)
-
- plt.subplot(2,3,6)
- plt.scatter(a1, a8, alpha=0.85, label='Accumtime',linewidth=2,c='cadetblue')
- # plt.plot(a1, a7, alpha=0.85, label='Energy',linewidth=2)
- plt.xlabel(r"Time (fs)",fontsize=24,family='Times New Roman')
- plt.ylabel(r"Accumtime (min)",fontsize=24,family='Times New Roman')
- plt.legend(edgecolor='none', prop=font1,)
- plt.tick_params(labelsize=16)
- dm = pd.DataFrame({'Time (fs)':a1,'Kin':a2,'Temp':a3,'Pot':a4,'Cons Qty':a5,'UsedTime':a6})
- dm.to_excel("Energychek.xlsx")
- plt.subplots_adjust(wspace =0.3,hspace =0.3 )
- plt.savefig('Energychek.png', transparent=True,format='png')#指定分辨率,边界紧,背景透明
- plt.show()
- print ('congratulate!!!')
复制代码 |