任务:
-我模拟了一个分子的振动,每0.1飞秒拍一张原子所在位置的“快照”
-现在我需要遍历输出并获取所有这些不同的笛卡尔坐标集(总共50个)。你知道吗
-几何体的格式很好,但是在几何体段之间有具有相同格式的额外内容(参见示例)。你知道吗
示例(这是我试图解析的文件中50个相同的片段之一,只有16个原子,而不是4个原子。)
Time in trajectory (femtosec) 3.300000D+00
Total energy (au) -2.716055737D+02
Total angular momentum (h-bar) 5.485831060D-14
Coordinates (Bohr)
I= 1 X= -1.573316541788D+00 Y= -3.143098097327D-01 Z= -9.488852008364D-01
I= 2 X= -1.549056004901D+00 Y= -3.758762443395D-01 Z= 1.621875214114D+00
I= 3 X= 7.633881398143D-01 Y= -3.853052819189D-01 Z= 3.487630749614D-01
I= 4 X= 2.390273062744D+00 Y= 1.832192143047D+00 Z= 6.235281069720D-01
Momentum (sqrt(amu)*Bohr/sec)
I= 1 X= -3.536362458214D+13 Y= 2.431139678255D+13 Z= 1.413087646815D+13
I= 2 X= -2.526353110947D+13 Y= -2.551987667221D+12 Z= 7.250485757030D+12
I= 3 X= -1.190415840625D+13 Y= -1.311816871612D+13 Z= -4.638293368564D+12
I= 4 X= 6.566472312459D+12 Y= -2.248922363477D+13 Z= -4.123675084717D+11
我想它如果有某种方法来循环文件和读取坐标,然后跳过动量信息,并剥离所有额外的信息,以及如I=,X=等
我在想,如果我能把它放到一个3D numpy数组中,我的坐标将被索引为:(迭代数,原子数,x y或z坐标)。我不知道正则表达式在这里是否会有很大帮助,因为动量部分的行有相同的格式。你们中有谁能给我一个正确的方向?你知道吗
资源去与答案将不胜感激,我没有一个时间范围内的工作,所以我希望在这里学到一些东西。你知道吗
您可以使用
numpy.genfromtxt()
,它接受一个生成器,因此允许在您提供的输入中进行一些定制。例如,这里我用e
替换D
,并忽略以'M'
和'C'
开头的所有行。另外,我只使用包含所需数据的(3, 5, 7)
列。最后,重新调整数组的形状,使每个“动量”彼此分离,并可通过第一个索引访问(假设它们始终有4行):在此数组中,您将使用第一、第二和第三个索引访问动量I和(X,Y,Z):
相关问题 更多 >
编程相关推荐