榴莲忘返 2014
在生物信息学领域,RDKit 和 HELM 是常用的分子信息处理工具。RDKit 提供了丰富的化学信息学功能,而 HELM 则是一种用于描述复杂生物大分子的语言。其中,利用简化的字母代码来表征肽序列和核酸序列是 RDKit 的一个强大功能。
本文将带你了解 RDKit 的序列转换功能,如何利用简单的缩写代码,快速生成各种肽链和核酸结构。我们将探索 RDKit 支持的氨基酸和核苷酸种类,以及区分 DNA、RNA 和肽链序列的方法。
例如如何利用MolFromSequence()
函数快速生成 D-氨基酸结构,以及如何利用 HELM 标记语言构建包含非标准氨基酸的复杂肽链。
你将:
了解 RDKit 中 MolFromHELM()
和MolFromSequence()
函数的强大功能掌握利用缩写代码快速生成肽链和核酸结构的方法 熟悉 RDKit 支持的氨基酸和核苷酸种类 区分 DNA、RNA 和肽链序列,并使用正确的参数进行转换 利用 HELM 标记语言构建包含非标准氨基酸的复杂肽链
RDKit 中的序列表征方法
RDKit 可以使用 MolFromHELM()
和 MolFromSequence()
函数从序列生成分子结构。
使用 MolFromHELM()
函数生成分子结构
MolFromHELM()
函数可以从 HELM 字符串生成分子结构。以下是以谷胱甘肽、RNA 和 DNA 片段为例,展示如何使用 MolFromHELM()
函数生成分子结构:
from rdkit import rdBase, Chem
from rdkit.Chem import AllChem, Draw
from rdkit.Chem.Draw import IPythonConsole, rdMolDraw2D
from IPython.display import SVG
print(rdBase.rdkitVersion)
谷胱甘肽
Glutathione = Chem.MolFromHELM("PEPTIDE1{E.C.G}$$$$")
RNA 片段 (AU)
RNA_AU = Chem.MolFromHELM("RNA1{P.R(A)P.R(U)P}$$$$")
DNA 片段 (ACGA)
DNA_ACGA = Chem.MolFromHELM("RNA1{\[dR\](A)P.\[dR\](C)P.\[dR\](G)P.\[dR\](A)}$$$$")
使用 MolFromSequence()
函数生成分子结构
MolFromSequence()
函数可以从氨基酸序列字符串生成分子结构。
四肽 PDCA
IPythonConsole.drawOptions.addStereoAnnotation = True
IPythonConsole.drawOptions.annotationFontScale = 1.3
PDCA = Chem.MolFromSequence('PDCA')
flavor
参数
flavor
参数可以指定序列的类型,例如氨基酸序列或核酸序列。flavor=1
可以处理 D-氨基酸,D-氨基酸用小写字母表征。
D-PDCA
d_PDCA = Chem.MolFromSequence('pdca', flavor=1)
如上图所示,楔形表征可能难以识别,但立体化学表征证实了立体结构的反转。
RDKit 的序列转换机制
为了更好地理解 RDKit 如何将序列转换为分子结构,我们需要解析其源代码。 SequenceParsers
代码中包含了序列转换为分子结构的内部机制。
以丙氨酸和精氨酸为例,详细说明氨基酸序列转换为分子结构的步骤
以丙氨酸(ALA
)和精氨酸(ARG
)为例, SequenceParsers
代码中展示了如何构建氨基酸序列:
代码解析如下:
构建氨基酸主链( CreateAABackbone
): 首先,代码会构建氨基酸的主链结构,包括氨基、羧基和 α 碳原子等。构建侧链( CreateAAAtom
,CreateAABond
): 然后,根据不同的氨基酸,代码会使用CreateAAAtom
添加侧链原子,并使用CreateAABond
指定原子间的连接关系和键级,最终构建完整的侧链结构。
需要注意的是,代码中使用 PDB
文件中常见的原子表征方法,例如 γ 碳 (CG) 和 δ 碳 (CD) 等。 另外,ALA
的构建过程显示,代码将 β 碳也包含在 CreateAABackbone
中,这与通常定义的「主链」有所不同,可能是出于代码实现的考虑。
以甘氨酸(GLY
)为例,代码并没有使用 CreateAABackbone
来构建,进一步说明了这一点:
GetPDBResidueInfo
方法,用于获取原子信息
通过以上步骤,我们可以从序列构建出包含原子信息的 Mol
对象。Atom
对象的 GetPDBResidueInfo
方法可以用来提取这些原子信息。以下代码展示了如何获取精氨酸分子中每个原子的 PDB 残基信息,并将其添加到分子图中:
arg_mol = Chem.MolFromSequence("R")
atom_names_list = []
for a in arg_mol.GetAtoms():
a_name = a.GetPDBResidueInfo().GetName()
atom_names_list.append(a_name)
view = rdMolDraw2D.MolDraw2DSVG(300,300)
tm = rdMolDraw2D.PrepareMolForDrawing(arg_mol)
option = view.drawOptions()
for i, an in enumerate(atom_names_list):
option.atomLabels[i] = an
option.padding=0.01
option.legendFontSize=20
view.DrawMolecule(tm, legend="arginine with atom labels")
view.FinishDrawing()
svg = view.GetDrawingText()
SVG(svg)
最终得到的分子图如下,可以看到每个原子都标注了其在 PDB 残基信息中的名称,例如 C 末端羧基的氧原子被标记为OXT
:
RDKit 中可用的氨基酸序列
RDKit 默认支持的氨基酸三字母缩写和单字母缩写如下表所示:
三字母缩写 | 单字母缩写 | 三字母缩写 | 单字母缩写 | 三字母缩写 | 单字母缩写 |
---|---|---|---|---|---|
ALA | A | ASN | N | CYS | C |
ASP | D | GLN | Q | GLU | E |
GLY | G | HIS | H | ILE | I |
LEU | L | LYS | K | MET | M |
PHE | F | PRO | P | SER | S |
THR | T | TRP | W | TYR | Y |
VAL | V | ASX | B | GLX | Z |
DAL | a | DASN | n | DCYS | c |
DASP | d | DGLN | q | DGLU | e |
DGLY | g | DHIS | h | DILE | i |
DLEU | l | DLYS | k | DMET | m |
DPHE | f | DPRO | p | DSER | |
DTHR | t | DTRP | w | DTYR | |
DVAL | v |
需要注意的是,D-丝氨酸和 D-酪氨酸的结构生成信息在代码中缺失,因此无法使用单字母缩写 s
和 y
生成对应的 D 型氨基酸分子。 使用这些缩写生成的分子对象将是空的。
RDKit 默认的氨基酸缩写主要针对 L-氨基酸(生物体内常见的形式),而不包括 D-氨基酸的缩写。对于 D-氨基酸,如 D-丝氨酸(D-Serine)和 D-酪氨酸(D-Tyrosine),RDKit 没有内置的单字母缩写来直接生成它们的分子结构。
在 RDKit 中,要处理 D-氨基酸,你通常需要使用它们的完整化学名称或者 SMILES 字符串来生成分子对象,而不是使用单字母或三字母缩写。例如:
from rdkit import Chem
# 使用SMILES字符串生成D-Serine和D-Tyrosine的分子对象
d_serine = Chem.MolFromSmiles("C[C@H](N)C(O)=O")
d_tyrosine = Chem.MolFromSmiles("C[C@H](N)Cc1ccc(O)cc1O")
# 输出分子对象,确保它们不是空的
print(d_serine)
print(d_tyrosine)
在这段代码中,C[C@H](N)C(O)=O
和 C[C@H](N)Cc1ccc(O)cc1O
是 D-丝氨酸和 D-酪氨酸的 SMILES 字符串。这些可以用来正确生成 D-氨基酸的分子对象。
RDKit 中可用的核酸序列
RDKit 默认支持的核苷酸碱基包括腺嘌呤(A)、胞嘧啶(C)、鸟嘌呤(G)、胸腺嘧啶(T)和尿嘧啶(U)。
在 RDKit 中,核苷酸序列转换为分子结构的过程如下:
构建磷酸-糖骨架: RDKit 首先构建核苷酸序列的磷酸-糖骨架。 连接碱基: 然后,根据输入的序列,将相应的碱基连接到磷酸-糖骨架上。
为了区分 DNA 和 RNA 序列,RDKit 使用 flavor
参数:
flavor=3
表征 RNA 序列,使用核糖作为糖。flavor=8
表征 DNA 序列,使用脱氧核糖作为糖。
以下代码展示了如何使用 MolFromSequence
函数创建 RNA 和 DNA 分子:
RNA_test = Chem.MolFromSequence('ACG', flavor=3)
DNA_test = Chem.MolFromSequence('ACG', flavor=8)
生成的 RNA 和 DNA 分子结构如下图所示:
RNA:
DNA:
如上图所示,RDKit 能够正确识别序列类型,并生成带有相应磷酸帽和糖的核苷酸分子结构。
HELM 中可用的氨基酸序列
在 HELM 中,使用方括号 []
可以表征多字母氨基酸缩写。例如,[Orn] 表征鸟氨酸。
下表列举了 HELM 中可用的非标准氨基酸三字母缩写、对应的 ID 以及示例:
三字母缩写 | ID | 说明 | 示例 |
---|---|---|---|
Aad | Aad | α-氨基己二酸 | [Aad] |
Abu | Abu | α-氨基丁酸 | [Abu] |
Acet | Ac | 乙酰基 | [ac] |
Aib | Aib | α-氨基异丁酸 | [Aib] |
Ala | A | 丙氨酸 | A |
BAla | BAla | β-丙氨酸 | [BAla] |
Cha | Cha | 环己基丙氨酸 | [Cha] |
Cit | Cit | 瓜氨酸 | [Cit] |
Cys | C | 半胱氨酸 | C |
D-Ala | dAla | D-丙氨酸 | [dAla] |
D-Arg | dArg | D-精氨酸 | [dArg] |
D-Asn | dAsn | D-天冬酰胺 | [dAsn] |
D-Asp | dAsp | D-天冬氨酸 | [dAsp] |
D-Cys | dCys | D-半胱氨酸 | [dCys] |
D-Gln | dGln | D-谷氨酰胺 | [dGln] |
D-Glu | dGlu | D-谷氨酸 | [dGlu] |
D-His | dHis | D-组氨酸 | [dHis] |
D-Ile | dIle | D-异亮氨酸 | [dIle] |
D-Leu | dLeu | D-亮氨酸 | [dLeu] |
D-Lys | dLys | D-赖氨酸 | [dLys] |
D-Met | dMet | D-甲硫氨酸 | [dMet] |
D-Phe | dPhe | D-苯丙氨酸 | [dPhe] |
D-Pro | dPro | D-脯氨酸 | [dPro] |
D-Ser | dSer | D-丝氨酸 | [dSer] |
D-Thr | dThr | D-苏氨酸 | [dThr] |
D-Trp | dTrp | D-色氨酸 | [dTrp] |
D-Tyr | dTyr | D-酪氨酸 | [dTyr] |
D-Val | dVal | D-缬氨酸 | [dVal] |
Dap | Dap | α,β-二氨基丙酸 | [Dap] |
Dab | Dab | α,γ-二氨基丁酸 | [Dab] |
Gln | Q | 谷氨酰胺 | Q |
Glu | E | 谷氨酸 | E |
Glp | Glp | 焦谷氨酸 | [Glp] |
Gly | G | 甘氨酸 | G |
His | H | 组氨酸 | H |
Ile | I | 异亮氨酸 | I |
Leu | L | 亮氨酸 | L |
Lys | K | 赖氨酸 | K |
Met | M | 甲硫氨酸 | M |
Nle | Nle | 正亮氨酸 | [Nle] |
Orn | Orn | 鸟氨酸 | [Orn] |
Phe | F | 苯丙氨酸 | F |
Pro | P | 脯氨酸 | P |
Pmc | Pmc | 2,2,5,7,8-五甲基苯并二氢吡喃-6-磺酰基 | [Pmc] |
Sar | Sar | 肌氨酸 | [Sar] |
seC | seC | L-硒代半胱氨酸 | [seC] |
Ser | S | 丝氨酸 | S |
Thr | T | 苏氨酸 | T |
Trp | W | 色氨酸 | W |
Tyr | Y | 酪氨酸 | Y |
Val | V | 缬氨酸 | V |
am | am | 酰胺基 | [am] |
以下是一个包含非标准氨基酸的肽段,展示了如何使用 HELM 序列生成分子结构:
PEPTIDE1{[ac].[Orn].[Glp].[seC].[am]}$$$$
生成的分子结构如下图所示:
该结构表征 N 末端乙酰化的鸟氨酸-焦谷氨酸-硒代半胱氨酸,C 末端为酰胺基。
总结
本文探讨了如何使用 RDKit 将肽序列和核酸序列转换为分子结构,并深入研究了 RDKit 支持的缩写和编码机制。我们了解到:
RDKit 可以处理标准和非标准氨基酸,以及 DNA 和 RNA 核苷酸。 MolFromSequence
函数利用单字母和三字母代码生成肽和核酸结构,并可通过flavor
参数区分 DNA 和 RNA。HELM 格式为表征复杂的修饰和非标准残基提供了更灵活的方式。
通过代码示例,我们展示了如何生成谷胱甘肽、RNA 和 DNA 片段的分子结构。此外,我们还学习了如何使用 GetPDBResidueInfo
方法提取原子信息,以及使用不同的缩写来构建具有特定修饰的肽。
希望这篇文章能够帮助你更好地理解 RDKit 中序列和结构之间的转换。
你认为 RDKit 在哪些方面还可以改进其序列处理能力?欢迎在下方留言,分享你的想法和经验!
对相关内容感兴趣的读者,可以添加小编微信加入读者实名交流互助群。添加时请主动注明姓名-企业-职位/岗位 或 姓名-学校-职务/研究方向。
点击这里 👉 关注我,记得标星哦~