无需预对齐即可消除批次效应,东京大学团队开发深度学习框架STAIG,揭示肿瘤微环境中的详细基因信息
生物组织是由多种类型细胞构成的复杂网络,这些细胞通过特定的空间配置执行重要功能。近年来,10x Visium、Slide-seq、Stereo-seq 和 STARmap 等空间转录组学 (ST) 技术的进步,使得生物学家们能够在空间结构内绘制基因数据,从而各类疾病提供更深入的见解。
不过,ST 技术严重依赖于识别具有统一基因表达和组织学特征的空间区域。目前,主要有两种识别方法:非空间聚类和空间聚类方法,非空间聚类方法仅基于基因表达进行聚类,往往导致聚类结果不连贯;空间聚类方法使用图卷积模型整合基因和空间信息,但在将 ST 数据转换为图结构时依赖人为定义的距离标准,可能引入偏差;同时,利用组织学图像的方法也面临挑战,因为其易受染色质量变化的影响;此外,大多数现有方法的批次整合仍需手动干预,例如手动对齐坐标或依赖额外工具。
为了克服这些挑战,来自日本东京大学医科学研究所的研究团队提出了一种名为 STAIG (基于图像辅助的图对比学习进行空间转录组学分析)的深度学习框架, 能够在无需对齐的情况下整合基因表达、空间数据和组织学图像。
STAIG 通过自监督模型从苏木精和伊红 (H&E) 染色图像中提取特征,无需依赖大规模组织学数据集进行预训练。此外,STAIG 在训练过程中动态调整图结构,并利用组织学图像信息选择性排除同源负样本,从而减少初始构建带来的偏差。
最后,STAIG 通过局部对比识别基因表达共性,实现端到端的批次整合,无需手动坐标对齐,并有效减少批次效应。研究人员在多个数据集上评估了 STAIG,结果表明其在空间区域识别方面具有良好性能,并能揭示肿瘤微环境中的详细空间和基因信息,促进对复杂生物系统的理解。
相关成果以「STAIG: Spatial transcriptomics analysis via image-aided graph contrastive learning for domain exploration and alignment-free integration」为题,发表于 Nature Communications。
研究亮点:
-
STAIG 模型能够在无需预对齐的情况下整合组织切片,并消除批次效应
-
STAIG 模型适用于从不同平台获取的数据,无论是否包含组织学图像
-
研究人员证明了 STAIG 能够高精度识别空间区域,并揭示肿瘤微环境的新见解,展现出其在解析空间生物复杂性方面的广阔潜力
论文地址:
https://www.nature.com/articles/s41467-025-56276-0
该研究所用数据集下载地址:
https://go.hyper.ai/m5YC4
数据集:收集 ST 数据集和来自不同平台的组织学图像
研究人员下载了公开可用的 ST 数据集和来自不同平台的组织学图像, 如下图所示。ST 数据集包含人脑背外侧前额叶皮层 (DLPFC) 数据集、人类乳腺癌数据集、鼠脑数据集、Slide-seqV2 数据集、STARmap 数据集等。
数据集下载地址:
https://go.hyper.ai/m5YC4
H&E 染色图像、人工注释,以及 STAIG 与基线方法
-
来自 10x Visium 平台的人脑背外侧前额叶皮层 (DLPFC) 数据集包含来自 3 名个体的 12 个切片,每名个体提供 4 个间隔为 10μm 和 300μm 的切片,每个切片的点计数在 3,498 到 4,789 之间,这些切片已被手动标注为皮层层 L1–L6 及白质 (WM);
-
人类乳腺癌数据集包含 3,798 个点;
-
鼠脑数据集包括前后两个切片,分别包含 2,695 和 3,355 个点;
-
对于斑马鱼黑色素瘤,研究人员分析了切片 A 和 B,分别包含 2,179 和 2,677 个点;
-
对于集成实验,使用了 DLPFC 和鼠脑数据集,鼠嗅球的 Stereo-seq 数据集包含 19,109 个点,分辨率为 14μm;
-
Slide-seqV2 数据集具有 10μm 分辨率,包括鼠海马 (来自中央四分之一半径的 18,765 个点) 和鼠嗅球 (19,285 个点);
-
STARmap 数据集包含 1,207 个点;
-
对于 MERFISH 数据集,人类 MTG 包含 3,970 个点,而鼠 1 和鼠 2 的 VIS 区域分别包含 5,995 和 2,479 个点。
模型架构:基于图像辅助的图对比学习进行空间转录组学分析
下图描述了 STAIG 的整体框架,这是一种使用图对比学习结合高性能特征提取来整合基因表达、空间坐标和组织学图像的深度学习框架,包含 6 个模块:
STAIG 框架概述
首先,如下图 a 部分,为了减少噪声和组织染色不均的影响,STAIG 首先将组织学图像分割成与数据点空间位置对齐的小块 (Spot Image Patches),随后使用带通滤波器 (Band-pass Filter) 对图像进行优化处理,图像嵌入特征通过 Bootstrap Your Own Latent (BYOL) 自监督模型提取,同时基于数据点之间的空间距离构建邻接矩阵。
每个切片都包括带有空间坐标的斑点、基因数据和可选的苏木精和伊红染色图像
如下图 b 部分,为了整合不同组织切片的数据,STAIG 采用纵向堆叠(stacking) 的方式,将多个组织切片的图像嵌入特征整合。
对于多个切片,每个切片的图像嵌入都会垂直合并
如下图 c 部分,各切片的邻接矩阵采用对角放置 (diagonal placement) 方法合并,形成整合后的邻接矩阵,随后,该矩阵用于构建图结构,其中基因表达数据作为节点信息。
每个部分的邻接矩阵按对角线方向组合,形成一个综合邻接矩阵
如下图 d 部分,对于通过边相连的测点,在图像嵌入空间中计算其距离,并利用 SoftMax 函数将这些距离转换为随机边移除的概率,原始图在此基础上经历两轮随机边移除 (Edge Random Removal),从而生成两个增强视图,接着,对这些视图中的节点特征进行随机掩码处理。
将生成的两个增强视图中的节点特征进行随机掩码处理
然后,如图 e 部分,增强视图随后通过共享的图神经网络 (GNN) 进行处理,并受邻域对比目标 (neighboring contrastive objective) 的引导,该方法旨在在两个图视图中拉近相邻节点之间的距离,同时拉远非相邻节点。
增强视图随后通过共享的图神经网络进行处理
最终,如图 f,训练后的 GNN 生成嵌入,以识别空间区域并最小化连续组织切片间的批次效应。
利用 GNN 得出的嵌入结果进行空间域识别和整合
研究结果:STAIG 在各种条件下均表现出优越性能
研究团队进行了广泛的基准评估,将 STAIG 与其他最先进的 ST 技术进行了比较。结果显示,STAIG 在各种条件下均表现出优越的性能。
脑区识别性能评估
为了评估 STAIG 在组织区域识别中的性能,研究人员将 STAIG 与现有方法进行了对比,包括 Seurat、GraphST、DeepST、STAGATE、SpaGCN、SEDR、ConST、MuCoST 和 stLearn,性能评估指标包括:
-
调整兰德指数 (ARI) 和归一化互信息 (NMI)(用于手动标注的数据集)。
-
轮廓系数 (SC) 和戴维斯-鲍丁指数 (DB)(用于其他数据集)。
① 人脑数据集的表现
整体而言,STAIG 在人脑数据集中表现最佳, 取得最高的中位数 ARI (0.69) 和 NMI (0.71),如下图所示:
9 种方法在 12 个 DLPFC 切片上的调整兰德指数 (ARI) 和归一化互信息 (NMI) 箱线图
相比之下,现有方法的表现较差:stLearn 误判了一些测点,并遗漏了部分层次;GraphST 的 ARI 为 0.64,NMI 为 0.73,但在 L4 和 L5 层的位置存在较大偏差;其他方法的 ARI 介于 0.25–0.57,NMI 介于 0.42–0.69,主要由于层次比例识别不准确。
② 小鼠脑数据集的表现
如下图,在小鼠后脑数据集中,STAIG 成功识别小脑皮层和海马区,并进一步区分了 Ammon 角 (CA) 和齿状回 (dentate gyrus), 与 Allen 小鼠脑图谱注释高度一致;尽管缺少手动标注,STAIG 仍取得最高 SC (0.31) 和最低 DB (1.11),表明其优越的聚类性能。
小鼠脑后部组织的 H&E 染色图像、Allen 参考图谱的解剖学标注,以及 STAIG 的聚类结果
又如下图,在小鼠前脑数据集中,STAIG 精确分割了嗅球 (olfactory bulb) 和背侧苍白球 (dorsal pallium), 在参考 Long 等人的手动标注后,其 ARI 达 0.44,NMI 达 0.72,均为最高值。
Long 等人的手动标注以及 STAIG 和基线方法在小鼠前部组织上的 ARI 柱状图
图像特征提取的有效性
为了探讨图像特征的影响,研究人员使用 KNN 算法对比了 STAIG 与其他方法 (stLearn、DeepST 和 ConST) 提取的图像特征。
① 大脑组织切片分析
以切片 #151507 为例,如下图,stLearn 的图像特征受染色强度影响严重,导致与真实层次标注不匹配;DeepST 和 ConST 虽采用深度学习,但未能准确捕捉脑组织的复杂纹理特征;STAIG 的特征提取结果与手动标注的层次高度匹配,尽管部分边界仍略显模糊,但几乎不受染色差异的影响。
LPFC 切片 #151507 的 H&E 染色图像、手动注释 及 基于图像特征的 KNN 聚类结果,对比 STAIG 与 3 种基于图像的方法 (stLearn、DeepST、ConST)
② 乳腺癌组织图像分析
研究人员进一步使用人类乳腺癌 H&E 染色图像测试图像特征提取能力,如下图所示。
结果显示:stLearn 的图像特征混合了肿瘤和正常区域,区分度较差;ConST 看似将图像分割成不同区域,但放大观察后,区域边界与手动标注存在较大偏差;DeepST 未能提取有效的图像特征;STAIG 精准识别肿瘤区域,其空间聚类结果保持了高度的区域连贯性,且分割区域几乎完美匹配手动标注的轮廓, 验证了其卓越的图像特征提取能力。
人类乳腺癌数据集的 H&E 染色图像、基于视觉解读的手动注释及基于图像特征的 KNN 聚类结果,对比 STAIG 与三种基于图像的方法
明确人类乳腺癌 ST 中的肿瘤微环境
在对人类乳腺癌数据集的分析中,研究人员发现 STAIG 的结果与手动注释高度一致,并且达到了最高的 ARI (0.64) 和 NMI (0.70)。 值得注意的是,STAIG 提出了稍微不同但更精细的空间分层,特别是对手动注释中的 Healthy_1 区域(下图 a),STAIG 将其细分为子群 3 和 4(下图 b)。
STAIG 的高级空间分析揭示了人类乳腺癌 ST 数据中的癌症相关成纤维细胞 (CAF) 富集群体
总之,通过 STAIG 的多模态整合,研究人员发现子群 3 形成了一个 CAF 密集的肿瘤微环境,并揭示了 CAF 丰富区域的分子特性。
深度学习为 ST 技术发展提供强大工具
随着基因组学和 ST 技术的飞速发展,生物医学界得以探索组织内基因表达的空间分布,从而揭示生物体复杂的功能和结构。ST 技术不仅提供了基因表达的定量信息,还保留了细胞在组织中的空间关系,使相关人员能够研究组织微环境、细胞相互作用以及疾病发生发展的空间特征。然而,由于 ST 数据通常具有高维度、强噪声和批次效应等问题,如何有效地整合和解析这些数据成为当前研究的核心挑战。
深度学习技术,特别是图神经网络 (GNN) 和对比学习方法的引入,为 ST 数据的分析提供了强大的工具。传统的分析方法往往依赖于降维和聚类,而深度学习方法能够自动提取多层次的特征,并通过端到端训练优化数据表示。如前文所述,基于 GNN 的方法可以利用空间邻接信息构建图结构,使模型在捕捉基因表达的同时,也能学习到细胞间的空间依赖关系,而对比学习的引入进一步增强了模型的泛化能力,使其能够在没有标注的情况下学习到关键的空间特征。
除此之外,业界在深度学习+ST 技术结合方面也有不少进展:
2024 年 11 月,中国国家生物信息中心杨运桂团队、中国科学院数学与系统科学研究院张世华团队合作,开发了一种基于深度学习的空间转录组细胞注释工具 STASCAN, 通过整合基因表达谱和组织学图像的细胞特征学习来预测组织切片未知区域的细胞类型,并对捕获区域内的细胞进行细分注释,从而大大提高空间细胞分辨率。此外,STASCAN 适用于来自不同 ST 技术的不同数据集,并在破译高分辨率细胞分布和解决增强的组织结构方面显示出显著优势。
该成果以「STASCAN deciphers fine-resolution cell distribution maps in spatial transcriptomics by deep learning」为题,发表在 Genome Biology 上。
论文地址:
https://genomebiology.biomedcentral.com/articles/10.1186/s13059-024-03421-5
2025 年 1 月 23 日,来自美国普林斯顿大学的研究团队开发了一种全新的深度学习算法 GASTON (Gradient Analysis of Spatial Transcriptomics Organization with Neural networks)。 GASTON 通过结合无监督的深度神经网络与可解释性算法,创新性地提出了「等深度 (Isodepth)」的概念,这一概念类似于地形图中的海拔高度,用于量化组织切片中的基因表达空间拓扑结构。、
通过等深度及其梯度,研究人员不仅能够分割组织的不同空间区域,还能识别组织内基因表达的连续变化趋势和关键标志基因。该研究展示了 GASTON 在多种生物样本中的成功应用,包括小鼠大脑、小鼠嗅球、结直肠癌肿瘤微环境等。结果表明,GASTON 可以准确解析组织结构,揭示细胞类型的空间分布与变化规律,同时挖掘出许多在其他方法中被忽视的空间基因表达模式。
相关成果以「Mapping the topography of spatial gene expression with interpretable deep learning」为题发布于 Nature Methods。
论文地址:
https://www.nature.com/articles/s41592-024-02503-3
显然,深度学习与 ST 技术的结合不仅提升了数据整合与降噪的能力,还促进了空间生物信息的深入挖掘。未来,随着计算资源的增长和算法的优化,深度学习将在 ST 数据分析中发挥更加重要的作用,为精准医学和个性化治疗提供更有力的支持。
参考资料:
1.https://static-content.springer.com/esm/art%3A10.1038%2Fs41467-025-56276-0/MediaObjects/41467_2025_56276_MOESM1_ESM.pdf
2.https://www.bjqykxy.com/kexueyanjiu/dongwuzhiwu/7361.html
3.https://news.qq.com/rain/a/20250128A057OQ00?suid=&media_id=
4.https://www.medsci.cn/article/show_
相关文章:
无需预对齐即可消除批次效应,东京大学团队开发深度学习框架STAIG,揭示肿瘤微环境中的详细基因信息
生物组织是由多种类型细胞构成的复杂网络,这些细胞通过特定的空间配置执行重要功能。近年来,10x Visium、Slide-seq、Stereo-seq 和 STARmap 等空间转录组学 (ST) 技术的进步,使得生物学家们能够在空间结构内绘制基因数据,从而各类…...
B2B2C多用户商城系统:打造新零售电商生态的创新解决方案
在当今数字化时代,电商行业正以前所未有的速度蓬勃发展,而新零售作为电商与传统零售的深度融合,正逐渐成为市场的新宠。为了满足这一变革带来的多元化需求,B2B2C多用户商城系统应运而生,为商家和消费者搭建了一个高效、…...
走向多模态AI之路(二):多模态 AI 如何工作?
目录 前言一、跨模态对齐(Cross-modal Alignment):AI 如何理解不同模态的关系二、多模态融合(Multimodal Fusion):AI 如何整合不同模态的信息三、多模态生成(Multimodal Generation)…...
MCP 实战:实现server端,并在cline调用
本文动手实现一个简单的MCP服务端的编写,并通过MCP Server 实现成绩查询的调用。 一、配置环境 安装mcp和uv, mcp要求python版本 Python >3.10; pip install mcppip install uv 二、编写并启用服务端 # get_score.py from mcp.server.fastmcp import…...
C#游戏开发【第18天】 | 深入理解队列(Queue)与栈(Stack):从基础到任务队列实战
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
2.5路径问题专题:LeetCode 64. 最小路径和
动态规划解决最小路径和问题 1. 题目链接 LeetCode 64. 最小路径和 2. 题目描述 给定一个包含非负整数的 m x n 网格 grid,从网格的左上角出发,每次只能向右或向下移动一步,最终到达右下角。要求找到一条路径,使得路径上的数字…...
办公设备管理系统(springboot+ssm+jsp+maven)
基于springboot的办公设备管理系统(springbootssmjspmaven) 系统功能主要有: 欢迎页账号管理 管理员账号管理系统账号添加密码修改 普通管理员管理 用户管理用户添加用户查询 资产类型管理资产信息管理资产档案管理资产报表...
蓝桥杯2024JavaB组的一道真题的解析
文章目录 1.问题描述2.问题描述3.思路分析4.代码分析 1.问题描述 这个是我很久之前写的一个题目,当时研究了这个题目好久,发布了一篇题解,后来很多人点赞,我都没有意识到这个问题的严重性,我甚至都在怀疑自己…...
数据库--SQL
SQL:Structured Query Language,结构化查询语言 SQL是用于管理关系型数据库并对其中的数据进行一系列操作(包括数据插入、查询、修改删除)的一种语言 分类:数据定义语言DDL、数据操纵语言DML、数据控制语言DCL、事务处…...
SQL Server:Log Shipping 说明
目录标题 SQL Server Log Shipping与Oracle归档日志备份对比分析一、SQL Server Log Shipping的日志截断机制二、Oracle归档日志备份对比三、关键配置对比表四、最佳实践建议 如何修改和查看SQL Server默认备份配置防止自动删除?一、查看现有备份配置二、修改备份配…...
Zephyr实时操作系统初步介绍
一、概述 Zephyr是由Linux基金会托管的开源实时操作系统(RTOS),专为资源受限的物联网设备设计。其核心特性包括模块化架构、跨平台兼容性、安全性优先以及丰富的连接协议支持。基于Apache 2.0协议,Zephyr允许商业和非商业用途的自…...
【大模型系列篇】大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器 —— 进阶篇
🔥🔥🔥 上期 《大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器》中我们使用fastapi-mcp自动挂载fastapi到mcp工具,通过源码分析和实践,我们发现每次sse请求又转到了内部fastapi RESTful api接口&…...
深度学习deeplearn3
# Jupyter Notebook魔法命令,用于在Notebook中内联显示图表 %matplotlib inline# 导入NumPy库,用于高效的数值计算 import numpy as np# 从matplotlib_inline库导入backend_inline模块,用于设置图表显示格式 from matplotlib_inline import b…...
(九)图形管线
一图说明问题 顶点数据->顶点着色器->细分着色器->几何着色器->光栅化->片元着色器->颜色混合 创建图形管线函数放在后面位置 void MyApplication::initVulkan() { createInstance(); createSurface(); pickPhysicalDevice(); createLogicalDevice(); cre…...
7-3 逆序的三位数
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。 输入格式: 每个测试是一个3位的正整数。 输出格式: 输出按位逆序…...
git从历史版本创建新分支或标签
git从某个历史版本创建标签 # 查看历史版本 git log git tag tag-v1.0 780e2a7fc714faf388ba71git从某个分支的指定历史版本中创建新分支 # 查看历史版本 git log # 从历史分支创建标签 git checkout -b new-branch 780e2a7fc714faf388ba71...
HTML 音频(Audio)学习笔记
一、HTML 音频概述 在 HTML 中,音频可以通过多种方式播放,但要确保音频在不同浏览器和设备上都能正常播放,需要掌握一些技巧。HTML5 引入了 <audio> 元素,为音频播放提供了一种标准方法,但在 HTML4 中ÿ…...
五种音频器件综合对比——《器件手册--音频器件》
目录 音频器件 简述 1. 扬声器(Speakers) 2. 麦克风(Microphones) 3. 放大器(Amplifiers) 4. 音频接口(Audio Interfaces) 5. 音频处理器(Audio Processors)…...
数据结构复习(单调栈,单调队列,KMP,manacher,tire,字符串哈希)
单调栈: 介绍: 单调栈用于解决"寻找每个元素左侧/右侧第一个比它小/大的元素"类问题。栈中元素保持单调性,时间复杂度O(n)。 维护一个严格递增栈。对于每个元素a[i],不断弹出栈顶比a[i]大的元素,剩下的栈顶即…...
(学习总结32)Linux 基础 IO
Linux 基础 IO 一、什么是 " 文件 "二、C 文件接口打开文件写文件读文件其它介绍 三、系统文件 I/O传递标志位系统接口写文件系统接口读文件部分系统调用接口介绍打开文件函数 open关闭文件函数 close写入文件函数 write读取文件函数 read 文件描述符 fdfd 0 & 1…...
操作系统(一):概念及主流系统全分析
目录 一.操作系统是什么 二.操作系统的分类 2.1 按应用场景分类 2.2 按实时性分类 2.3 按内核架构分类 2.4 按用户与任务分类 三.主流操作系统比较 四.未来趋势 一.操作系统是什么 操作系统(Operating System, OS)是计算机系统的核心软件&#x…...
三、GPIO
一、GPIO简介 GPIO(General Purpose Input Output)通用输入输出口GPIO引脚电平:0V(低电平)~3.3V(高电平),部分引脚可容忍5V 容忍5V,即部分引脚输入5V的电压,…...
Ceph异地数据同步之-RBD异地同步复制(上)
#作者:闫乾苓 文章目录 前言基于快照的模式(Snapshot-based Mode)工作原理单向同步配置步骤单向同步复制测试双向同步配置步骤双向同步复制测试 前言 Ceph的RBD(RADOS Block Device)支持在两个Ceph集群之间进行异步镜…...
fastapi完全离线环境(无外网)的访问Swagger所做特殊处理
在互联网环境中,只要 启动FastAPI 服务运行在本地机器上,访问 http://localhost:8000/docs(Swagger UI)就可以访问到Swagger界面,但是在完全离线环境(无外网)下如何访问Swagger页面呢࿱…...
在网络中加入预训练的多层感知机(MLP)有什么作用?
在网络中加入预训练的多层感知机(MLP)通常是为了引入先验知识、提升特征表示能力或dropout,具体作用取决于MLP的设计和预训练任务。以下是常见的应用场景和优势: 1. 特征融合与迁移学习:预训练的MLP可以作为特征提取器࿰…...
3.2/Q2,GBD数据库最新文章解读
文章题目:Temporal trends in the burden of vertebral fractures caused by falls in China and globally from 1990 to 2021: a systematic analysis of the Global Burden of Disease Study 2021 DOI:10.1186/s13690-025-01500-y 中文标题:…...
机器学习的一百个概念(9)学习曲线
前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...
浅谈Tomcat数据源连接池
目录 为什么需要JDBC连接池 Tomcat JDBC Pool 相关参数 1. 基本配置 2. 连接池大小控制 3. 连接验证与测试 4. 空闲连接回收 5. 连接泄漏与超时 Tomcat JDBC Pool 源码分析(tomcat 8.5.3) DataSourceFactory DataSource ConnectionPool Pool…...
Techub 财报解读:Circle 冲刺 IPO,但收入增长难掩利润困局
作者:Techub 财报解读 撰文:Yangz,Techub News 4 月 1 日,Circle 向美国证券交易委员会(SEC)提交 S-1 文件,计划进行首次公开募股(IPO),股票代码为 CRCL&…...
C++中的链表操作
在C中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。C标准库(STL)中提供了std::list和std::forward_list两种链表实现,分别对应双向链表和单向链表。此外&am…...
Vue2 生命周期
文章目录 前言🔄 Vue2 生命周期流程(8个核心钩子)📝 代码中典型用法示例一、您的描述验证二、完整生命周期代码示例三、关键阶段行为说明🔍 常见问题 前言 提示:以下是本篇文章正文内容,下面案…...
2007-2022年 上市公司政府补助数据 -社科数据
上市公司政府补助数据(2007-2022年)-社科数据https://download.csdn.net/download/paofuluolijiang/90028547 https://download.csdn.net/download/paofuluolijiang/90028547 政府补助是指政府为支持企业发展,提供的资金或资源支持。对于上市…...
设计心得——状态机
一、状态机 在设计一些与硬件交互或者游戏等开发中,经常会听到状态机(State Machines)这个字眼,而在设计模式(GoF)中,又经常听到状态模式这个概念,它们之间有什么联系和不同呢&…...
python match case语法
学习路线:B站 普通的if判断 def if_traffic_light(color):if color red:return Stopelif color yellow:return Slow downelif color green:return Goelse:return Invalid colorprint(if_traffic_light(red)) # Output: Stop print(if_traffic_light(yellow)) …...
Lua中协程相关函数使用详解
目录 1. coroutine.create(f)2. coroutine.resume(co [, val1, ...])3. coroutine.yield([val1, ...])4. coroutine.status(co)5. coroutine.wrap(f)6. coroutine.running()7. coroutine.isyieldable()协程状态转换示例总结 Lua 中的协程(coroutine)提供…...
代码拟有感
最近的日子像被按了0.5倍速播放键。腱鞘炎让手腕转动时发出咯吱声,尾骨的钝痛让久坐变成酷刑,落枕的脖子和酸胀的手臂组成了“疼痛交响乐”——这些隐秘的、持续的身体抗议,让原本枯燥的代码练习变成了一场生理与意志的拉锯战。 我盯着屏幕苦…...
《实战AI智能体》MCP对Agent有哪些好处
首先MCP为Agent提供了标准化的方式来接入各种工具和数据源,无论是本地运行的工具,例如通过stdio服务器,还是远程托管的服务HTTP over SSE服务, Agent都可以通过统一的接口与它们进行交互,极大扩展了第三方工具库。 例如,在金融领域,Agent 可以接入股票分析的MCP工具。当…...
maptalks获取所有图层并把图层按照zIndex排序
maptalks获取所有图层并把图层按照zIndex排序 获取所有图层 通过调用 map.getLayers() 可以返回当前地图上所有的图层集合。此方法会返回一个数组形式的结果,其中包含了地图上的每一个图层层级对象。 图层属性中的 ZINDEX 每种图层类型(如矢量图层、…...
GUI-Guider 按钮按下 选项卡 右移动一个,到最右边停下
extern lv_ui guider_ui; // 在文件顶部添加// 在按钮事件中使用: lv_obj_t * tabview guider_ui.screen_tabview_1; // 替换为你的实际 TabView 名称 uint16_t current lv_tabview_get_tab_act(tabview); lv_tabview_set_act(tabview, current 1, LV_ANIM_ON); …...
让AI再次伟大-MCP-Client开发指南
👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理、AI应用🔥如果感觉…...
sql工具怎么选?
为什么大多数主流工具又贵又难用? 有没有一款免费好用的sql工具? 像大多人朋友常用的sql工具,应该都遇到过这种情况, 用着用着收到了来自品牌方的律师函, 或者处理数据经常卡死, 再或者不支持国产数据库…...
video标签播放mp4格式视频只有声音没有图像的问题
video标签播放mp4格式视频只有声音没有图像的问题 这是由于视频格式是hevc(H265)编码的,这种编码格式视频video播放有问题主要是由于以下两种原因导致的: 1、浏览器没有开启硬加速模式: 开启方法(以谷歌浏览器为例)&a…...
问题解决:glog中的LOG(INFO)与VLOG无法打印
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 MotivationProcess glog版本为:https://github.com/google/glog/archive/…...
【第2月 day16】Matplotlib 散点图与柱状图
好的!以下是针对初学者的 Matplotlib 散点图与柱状图 学习内容,用简单易懂的语言和示例讲解: 一、散点图(Scatter Plot) 作用:展示两个变量之间的关系(如相关性、分布等)。 1. 核心…...
汽车 HMI 设计的发展趋势与设计要点
一、汽车HMI设计的发展历程与现状 汽车人机交互界面(HMI)设计经历了从简单到复杂、从单一到多元的演变过程。2012年以前,汽车HMI主要依赖物理按键进行操作,交互方式较为单一。随着特斯拉Model S的推出,触控屏逐渐成为…...
Vue 3 中按照某个字段将数组分成多个数组
方法一:使用 reduce 方法 const originalArray [{ id: 1, category: A, name: Item 1 },{ id: 2, category: B, name: Item 2 },{ id: 3, category: A, name: Item 3 },{ id: 4, category: C, name: Item 4 },{ id: 5, category: B, name: Item 5 }, ];const grou…...
06-Spring 中的事件驱动机制
Spring 中的事件驱动机制(ApplicationEvent 源码解析) 本小结主要总结Spring的事件,如果对于观察者模式比较熟悉的话,理解这个应该不难。 这块涉及的面试题相对简单,主要还是以日常使用为主。 另外在Spring的源码中也运…...
Python学习笔记(8)关于列表内置函数和多维列表
列表访问计数 索引直接访问 index()#获得首次出现指定元素的索引 index(value,[start,[end]] #控制搜索索引范围 counr()#获得指定元素在列表中出现的次数 len()#返回列表长度 成员资格判断 incount()返回0,代表不存在 列表切片 slice[起始偏移量 start:终止…...
【算法学习计划】回溯 -- 递归
目录 leetcode 面试题08.06.汉诺塔问题 leetcode 21.合并两个有序链表 leetcode 206.反转链表 leetcode 24.两两交换链表中的节点 leetcode 50. Pow(x, n) 本篇文章将是我们回溯专题的第一篇文章,在这里我先浅浅讲一下什么是回溯 其实就是递归,只不…...
Unity中 JobSystem使用整理
Unity 的JobSystem允许创建多线程代码,以便应用程序可以使用所有可用的 CPU 内核来执行代码,这提供了更高的性能,因为您的应用程序可以更高效地使用运行它的所有 CPU 内核的容量,而不是在一个 CPU 内核上运行所有代码。 可以单独使…...