中文

Python科研工具箱:材料科学常用Python库实战

为什么用Python

材料研究产生各种数据:AFM力曲线、SEM图像、MD轨迹、XRD图谱、力学测试日志。Python已成为处理这些数据的万能语言。


import numpy as np
from scipy import signal, optimize
import matplotlib.pyplot as plt

核心工具栈

NumPy & SciPy


data = np.loadtxt("force_curve.txt", skiprows=2)
z_piezo, deflection = data[:, 0], data[:, 1]
k = 2.8  # N/m
sensitivity = 42.5  # nm/V
force = k * sensitivity * (deflection - np.median(deflection[:100]))
peaks, _ = signal.find_peaks(-force, prominence=0.5)
adhesion = -force[peaks[0]] if len(peaks) > 0 else 0

Pandas


import pandas as pd
df = pd.read_csv("tensile_tests.csv")
summary = df.groupby("treatment").agg({"youngs_modulus": ["mean", "std"], "ultimate_strength": ["mean", "std"]}).round(2)

Matplotlib


fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.plot(strain, stress, "b-", linewidth=1.5)
plt.savefig("mechanical_properties.pdf", dpi=300)

材料科学专用库

ASE(原子模拟环境)


from ase.io import read
atoms = read("collagen_fibril.data", format="lammps-data")
supercell = atoms * (2, 2, 3)
  • Hunter, J.D. (2007). Matplotlib: A 2D graphics environment. CSE, 9(3), 90-95.

💬 Questions or Feedback?

This blog is actively maintained by a PhD researcher. Reach out on GitHub for collaborations or corrections.

View on GitHub