当前位置:首页>python>图神经网络处理蛋白结构:Python 数据流与编码实践

图神经网络处理蛋白结构:Python 数据流与编码实践

  • 2026-07-02 16:48:52
图神经网络处理蛋白结构:Python 数据流与编码实践

前置阅读:图神经网络:原理、算法与分子建模入门(图、消息传递、PyG 字段);需要三维几何与对称性时再读 SE(3)-等变图神经网络。PDB 文件字段含义可对照 PDB 格式说明。

本文只谈数据层:如何把「一个蛋白结构文件」变成 GNN 能吃的 Data(x, edge_index, pos, …),并对途中每一类 Python 数据结构建立整体印象。

段末注释PyTorch Geometric(PyG) 是 PyTorch 上的图深度学习扩展库;BioPython 是常用的生物序列/结构解析 Python 包;mmCIF 为 PDB 的现代化文本格式。


1. 端到端数据流(先建立地图)

蛋白结构到 GNN:文件 → 解析 → 数组 → 图 → PyG Data

图 1(科普示意):实践中的主路径可概括为五步。

步骤
输入
输出
典型 Python 类型
① 读文件
.pdb
 / .cif
文本记录
str
、路径 Path
② 解析
ATOM/HETATM 行
层次化结构对象
BioPython Structure
③ 抽表
选定原子/残基
坐标与特征表
numpy.ndarray
torch.Tensor
④ 构图
坐标 + 规则
邻接关系
edge_index[2, E]
⑤ 封装
张量集合
单样本图
torch_geometric.data.Data

结构编码在 GNN 语境下指:用图  把三维构象离散化,并把每个节点  编成特征向量 (可选边特征 、坐标 ),供消息传递学习  乃至图级 


2. 结构文件里有什么

实验或预测结构常见 PDB(Protein Data Bank 文本格式)与 mmCIF(macromolecular Crystallographic Information File)。对 GNN 最重要的是:

  • :残基名、链 ID、残基序号、原子名(CA = 
  • 在哪(Å)
  • 可选置信度:预测结构常把 pLDDT(predicted Local Distance Difference Test)写在 B-factor 列

一条 ATOM 行(概念分区,列宽以 wwPDB 文档 为准)包含:原子坐标、占有率、温度因子 B 等。GNN 构图时通常把整行原样喂进网络,而是抽取成数值张量。


3. Python 中的结构表示:三层结构

三层:文件行 → BioPython 对象树 → NumPy/PyTorch 张量

图 2(科普示意):同一份结构在内存里会同时存在「对象树」与「扁平张量」两种视图,后者才直接对接 GNN。

3.1 层次对象(BioPython)

BioPython 的 PDB 解析器Bio.PDB.PDBParser)把文件读成:

Structure(id)          # 一个文件常对应一个 Structure(或 NMR 多模型)
 └── Model(id)
      └── Chain(id)
           └── Residue(resname, seqid, icode)
                └── Atom(name)
  • 适合:按链筛选、跳过 HETATM、访问 residue.get_resname() 等语义操作
  • 不适合:直接做批量矩阵运算(需再导出为数组)

3.2 扁平张量(NumPy / PyTorch)

GNN 实际使用的是「表格式」数据:

张量
形状
含义
pos[N, 3]
节点坐标,常取 
x[N, F]
节点特征(氨基酸类型 one-hot、B-factor、pLDDT 等)
edge_index[2, E]
源节点、目标节点索引(COO 格式)
edge_attr[E, D_e]
边长、序列距离、接触类型等
seq_pos[N]
序列位置 0…(可选)

3.3 其它常用库(选型)

特点
典型用途
BioPython
对象树清晰、教程多
PDB 解析、快速原型
biotite
数组优先、AtomArray
高性能筛选、几何运算
MDAnalysis
轨迹、大规模动力学
MD 轨迹 → 接触图
ASE
更偏材料/通用原子
与化学模拟衔接

下文示例以 BioPython + PyTorch + PyG 为主,换 biotite 时只需把「对象树 → pos/x」一步改成 AtomArray 索引。


4. 步骤 ①②:解析 PDB 并提取 

from pathlib import Path
import numpy as np
import torch
from Bio.PDB import PDBParser

# 三字母氨基酸 -> 整数编号(可按项目扩展为 20+1 维 one-hot)
AA3_TO_IDX = {
"ALA"0"ARG"1"ASN"2"ASP"3"CYS"4,
"GLN"5"GLU"6"GLY"7"HIS"8"ILE"9,
"LEU"10"LYS"11"MET"12"PHE"13"PRO"14,
"SER"15"THR"16"TRP"17"TYR"18"VAL"19,
}

defextract_ca_table(pdb_path: str | Path, chain_id: str = "A", model_id: int = 0):
"""从一条链提取 Cα:坐标、氨基酸编号、B-factor(可作 pLDDT 代理)。"""
    parser = PDBParser(QUIET=True)
    structure = parser.get_structure("prot", str(pdb_path))
    model = structure[model_id]
    chain = model[chain_id]

    coords, aa_idx, bfac, res_ids = [], [], [], []
for res in chain:
if res.id[0] != " ":  # 跳过 HETATM、水
continue
if"CA"notin res:
continue
        ca = res["CA"]
        coords.append(ca.coord)                      # ndarray shape (3,)
        aa_idx.append(AA3_TO_IDX.get(res.resname, 20))
        bfac.append(ca.bfactor)
        res_ids.append(res.id[1])                    # 残基序号

return {
"pos": np.asarray(coords, dtype=np.float32),   # [L, 3]
"aa": np.asarray(aa_idx, dtype=np.int64),      # [L]
"bfactor": np.asarray(bfac, dtype=np.float32),
"res_id": np.asarray(res_ids, dtype=np.int64),
    }

此时得到的是序列对齐的残基表:节点数 (有  的残基数),尚未定义「边」。

段末注释:**** 为每个氨基酸骨架上的  碳,蛋白残基图的常用节点;全原子图以所有重原子为节点, 约为 


5. 步骤 ③:节点特征 x 怎么编

常见编码方式(可组合拼接):

特征块
维度
说明
氨基酸类型
20 或 21
one_hot(aa)
 或嵌入表 nn.Embedding
序列位置
1 或 
归一化残基索引,或正弦位置编码
置信度
1
B-factor / pLDDT,归一化到 
二级结构
3
DSSP 类别 one-hot(需额外计算)
MSA 统计
变长
保守性、共进化(需多序列比对)
import torch.nn.functional as F

defbuild_node_features(table: dict, num_aa: int = 21) -> torch.Tensor:
    aa = torch.from_numpy(table["aa"]).long()
    x_onehot = F.one_hot(aa, num_classes=num_aa).float()   # [N, 21]

    L = aa.numel()
    seq_pos = torch.arange(L, dtype=torch.float32).unsqueeze(1) / max(L - 11)
    bfac = torch.from_numpy(table["bfactor"]).unsqueeze(1) / 100.0# 仅作缩放示例

    x = torch.cat([x_onehot, seq_pos, bfac], dim=1)        # [N, F]
return x

pos 单独存放,不强行并入 x:几何 GNN / SE(3)-等变 模型需要显式坐标做距离、方向消息(见续篇)。


6. 步骤 ④:从坐标到 edge_index

序列边 + 半径/contact 边:两种邻接来源

图 3(科普示意):蛋白残基图常同时使用序列邻接与空间邻接。

6.1 序列边(化学拓扑先验)

相邻残基  与  连无向边(实现上双向各一条):

defsequential_edges(num_nodes: int) -> torch.Tensor:
if num_nodes < 2:
return torch.empty((20), dtype=torch.long)
    src = torch.arange(0, num_nodes - 1)
    dst = src + 1
    edge_index = torch.stack([
        torch.cat([src, dst]),
        torch.cat([dst, src]),
    ], dim=0)
return edge_index  # [2, 2*(N-1)]

6.2 半径图(空间接触)

当  时连边(Å 单位,常用  残基级、全原子更短):

from torch_geometric.nn import radius_graph

pos = torch.from_numpy(table["pos"])  # [N, 3]
edge_radius = radius_graph(
    pos, r=10.0, batch=None, loop=False, max_num_neighbors=64
)
# edge_radius: [2, E_r]

也可用 torch_geometric.nn.knn_graph(pos, k=30) 控制每节点邻居数上界。

6.3 合并边并去重

defmerge_edges(*edge_indices: torch.Tensor) -> torch.Tensor:
    edge_index = torch.cat(edge_indices, dim=1)          # [2, E_all]
# 无向边去重:排序后 unique
    edge_index = edge_index[:, edge_index[0].sort()[1]]
    uniq = torch.unique(edge_index, dim=1)
return uniq

6.4 边特征 edge_attr(可选)

defedge_length_attr(pos: torch.Tensor, edge_index: torch.Tensor) -> torch.Tensor:
    row, col = edge_index
    diff = pos[row] - pos[col]
    dist = torch.linalg.norm(diff, dim=1, keepdim=True)   # [E, 1]
return dist

序列边可附加 ****(序列距离);空间边以  为主。带方向的模型还会用单位向量 (等变 GNN)。


7. 步骤 ⑤:组装 torch_geometric.data.Data

PyG Data 各字段与 GNN 的对应关系

图 4(科普示意)Data 是单张图的「容器」;forward 时由 GNNConv 读 x 与 edge_index

from torch_geometric.data import Data

defstructure_to_pyg_data(pdb_path: str, chain_id: str = "A") -> Data:
    table = extract_ca_table(pdb_path, chain_id=chain_id)
    pos = torch.from_numpy(table["pos"]).float()
    x = build_node_features(table)
    e_seq = sequential_edges(pos.size(0))
    e_rad = radius_graph(pos, r=10.0, loop=False, max_num_neighbors=64)
    edge_index = merge_edges(e_seq, e_rad)
    edge_attr = edge_length_attr(pos, edge_index)

    data = Data(
        x=x,                   # [N, F] 节点特征
        pos=pos,               # [N, 3] 坐标(几何 GNN / 可视化)
        edge_index=edge_index, # [2, E]
        edge_attr=edge_attr,   # [E, 1]
        num_nodes=pos.size(0),
    )
# 图级标签示例:data.y = torch.tensor([1.0])  # 活性、稳定性等
return data

7.1 Data 与数学对象对照

PyG 属性
数学/用途
data.x
节点特征矩阵 
data.pos
,不必然进入首层 MLP
data.edge_index
邻接的 COO 列表,定义 
data.edge_attr
,进入 
data.y
图级标签 
data.batch
批训练时标记节点属于哪张图

8. 批训练:多蛋白如何拼成一批

三张蛋白图拼成不相交并图,batch 向量区分图 ID

图 5(科普示意):PyG 的 DataLoader 会把多张图并成一个大图(节点不相连),用 batch 向量区分。

from torch_geometric.data import DataLoader
from torch_geometric.nn import global_mean_pool, GCNConv

classProteinGCN(torch.nn.Module):
def__init__(self, in_dim: int, hidden: int = 128):
        super().__init__()
        self.conv1 = GCNConv(in_dim, hidden)
        self.conv2 = GCNConv(hidden, hidden)
        self.lin = torch.nn.Linear(hidden, 1)

defforward(self, data):
        h = data.x.relu()
        h = self.conv1(h, data.edge_index).relu()
        h = self.conv2(h, data.edge_index)
        hg = global_mean_pool(h, data.batch)   # [B, hidden]
return self.lin(hg).squeeze(-1)         # 图级回归示例

paths = ["1abc.pdb""2def.pdb""3ghi.pdb"]
dataset = [structure_to_pyg_data(p) for p in paths]
loader = DataLoader(dataset, batch_size=8, shuffle=True)

for batch in loader:
# batch.x: [N_total, F]; batch.batch: [N_total], 取值 0..B-1
    pred = model(batch)

Dataset 模式:把 structure_to_pyg_data 放进 torch_geometric.data.Dataset 子类,在 get(idx) 里惰性解析 PDB,避免一次性载入万级结构。


9. 数据结构总览(速查表)

阶段
你手里的东西
关键索引语义
文件
PDB/mmCIF 文本
残基序号、链、原子名
BioPython
Residue
 / Atom
res["CA"].coord
NumPy
pos[i]
aa[i]
 与序列顺序一致
edge_index[:, e]edge_index[0,e] -> edge_index[1,e]
PyG
Datadata.num_nodes == data.x.size(0)
Loader
Batchdata.batch[i]
 = 第  个节点所属图的 batch 内编号

索引一致性edge_index 中的值必须在  内;合并多源边后建议 torch.unique;过滤低 pLDDT 残基后要同步删 pos/x 的行并重映射边。


10. 蛋白结构编码的常见建模选择

决策
选项 A
选项 B
影响
节点
 残基
全原子
 规模、边定义
仅序列
序列 + 半径图
是否捕获远程接触
坐标
只作构图
pos
 进等变层
是否需  模型
标签
图级(稳定性)
节点级(RSA)
y
 形状与损失
划分
随机
按 PDB ID / 簇
是否泄漏同源蛋白

编码的最终产物是:**在保留几何与序列先验的图上,每个残基有一个初始嵌入 **;后续 GNN 层通过消息传递得到 ,用于活性预测、界面识别、突变效应等下游任务。


11. 最小可运行依赖

pip install biopython numpy torch torch-geometric
# PyG 安装若遇 CUDA 版本问题,见官方 wheel 说明
项目目录示例
├── data/
│   └── 1CRN.pdb
├── graph/
│   └── build_protein_graph.py   # 本文 extract / structure_to_pyg_data
└── train/
    └── train_gcn.py             # DataLoader + GCN

12. 小结

用 Python 做蛋白结构的 GNN 编码,本质是 「结构文件 → 残基表 → 图张量 → PyG Data。BioPython(或 biotite)负责语义解析,NumPy/PyTorch 负责数值表edge_index 负责关系,PyG 负责与 GNN 层对接。记住三张图:对象树(便于筛链筛残基)、坐标表 pos(几何与构图)、特征表 x(化学与统计),再记住两种边:序列空间,就能把文献里的蛋白 GNN 数据管线读懂、写通。


参考文献与延伸阅读

  1. BioPython Tutorial — Structure section
  2. PyTorch Geometric — Creating Your Own Datasets
  3. Hamelryck & Manderick, PDB parser and structure class (BioPython PDB).
  4. 本系列:图神经网络入门、SE(3)-等变 GNN

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 15:35:06 HTTP/2.0 GET : https://f.mffb.com.cn/a/494903.html
  2. 运行时间 : 0.109249s [ 吞吐率:9.15req/s ] 内存消耗:4,853.54kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c897dcbe597df9c234edf286876df0dd
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000430s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000946s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000314s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000262s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000584s ]
  6. SELECT * FROM `set` [ RunTime:0.000219s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000624s ]
  8. SELECT * FROM `article` WHERE `id` = 494903 LIMIT 1 [ RunTime:0.005581s ]
  9. UPDATE `article` SET `lasttime` = 1783064106 WHERE `id` = 494903 [ RunTime:0.011723s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000262s ]
  11. SELECT * FROM `article` WHERE `id` < 494903 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000625s ]
  12. SELECT * FROM `article` WHERE `id` > 494903 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000474s ]
  13. SELECT * FROM `article` WHERE `id` < 494903 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004260s ]
  14. SELECT * FROM `article` WHERE `id` < 494903 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.011592s ]
  15. SELECT * FROM `article` WHERE `id` < 494903 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004784s ]
0.110736s