手搓一个Pypi库——化学计算工具chemax

简介

一个分子信息计算器,目前支持通过分子式、结构简式生成分子的摩尔质量和准确质量信息。

花了一晚上+一早上,目前已上传Pypi,可以通过pip install chemax安装使用。

契机

本人长期在有机合成实验室坐牢,经常批量做产物(路线研究),要求实验报告记录分子量算产率收率,所以写了个小工具来完成计算。

主要数据来源:国际原子能机构(IAEA)国际纯粹与应用化学联合会(IUPAC)

特点

  • 支持分子式: C6H12O6
  • 支持结构简式: CH3(CH2)2COOH
  • 支持离子: {CH3(CH2)2COO}-
  • 支持同位素: C[14]H3Cl(C[14]表示碳-14)
  • 支持三种常见的氢同位素: CDCl3(氘代氯仿)
  • 错误输出支持指出字符串的具体错误位置(超酷的好吗
  • 计划支持SMILES结构式和具体的分子建模(这个应该有现成的轮子)

纯Python3实现,无平台特性和依赖项目。

样例

创建分子对象

import chemax                   # 引入仓库

molecule = chemax.Molecule()    # 实例化
molecule.simple('H2O')          # 生成到H2O分子
print(molecule.mol_wt)          # 摩尔质量
print(molecule.exact_mass)      # 实际质量
print(molecule.electric_charge) # 电荷数
print(molecule.atoms)           # 分子组成

快速创建分子对象

import chemax                   # 引入仓库

molecule = chemax.Molecule.simple_generate('H2O')
print(molecule.mol_wt)          # 摩尔质量
print(molecule.exact_mass)      # 实际质量
print(molecule.electric_charge) # 电荷数
print(molecule.atoms)           # 分子组成

有关Exact Mass 和Mol. wt

Exact Mass:分子实际质量,一般用在色谱分析。原子质量数取自然界最大丰度同位素
Mol.wt.: 摩尔质量,按照自然界同位素丰度分布得到的元素的平均原子量;如果指定核素则按照该核素精确质量。一般用来算投反应的物料质量。

8 Likes

顶顶顶

支持。原来天堂伞有你一份劳动。

这很化学

刚刚提交了新版本,目前pypi上的版本可以支持一部分基团的缩写,比如Ac(乙酰基)、Et(乙基)等

天堂伞是平时用的雨伞吗?

33 Likes

佬是越来越多了。

我曾经学化学,我觉得我们可以凑一对

另外,我看了一下rdkit有这些功能

from rdkit import Chem
from rdkit.Chem import Descriptors

# 分子式示例:苯甲醇(Benzyl alcohol)的SMILES表示
smiles = "c1ccccc1CO"

# 从SMILES创建分子对象
mol = Chem.MolFromSmiles(smiles)

# 摩尔质量
mol_weight = Descriptors.MolWt(mol)
print(f"# 摩尔质量: {mol_weight} g/mol")

# 实际质量(准确质量)
exact_mass = Descriptors.ExactMolWt(mol)
print(f"# 实际质量: {exact_mass} g/mol")

# 电荷数
# RDKit 默认读取的分子为中性,特定电荷状态需要手动设置或使用特定工具分析
total_charge = Chem.GetFormalCharge(mol)
print(f"# 电荷数: {total_charge}")

# 分子组成
composition = {}
for atom in mol.GetAtoms():
    symbol = atom.GetSymbol()
    composition[symbol] = composition.get(symbol, 0) + 1
composition_str = ", ".join(
    [f"{symbol}: {count}" for symbol, count in composition.items()]
)
print(f"# 分子组成: {composition_str}")

输出:

PS C:\git-program\Handright> python .\tests\ch.py
# 摩尔质量: 108.13999999999999 g/mol
# 实际质量: 108.057514876 g/mol
# 电荷数: 0
# 分子组成: C: 7, O: 1

看我论文
https://www.liuweiqing.life/lifestyle/论文/

33 Likes

From #dev to 开发调优

楼主不介意挖坟吧。点赞支持,标记一个。

1 Like