Python库的多样性使得它们可以在不同的应用场景中发挥作用,不同场景下同一个库可能拥有不同的功能,本系列未来会有不同的分类,可能会出现相同的库。数量很多,慢慢整理。文中的示例都是最基础的用法,有些就顺手写了,有些就丢给Ai,看个乐就行。
1. Lammps – 分子动力学模拟
功能: LAMMPS(Large-scale Atomic/Molecular Massively Parallel Simulator)是一个用于分子动力学模拟的开源软件,广泛应用于材料科学、化学和生物学。
使用场景:
- 模拟材料的力学、热力学和动力学性质。
- 研究蛋白质折叠、聚合物动力学等生物分子系统。
- 模拟复杂流体和纳米尺度的物理现象。
示例:
from lammps import lammps # 初始化 LAMMPS lmp = lammps() # 读取输入脚本 lmp.file("in.lammps") # 运行模拟 lmp.command("run 1000") # 关闭 LAMMPS lmp.close()
2. AMUSE – 天文模拟工具
功能: AMUSE(Astrophysical Multipurpose Software Environment)是一个用于天文学和天体物理学模拟的框架,集成了多种模拟代码。
使用场景:
- 模拟星系形成、星团演化等天体物理过程。
- 气体动力学和恒星动力学模拟。
- 多尺度天文模拟的集成和管理。
示例:
from amuse.lab import * # 创建一个简单的恒星系统 stars = new_plummer_model(100) # 设置初始条件 stars.mass = 1 | units.MSun stars.position += [100, 100, 100] | units.parsec # 运行模拟 converter = nbody_system.nbody_to_si(1 | units.MSun, 1 | units.parsec) gravity = Hermite(converter) gravity.particles.add_particles(stars) channel_from_gravity_to_framework = gravity.particles.new_channel_to(stars) for i in range(100): gravity.evolve_model(1 | units.Myr) channel_from_gravity_to_framework.copy() # 打印结果 print(stars.position)
3. Astropy – 天文学数据分析
功能: Astropy 是一个用于天文学的 Python 库,提供了丰富的功能来处理、分析和可视化天文数据。
使用场景:
- 天文学数据的处理和分析。
- 天体坐标转换、时间系统处理。
- 光谱、图像处理和天文统计。
示例:
from astropy import units as u from astropy.coordinates import SkyCoord # 创建一个天体坐标 c = SkyCoord(ra=10.68458 * u.degree, dec=41.26917 * u.degree, frame='icrs') # 转换到银道坐标 gal = c.galactic print(f"Galactic Coordinates: l={gal.l}, b={gal.b}")
4. OpenMM – 分子动力学库
功能: OpenMM 是一个高性能的分子动力学模拟库,支持GPU加速。
使用场景:
- 生物分子系统的模拟,如蛋白质、DNA。
- 药物设计和分子对接。
- 材料科学中的分子动力学研究。
示例:
from simtk.openmm import app from simtk.openmm import * from simtk.unit import * # 加载 PDB 文件 pdb = app.PDBFile('protein.pdb') # 创建系统 forcefield = app.ForceField('amber99sb.xml') system = forcefield.createSystem(pdb.topology, nonbondedMethod=app.PME, nonbondedCutoff=1*nanometer, constraints=app.HBonds) # 设置模拟参数 integrator = LangevinIntegrator(300*kelvin, 1/picosecond, 0.002*picoseconds) simulation = app.Simulation(pdb.topology, system, integrator) # 设置初始位置 simulation.context.setPositions(pdb.positions) # 最小化能量 simulation.minimizeEnergy() # 运行模拟 simulation.step(1000) # 获取结果 state = simulation.context.getState(getPositions=True, getEnergy=True) print(state.getPotentialEnergy())
5. Pint – 单位和物理量的计算
功能: Pint 是一个用于处理物理单位和量纲的库,确保计算中的单位一致性。
使用场景:
- 科学计算中确保单位的正确性。
- 工程领域中的单位转换和计算。
- 教育和教学中的物理量处理。
示例:
from pint import UnitRegistry ureg = UnitRegistry() # 定义量 distance = 100 * ureg.meters time = 2 * ureg.seconds # 计算速度 speed = distance / time print(f"Speed: {speed:.2f}")
6. Phonopy – 声子谱分析
功能: Phonopy 是一个用于计算声子谱和相关物理属性的工具。
使用场景:
- 材料科学中的声子计算。
- 研究材料的热导率、比热容等热力学性质。
- 模拟材料的振动特性和相变。
示例:
from phonopy import Phonopy from phonopy.interface.vasp import read_vasp # 读取结构 unitcell = read_vasp("POSCAR") # 创建 Phonopy 对象 phonon = Phonopy(unitcell, supercell_matrix=[[2, 0, 0], [0, 2, 0], [0, 0, 2]], primitive_matrix='auto') # 设置参数 phonon.set_force_constants(phonopy_yaml_filename="phonopy_params.yaml") # 计算声子谱 phonon.run_qpoints_mesh([20, 20, 20]) # 获取结果 qpoints, weights, frequencies, eigenvectors = phonon.get_qpoints_mesh() print(frequencies)
7. MDTraj – 分子动力学轨迹分析
功能: MDTraj 是一个用于分析分子动力学模拟轨迹的库,支持多种轨迹格式。
使用场景:
- 分析分子动力学模拟结果。
- 计算分子结构、动力学性质。
- 分子对接和药物发现中的轨迹分析。
示例:
import mdtraj as md # 加载轨迹 traj = md.load('trajectory.xtc', top='topology.pdb') # 计算 RMSD rmsd = md.rmsd(traj, traj[0]) # 打印 RMSD print(rmsd)
8. GPAW – 密度泛函理论库
功能: GPAW 是一个基于 Python 的密度泛函理论(DFT)计算库,支持多种计算方法。
使用场景:
- 电子结构计算。
- 材料科学中的量子化学模拟。
- 研究材料的电子、磁性和光学性质。
示例:
from gpaw import GPAW, PW from ase.build import molecule # 创建一个分子 atoms = molecule('H2O') # 初始化计算 calc = GPAW(mode=PW(300), xc='PBE', kpts=(1, 1, 1)) # 设置计算 atoms.set_calculator(calc) # 执行计算 energy = atoms.get_potential_energy() print(f"Total energy: {energy} eV")
9. DeepChem – 深度化学库
功能: DeepChem 是一个用于深度学习在化学和药物发现中的应用的库,提供多种模型和工具。
使用场景:
- 分子性质预测。
- 药物发现和优化。
- 化学反应预测和材料设计。
示例:
import deepchem as dc # 加载数据集 tasks, datasets, transformers = dc.molnet.load_tox21() # 创建模型 model = dc.models.GraphConvModel(n_tasks=len(tasks), mode='classification', dropout=0.2) # 训练模型 model.fit(datasets[0]) # 预测 predictions = model.predict(datasets[1]) print(predictions)
10. Py3Dmol – 分子可视化
功能: Py3Dmol 是基于 3Dmol.js 的 Python 包装器,用于在 Jupyter 笔记本中进行分子可视化。
使用场景:
- 分子结构的3D展示。
- 教育和教学中的化学分子展示。
- 药物设计中的分子结构分析。
示例:
import py3Dmol # 创建一个视图 view = py3Dmol.view() # 添加分子 view.addModel("O", "sdf") # 设置样式 view.setStyle({'stick':{}}) view.zoomTo() view.show()