实验数据处理与分析

本文最后更新于:2023年7月28日

本文主要介绍使用python对实验数据进行处理和分析的一些经验。

纯文本数据

对于纯文本数据,可以很容易地自己写代码来处理数据。

比如python可以用open函数读取文件,split处理格式,但是这样不太pythonic,可以直接借助numpypandas中的相关函数直接读取。

numpy举例:

1
2
import numpy as np
(x,y) = np.loadtxt("filename").T # x在第一列,y在第二列

一行搞定,非常优雅。

但是并不是所有软件生成的数据都可以直接读取,比如可能第一行多了一些数据说明。

numpy.loadtxt可以自动略过#开头的行,类似于注释,所以可以用shell对实验数据做一点小小的修改。

1
2
#!/bin/sh
find . -type f -name '*.txt' -exec sed -i '1s/^/# /' {} \;

加速python数据处理

python在计算密集型的任务中往往会很慢。numba可以通过JIT加速。

使用numba加速非常简单,只需要

  • 将计算密集的部分封装为函数
  • 将装饰器@numba.jit应用到该函数

使用一些成熟的包

某次需要处理dcd文件(某些分子动力学软件生成的二进制轨迹文件),老师给了一个年代久远的c++项目可以将其转换为纯文本文件,但是在ubuntu 22.04上有boost库的兼容性问题。

搜索后发现MDAnalysis支持该二进制文件的读写,更优雅,更高效,并且能够避免产生大量的中间文件(大概有几十个G)