RDKit 记录
RDKit Learning
1.SMILES和MOL之間的轉(zhuǎn)換常用函數(shù):
-
MolFromSmiles(Smiles, (bool)sanitize=True , (dict)replacements={} ) -> None
sanitize為TRUE執(zhí)行合格性檢查,replacements為替換的字符串的dict -
MolToSmiles(
(Mol)mol ,
(bool)isomericSmiles=True ,
(bool)kekuleSmiles=False ,
(int)rootedAtAtom=-1,
(bool)canonical=True,
(bool)allBondsExplicit=False,
(bool)allHsExplicit=False ,
(bool)doRandom=False) -> strisomericSmiles:包括SMILES的立體化學(xué)信息
kekuleSmiles:使用kekule形式
rootedAtAtom: 為非負(fù)時(shí),設(shè)定原子開始的根節(jié)點(diǎn)
canonical: 規(guī)范化分子
allBondsExplicit:所有的鍵序?qū)⒃谳敵龅腟MILES中明確表示
allHsExplicit:所有的H計(jì)數(shù)都將在輸出的smile中顯式顯示
2.原子操作
對(duì)原子進(jìn)行遍歷:GetAtoms()
通過索引獲取原子:GetAtomWithIdx()
獲取原子索引:GetIdx()
獲取原子序號(hào):GetAtomicNum()
獲取原子符號(hào):GetSymbol()
獲取原子連接數(shù)(受H是否隱藏影響):GetDegree()
獲取原子總連接數(shù)(與H是否隱藏?zé)o關(guān)):GetTotalDegree()
獲取原子形式電荷:GetFormalCharge()
獲取原子雜化方式:GetHybridization()
獲取原子顯式化合價(jià):GetExplicitValence()
獲取原子隱式化合價(jià):GetImplicitValence()
獲取原子總的化合價(jià):GetTotalValence()
獲取相連的原子:GetNeighbors()
顯示氫原子: AddHs() // 要生成和優(yōu)化立體結(jié)構(gòu)時(shí)可以將氫原子顯示出來
隱藏氫原子: RemoveHs()
上面的函數(shù)使用形式都如下:
對(duì)Atom對(duì)象編輯操作
修改形式電荷:atom.SetFormalCharge(int)
修改雜化方式為SP3:atom.HybridizationType(Chem.HybridizationType.SP3)
修改為芳香原子:atom.SetIsAromatic(True)
修改為同位素標(biāo)記原子:atom.SetIsotope(int)
不帶隱式氫:atom.SetNoImplicit(True)
固定顯示氫:atom.SetNumExplicitHs(int)
使用形式:
Example.為分子中每個(gè)原子加上編號(hào)
def mol_with_atomidx(mol,num=0):for atom in mol.GetAtoms():atom.SetAtomMapNum(num)return mol當(dāng)num=atom.GetIdx()時(shí),可標(biāo)記每個(gè)原子的標(biāo)號(hào)(原子的序號(hào)是從0開始的,在圖中不會(huì)標(biāo)出0),如下圖:
3.對(duì)化學(xué)鍵的操作
對(duì)鍵進(jìn)行遍歷:GetBonds()
通過索引獲取鍵:GetBondWithIdx()
獲取鍵的索引:GetIdx()
獲取鍵的類型:GetBondType()
以數(shù)字形式顯示鍵的類型:GetBondTypeAsDouble()
是否為芳香鍵:GetIsAromatic()
是否為共軛鍵:GetIsConjugated()
是否在環(huán)中:IsInRing()
是否在n元環(huán)中:IsInRingSize(n)
獲取起始原子:GetBeginAtom()
獲取末尾原子:GetEndAtom()
對(duì)Bond對(duì)象的編輯操作:
修改鍵的顯示方式:SetBondDir(Chem.BondDir.BEGINDASH)
修改為芳香鍵:SetBondType(Chem.BondType.AROMATIC)
修改鍵芳香性的Flags:SetIsAromatic(bool)
是否共軛:SetIsConjugated(bool)
4.環(huán)
判斷atom對(duì)象是否在環(huán)中(最小的環(huán)):IsInRingSize()
查看所有最小環(huán)(smallest set of smallest rings, SSSR)的信息:GetSymmSSSR()
直接獲取環(huán)的信息:GetRingInfo()
查看一共有幾個(gè)環(huán):NumRings()
查看原子在幾個(gè)環(huán)中:NumAtomRings()
查看id為n的原子是否在n1元環(huán)中:IsAtomInRingOfSize(n, n1)
查看id為n的鍵是否在n1元環(huán)中:IsAtomInRingOfSize(n , n1)
判斷是否為芳香環(huán):
# To detect aromatic rings, I would loop over the bonds in each ring and flag the ring as aromatic if all bonds are aromatic:(來源:官方文檔) def isRingAromatic(mol, bondRing):for id in bondRing:if not mol.GetBondWithIdx(id).GetIsAromatic():return Falsereturn True ri = mol.GetRingInfo() print(isRingAromatic(m, ri.BondRings()[0]))尋找不在環(huán)中的化學(xué)鍵:
cliques = [] for bond in mol.GetBond():a1 = bond.GetBeginAtom().Idx()a2 = bond.GetEndAtom().Idx()if not bond.IsInRing():cliques.append([a1, a2])5.立體化學(xué)
Chem.EnumerateStereoisomers() 生成一個(gè)分子的所有可能異構(gòu)體
Chem.FindMolChiralCenters() 尋找手性中心
Chem.FindPotentialStereo() 尋找可能手性中心(API都可在pycharm中看到)
SetChiralTag(Chem.ChiralType.CHI_TETRAHEDRAL_CCW) 修改手性碳 (當(dāng)為CHI_TETRAHEDRAL_CCW時(shí),為S型,CW為R型,CHI_OTHER、CHI_UNSPECIFIED不指定類型)
前三個(gè)(貌似可以自動(dòng)標(biāo)記手性中心了)
6.分子片段操作
(待更新)
部分摘自:
知乎專欄 https://zhuanlan.zhihu.com/p/143111689
官方cookbook https://www.rdkit.org/docs/Cookbook.html
官方文檔 http://www.rdkit.org/docs/GettingStartedInPython.html
向各位大佬學(xué)習(xí)
總結(jié)
- 上一篇: hbase查询命令
- 下一篇: hbase命令snapshot快照使用