chemscripts 、rdkit、openlabel问题

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
StructureData 

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.10openpyxl3.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等方法,需要鉴别

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注