当前位置: 首页 > news >正文

文献阅读:GCNG:用于从空间转录组数据推断基因相互作用的图卷积网络

文献介绍

alt

「文献题目」 GCNG: graph convolutional networks for inferring gene interaction from spatial transcriptomics data
「研究团队」 Ziv Bar-Joseph(美国卡内基梅隆大学)
「发表时间」 2020-12-10
「发表期刊」 Genome Biology
「影响因子」 10.8
「DOI」 10.1186/s13059-020-02214-w

摘要

大多数从表达数据推断基因间相互作用的方法都集中在细胞内相互作用。高通量空间表达数据的可用性为推断细胞内和细胞间相互作用的方法打开了大门。为了实现这一目标,作者开发了基因图卷积神经网络(Graph Convolutional Neural networks for Genes, GCNG)。GCNG 将空间信息编码为图,并使用监督训练将其与表达数据相结合。GCNG 改进了先前用于分析空间转录组数据的方法,并且可以提出新的细胞外相互作用基因对。GCNG 的输出还可用于下游分析,包括功能基因分配。
软件和数据支持网站:https://github.com/xiaoyeye/GCNG

研究结果

1. GCNG 框架

作者扩展了 GCN 的想法,开发了基因图卷积神经网络 (GCNG),这是一种通用的监督计算框架,用于从空间单细胞表达数据推断细胞间通信所涉及的基因相互作用。GCNG 方法将图像中细胞的位置和每个细胞中基因对的表达作为输入。GCNG 首先使用两个矩阵表示单细胞空间表达数据。第一个将细胞位置编码为一个 neighborhood graph,而第二个将每个细胞中基因的表达编码。这两个矩阵用作五层图卷积神经网络的输入,该网络旨在预测细胞间通讯基因关系(Fig. 1a)。GCN 的核心结构是其图卷积层,这使得它能够将图结构(细胞位置和邻域)和节点信息(特定细胞中的基因表达)结合起来作为神经网络的输入。由于图结构链接空间上邻近的细胞,GCNs 可以利用卷积层,而卷积层是神经网络最近成功的基础,而无需直接使用图像数据。具体来说,GCNG 由两个图卷积层、一个扁平化层、一个 512 维密集层和一个用于分类的 sigmoid 函数输出层组成。请注意,GCNG 在这里使用两个卷积层,允许该方法也学习间接(即非物理或两层)图关系。由于调节蛋白的影响可能大于直接邻居的影响,因此这种策略允许该方法推断仅考虑直接邻居可能会错过的相互作用。训练 GCNG 需要使用正负对,作者在下面讨论用于获取此类训练样本的数据。训练后,GCNG 可以预测任何一对基因,它们是否在正在研究的数据集中相互作用。

Fig.1 GCNG 用于细胞外基因关系推断
Fig.1 GCNG 用于细胞外基因关系推断

a.GCNG 模型使用空间单细胞表达数据。从空间数据中提取二值化细胞邻接矩阵和表达矩阵。归一化后,两个矩阵都被输入图卷积网络。
b.训练和测试数据分离和生成策略。已知的配体和受体基因可以形成复杂的定向网络。对于交叉验证,所有配体和受体都单独分离为训练和测试基因集,并且仅将两个基因都在训练(测试)基因集中的基因对用于训练(测试)。为了平衡数据集,每个带有标签 1 的正配体-受体 (La, Rb) 基因对将有一个带有标签 0 的负对样本 (La, Rx),其中 Rx 是从所有训练(测试)受体基因中随机选择的,这些基因在训练(测试)中不与 La 交互。

2. 将 GCNG 应用于空间转录组数据

虽然最近提出了许多用于单细胞 RNA-Seq 数据空间分析的方法,但作者决定在本文中重点关注目前为大多数基因提供表达水平的两种方法。第一个是 seqFISH+。作者测试了两个使用 seqFISH+ 的数据集。第一个包含小鼠皮质 913 个细胞中 10,000 个基因表达的信息,第二个包含七个不同视野中小鼠嗅球 (OB) 中 2050 个细胞的表达信息。我们使用的第二种方法是 MERFISH,作者分析了由 1368 个细胞中的 10,050 个基因组成的数据集。与分析体内表达的 seqFISH+ 数据不同,MERFISH 数据来自体外培养的细胞,因此不包括不同的细胞类型。尽管如此,正如 MERFISH 论文的作者所观察到的那样,即使在这个群体中,空间表达也存在差异,因此这些数据可用于研究细胞外基因-基因相互作用。作者对表达数据进行标准化,使每个细胞中所有基因的表达水平总和达到与之前所做的相同的值。有关这两个数据集的完整详细信息,请参阅“Methods”部分和 Additional file 1。

GCN 需要标记数据来进行监督训练。虽然作者研究的空间数据中细胞之间的确切信号相互作用尚不清楚,但作者使用了相互作用配体和受体的精选列表作为真正的相互作用。配体是由细胞分泌的蛋白质,然后它们与细胞本身或邻近细胞上的膜受体蛋白相互作用,以激活接收细胞内的信号通路。有关用于训练的正和负对的完整详细信息,请参阅“Methods”部分。

为了评估,GCNG 采用了十倍交叉验证。训练集和测试集完全分开,以避免任何信息泄漏(Fig. 1b)。有关详细信息,请参阅“Methods”部分和 Additional file 1。

3. GCNG 正确推断细胞之间的配体-受体相互作用

作者首先评估了 GCNG 预测配体-受体相互作用的能力。为此,作者使用了两个数据集。第一个是 seqFISH+ 小鼠皮质组织,其中包含 913 个细胞中 10,000 个基因的表达。作者的标记组由 309 个配体和 481 个受体之间的 1056 个已知相互作用组成。第二个是 MERFISH 数据集,包含来自 1368 个细胞的 10,050 个基因,以及 270 个配体和 376 个受体之间的 841 个已知相互作用。

作者在 10 倍交叉验证 (CV) 中严格区分训练集和测试集(Fig. 1b)。负对也是配体-受体,并且是从非相互作用的训练(测试)数据基因中随机选择的。作者还使用 10 倍交叉验证来选择超参数来确定每个细胞的邻域(Methods)。作者比较了三种可能的 GCNG 模型:diagonal GCNG,仅使用对角矩阵来表示 graph,因此仅可能存在自分泌相互作用;exocrine GCNG,仅允许细胞之间的外分泌相互作用;autocrine plus (+) GCNG 允许自分泌和外分泌相互作用。为了评估 GCNG 的性能,作者将其与最近用于从空间表达数据预测参与细胞外基因相互作用的基因的许多现有方法进行了比较。其中包括计算相邻细胞中配体和受体之间的空间皮尔逊相关性 (PC) 和 Giotto,它首先计算所有对相邻细胞类型中所有基因对的相似性得分,然后根据它们的平均得分对基因对进行排名。

作者还将 GCNG 与两种根本不使用空间信息来确定邻域数据的贡献的替代方法进行了比较。其中包括每个细胞内配体和受体表达之间的 Pearson 相关性以及仅具有自分泌相互作用的 diagonal GCNG 方法。最后,作者将真实数据上的 GCNG 性能与应用于每个细胞的邻域信息以及用于训练和测试的一组相互作用的配体受体的排列时的结果进行了比较。作者还测试了 GCNG 的其他变体,包括利用细胞类型信息(编码为节点属性)、边权重(使用细胞之间的距离)的变体,以及使用其他 GNN 架构(包括 EdgeconditionConv 和 graph attention)的变体(Additional file 1: Fig. S1)。

结果如Fig. 2所示。可以看出,GCNG 在两个数据集中都取得了最佳结果(Fig. 2a-d)。具体来说,对于 seqFISH+ 皮质数据,autocrine+, diagonal, and exocrine GCNG 的平均(中位数)AUROC/AUPRC 分别为 0.65/0.73 (0.99/1.0)、0.59/0.70 (0.99/1.0) 和 0.60/0.69 (0.99/1.0)。相比之下,对于该数据 spatial PC、Giotto 和 single cell PC 的表现均差得多,平均(中值)AUROC/AUPRC 分别为 0.54/0.65 (0.75/0.79)、0.45/0.58 (0.25/0.33) 和 0.48/0.60 (0.38/0.38)。对于 MERFISH 数据,autocrine+, diagonal, and exocrine GCNG 的平均(中位数)AUROC/AUPRC 分别达到 0.69/0.76 (0.99/1.0)、0.60/0.69 (0.99/1.0) 和 0.61/0.71 (0.75/0.79),再次优于作者比较的其他方法。另请参见 Additional file 1:Figs. S2&3 了解详细的性能值。总体而言,对于这两个数据集,与之前的方法相比,GCNG 在平均 AUROC/AUPRC 方面实现了至少 20% 的相对改进。此外,autocrine+ GCNG 在两个数据集上均优于 diagonal GCNG,这一事实证实了空间信息对于该任务的重要性。

Fig.2 GCNG 正确推断细胞外配体-受体相互作用
Fig.2 GCNG 正确推断细胞外配体-受体相互作用

a-b.使用 autocrine+ GCNG 模型的 seqFISH+ 的 AUROC 和 AUPRC 曲线。这里,每条灰线代表一种配体的结果(总共 91 条曲线),红线代表中值曲线,浅绿色部分代表 40 到 60 分位数之间的区域。曲线下面积的中值和平均值显示在每个面板的顶部。
c-d.使用 autocrine+ GCNG 模型时 MERFISH 的 AUROC 和 AUPRC 曲线(73 条曲线)。
e-f.single Pearson correlation、Giotto、spatial Pearson correlation、diagonal GCNG、autocrine+ GCNG 和 exocrine GCNG 模型的 AUROC 和 AUPRC 的总体比较。对于 MERFISH (f) 上的 Giotto,作者将其所有 AUROC 和 AUPRC 设置为 0.5,因为数据只有一种细胞类型

为了测试所识别的相互作用是否可能在测试的组织中活跃,作者进一步比较了使用真实相互作用数据与在排列的训练和测试数据集(其中作者排列相互作用的配体-受体对的集合)上运行 GCNG 时的性能。作者观察到使用随机数据时性能大幅下降(为了测试所识别的相互作用是否可能在测试的组织中活跃,我们进一步比较了使用真实相互作用数据与在排列的训练和测试数据集(其中我们排列相互作用的配体-受体对的集合)上运行 GCNG 时的性能。我们观察到使用随机数据时性能大幅下降(autocrine plus GCNG 就 MERFISH (seqFISH+) 的平均 AUROC 而言,真实 vs 随机:0.69 vs. 0.55(0.65 vs. 0.52);exocrine GCNG vs. random:0.58 vs. 0.50(0.60 vs. 0.43)。有关两个数据集的详细比较结果,请参阅 Additional file 1: Fig. S1。

4. GCNG 鉴定的共表达模式分析

为了进一步探索 GCNG 的预测并将其映射回原始空间表示,作者查看了一些最正确预测的对。对于每一对(预计会相互作用的配体和受体),作者将它们的表达投影到细胞分布图上。Figure 3 显示了两个局部配体(col4a1 和 lamc1)及其在 seqFISH+ 皮层数据中的正和负受体伴侣的投影(Fig. 3a、b表示 col4a1,c、d表示 lamc1),因为此处基因是固定的,而细胞需要被选择(与为每个细胞选择高表达基因的常见情况相反),对于一个基因,如果该基因在该细胞中的表达相较于所有细胞处于 top 100 表达水平,则该细胞被定义为“高表达”。对于正 col4a1-cd93 对,高表达 col4a1 和 cd93 的细胞均集中在第 1 和第 5 视野,其中高表达配体或受体基因的细胞最多(参见 Additional file 1: Fig. S4A and B 了解所有视野)。相反,对于负 col4a1-hrh3 对,高表达 hrh3 的细胞似乎并不位于表达 col4a1 的细胞旁边。配体 lamc1 与正 (itgb1) 和负受体 (lyve1) 也可以观察到类似的模式比较(Fig. 3c, d(参见 Additional file 1: Fig. S4C and D 了解所有视野))。与包括 PC 在内的全局分析方法相比,GCNG 基于数据子集预测此类相互作用的能力凸显了该方法的实用性。细胞类型图(Additional file 1: Fig. S5)表明,在相同类型的相邻细胞和不同类型的细胞中都可以找到正确预测的对。这些结果表明 GCNG 方法具有良好的泛化能力,可用于正确识别几种不同类型的相互作用。

Fig.3 选定配体-受体对的空间表达模式
Fig.3 选定配体-受体对的空间表达模式

a-b.正确预测的配体 col4a1 的正 (cd93) 和负 (hrh3) 受体的空间表达分布。显示了 7 个视场 (FOV) 中的两个剖面图(请参阅 Additional file 1: Fig. S4 查看所有 FOVs)。可以看出,正确预测的对确实比负对具有更好的空间相关性。
c-d.正确预测配体 lamc1 的正 (itgb1) 和负 (lyve1) 受体的空间表达分布。高表达 lamc1 和 itgb1 的细胞均集中在第 5 和第 7 视野,如图所示。

5. 推断因果关系

虽然基于相关性的方法可用于识别基因共表达相互作用和网络,但这些方法不能用于推断因果关系,因为它们的结果是对称的。对于配体受体而言,因果关系信息可能微不足道,因为此类配体受体的方向是已知的。然而,对于其他跨细胞相互作用的基因来说,方向往往并不明确。因此,一种可以推断相互作用和方向性的方法可能有利于研究空间转录组数据。与之前的无监督方法不同,如果训练数据存在,GCNG 的监督框架可以被训练来识别基于成对空间表达模式的因果交互,这受到最近一项工作的启发。因此,作者在已知因果对(配体和受体)的子集上训练了 GCNG,然后用它来预测其他对的方向性。为了为此生成训练和测试数据,对于每个已知的配体-受体 (La, Rb) 基因对,作者引入标签为 0 的负样本 (Rb, La)。使用相同的十倍交叉验证策略来评估 GCNG 的性能。结果如Fig. 4所示。从 seqFISH+ 皮质和 MERFISH 数据集可以看出,GCNG 在这项任务上表现良好,平均(中值)AUROC/AUPRC 分别为 0.636/0.728 (0.99/1.0) 和 0.642/0.734 (0.99/1.0) 。因此,对于排名靠前的预测对,GCNG 的方向预测可用于进一步分配因果关系。

Fig.4 GCNG 可以推断细胞外配体-受体相互作用的方向
Fig.4 GCNG 可以推断细胞外配体-受体相互作用的方向

a-b.使用 seqFISH+ 数据集进行方向预测任务的 GCNG 的 AUROC 和 AUPRC。
c-d.使用 MRFISH 数据集进行方向预测任务的 GCNG 的 AUROC 和 AUPRC。

6. 功能基因分配

接下来作者测试了 GCNG 是否可用于利用预测交互作为下游分析特征的应用程序。具体来说,作者测试了 GCNG 的结果是否可以用作为基因分配功能的特征。这种分配的一种流行方法是 Guilt By Association (GBA)。在 GBA 中,计算候选基因与已知基因的关联,然后将其总值用作该候选基因的最终分数。作为 GBA 的替代方案,作者训练 GCNG 来区分同一功能(正集)内基因对的空间表达与一个基因与该功能相关而另一个基因与该功能无关(负集)的基因对的空间表达。作者专注于与细胞间通讯相关的功能。在本次分析中,作者重点关注 autocrine+ 和 exocrine GCNG,并将其应用于 seqFISH+ 皮质和 MERFISH 数据集。对于功能基因集,作者使用 GSEA 集来表示“整合素细胞表面相互作用”、“血管壁的细胞表面相互作用”和“细胞间通讯”,分别由 seqFISH+ (MERFISH) 数据中的 70 (55)、77 (67) 和 79 (66) 个基因组成。使用五重交叉验证来评估性能。由于在功能分配任务中,验证实验通常仅限于前几个基因,因此作者根据 GBA 和 GCNG 的分数将评估重点放在前 20% 的预测上。结果如Fig. 5所示,表明对于通信相关功能,使用空间信息可以改善功能基因分配。

Fig.5 功能分配
Fig.5 功能分配

a.autocrine+ GCNG 和 GBA 方法对 seqFISH+ 数据上的“整合素细胞表面相互作用”、“血管壁的细胞表面相互作用”和“细胞间通讯”功能的预测中前 20% 的正确分配基因的比例。
b.seqFISH+ 数据上的 exocrine GCNG 结果。
c-d.MERFISH 数据上 autocrine+ 和 exocrine GCNG 的结果。

鉴于其在从 GSEA 功能集中准确识别已知基因的性能,作者接下来使用 GCNG 在 MERFISH 数据集预测这三个 GSEA 细胞相互作用集的新功能基因。Additional file 1: Fig. S6 展示了每个功能的前 100 个预测基因的基因功能 (GO) 分析,显示 GCNG 的几个顶级类别与细胞通讯相关。Table 1 列出了预测每个功能的前 5 个基因。可以看出,前 15 个预测基因中有 13 个的分配得到了最近研究的支持,包括预测“细胞间通讯”和“血管壁细胞表面相互作用”的所有前 5 个基因。例如,Serpine1(预测为整合素的第二位)被证明可以利用受体介导的粘附来调节细胞迁移,而 Mdm2(预测为细胞通讯)被证明可以在急性肾损伤-慢性损伤期间重新定位到细胞膜。

讨论

基因表达数据已被广泛且成功地用于推断基因、基因调控以及时间和因果效应之间的相互作用。随着空间转录组学的最新进展,此类数据现在可用于推断参与细胞间通讯的基因对。然而,将用于推断细胞内相互作用的方法直接转换为用于推断细胞外相互作用的方法并非易事。空间数据往往非常稀疏,包含几种不同的细胞类型,并且需要考虑有关邻域的特定决策。其他最近的方法试图使用大量和单细胞数据来识别激活配体的下游靶标。然而,与 GCNG 不同,这些方法并不试图推断新的直接相互作用,而仅专注于使用已知的相互作用来识别激活的途径。

作者提出了一种有监督的 GCN 方法,可用于从空间 scRNA-Seq 数据中识别新的相互作用。GCNs 最近已用于计算生物学,尽管之前的应用并不关注细胞,而是关注细胞内途径,并利用已知的基因-基因和基因-药物相互作用来定义图结构。例如,Zitnik 等人。使用 GCNs 通过编码蛋白质和药物相互作用知识来预测多药副作用。相比之下,GCNG 专注于推断细胞外相互作用,并且可以处理细胞间特定相互作用未知的一般空间图像。它根据细胞之间的距离生成邻域图,并使用它与基因的成对表达值一起预测细胞之间和细胞之间的相互作用。

将 GCNG 方法应用于提供最高基因覆盖率的数据集表明,它可以成功识别已知的配体-受体对,并且与为此提出的现有方法或不利用空间信息的方法相比,它要准确得多。一些预测结果的可视化凸显了 GCNG 专注于相关位置子集而不是全局相关性的能力。GCNG 的输出还可以用作下游分析的特征,包括基因功能分配方法和学习交互网络的方法。

有多种方法可以改进 GCNG。首先,需要更好地处理要使用的卷积层数量的选择(这与分泌蛋白传播距离的假设有关),以适应各个数据集的需求。其次,GCNG 可以更多地关注特定的细胞类型,而不是整体的相互作用。作者希望在未来的工作中解决这些问题和其他问题。另一个重要的方向是,与细胞内的情况相比,细胞外基因之间的相互作用可能更加复杂,包括不同种类的功能机制,因此作者希望未来的 GCNG 能够对它们进行更详细的建模,而不是将它们视为相同的案件。此外,值得注意的是,同一方法的平均值和中值性能有些不同,有时比较现有方法甚至比随机猜测更差,这是由于训练和测试数据集的样本量较小。最后,报告的结果可能低估了该方法的性能。请注意,作者使用整组已知配体-受体对作为测试数据。虽然有些可能在作者分析的组织中活跃,但在测试数据中被列为“阳性”的许多对并非如此,因此将它们标记为“阴性”实际上是正确的答案(但仍在作者的评估中进行分组) 。更一般地说,如果有更好的 ground truth 数据,预计结果会好得多。

GCNG 用 Python 实现,数据和软件的开源版本都可以从支持网站 https://github.com/xiaoyeye/GCNG 和 Zenodo 获得。


「结束」

注:本文为个人学习笔记,仅供大家参考学习,不得用于任何商业目的。如有侵权,请联系作者删除。

alt

本文由 mdnice 多平台发布

相关文章:

文献阅读:GCNG:用于从空间转录组数据推断基因相互作用的图卷积网络

文献介绍 「文献题目」 GCNG: graph convolutional networks for inferring gene interaction from spatial transcriptomics data 「研究团队」 Ziv Bar-Joseph(美国卡内基梅隆大学) 「发表时间」 2020-12-10 「发表期刊」 Genome Biology 「影响因子…...

Mybatis第一讲——你会Mybatis吗?

文章目录 什么是MybatisMybatis的作用是什么 Mybatis 怎么使用注解的方式注解的多种使用Options注解ResultType注解 XML的方式update标签 #{} 和 ${}符号的区别#{}占位${}占位 ${}占位的危险性(SQL注入)数据库连接池 什么是Mybatis 首先什么是Mybatis呢?Mybatis是一…...

【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理

【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理 问题背景: 在鸿蒙中UI更新渲染的机制,与传统的Android IOS应用开发相比。开发会简单许多,开发效率提升显著。 一般传统应用开发的流程处理分为三步:1.画UI,…...

PostgreSQL基础(六):PostgreSQL基本操作(二)

文章目录 PostgreSQL基本操作(二) 一、字符串类型 二、日期类型 三、...

【前端部署——vercel】部署next.js使用了prisma的项目

部署流程参考 https://blog.csdn.net/qq_51116518/article/details/137042682 问题 PrismaClientInitializationError: Prisma has detected that this project was built on Vercel, which caches dependencies. This leads to an outdated Prisma Client because Prisma’s …...

Vue插槽与作用域插槽

title: Vue插槽与作用域插槽 date: 2024/6/1 下午9:07:52 updated: 2024/6/1 下午9:07:52 categories: 前端开发 tags:VueSlotScopeSlot组件通信Vue2/3插槽作用域API动态插槽插槽优化 第1章:插槽的概念与原理 插槽的定义 在Vue.js中,插槽(…...

类和对象(一)(C++)

类和对象: 类的引入: C语言结构体中只能定义变量,在C中,结构体内不仅可以定义变量,也可以定义函数。比如: 之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量&#…...

【免费Web系列】JavaWeb实战项目案例六

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r 员工信息-删除&修改 前面我们已经实现了员工信息的条件分页查询以及新增操作。 关于员工管理的功能,还有两个需要实现: 删除员工 修改员工 除了员工管理的功能之外&#x…...

git分布式版本控制系统(四)

目前世界上最先进的分布式版本控制系统 官方网址:https://git-scm.com 学习目标: 1 了解 git 前世今生 2 掌握 git 基础概念、基础操作 3 各种 git 问题处理 4 互联网常用 gitflow(工作流程规范) 5 git 代码提交规范 6 git 分支管理及命名规范 常见问…...

【React篇】简述React-Router 的实现原理及工作方式

React Router 路由的基础实现原理分为两种,如果是切换 Hash 的方式,那么依靠浏览器 Hash 变化即可;如果是切换网址中的 Path,就要用到 HTML5 History API 中的 pushState、replaceState 等。在使用这个方式时,还需要在…...

Django里多app

在 Django 里的某一个项目,里面得包含很多 App (功能),那么如何在该项目里管理这么多App呢? 先说明下背景:未先创建 apps 文件夹来存各个app文件夹,直接在项目文件目录里创建各个app。为了便于管理,得将各…...

Prime1 - 信息收集和分析能力的试炼

主机发现 nmap扫描与分析 端口22、80 详细扫描;linux、ubuntu、 udp扫描 端口都是关闭的 脚本扫描 web渗透 打开只有一张图片;源码有图片和一个alt:hnp security不知道有啥用,先记录下来吧 继续web渗透思路走吧,目录…...

3.location的写法

location的写法 一、location的写法1、 精确匹配2、~ 以正则表达式匹配请求,区分大小写3、~* 以正则匹配请求,不区分大小写4、^~ 不以正则的方式匹配请求 二、stub_status模块显示工作状态三、url地址重写 rewrite模块1、语法2、针对项目结构有变化3、网…...

AndroidStudio设置允许APP获取定位权限

1. 在AndroidManifest.xml中声明权限 常用的定位权限有以下两种&#xff1a; <uses-permission android:name"android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name"android.permission.ACCESS_COARSE_LOCATION"/>2. …...

Spring Boot 统一数据返回格式

在 Spring Boot 项目中&#xff0c;统一的数据格式返回是一种良好的实践&#xff0c;它提高了代码的可维护性和一致性&#xff0c;并改善了客户端与服务端之间的通信。本文将介绍如何在 Spring Boot 中实现统一的数据格式返回。 1 为什么需要统一数据返回格式 ⽅便前端程序员更…...

Android 项目Gradle文件讲解(Groovy和Kotlin)

Android 项目Gradle文件讲解&#xff08;Groovy和Kotlin&#xff09; 前言正文一、Gradle的作用二、Gradle的种类① 工程build.gradle② 项目build.gradle③ settings.gradle④ gradle.properties⑤ gradle-wrapper.properties⑥ local.properties 三、Groovy和Kotlin的语言对比…...

python-最接近target的值

【问题描述】&#xff1a;给定一个数组&#xff0c;在数组中找到两个数&#xff0c;使它们的和最接近目标值的值但不超过目标值&#xff0c;然后返回它们的和。 【问题示例】&#xff1a;输入target15,array[1,3,5,11,7],输出14&#xff0c;31114。 完整代码如下&#xff1a; …...

转换张量形状:`nlc_to_nchw` 函数详解

在深度学习和计算机视觉领域&#xff0c;张量的形状转换是一个常见的操作。本文将详细讲解一个用于形状转换的函数 nlc_to_nchw&#xff0c;它能够将形状为 [N, L, C] 的张量转换为 [N, C, H, W] 的张量。 函数定义 def nlc_to_nchw(x, hw_shape):"""Convert …...

「架构」云上自动化运维及其应用

随着云计算的普及,自动化运维成为企业提升运营效率和降低成本的关键。本文通过分析一家中型企业实施云上自动化运维(CloudOps)的案例,探讨了自动化监控、配置管理和持续集成/持续部署(CI/CD)三个核心模块的实际应用。文章详细阐述了每个模块的技术选型、实施原因、优缺点…...

分布式和集群的区别

分布式系统&#xff08;Distributed System&#xff09;和集群&#xff08;Cluster&#xff09;是两个经常被提及的计算机科学概念&#xff0c;它们在提高系统性能和可靠性方面都扮演着重要角色&#xff0c;很多同学会觉得这俩个是同一种东西&#xff0c;但事实上它们之间有着本…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...