chemscripts :
优点:1)支持cdx和cdxml,2)chemdraw可输出无变化的svg文件(chemscripts无法直接出svg),其他软件都变形了。
1、只支持到python3.2,导致很多兼容性问题,比如peewee对python3.2已经不支持了。
2、可进行格式转化,CDX可以变为mol,smiles,inchi,name等,但是不能变成SVG或是PNG,需要使用rdkit变换。注意:可以inchi,但是不能inchikey!
print(m.WriteFile(‘d:/output.mol’,’chemical/x-mdl-molfile-v3000′))
print(StructureData.MimeTypes())
结果:[chemical/x-chemdraw, chemical/x-cdx, text/xml, chemical/x-mdl-molfile, chemical/x-mdl-molfile-v3000, chemical/x-mdl-tgf, chemical/x-mdl-rxn, chemical/x-mdl-rxn-v3000, chemical/x-daylight-smiles, chemical/x-smiles, chemical/x-mdl-isis, chemical/x-questel-f1, chemical/x-questel-f1-query, chemical/x-msi-molfile, chemical/x-smd, chemical/x-ct, chemical/x-cml, chemical/x-inchi, chemical/x-name, chemical/x-c3xml]
3、可以通过结构或是smiles计算分子式,分子量等。
m = StructureData.LoadFile(‘D:/sync-work/2023test/newDB/3aOH5bH6aOH7aOH24COOH.cdxml’)
print(m.WriteData(‘smiles’))
print(m.Weight)
print(m.ExactMass)
print(m.Formula())
m.AverageMass
m.ElementalAnalysis
* It equals WriteData(‘name’).
m.ChemicalName() # returns plain text
m.ChemicalName(True) # returns HTML text
StructureData.LoadData(‘CCC’)
m.WriteData(‘cdx’, True)
m.WriteData(‘name’)
m.WriteData(‘smiles’)
m.WriteData(‘mol’)
m.WriteData(‘inchi’)
| double | AverageMass |
| double | ExactMass |
| double | Weight |
| double | PartitionCoefficient |
| double | Refractivity |
| bool | HasCharges |
| int | TotalCharge |
| int | TotalNegativeCharges |
| int | TotalPositiveCharges |
| std::string & | MOverZ |
| std::string & | ElementalAnalysis |
| std::string & | Inchi |
m.WriteFile(‘output.cdx’)
m.ReadFile(‘output.cdx’, ‘cdx’)
4、使用前需要以下依赖
from sys import *
from os import *
from os.path import *
from ChemScript20 import *
注意:COS22中,安装64位版本是from ChemScript import *,以前出现的是from ChemScript22 import *.
注意:COS22默认安装python9,python9和10需要不同的pyd库。
20231206更新:使用chemscript22版本升级到 python 3.10,openpyxl3.0.0 (2019-09-25) Python 3.6+ only release
1、首先通过excel的sysname,查找cdx文件,生成分子式,分子量,精确分子量和smiles。
202407:重装系统出现激活框,最终放弃,改用rdkit(使用的功能如inchikey,smiles都可提供,需要检查是否一致)
202506:rdkit
特点:和python兼容性好,只能读取cdxml,无法cdx文件(需要chemdraw辅助)
import os
from rdkit import Chem
from rdkit.Chem import Descriptors, rdMolDescriptors
mols = Chem.MolsFromCDXMLFile(cdxml_path) # 使用RDKit的Chem模块将CDXML字符串转换为分子对象列表
if len(mols) != 1: # 防止cdxml文件无或有多个结构式
print(f”无法从 {cdxml_path} 加载分子”)
else:
inchikey = Chem.MolToInchiKey(mols[0])
isosmiles = Chem.MolToSmiles(mols[0], isomericSmiles=True)
mf = Chem.rdMolDescriptors.CalcMolFormula(mols[0])
mw = Chem.Descriptors.MolWt(mols[0])
exact_mw = Chem.Descriptors.ExactMolWt(mols[0])
也有报道使用mol.smiles等方法,需要鉴别