python学习笔记:读取xyz文件

在药学的Ai研发过程中,经常要制作清洗文件和处理各种文件格式。利用openBabel这样功能能够大大减轻转换过程的麻烦。然而偶然也需要应对一下场景下处理xyz文件抽取相关的坐标体系去计算小分子之间的作用力。用于制药方面探索发现。

我们知道通过Rust写起来会繁琐一些,python在书写方面处理文件相对容易一些。相对2者,Rust性能就摆在那里,这是python无法比拟的。不过在大多数科研领域,python的优势还是很明显不用过于在乎语法门槛。

python处理这些文件经常有2个常见任务,一是处理同种的文件提取关键信息,二是批量处理对应的关键信息。这一些对于不是编程领域的科研人员会有一些头脑之处。

下面简单一点读取一个体系的xyz文件,处理返回这个体系的xyz三维坐标。(这里没有涉及到面向对象去封装。仅仅只是一个小小案例)

# 12
#
# C       19.51600       14.54700       13.49400
# C       19.29600       15.68700       14.23800
# H       18.77340       15.62000       15.18530
# C       19.72400       16.87500       13.79700
# H       19.56810       17.76250       14.39960
# C       20.35800       16.97500       12.58800
# H       20.69480       17.94310       12.23520
# C       20.56200       15.90100       11.84900
# H       21.04700       15.99740       10.88430
# C       20.16600       14.66300       12.29000
# H       20.36530       13.78170       11.69110
# H       19.18030       13.57230       13.85480


def read_one_xyz(filename):
    xyz = []
    with open(filename, 'r') as f:
        content = f.read()
        contact = content.split('\n')
        for line in contact:
            if line == '' or line.isdigit():
                continue
            else:
                atom = line.split()
                xyzitem = {'symbol': atom[0], 'position': {"x": atom[1], "y": atom[2], "z": atom[3]}}
                xyz.append(xyzitem)
    return xyz


if __name__ == '__main__':
    xyz = read_one_xyz('1obx_b2.xyz')
    for f in xyz:
        print(f)

读取之后,看看这个文件数据。看如下图,看起来非常简单将数据
提取出来。
python学习笔记:读取xyz文件_第1张图片
好了,这个就是对一个文件的读取。利用Avogadro工具观察我们读取的文件。刚好我们提取是一个苯环结构构象。有2给化学键。一个碳和一个氢。
这个就是我们研究的苯环对象信息。
python学习笔记:读取xyz文件_第2张图片
好了,利用python的便利之处,就可以方便为我们计算带来方便之门。

你可能感兴趣的:(python学习笔记)