当前位置:首页>python>专题|Python 分析单细胞:CellTypist 自动注释与 scVI 潜空间

专题|Python 分析单细胞:CellTypist 自动注释与 scVI 潜空间

  • 2026-08-18 23:11:20
专题|Python 分析单细胞:CellTypist 自动注释与 scVI 潜空间

前六篇我们分别学习了 Python 基础、进阶语法、pandas 数据框、AnnData 数据结构、单样本 pipeline 与多样本整合,以及细胞类型注释。本篇把两条常用路线放在同一工作流中:CellTypist 判断细胞更像参考中的哪个标签,scVI 从原始计数学习低维表示。标签不是潜空间,潜空间也不会自动给出可靠标签。两条路线的输入不能混用,结果保存位置必须清楚,标签和潜空间都要经过样本与生物学审核。


一、两条路线的输入不能混用

方法输入矩阵其他输入输出
CellTypist全基因、总量归一化后的 log1p 表达参考模型、基因符号标签与置信信息
scVI原始 UMI 计数batch_key 和可选协变量模型与潜空间

先检查对象:

print(adata.shape)print(adata.layers.keys())print(adata.obs[[”sample_id”, ”batch”]].head())

输出类似:

(8000, 20000)KeysView(AnnData object with layer: 'counts', 'log1p', 'raw') sample_id batchAAAC-1 sample_01 batch1AAAC-2 sample_01 batch1AAAC-3 sample_02 batch2AAAC-4 sample_02 batch2AAAC-5 sample_03 batch3

参数含义
adata.shape返回 (n_cells, n_genes),确认全基因维度
adata.layers.keys()列出可用矩阵层,确认有 counts 和 log1p
adata.obs[...]查看样本和批次元数据是否已就位

这三行分别检查细胞×基因维度、可用矩阵层和批次元数据。如果没有明确的 counts 层,不能把当前 X 直接交给 scVI;如果对象只剩高变基因,也不适合直接交给 CellTypist。


二、CellTypist 参考注释

1. 准备注释副本

query = adata.copy()query.X = query.layers[”log1p”].copy()

注释函数可能读取或转换 X。使用副本可以避免影响主对象中的矩阵语义。运行后,query.X 是全基因 log1p 表达,主对象保持不变。

2. 加载参考模型并检查基因交集

import celltypistmodel = celltypist.models.Model.load(model=”reference_model.pkl”)model_genes = set(model.features)query_genes = set(query.var_names)overlap = model_genes & query_genesprint(”query genes:”, len(query_genes))print(”model genes:”, len(model_genes))print(”overlap:”, len(overlap))

输出类似:

query genes: 20000model genes: 18000overlap: 15500

参数含义
model.features参考模型训练时使用的基因符号列表
query.var_names查询对象的基因名
overlap两者交集基因数,应占模型基因大部分

交集不是越大就一定越好,但若只剩很少基因,应先检查:

  • 物种是否一致;
  • 使用的是 gene symbol 还是 Ensembl ID;
  • 是否误把对象裁成 HVG;
  • 基因名大小写或版本后缀是否不同。

不要通过随意改名提高交集;映射必须有明确规则。

3. 运行注释

prediction = celltypist.annotate( query, model=model, majority_voting=True,)result = prediction.predicted_labels.copy()print(result.head())

输出类似:

predicted_labels majority_voting confidence_scorecellAAAC-1 T cells T cells 0.92AAAC-2 B cells B cells 0.88AAAC-3 T cells T cells 0.95AAAC-4 Monocytes Monocytes 0.79AAAC-5 B cells B cells 0.91

参数含义
query全基因 log1p 副本
model参考模型对象
majority_voting是否在局部邻域内平滑标签

model 指定参考模型;majority_voting=True 会结合局部邻域产生平滑候选标签;逐细胞预测与 majority voting 都应保留,不要用后者覆盖前者;标签表的索引应与 query.obs_names 一致。

4. 写回主对象

result = result.reindex(adata.obs_names)adata.obs[”celltypist_label”] = result[”predicted_labels”]if ”majority_voting” in result: adata.obs[”celltypist_majority”] = result[”majority_voting”]

只向 adata.obs 添加候选标签,不改变表达矩阵。写回前 reindex() 是关键:它保证结果按细胞名对齐,而不是按当前行序盲目赋值。

5. 检查标签质量

print(pd.crosstab(adata.obs[”sample_id”], adata.obs[”celltypist_label”]))sc.pl.umap( adata, color=[”celltypist_label”, ”sample_id”, ”leiden”],)

输出类似:

celltypist_label B cells Monocytes T cells NK cellssample_idsample_01 320 180 450 50sample_02 280 220 380 40sample_03 350 150 400 60

怎样看结果:

  • 同一候选标签是否有一致的标志表达;
  • 是否只由一个样本贡献;
  • 与聚类是否完全冲突;
  • 大量细胞是否低置信或被压成一个大类。

自动标签是候选,不是最终真值。需要结合标志基因、样本一致性和参考适用范围审核。

记忆: CellTypist 需要全基因 log1p 输入,scVI 需要原始计数。两条路线各自准备独立副本,不要共用同一个 X。标签写回主对象前必须 reindex() 对齐索引。


三、scVI 潜空间

1. 在登记前冻结对象结构

scvi_adata = adata.copy()scvi_adata.X = scvi_adata.layers[”counts”].copy()print(scvi_adata.shape)print(scvi_adata.obs[”batch”].value_counts())

输出类似:

(8000, 20000)batch1 1800batch2 2200batch3 1500batch4 2500Name: count, dtype: int64

scVI 登记后会记录计数层、批次和协变量。登记之后再删除细胞、重排基因或替换层,会使模型登记与对象不一致。因此,过滤、拼接和 metadata 整理应在这一步之前完成。

2. 登记 AnnData

import scviscvi.model.SCVI.setup_anndata( scvi_adata, layer=”counts”, batch_key=”batch”,)

参数含义
layer指定原始计数所在层,不能传 log1p
batch_keyadata.obs 中批次列名
categorical_covariate_keys可选额外协变量列名列表

setup_anndata() 不训练模型,只告诉 scVI:原始计数在哪一层、哪个字段代表批次。运行后对象中会增加 scVI 登记信息,但还没有潜空间。

3. 建模并训练

model = scvi.model.SCVI( scvi_adata, n_latent=20, n_layers=2,)model.train( max_epochs=200, early_stopping=True,)

参数含义
n_latent每个细胞潜空间维度
n_layers神经网络层数
max_epochs最大训练轮次
early_stopping监控指标不再改善时提前停止

训练结束不等于批次处理合理。需要查看训练历史,并检查批次和目标状态在潜空间中的表现。

4. 提取潜空间并建图

scvi_adata.obsm[”X_scVI”] = model.get_latent_representation()sc.pp.neighbors(scvi_adata, use_rep=”X_scVI”, n_neighbors=15)sc.tl.umap(scvi_adata, random_state=0)sc.tl.leiden(scvi_adata, resolution=0.8, key_added=”leiden_scVI”)

参数含义
use_rep使用哪个嵌入矩阵构建邻图
n_neighbors每个细胞的邻居数
resolutionLeiden 聚类粒度,越大簇越多
key_added聚类标签存入 obs 的列名

对象变化:

  • obsm['X_scVI']:细胞×潜变量矩阵;
  • obsp/uns:基于 scVI 潜空间的新邻图;
  • obsm['X_umap']:由新邻图产生的 UMAP;
  • obs['leiden_scVI']:潜空间邻图上的聚类。

5. 检查过度校正与混杂

sc.pl.umap( scvi_adata, color=[”batch”, ”sample_id”, ”leiden_scVI”],)

理想目标不是让所有批次完全混成一团,而是在相同状态内减弱技术分离,同时保留目标生物差异。如果批次与条件完全混淆,任何模型都无法从数据中可靠拆开二者。

记忆: setup_anndata() 只登记不训练。登记后不可再改对象结构。潜空间 UMAP 不追求批次完全混合,而要在去技术分离的同时保留生物差异。


四、两条路线怎样联用

推荐顺序:

counts对象→ scVI潜空间→ neighbors/UMAP/聚类→ 独立全基因log1p副本→ CellTypist候选标签→ 标志与样本一致性审核

不要把 X_scVI 交给 CellTypist,也不要把 CellTypist 标签当作 scVI 的训练真值。

完整输出保存

from pathlib import Pathoutput_dir = Path(”results”)output_dir.mkdir(parents=True, exist_ok=True)model.save(output_dir / ”scvi_model”, overwrite=True)scvi_adata.write_h5ad(output_dir / ”scvi_latent_with_labels.h5ad”)

参数含义
overwrite=True若目录已存在则覆盖旧模型文件
write_h5ad保存含潜空间、邻图、标签的完整对象

保存模型和 AnnData 缺一不可:模型用于以后映射或重建输出,AnnData 保存当前细胞索引、潜空间、邻图和标签。


五、完整流程代码

# ============================================================# 完整流程:CellTypist 自动注释 + scVI 潜空间# ============================================================import scanpy as scimport scviimport celltypistimport pandas as pdfrom pathlib import Path# ---------- 0. 前置检查 ----------print(adata.shape)print(adata.layers.keys())print(adata.obs[[”sample_id”, ”batch”]].head())# ---------- 1. scVI 潜空间 ----------scvi_adata = adata.copy()scvi_adata.X = scvi_adata.layers[”counts”].copy()scvi.model.SCVI.setup_anndata( scvi_adata, layer=”counts”, batch_key=”batch”,)model = scvi.model.SCVI( scvi_adata, n_latent=20, n_layers=2,)model.train(max_epochs=200, early_stopping=True)scvi_adata.obsm[”X_scVI”] = model.get_latent_representation()sc.pp.neighbors(scvi_adata, use_rep=”X_scVI”, n_neighbors=15)sc.tl.umap(scvi_adata, random_state=0)sc.tl.leiden(scvi_adata, resolution=0.8, key_added=”leiden_scVI”)# ---------- 2. CellTypist 注释 ----------query = adata.copy()query.X = query.layers[”log1p”].copy()ct_model = celltypist.models.Model.load(model=”reference_model.pkl”)prediction = celltypist.annotate( query, model=ct_model, majority_voting=True,)result = prediction.predicted_labels.copy()result = result.reindex(adata.obs_names)adata.obs[”celltypist_label”] = result[”predicted_labels”]if ”majority_voting” in result: adata.obs[”celltypist_majority”] = result[”majority_voting”]# ---------- 3. 质控与可视化 ----------print(pd.crosstab(adata.obs[”sample_id”], adata.obs[”celltypist_label”]))sc.pl.umap(scvi_adata, color=[”batch”, ”leiden_scVI”])# ---------- 4. 保存 ----------output_dir = Path(”results”)output_dir.mkdir(parents=True, exist_ok=True)model.save(output_dir / ”scvi_model”, overwrite=True)scvi_adata.write_h5ad(output_dir / ”scvi_latent_with_labels.h5ad”)adata.write_h5ad(output_dir / ”annotated_full.h5ad”)

记忆: 完整流程中 scVI 先行(需要原始计数),CellTypist 后行(需要全基因 log1p),两者使用各自的副本,最后统一保存。顺序不可颠倒:先建潜空间和聚类,再注释标签。


六、常见错误

CellTypist 标签几乎全相同参考域错配或基因交集不足回到模型、物种和全基因输入检查
注释结果行数对不上细胞索引顺序变化按 obs_names 重新索引
scVI 报非计数错误传入了 log1p 表达回到 layers['counts']
setup 后对象变更报错登记生命周期被破坏重新整理对象并再次 setup
UMAP 批次消失但状态也混合过度校正检查批次—条件关系并调整设计


本篇小结

CellTypist 提供参考标签候选,scVI 提供计数生成模型潜空间。两者最重要的共同原则是:输入矩阵值域明确、细胞索引对齐、结果保存位置清楚、标签和潜空间都要经过样本与生物学审核。

下一篇我们将学习差异表达分析——如何在单细胞数据中正确进行基因层面的差异检验,以及如何为下游通路富集准备有方向的统计量排序。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 22:03:05 HTTP/2.0 GET : https://f.mffb.com.cn/a/506958.html
  2. 运行时间 : 0.267581s [ 吞吐率:3.74req/s ] 内存消耗:4,523.02kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=61b65a2a036ceb7d6bd757cb747940b1
  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.001086s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001654s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.005463s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000684s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001313s ]
  6. SELECT * FROM `set` [ RunTime:0.000637s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001507s ]
  8. SELECT * FROM `article` WHERE `id` = 506958 LIMIT 1 [ RunTime:0.005287s ]
  9. UPDATE `article` SET `lasttime` = 1787320985 WHERE `id` = 506958 [ RunTime:0.004906s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000689s ]
  11. SELECT * FROM `article` WHERE `id` < 506958 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001107s ]
  12. SELECT * FROM `article` WHERE `id` > 506958 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.007702s ]
  13. SELECT * FROM `article` WHERE `id` < 506958 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.033878s ]
  14. SELECT * FROM `article` WHERE `id` < 506958 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.025060s ]
  15. SELECT * FROM `article` WHERE `id` < 506958 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.009281s ]
0.271258s