Rdkit|分子输出

Rdkit|分子输出

Github: 地址

输出SMILES/SMARTS

输出SMILES:MolToSmiles(mol, isomericSmiles, kekuleSmiles, canonical, …)
kekuleSmiles:默认False,不使用kekule时:脂肪族碳用"C"表示(大写),芳香族用"c"表示(小写)
isomericSmiles:默认True,区分同分异构体("@“表示手性,”\“和”/"表示顺反异构)
canonical:默认True,输出标准SMILES

from rdkit import Chem
m1 = Chem.MolFromSmiles('C1=CC=CC=CC=C1')
m2 = Chem.MolFromSmiles('C1=CC=CC=C1')
m3 = Chem.MolFromSmiles('C1=COC=C1')
mols = [m1, m2, m3]
print([Chem.MolToSmiles(mol) for mol in mols])

输出kekule式

kekule形式:在符合4N+2规则的芳香体系中,通过使用双键代替小写的碳原子来表示芳香性
4N+2规则:也叫Hueckel规则,在闭环共轭体系中,当π电子数为4n+2时,才具有芳香性

for mol in mols:
    Chem.Kekulize(mol)
print([Chem.MolToSmiles(mol, kekuleSmiles=True) for mol in mols])

设置立体参数

通过isomericSmiles控制

m = Chem.MolFromSmiles('C[C@H](O)c1ccccc1')
print(Chem.MolToSmiles(m))

print(Chem.MolToSmiles(m, isomericSmiles=False))

批量输出SMILES

批量输出SMILES:SmilesWriter(fileName, delimiter, includeHeader, nameHeader, isomericSmiles, kekuleSmiles)
fileName:输出文件名
delimiter:分隔符,默认为空格’ ’
includeHeader:是否写入表头,默认True
nameHeader:分子名一列的列名,默认’Name’
isomericSmiles:立体信息,默认True
kekuleSmiles:kekule形式,默认False

writer = Chem.SmilesWriter('data/batch.smi', delimiter='\t')
for i, mol in enumerate(mols):
    writer.write(mol)
writer.close()

批量输出SMILES和属性

批量输出SMILES及属性,通过以下函数进行操作:
mol.GetPropNames(),查看分子属性列表
mol.GetProp(),获取相应属性
mol.SetProp(key, val),新增属性名key、对应属性值val
writer.SetProps(),设置哪些属性要输出

from rdkit.Chem import Descriptors

writer = Chem.SmilesWriter('data/batch_smiles.smi', delimiter='\t', nameHeader='mol_id')
writer.SetProps(['LOGP', 'MW'])
for i, mol in enumerate(mols):
     mw = Descriptors.ExactMolWt(mol)
     logp = Descriptors.MolLogP(mol)
     mol.SetProp('MW', '%.2f' %(mw))
     mol.SetProp('LOGP', '%.2f' %(logp))
     mol.SetProp('_Name', 'No_%s' %(i))
     writer.write(mol)
writer.close()
print('number of mols:', writer.NumMols())

print('mol properties:', [i for i in mol.GetPropNames()])

输出SMARTS

输出SMARTS:MolToSmarts()

Chem.MolToSmarts(m3, isomericSmiles=True)

输出.sdf

批量输出到文件:SDWriter()
使用方法类似于SMILES的批量输出

writer = Chem.SDWriter('data/batch.sdf')
writer.SetProps(['LOGP', 'MW'])
for i, mol in enumerate(mols):
     mw = Descriptors.ExactMolWt(mol)
     logp = Descriptors.MolLogP(mol)
     mol.SetProp('MW', '%.2f' %(mw))
     mol.SetProp('LOGP', '%.2f' %(logp))
     mol.SetProp('_Name', 'No_%s' %(i))
     writer.write(mol)
writer.close()

.批量输出到.gz

import gzip
outf = gzip.open('data/batch.sdf.gz','wt+')
writer = Chem.SDWriter(outf)
for mol in mols:
    writer.write(mol)
writer.close()
outf.close()

输出.mol

直接输出:MolToMolBlock()

print(Chem.MolToMolBlock(m1))

输出到文件:MolToMolFile(mol, filename, includeStereo, …)
mol:mol对象
filename:文件名
includeStereo:立体信息,默认True

m1.SetProp('_Name', 'cyclobutane')
Chem.MolToMolFile(m1, 'data/sig.mol')

输出其他格式:pdb, fasta, xyz…

# PDB
Chem.MolToPDBBlock()
Chem.MolToPDBFile()
Chem.PDBWriter()
# FASTA
Chem.MolToFASTA()
# XYZ
Chem.MolToXYZBlock()
Chem.MolToXYZFile()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发呆的比目鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值