当前位置:首页>python>肿瘤单细胞代谢预测实战|全流程python分析

肿瘤单细胞代谢预测实战|全流程python分析

  • 2026-07-02 22:24:56
肿瘤单细胞代谢预测实战|全流程python分析

编者按

在重构R算法这个栏目中,我们将介绍omicverse开源重构生态最新的成果以及完整的教程,欢迎关注。

本第三期教程里,由首都医科大学林子恒给大家带来单细胞代谢分析:这是omicverse中 Metabolism 模块的内容。我们重构了scmetabolismscFEA

单细胞转录组测的是RNA,不是代谢物。但很多时候,代谢状态会在转录层面留下非常强的信号。比如糖酵解、氧化磷酸化、戊糖磷酸途径这些通路,如果一类细胞真的在代谢层面被激活,那么相关基因的表达也会跟着发生系统性变化。

本文将复现Xiao, Dai & Locasale 2019在Nature Communications发表的肿瘤微环境单细胞代谢图谱分析。

本文AI率20%,阅读大约需要5min。

OmicVerse团队

1. 引言

肿瘤不是一团均匀的细胞。

一个真实的肿瘤组织里,有恶性细胞、成纤维细胞、内皮细胞、T细胞、B细胞、巨噬细胞、树突细胞。它们待在同一个微环境里,但代谢方式完全不一样。

如果你用bulk RNA-seq去看,得到的是所有细胞混在一起的平均值。这个平均值当然有用,但它会把很多真正有意思的东西抹平。

比如我们真正想问的是:

  • 哪些细胞的糖酵解最强?
  • 恶性细胞是不是整体代谢更活跃?
  • 氧化磷酸化是不是只在某一群肿瘤细胞里升高?
  • 缺氧和糖酵解是不是在单细胞层面相关?
  • 不同免疫/基质细胞是否有各自的代谢偏好?

这些问题都需要单细胞分辨率。

2019年,Xiao, Dai和Locasale在Nature Communications发表了文章,系统分析了肿瘤微环境的单细胞代谢图谱。他们的一个主要结论是:在头颈鳞癌数据中,恶性细胞上调的代谢通路数量最多,肿瘤内部还存在明显的代谢异质性。

2. Metabolism模块能做什么

OmicVerse里统一通过这个接口做代谢分析:

ov.single.Metabolism(adata, method='scmetabolism')

目前这个模块里有三类思路:

方法
直观理解
适合场景
scmetabolism
把代谢通路当成基因集,计算每个细胞的通路活性
快速画代谢landscape
scfea
用图神经网络估计代谢模块通量
想进一步看flux
compass
基于代谢网络约束估计反应通量
更重的代谢建模

在本期教程,我们主要使用 scmetabolism 来计算85条KEGG代谢通路活性,最后再用 scFEA 做一个代谢通量的补充。

scmetabolism是复现的R包,我们在确保计算得分一致性的前提下,对计算速度也进行了较大的优化,最终得到的是一个“细胞 × 代谢通路”的矩阵,我们可以用这个矩阵进行差异分析、UMAP可视化、热图和细胞类型比较等内容。

3. 数据读入

首先载入OmicVerse并设置绘图风格:

import omicverse as ov

ov.plot_set()

这里使用的是Puram et al. 2017的头颈部鳞状细胞癌数据,也就是GSE103322。这个数据包含19位患者的5,578个单细胞,也是Xiao 2019那篇文章分析的数据。

adata = ov.datasets.metabolism_hnsc()
adata
AnnData object with n_obs × n_vars = 5578 × 23686
    obs: 'patient', 'malignant', 'celltype', 'lymph_node', 'maxima_enzyme'
    uns: 'dataset', 'expression_units'

我们看一下细胞类型组成:

adata.obs['celltype'].value_counts()
celltype
Malignant      2215
Fibroblast     1440
T cell         1237
Endothelial     260
B cell          138
Mast            120
Macrophage       98
Dendritic        51
myocyte          19
Name: count, dtype: int64

在这个数据中,恶性细胞数量足够多,免疫和基质细胞也比较完整,可以直接比较肿瘤细胞和微环境细胞之间的代谢差异。

4. 构建UMAP

由于这个数据已经是标准化后的表达矩阵,所以我们直接选高变基因,然后做scale、PCA、邻居图和UMAP标准的单细胞分析流程。

ov.pp.highly_variable_genes(adata, n_top_genes=2000)
adata.raw = adata

hvg = adata[:, adata.var.highly_variable].copy()
ov.pp.scale(hvg)
ov.pp.pca(hvg, layer='scaled', n_pcs=30)
ov.pp.neighbors(
    hvg,
    n_neighbors=15,
    n_pcs=30,
    use_rep='scaled|original|X_pca',
)
ov.pp.umap(hvg)
adata.obsm['X_umap'] = hvg.obsm['X_umap']

首先看一下UMAP上细胞类型和恶性状态的分布:

ov.pl.embedding(
    adata,
    basis='X_umap',
    color=['celltype''malignant'],
    frameon='small',
    wspace=0.5,
)
头颈鳞癌单细胞UMAP

可以看到恶性细胞和其他细胞在UMAP上基本可以分开。后面我们把代谢通路分数投到这个UMAP上,就能看出哪些区域的代谢活性更强。

5. 计算代谢通路活性

接下来运行 scmetabolism

met = ov.single.Metabolism(adata, method='scmetabolism')
met.run(score_method='AUCell', metabolism_type='KEGG')

这里用AUCell计算所有KEGG代谢通路在每个细胞里的活性。结果会写入:

adata.obsm['X_metabolism']

看一下矩阵大小:

adata.obsm['X_metabolism'].shape
(5578, 85)

也就是说,我们现在得到了一个5,578个细胞 × 85条KEGG代谢通路的活性矩阵。

这一步其实就是后面所有代谢分析的基础。

6. 恶性细胞上调最多代谢通路

Xiao 2019的一个主要结论是:恶性细胞上调的代谢通路数量最多。

我们可以用 ov.single.differential_metabolism 比较恶性细胞和非恶性细胞的代谢通路活性,这个算法调用的也是omicverse重构生态的成果py-limma包。

deg = ov.single.differential_metabolism(
    adata,
    groupby='malignant',
    group1='Malignant',
)

up = deg.query('padj < 0.05 and log2fc > 0')
print(f'{len(up)} of {len(deg)} KEGG pathways up-regulated in malignant cells')
53 of 85 KEGG pathways up-regulated in malignant cells

在这个数据中,我们发现在85条KEGG代谢通路里,有53条在恶性细胞中显著上调。

我们看一下排名靠前的通路:

deg.head(8)
feature
mean1
mean2
log2fc
direction
Glycolysis / Gluconeogenesis
0.148391
0.089109
0.735763
up
Pentose phosphate pathway
0.106197
0.056830
0.902011
up
Oxidative phosphorylation
0.230178
0.122040
0.915394
up
Folate biosynthesis
0.070516
0.025385
1.473938
up
Pyrimidine metabolism
0.057207
0.036858
0.634212
up
Cysteine and methionine metabolism
0.093844
0.057375
0.709856
up
Purine metabolism
0.054976
0.038136
0.527640
up
Phenylalanine metabolism
0.099794
0.044781
1.156077
up

我觉得这个结果还是比较符合肿瘤代谢的背景知识。糖酵解、戊糖磷酸途径、氧化磷酸化、嘧啶代谢、嘌呤代谢都排在前面。

接着我们把不同细胞类型分别拿出来比较,统计每类细胞显著上调的代谢通路数量:

import pandas as pd

n_up = {
    ct: len(
        ov.single.differential_metabolism(
            adata,
            groupby='celltype',
            group1=ct,
        ).query('padj < 0.05 and log2fc > 0')
    )
for ct in ['Malignant''Fibroblast''Macrophage''B cell''T cell']
}

pd.Series(n_up).sort_values(ascending=False)
Malignant     53
Macrophage    38
Fibroblast    27
B cell        17
T cell        15
dtype: int64

可视化:

import matplotlib.pyplot as plt

ax = pd.Series(n_up).sort_values().plot.barh(
    color='
#C44E52',
    figsize=(53),
)
ax.set_xlabel('# KEGG pathways up-regulated')
ax.set_title('Metabolic activity across the microenvironment')
plt.show()
不同细胞类型上调代谢通路数量

我们发现,恶性细胞上调通路数量最多,巨噬细胞其次,T细胞和B细胞相对更少。

7. 肿瘤内部的氧化磷酸化异质性

代谢分析里,我们除了分析出“恶性细胞代谢更活跃”这个结论外,我们还可以进一步去分析代谢异质性。例如,同样是恶性细胞,代谢状态也不一样。

这里我们把氧化磷酸化通路提取到 adata.obs 中:

met.to_obs('Oxidative phosphorylation')

ov.pl.embedding(
    adata,
    basis='X_umap',
    color='Oxidative phosphorylation',
    cmap='Reds',
    frameon='small',
)
氧化磷酸化UMAP

从UMAP上可以看到,氧化磷酸化没有在所有恶性细胞里均匀升高,只有部分区域更强。

再按细胞类型画小提琴图:

ov.pl.violin(
    adata,
    keys='Oxidative phosphorylation',
    groupby='celltype',
    rotation=90,
)
氧化磷酸化细胞类型分布

我们从这张图可以获得两个层次的信息。

  • 第一,不同细胞类型之间的氧化磷酸化水平不一样。
  • 第二,恶性细胞内部的分布也很不均匀。这就是我们常说的肿瘤内部代谢异质性。也就是说,肿瘤细胞不是一整块共同切换到同一种代谢模式,而是内部本身就有不同代谢状态的细胞。

8. 缺氧、糖酵解和氧化磷酸化

除此之外,提到肿瘤代谢,很多人会想到Warburg效应:肿瘤细胞即使在有氧条件下,也倾向于使用糖酵解。

于是一个很自然的问题是,糖酵解和氧化磷酸化在单细胞层面到底是什么关系?

我们首先用HALLMARK HYPOXIA基因集给每个细胞计算缺氧分数,这里用到了上期教程里的ov.es.aucell函数:

sigs = ov.utils.geneset_prepare(
    ov.utils.predefined_signatures['hallmark'],
    organism='Human',
)

ov.es.aucell(
    adata,
    signatures={'hypoxia': sigs['HALLMARK_HYPOXIA']},
)

计算完成后,我们从中提取缺氧、糖酵解和氧化磷酸化三个分数:

scores = met.get()

energy = pd.DataFrame({
'hypoxia': adata.obsm['score_aucell']['hypoxia'].to_numpy(),
'Glycolysis': scores['Glycolysis / Gluconeogenesis'].to_numpy(),
'OXPHOS': scores['Oxidative phosphorylation'].to_numpy(),
})

energy.corr().round(2)
            hypoxia  Glycolysis  OXPHOS
hypoxia        1.00        0.29   -0.02
Glycolysis     0.29        1.00    0.62
OXPHOS        -0.02        0.62    1.00

我们发现,

  • 第一,缺氧和糖酵解是正相关的,相关系数为0.29。这符合HIF轴激活糖酵解的经典认知。
  • 第二,糖酵解和氧化磷酸化也是正相关的,相关系数为0.62。也就是说,在这个数据中,两者不是简单的一开一关关系,也可以同时升高。

我们画一个散点图来看一下:

fig, axes = plt.subplots(12, figsize=(83.5))

for ax, (x, y) in zip(
    axes,
    [('hypoxia''Glycolysis'), ('Glycolysis''OXPHOS')],
):
    ax.scatter(energy[x], energy[y], s=4, alpha=0.3, color='#4C72B0')
    ax.set(xlabel=x, ylabel=y)

plt.tight_layout()
plt.show()
缺氧、糖酵解和氧化磷酸化相关性

9. 不同细胞类型的代谢程序

除了恶性细胞,微环境里的不同细胞类型也有自己的代谢偏好。

这里使用 ov.pl.metabolism_heatmap,对每个细胞类型内的通路活性做平均,然后筛选区分度较高的代谢通路画热图。

ov.pl.metabolism_heatmap(
    adata,
    groupby='celltype',
    n_features=25,
)
不同细胞类型的代谢通路热图

一般来说,这张图适合放在结果部分当总览图。

如果你在自己的项目里做肿瘤微环境分析,我建议可以画一张类似的热图。因为它可以快速告诉读者:哪些代谢通路是恶性细胞偏高,哪些是免疫细胞偏高,哪些是成纤维细胞偏高。

10. 用scFEA估计代谢通量

最后,前面的 scmetabolism 计算的是通路活性,其实还是基因集打分。

但代谢分析里还有另一个概念:通量。

对于通量,它想回答的是,一个代谢反应或者代谢模块到底跑得有多快。scFEA就是这类方法,它用图神经网络和代谢物质量平衡约束,估计大约168个代谢模块的通量。

由于scFEA计算比通路打分更重,因此在这里随机抽取400个细胞做演示:

import numpy as np

idx = np.random.default_rng(0).choice(adata.n_obs, 400, replace=False)
sub = adata[idx].copy()

flux = ov.single.Metabolism(sub, method='scfea')
flux.run(n_epoch=25, verbose=False)

我们也可以画相似的代谢特征热图:

ov.pl.metabolism_heatmap(
    sub,
    groupby='celltype',
    n_features=20,
)
scFEA代谢通量热图

总的来说,scFEA和scMetabolism看的角度不一样。前者更接近代谢模块通量,后者更接近通路活性。

11. 总结

在本期教程中,我们用Puram 2017头颈鳞癌单细胞数据,复现了Xiao 2019单细胞代谢图谱中的几个主要结论:

  • 使用 ov.single.Metabolism(method='scmetabolism') 计算了5,578个细胞的85条KEGG代谢通路活性。
  • 恶性细胞中有53条KEGG代谢通路显著上调,是所有细胞类型里最多的。
  • 氧化磷酸化在肿瘤细胞内部并不均匀,提示恶性细胞内部存在代谢异质性。
  • 缺氧和糖酵解正相关,糖酵解和氧化磷酸化也正相关,说明两种能量代谢程序可以共同升高。
  • 使用 scFEA 可以进一步从通路活性走向代谢通量分析。

实际上我觉得代谢分析,会是单细胞肿瘤研究里越来越常见的一部分。因为只做细胞类型注释已经不太够了,我们还需要知道这些细胞到底处在什么功能状态里。在实际应用中,空转数据也可以一键应用我们的算法预测代谢情况。

代谢状态就是功能状态里绕不开的一类。

12. 交流群

最后,如果你也很好奇我们omicverse生态的最新进展,想第一时间体验到新功能,欢迎加入我们的交流群~

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 13:43:07 HTTP/2.0 GET : https://f.mffb.com.cn/a/495368.html
  2. 运行时间 : 0.184453s [ 吞吐率:5.42req/s ] 内存消耗:4,528.95kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=514e2bae7e48d6258cf8f6f98e83c447
  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.000469s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000516s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000245s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000314s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000479s ]
  6. SELECT * FROM `set` [ RunTime:0.000203s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000505s ]
  8. SELECT * FROM `article` WHERE `id` = 495368 LIMIT 1 [ RunTime:0.001421s ]
  9. UPDATE `article` SET `lasttime` = 1783057387 WHERE `id` = 495368 [ RunTime:0.000656s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000237s ]
  11. SELECT * FROM `article` WHERE `id` < 495368 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000464s ]
  12. SELECT * FROM `article` WHERE `id` > 495368 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000380s ]
  13. SELECT * FROM `article` WHERE `id` < 495368 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002377s ]
  14. SELECT * FROM `article` WHERE `id` < 495368 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.022817s ]
  15. SELECT * FROM `article` WHERE `id` < 495368 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001262s ]
0.186058s