TopoFormer论文笔记
Why(研究背景与动机)
-
问题背景
• 药物研发成本高昂(10年+、数十亿美元),传统方法(分子对接、自由能计算、经验模型)存在精度低、计算量大、易漏检非常规结合位点等问题。
• 现有深度学习模型依赖序列数据(如蛋白质序列/SMILES),但忽略关键 3D 结构信息(如立体化学效应),导致对蛋白质-配体相互作用的建模不足。 -
现有技术瓶颈
• NLP 模型(如 Transformer)难以直接应用于 3D 分子结构,因其序列化架构无法兼容空间拓扑信息。
• 传统拓扑方法仅捕捉简单拓扑特征,缺乏对多尺度物理化学相互作用(如氢键、范德华力)的表征。
How(方法与技术)
1. TopoFormer概述
(1)不同于传统 Transformer 仅处理蛋白质和配体序列,TopoFormer 直接输入 3D 蛋白质-配体复合物。
(2)为明确分析范围,TopoFormer 采用 20 埃(Å)或更精确的 12 埃截断值(cutoff),在设定距离范围内识别重配体(heavy ligand)及其邻近蛋白质原子。TopoFormer 随后通过其拓扑序列嵌入模块(Topological Sequence Embedding Module),将 3D 分子结构转化为拓扑序列。该过程将各类物理、化学及生物相互作用编码为向量序列。
(3)TopoFormer 采用未标注蛋白质-配体复合物进行自监督预训练,使用 Transformer 编码器-解码器重构拓扑序列。该阶段通过比较输出与输入 Embedding 的相似度来评估精度。
(4)完成预训练后,TopoFormer 进入基于标记复合物的监督式微调阶段,此时初始嵌入向量转化为下游任务(如评分、排序、对接及筛选)的核心特征。在预测模块中,每个任务均配置专用预测头(dedicated head)。为确保准确性并降低偏差,TopoFormer 集成多个以不同随机种子初始化的拓扑 Transformer 深度学习模型,并与基于序列的模型形成互补。
2. PTHL
(1)TopoFormer 采用持续拓扑超有向图拉普拉斯算子(Persistent Topological Hyperdigraph Laplacian, PTHL)技术对三维蛋白质-配体复合物进行精细表征,其优势超越传统图(Graph)、单纯复形(Simplicial Complexe)与超图(Hypergraph)。
(2)在研究蛋白质-配体复合物时,我们首先构建拓扑超有向图(Topological Hyperdigraph)进行表征。拓扑超有向图利用不同维度的定向超边(Directed Hyperedge),可建模超越简单二元连接的复杂相互作用,相较传统方法实现更精细的表征。此外,超边的方向性整合了电负性(electronegativity)、电离能(ionization energy)等物理化学属性,相较传统方法实现更精细的表征。
(3)拓扑拉普拉斯矩阵的特征值(谱)可揭示对象的的拓扑和几何特性。
(4)为捕获蛋白质-配体复合物中复杂的原子相互作用(包括共价键、离子键与范德华力),TopoFormer 采用 PTHL 进行多尺度分析。该方法基于过滤参数(filtration parameter)演化拓扑序列,可跨尺度解析相互作用(如原子间距离从 2 埃到 12 埃),帮助 Transformer 模型识别各尺度对结合亲和力等特性的贡献。通过注意力分数可直观呈现不同尺度对复合物形成的具体作用机制(图3b-e)。
(5)元素间相互作用,包括氢键、范德华力与 π-π 堆积(pi-stacking),是维持蛋白质-配体复合物稳定性与特异性的关键因素。为在元素层面解析这些相互作用,TopoFormer 在拓扑序列嵌入(Topological Sequence Embedding)中引入元素特异性分析(Element-specific Analysis)方法。该方法基于蛋白质与配体中的常见重元素构建超有向子图,生成元素特异性拉普拉斯矩阵以编码复合物内的相互作用。该技术通过提取精细的物理化学特征,增强 Transformer 模型对蛋白质-配体相互作用复杂动态过程的理解。
3. 自监督预训练+监督式微调
(1)预训练阶段:使用 PDBbind 的 19,513 个未标记的蛋白质-配体复合物对 TopoFormer 进行预训练,通过重建拓扑嵌入(TopoFormer 采用拓扑嵌入模型将 3D 蛋白质-配体复合物转化为具有多尺度特征的拓扑序列),并均方误差(MSE)作为重建损失函数,使模型从海量无标签数据中学习蛋白质-配体相互作用的普适表征。
(2)微调阶段:针对评分、排序、对接与筛选任务,采用平均绝对误差(MAE)作为损失函数对 TopoFormer 进行微调。
4. 关键技术细节
(1)拓扑超有向图(Topological Hyperdigraph)
• 图:边仅连接两个顶点,无方向性。
• 超图(Hypergraph):边可连接多个顶点,但无方向性。
• 有向图(Directed Graph):边有方向性,但每条边仍仅连接两个顶点。
• 单纯形(Simplex):是顶点集合的几何抽象:
◦ 0维单纯形:单个点
◦ 1维单纯形:线段(两个顶点)
◦ 2维单纯形:三角形(三个顶点、三条边)
◦ 3维单纯形:四面体(四个顶点、六条边、四个三角形面)
◦ k维单纯形:k+1 个顶点及其所有子结构
• 单纯复形(Simplicial Complexe):由单纯形构成的集合,描述高维拓扑结构,但无方向性。
• 拓扑超有向图:结合超图的多顶点连接、有向图的方向性、单纯复形的拓扑分析。本质上,拓扑超有向图由定向超边(Directed Hyperedge)组成。
(2)拓扑拉普拉斯算子(Topological Laplacians)与谱分析(Spectrum Analysis)
• 拓扑拉普拉斯算子是高阶拓扑结构(如单纯复形、超图、超有向图)上的拉普拉斯算子,用于量化结构的拓扑和几何特性。
◦ 单纯复形、超图与超有向图的拓扑信息均源自其链复形(Chain Complexe)。下文我们将从链复形的角度重新定义拉普拉斯算子:设
Ω
∗
\Omega_*
Ω∗ 为具有微分算子
∂
k
:
Ω
k
→
Ω
k
−
1
\partial_k: \Omega_k \to \Omega_{k-1}
∂k:Ωk→Ωk−1 的链复形,假设每个
Ω
k
\Omega_k
Ωk 均配备内积结构,则边界算子(Boundary Operator)
∂
k
\partial_k
∂k 存在伴随算子
∂
k
∗
\partial_k^*
∂k∗ 。组合拉普拉斯算子
Δ
k
:
Ω
k
→
Ω
k
\Delta_k: \Omega_k \to \Omega_k
Δk:Ωk→Ωk 定义为:
Δ
k
=
∂
k
+
1
∘
∂
k
+
1
∗
+
∂
k
∗
∘
∂
k
(4)
\Delta_k = \partial_{k+1} \circ \partial_{k+1}^* + \partial_k^* \circ \partial_k \tag{4}
Δk=∂k+1∘∂k+1∗+∂k∗∘∂k(4)
特别地,
Δ
0
=
∂
1
∘
∂
1
∗
\Delta_0 = \partial_1 \circ \partial_1^*
Δ0=∂1∘∂1∗。若为每个
Ω
k
\Omega_k
Ωk 选取标准正交基,则拉普拉斯算子
Δ
k
\Delta_k
Δk 的表示矩阵
L
k
\mathcal{L}_k
Lk 可表达为:
L
k
=
B
k
+
1
B
k
+
1
T
+
B
k
T
B
k
(5)
\mathcal{L}_k = B_{k+1}B_{k+1}^T + B_k^T B_k \tag{5}
Lk=Bk+1Bk+1T+BkTBk(5)
其中
B
k
B_k
Bk 为
∂
k
\partial_k
∂k 的左乘表示矩阵,
B
k
T
B_k^T
BkT 为
B
k
B_k
Bk 的转置矩阵。项
B
k
T
B
k
B_k^T B_k
BkTBk 描述
k
k
k 维单纯形在
(
k
−
1
)
(k-1)
(k−1) 维单纯形交集中产生的连通性;而项
B
k
+
1
B
k
+
1
T
B_{k+1}B_{k+1}^T
Bk+1Bk+1T 则反映
k
k
k 维单纯形嵌入
(
k
+
1
)
(k+1)
(k+1) 维单纯形引发的相互作用。
◦ 此定义将图拉普拉斯算子(Graph Laplacian)(将图视为 1 维单纯形)推广至高维空间。其特征向量与特征值编码单纯复形或超有向图的几何与拓扑信息。
• 谱分析:通过研究拓扑拉普拉斯算子的特征值(谱),揭示结构的拓扑和几何特性。由于拉普拉斯矩阵半正定,其特征值均非负:
◦ 谐波谱(Harmonic Spectrum):对应零特征值,反映拓扑信息。
◦ 非谐波谱(Non-Harmonic Spectrum):对应非零特征值,反映几何信息。
(3)持续拉普拉斯算子(Persistent Laplacians)
• 持续拉普拉斯算子又称多尺度拓扑拉普拉斯算子(Multiscale Topological Laplacians),最初于 2019 年提出。
• 与持续同调(Persistent Homology)类似,持续拉普拉斯算子通过过滤过程(filtration process)实现多尺度表征。
◦ 持续同调:用于捕捉数据在不同尺度下的拓扑特征。其核心是通过过滤过程逐步改变一个尺度参数(即过滤参数),生成一系列嵌套的子结构(如单纯复形),并跟踪拓扑特征的“诞生”与“消失”。
◦ 过滤过程是通过逐步调整一个参数(记为 d),构建数据从局部到全局的层级化结构。
◦ 过滤参数 d 的选择依赖于数据类型。例如,对点云数据,d 通常表示以每个点为中心的球体半径(或直径)。当 d 增大时,球体逐渐覆盖更多邻近点。
◦ 调整过滤参数:通过递增 d 值,生成一系列嵌套的结构,形成层级化的表征序列(例如,较小 d 值生成的图始终是较大 d 值生成图的子集)。
(4)元素特异性分析(Element-specific Analysis)
• 为实现精确预测,需在分子层面更优地表征蛋白质与配体间的相互作用。为此,TopoFormer 引入元素特异性拓扑嵌入技术进行特征提取。
• 分析配体时,重点关注碳(C)、氮(N)、氧(O)、硫(S)、磷(P)、氟(F)、氯(Cl)、溴(Br)、碘(I)等重元素;而蛋白质仅考虑碳(C)、氮(N)、氧(O)、硫(S)。通过特定顺序排列的元素组合表征蛋白质-配体相互作用:
◦ 蛋白质元素组合:
E
protein
=
{
{
C
}
,
{
N
}
,
{
O
}
,
{
S
}
,
{
C,N
}
,
{
C,O
}
,
{
C,S
}
,
{
N,O
}
,
{
N,S
}
,
{
O,S
}
,
{
C,N,O,S
}
}
\mathcal{E}_{\text{protein}} = \left\{ \{ \text{C} \}, \{ \text{N} \}, \{ \text{O} \}, \{ \text{S} \}, \{ \text{C,N} \}, \{ \text{C,O} \}, \{ \text{C,S} \}, \{ \text{N,O} \}, \\ \{ \text{N,S} \}, \{ \text{O,S} \}, \{ \text{C,N,O,S} \} \right\}
Eprotein={{C},{N},{O},{S},{C,N},{C,O},{C,S},{N,O},{N,S},{O,S},{C,N,O,S}}
◦ 配体元素组合:
E
ligand
=
{
{
C
}
,
{
N
}
,
{
O
}
,
{
S
}
,
{
C,N
}
,
{
C,O
}
,
{
C,S
}
,
{
N,O
}
,
{
N,S
}
,
{
O,S
}
,
{
N,P
}
,
{
F,Cl,Br,I
}
,
{
C,O,N,S,F,P,Cl,Br,I
}
}
\mathcal{E}_{\text{ligand}} = \left\{ \{ \text{C} \}, \{ \text{N} \}, \{ \text{O} \}, \{ \text{S} \}, \{ \text{C,N} \}, \{ \text{C,O} \}, \{ \text{C,S} \}, \{ \text{N,O} \}, \\ \{ \text{N,S} \}, \{ \text{O,S} \}, \{ \text{N,P} \}, \{ \text{F,Cl,Br,I} \}, \\ \{ \text{C,O,N,S,F,P,Cl,Br,I} \} \right\}
Eligand={{C},{N},{O},{S},{C,N},{C,O},{C,S},{N,O},{N,S},{O,S},{N,P},{F,Cl,Br,I},{C,O,N,S,F,P,Cl,Br,I}}
• 在元素特异性嵌入框架下,蛋白质-配体相互作用通过两组原子(一组来自蛋白质,另一组来自配体)间的拓扑链接定义。例如,符号
K
{
C,N
}
,
{
S
}
K_{\{\text{C,N}\},\{\text{S}\}}
K{C,N},{S} 表示由蛋白质的 C、N 原子与配体的 S 原子构成的拓扑超有向图表征。
• 该嵌入方法通过空间关系矩阵
D
D
D 量化相互作用,其数学定义为:
D
(
i
,
j
)
=
{
∥
r
i
−
r
j
∥
,
若
r
i
∈
E
protein
,
r
j
∈
E
ligand
或
r
i
∈
E
ligand
,
r
j
∈
E
protein
∞
,
其他情况
(10)
D(i,j) = \begin{cases} \| \mathbf{r}_i - \mathbf{r}_j \|, & \text{若 } \mathbf{r}_i \in \mathcal{E}_{\text{protein}}, \mathbf{r}_j \in \mathcal{E}_{\text{ligand}} \\ & \text{或 } \mathbf{r}_i \in \mathcal{E}_{\text{ligand}}, \mathbf{r}_j \in \mathcal{E}_{\text{protein}} \\ \infty, & \text{其他情况} \end{cases} \tag{10}
D(i,j)=⎩
⎨
⎧∥ri−rj∥,∞,若 ri∈Eprotein,rj∈Eligand或 ri∈Eligand,rj∈Eprotein其他情况(10)
其中,
r
i
,
r
j
\mathbf{r}_i, \mathbf{r}_j
ri,rj 为原子坐标向量,
∥
r
i
−
r
j
∥
\| \mathbf{r}_i - \mathbf{r}_j \|
∥ri−rj∥ 表示欧氏距离。
• TopoFormer 模型考虑配体原子周围20埃内的蛋白质原子,而
T
o
p
o
F
o
r
m
e
r
s
\mathbf{TopoFormer}_s
TopoFormers 模型将此范围缩小至12埃。本研究通过将蛋白质内部或配体内部原子间距设为无穷大,聚焦于蛋白质-配体间相互作用。针对特定复合物,共存在 143 种潜在元素组合( 11 种蛋白质组合 ×13 种配体组合),每种组合均作为单纯复形通过持续 PTHL 方法进行深度解析。
So(结果)
• 评分任务:CASF-2016 上 PCC=0.864,RMSE=1.568 kcal/mol(表1)。
• 排名任务:CASF-2016 高/低阶成功率 21%/60%(图2f)。
• 对接任务:CASF-2013 成功率 91.3%,显著优于现有模型(图3f-g)。
• 筛选任务:LIT-PCBA 数据集
E
F
1
%
\mathbf{EF}_{1\%}
EF1%=7.29,优于多数基于评分函数的筛选方法(表2)。
3D 复合物的拓扑序列嵌入流程
1. 提取相关原子信息
目标:从蛋白质-配体复合物中提取相关原子信息(元素数组,坐标数组)
代码实现:
(1)蛋白质处理:
# 从PDB文件中读取蛋白质原子(C/N/O/S)
raw_protein_ele, raw_protein_xyz = get_data_from_protein_PDB(
protein_pdb_file=protein_file,
consider_ele=['C', 'N', 'O', 'S']
)
(2)配体处理:
# 从PDB/SDF/MOL2/Ensemble PDB文件中读取配体原子(H/C/N/O/F/P/S/Cl/Br/I)
if ligand_file_type == 'pdb':
raw_ligand_ele, raw_ligand_xyz = get_data_from_ligand_PDB(
ligand_file,
['H', 'C', 'N', 'O', 'F', 'P', 'S', 'Cl', 'Br', 'I'],
)
elif ligand_file_type == 'sdf':
raw_ligand_ele, raw_ligand_xyz = get_data_from_ligand_sdf(
ligand_file,
['H', 'C', 'N', 'O', 'F', 'P', 'S', 'Cl', 'Br', 'I'],
)
elif ligand_file_type == 'mol2':
raw_ligand_ele, raw_ligand_xyz = get_data_from_ligand_mol2(
ligand_file,
['H', 'C', 'N', 'O', 'F', 'P', 'S', 'Cl', 'Br', 'I'],
)
elif ligand_file_type == 'ensamble_pdb':
raw_ligand_ele, raw_ligand_xyz = get_data_from_ligand_ensemble_PDB(
ligand_file,
['H', 'C', 'N', 'O', 'F', 'P', 'S', 'Cl', 'Br', 'I'],
)
(3)筛选配体周围 consider_field
(默认 20Å)内的蛋白质原子
protein_indices = []
for i_portein, protein_xyz in enumerate(raw_protein_xyz):
for i_ligand, ligand_xyz in enumerate(raw_ligand_xyz):
if np.linalg.norm(protein_xyz - ligand_xyz) <= consider_field:
flag = 1
break
else:
flag = 0
continue
if flag == 1:
protein_indices.append(i_portein)
considered_protein_ele = raw_protein_ele[protein_indices]
considered_protein_xyz = raw_protein_xyz[protein_indices]
print(f'Number of protein atoms: {len(considered_protein_ele)}')
print(f'Number of protein atoms: {len(raw_ligand_ele)}')
2. 元素组合方案
目标:定义蛋白质和配体的元素组合,捕捉不同化学相互作用
理论:
(1)蛋白质元素组合:C, N, O, S
的单元素及多元素组合(如 {C}, {N}, {C,N}
等)
(2)配体元素组合:包含 C, N, O, S, F, P, Cl, Br, I
的组合
代码实现:
# 获取元素组合方案
protein_ele_sets, ligand_ele_sets = selected_target_combination(scheme_name=ele_scheme)
3. 生成距离矩阵
目标:生成蛋白质-配体跨分子原子距离矩阵,屏蔽分子内原子距离
代码实现:
# 遍历所有元素组合
for i, protein_ele in enumerate(protein_ele_sets):
# 筛选当前元素组合的蛋白质原子
selected_protein_indices = [ele in protein_ele for ele in considered_protein_ele]
selected_protein_ele = considered_protein_ele[selected_protein_indices]
selected_protein_xyz = considered_protein_xyz[selected_protein_indices]
for j, ligand_ele in enumerate(ligand_ele_sets):
# 筛选当前元素组合的配体原子
selected_ligand_indices = [ele in ligand_ele for ele in raw_ligand_ele]
selected_ligand_ele = raw_ligand_ele[selected_ligand_indices]
selected_ligand_xyz = raw_ligand_xyz[selected_ligand_indices]
# 生成距离矩阵
distance_matrix = generate_distance_matrix(selected_protein_ele, selected_protein_xyz,
selected_ligand_ele, selected_ligand_xyz, dis_cutoff)
4. PTHL
目标:通过持久拉普拉斯(Persistent Laplacian)分析提取多尺度拓扑特征
理论:
(1)空间尺度参数化:通过 dis_start
(起始距离)、dis_step
(步长)、dis_cutoff
(终止距离)定义多尺度分析范围(例如 0-10Å ,步长 0.1Å)。
(2)拓扑不变量与频谱统计:计算每个尺度下的拉普拉斯矩阵特征值,统计以下特征:
• 零特征值数量(Betti 数)
• 非零特征值的最大值、均值、标准差等
代码实现:
# 初始化特征数组
feature_array = np.zeros([6, int((dis_cutoff - dis_start) / dis_step), 143])
print(f'feature shape: [#statisc spectral, #filtration parameters, #element-specific combinations] = [6, 100, 143]')
element_combin_count = 0
# 计算拓扑特征
protein_len = len(selected_protein_ele)
ligand_len = len(selected_ligand_ele)
if (ligand_len > 0 and protein_len > 0):
# 调用SimplicialComplexLaplacian进行持续同调计算
scpl = SimplicialComplex_laplacian.SimplicialComplexLaplacian()
all_laplacian_features = scpl.persistent_simplicialComplex_laplacian_dim0(
input_data=distance_matrix,
is_distance_matrix=True,
max_dim=0,
filtration=np.round(np.arange(dis_start, dis_cutoff, dis_step), 2),
print_by_step=True,
)
# 提取特征统计量
for filtration_n, data_l in enumerate(all_laplacian_features):
statistic_val = SimplicialComplex_laplacian.statistic_eigvalues(data_l[0])
statistic_feature = [
statistic_val.count_zero, # 零特征值数量(拓扑不变量)
statistic_val.max, # 最大非零特征值
statistic_val.sum, # 非零特征值总和
statistic_val.nonzero_mean, # 非零特征值均值
statistic_val.nonzero_std, # 非零特征值标准差
statistic_val.nonzero_min, # 最小非零特征值
]
feature_array[:, filtration_n, element_combin_count] = statistic_feature
element_combin_count += 1
5. 特征序列生成与保存
目标:将多尺度和元素组合的特征整合为序列(生成的拓扑序列作为Transformer的输入)
输出结构:
• 维度:[6, 100, 143]
◦ 6 种统计量(零特征值数量、最大值等)
◦ 100 个空间尺度(若 dis_cutoff=10Å
,步长 0.1Å
)
◦ 143 种元素组合(11 种蛋白质组合 × 13 种配体组合)
代码实现:
# 初始化特征数组
feature_array = np.zeros([6, int((dis_cutoff - dis_start) / dis_step), 143])
print(f'feature shape: [#statisc spectral, #filtration parameters, #element-specific combinations] = [6, 100, 143]')
element_combin_count = 0
# 保存特征文件
if output_feature_name is None:
protein_name_temp = os.path.split(protein_file)[-1].split('.pdb')[0]
protein_name = protein_name_temp.split('_protein')[0] if '_protein' in protein_name_temp else protein_name_temp
output_feature_name = protein_name
np.save(os.path.join(output_feature_folder, f'{output_feature_name}.npy'), feature_array.astype(np.float32),
allow_pickle=True)
完整流程示例
1. PDB文件
定义:PDB(Protein Data Bank)文件是存储生物大分子(如蛋白质)三维结构的标准格式
代码中的处理函数:
• get_data_from_protein_PDB
提取蛋白质的 C, N, O, S
原子坐标。
• get_data_from_ligand_PDB
提取配体的 H, C, N, O
等原子。
作用:从PDB文件中提取特定元素(C, N, O, S
)的原子坐标
示例PDB片段:
ATOM 1 N MET A 1 10.123 20.456 30.789 1.00 20.00 N
ATOM 2 CA MET A 1 11.234 21.567 31.890 1.00 25.00 C
HETATM 1000 O HOH B 1 5.678 6.789 7.890 1.00 15.00 O
• 蛋白质原子:以 ATOM
开头,如 N
(氮)、CA
(α-碳)等。
• 配体/水分子:以 HETATM
开头,如 O
(氧)。
解析过程:
(1) 截取第3列的原子类型(如N
/CA
/O
)
(2)提取坐标:第7-9列(X/Y/Z坐标),例如 N
原子坐标为 (10.123, 20.456, 30.789)
(3)代码会过滤保留 C, N, O, S
原子,最终得到:
selected_ele = ['N', 'C', 'O']
selected_xyz = [[10.123, 20.456, 30.789], [11.234,21.567,31.890], [5.678,6.789,7.890]]
2. SDF文件(配体结构文件)
代码中的处理函数:get_data_from_ligand_sdf
作用:从SDF文件中提取 H, C, N, O
等元素的原子坐标
示例SDF片段:
1 2 3 0 0 0 0 0 0 0999 V2000
4.3180 -0.9960 0.0010 C 0 0 0 0 0 0 0 0 0
5.1840 -0.4960 0.0000 N 0 0 0 0 0 0 0 0 0
3.4520 -0.4960 0.0010 O 0 0 0 0 0 0 0 0 0
解析过程:
(1)第4行开始读取原子数(此处3个原子)
(2)提取每行前3个坐标为XYZ值,第4列为元素类型,例如 C
原子坐标为 (4.318, -0.996, 0.001)
(3)最终得到:
selected_ele = ['C', 'N', 'O']
selected_xyz = [[4.318,-0.996,0.001], [5.184,-0.496,0.0], [3.452,-0.496,0.001]]
3. 距离矩阵(Distance Matrix)
代码中的处理函数:generate_distance_matrix
作用:计算蛋白质-配体原子间的距离,并生成特殊结构的矩阵
示例场景:
• 假设:
◦ 蛋白质有2个原子:P1(0,0,0), P2(1,1,1)
◦ 配体有2个原子:L1(2,2,2), L2(3,3,3)
• 生成规则:蛋白质内部或配体内部的原子距离设为极大值(cutoff*10000
),仅保留蛋白质与配体间的距离
• 生成结果:
P1 P2 L1 L2
P1 [[1e+06, 1e+06, 3.464, 5.196],
P2 [1e+06, 1e+06, 1.732, 3.464],
L1 [3.464, 1.732, 1e+06, 1e+06],
L2 [5.196, 3.464, 1e+06, 1e+06]]
• 说明:
◦ P1-P2(蛋白质内部)距离设为1e+06
◦ L1-L2(配体内部)距离设为1e+06
4. 拓扑特征
代码中的处理函数:SimplicialComplex_laplacian
模块
特征生成过程:
(1)元素组合:选择特定的元素组合,例如,蛋白质选择 C, N, O, S
的子集,配体选择 H, C, N, O
等子集(如蛋白质的 C
和配体的 O
)
(2)过滤参数:从 dis_start
到 dis_cutoff
,以 dis_step
为步长,生成一系列距离阈值(如0.1Å间隔的0-10Å)
(3)拉普拉斯矩阵:在每个阈值下构建单纯复形,计算拉普拉斯矩阵的特征值
(4)统计特征:对每个距离阈值下的特征值提取6个统计量:零特征值计数、最大值、总和、非零均值、非零标准差、非零最小值
示例输出形状:
feature_array.shape = (6, 100, 143)
维度解释:
• 第1维:6 个统计指标
• 第2维:100 个距离阈值(如 0.1Å 间隔的 0-10Å)
• 第3维:143 种元素组合(蛋白质 11 种 × 配体 13 种)
具体示例:
• 元素组合:蛋白质的 C
和配体的 O
。
• 过滤参数:0Å, 0.1Å, ..., 10Å
• 距离 =3.0Å 时,输出特征:
特征值 = [0.0, 1.2, 0.8, 0.0]
统计量 = [
2, # 零值计数
1.2, # 最大值
2.0, # 总和 (1.2+0.8)
1.0, # 非零均值 (1.2+0.8)/2
0.2, # 非零标准差 √[((1.2-1)^2+(0.8-1)^2)/2]
0.8 # 非零最小值
]
5. 完整流程示例
输入:
• 蛋白质 PDB :含 C, N, O, S
原子
• 配体 SDF :含 H, C, N, O
原子
• 参数:考虑半径 20Å ,距离范围 0-10Å ,步长 0.1Å
处理步骤:
(1)提取蛋白质中距离配体20Å内的 C, N, O, S
原子
(2)提取配体中所有 H, C, N, O
原子
(3)生成 50×50 距离矩阵(假设蛋白质 30 原子 + 配体 20 原子)
(4)对每个元素组合(如 C-C、C-O 等)生成 50×50 子矩阵
(5)在 0-10Å 范围内以 0.1Å 步长计算拓扑统计量
(6)最终生成形状为 (6,100,143) 的特征数组