Predicting human microbe–disease associations via graph attention networks with inductive matrix论文解析

Predicting human microbe–disease associations via graph attention networks with inductive matrix completion论文解析


摘要

动机:人类微生物在一系列复杂的人类疾病中起着至关重要的作用,并成为精密医学的新靶点。在识别微生物-疾病关联的电子方法中,不仅可以深入了解复杂人类疾病的致病机理,而且可以帮助药理学家筛选药物开发的候选靶点。然而,现有的大多数方法都是基于线性模型或标签传播,这在捕捉微生物和疾病之间的非线性关联方面存在局限性。此外,对于以往的大多数方法来说,预测新的疾病(或新的微生物)仍然是一个巨大的挑战,几乎没有观察到任何关联。
结果:在本研究中,我们充分利用多个生物医学数据源构建微生物和疾病的特征,并提出了一个新的用于人类微生物疾病关联预测的图形注意力网络深度学习框架GATMDA。据我们所知,这是第一次尝试利用图形注意力网络来完成这项重要任务。特别是,我们开发了一个优化的图-注意网络,用以学习节点(即微生物和疾病)的表示。为了更好地关注更重要的邻域并滤除噪声,我们进一步设计了一个双交互聚合器来实现相似邻域的表示聚合。此外,我们结合非负矩阵完成重建微生物疾病关联,以捕捉疾病与微生物之间的复杂关联。对两个数据集(即HMDAD和dispiome)的综合实验表明,我们提出的模型始终优于基线方法。对哮喘和炎症性肠病两种疾病的病例研究进一步证实了我们提出的GATMDA模型的有效性。
源码:https://github.com/yahuilong/GATMDA

一、引言

微生物是微生物的一类,可以单细胞或集落细胞的形式存在[1]。已有研究表明,大量微生物群落主要由病毒、古生菌、细菌和原生动物组成,与人类宿主有着密切的相互作用[2,3]。一般来说,它们存在于人体的各种器官中,如口腔、肠道、皮肤和肺,其中大多数位于胃肠道[4]。事实上,大多数的人类共生微生物群落对人类健康是无害的,甚至与它们的宿主存在互惠关系。尤其是人体微生物,由于其代谢能力与肝脏相似,如促进营养吸收、抵御病原体、增强代谢能力等,被普遍认为是人类的“遗忘器官”[5]。因此,微生物群落的失调或失衡可能导致人类疾病,如肝病[6]、糖尿病[7]、哮喘[8]甚至癌症[9]。然而,尽管许多研究已经越来越多地揭示了微生物在人类疾病致病机制中的作用,但对生活在人体内的微生物如何影响人类健康和致病的系统认识仍然不甚清楚。
识别微生物与疾病的关联不仅有助于揭示复杂的致病机制,而且可以为疾病诊断和预后提供潜在的生物标志物。由于传统的湿实验室方法费时、劳动密集、费用昂贵,因此,硅溶胶法是一个很好的补充,可以指导这些实验。最近,许多注意力都集中在开发预测微生物与疾病关联的计算方法上。我们可以将这些方法分为三类,即基于网络的方法、基于随机游走的方法和基于矩阵分解/完成的方法。例如,Chen等人[10]提出了一个基于KATZ的KATZHMDA模型,用于识别基于异构网络的微生物-疾病关联。Huang等人。[11] 本文提出了一种新的PBHMDA计算模型,它在异构网络上实现了一种设计的深度优先搜索算法来预测微生物与疾病的关联。Long等人。[12] 开发了一种名为WMGHMDA的元图方法,该方法试图通过在异构网络上搜索微生物-疾病对的元图来推断潜在的微生物-疾病对。随机游动在微生物疾病预测领域引起了广泛的兴趣。例如,邹等人。[13] 发布了一个用于微生物疾病预测的BiRWHMDA计算框架,该框架同时实现了微生物和疾病相似网络上的随机行走。为了考虑网络拓扑相似性,罗等。[14] 提出了一种改进的基于随机游走的NTSHMDA预测模型,该模型鼓励步行者选择较近的邻居节点。此外,Yan等人。[15] 介绍了一种新的优化双随机计算模型(BRWMDA)。此外,基于矩阵分解/完成技术,开发了一些微生物病害预测的计算方法。例如,Shen等人。[16] 提出了一种基于协同矩阵分解的CMFHMDA计算方法,该方法利用协同矩阵分解来恢复疾病与微生物之间的相关矩阵。他等。[17] 通过引入图正则化项,提出了一种新的基于矩阵分解的GRNMFHMDA模型。Duan等人。[18] 提出了一种基于矩阵完备的MCHMDA模型,结合快速奇异值阈值算法,揭示了微生物与疾病的关联。
尽管前面提到的微生物疾病预测方法是有效的,但是这个预测任务仍然存在一些局限性。首先,基于网络的方法和基于随机游走的方法很容易偏向于调查充分的疾病(或微生物)。例如,对于已知关联很少的特定疾病(或微生物),由于稀疏的链接限制了信息传播,它们可以获得不够准确的候选微生物(或疾病)。其次,以往的方法大多依赖于已知的微生物-疾病关联进行相似性计算,这使得这些方法在涉及新的疾病(或新的微生物)时由于缺乏训练数据而无法实现预测。在这里,我们将没有已知关联的疾病(或微生物)定义为新疾病(或新微生物)。如今,越来越多的与微生物和疾病相关的生物医学数据被积累起来,如HMDAD[19]、STRING[20]和HumanNet[21],这为我们利用基于图形的深度学习技术,通过向他们传播本地邻居的信息来预测它们之间的关联提供了一个绝佳的机会。第三,矩阵分解/补全只能捕获线性关联,不能准确反映非线性的微生物-疾病相互作用关系。
为了克服上述局限性,深度学习技术是一种替代选择,它已经成功地应用于各种基于图的任务中,如文本分类[22]、推荐系统[23]和链接预测[24,25]。事实上,微生物-疾病的相互作用可以用一个图形/网络来表示,其中节点表示微生物和疾病,相互作用的微生物-疾病对在图形中形成边缘。因此,预测新的微生物-疾病关联可以映射为图中的链接预测任务。特别地,图注意力网络(GAT)是一种有前途的深度学习技术,因为它在建模复杂图数据方面具有巨大潜力,已吸引了来自不同研究领域的更多关注,例如节点/图分类[26,27],推荐系统[28,29]和语义分割[30]。近来,图注意力网络已经应用于一些生物信息学任务。例如,Zheng等。 [31]提出了一种基于图注意力网络的新方法,称 GAPDA,用于识别piRNA(piwiinteracting RNA)-疾病关联。 Ravindra和Sehanobish [32]提出了一种图形注意模型,用于从单细胞数据中推断疾病状态。然而,到目前为止还没有使用GAT进行微生物疾病预测的研究。因此,我们有动机为新的微生物疾病预测定制GAT。另一方面,在链路预测任务中,大多数基于深度学习的模型首先学习节点的表示向量,然后将表示向量的内积作为关联概率。然而,仅仅使用一个简单的内积来识别节点之间的复杂关联仍然是不够的。尽管有上述的局限性,矩阵补全仍然具有强大的建模能力。
在这项工作中,我们提出了一个新的基于图-注意网络的框架GATMDA,用于在二分网络中进行微生物-疾病关联预测,并结合归纳矩阵完成(IMC)。首先,通过对微生物功能相似性、疾病功能相似性和高斯核相似性等多种生物数据源的集合,得到微生物和疾病的综合特征。其次,我们引入带有谈话头的图注意力网络,这是基准GAT的变体,以学习节点表示,这使模型可以保留更多的信息表示。对于每个头部,我们进一步在神经嵌入/表示聚合层设计了一个双交互聚合器,以加强相似邻居的表示聚合,使得相似节点具有相似的表示。第三,我们在模型中引入IMC来重建微生物与疾病的关联。在两个数据集,即HMDAD和dispiome上的实验结果表明,我们提出的GATMDA模型始终优于七种最先进的方法。以哮喘和炎症性肠病(IBD)两种常见疾病为例,进一步验证了GATMDA的有效性。
总的来说,我们的主要贡献总结如下。
(1)我们提出了一个新的基于GAT的框架来预测二分网络中的微生物-疾病关联。据我们所知,这是第一个应用图形注意力网络预测微生物-疾病关联的工作。
(2)我们引入了带对话头的图-注意网络,它鼓励信息在头部之间传播,从而保证了更多的信息表示。我们进一步在神经表征聚合层设计了一个双交互聚合器,以增强相似节点(即微生物和疾病)之间的表示聚合。
(3)我们通过采用IMC来重建微生物与疾病之间的联系,而不是内积,使模型能够更准确地捕捉微生物和疾病之间复杂的联系。
(4)我们的综合实验结果和案例研究表明,在基准HMDAD和dispiome数据集上,所提出的GATMDA方法明显优于七种最先进的方法。

二、材料

1.Human microbe–disease associations

我们从HMDAD数据库下载了已知的微生物-疾病关联(http://www.cuilab.cn/hmdad),其中包括483个实验证实的39种疾病和292种微生物之间的疾病相关性[19]。在HMDAD中,一对微生物-疾病可能包括来自不同证据的多个条目。在这里,我们将来自不同证据的同一种微生物-疾病联系视为一对。随后,我们获得了450个关联,涉及39种疾病和292种微生物。此外,Janssens等人。【33】最近发布了一个新的微生物-疾病协会数据库,名为Disbiome(https://disbiome.ugent.be/home)其中5573个实验证实的人类微生物-疾病关系是从先前发表的文献和关于240种疾病和1098种微生物的不同数据库中收集的。在菌群中,根据不同的检测方法,可以多次记录一对微生物-疾病对。这里我们忽略了检测方法的信息。在过滤掉重复数据之后,我们最终下载了218种疾病和1052个微生物之间的4351个关联。 总体而言,以上两个微生物-疾病关联数据集的统计数据如表1所示。这两个数据集的更多详细信息,请参见补充表R1-R6。
为了方便起见,我们制定了微生物-疾病关联i o n s a b i in a r y m a t r i x y∈Rnd×n m,其中nd和nm分别代表疾病和微生物的数量。如果疾病与微生物mj之间存在实验验证的关系,则等于1,否则为0。此外,我们还可以利用微生物-疾病关联构建一个二元网络。我们将其相邻矩阵A∈R(nd+nm)×(nd+nm)定义如下:
在这里插入图片描述

2.Microbe functional similarity

在这项工作中,我们使用一种类似于文献[34]的方法来计算微生物的功能相似性。我们从stringv11数据库中检索到蛋白质-蛋白质功能相互作用网络(https://string-db.org。). 关于微生物功能相似性计算的更多细节,请参见[34]。利用FS∈Rnm×nms表示微生物功能相似性,其中FS(mi,mj)表示微生物与mj之间的相似性。

3.Disease functional similarity

基于相似疾病倾向于与相似基因相互作用的假设[35,36],我们根据疾病相关基因之间的功能关联来计算疾病功能相似性。最新发布的humannetv2.0数据库(https://www.inetbio.org/humannet/download。php)可用于有效地访问基因相互作用[21],其中每个相互作用都有一个相关的对数似然评分(LLS),用于评估基因之间功能联系的概率。对于一对疾病对dian和dj,我们首先推导出它们的相关基因集Gi=?gi1,gi2,·····,gim?Gj=?gj1,gj2,·····gjn?, 分别.mis基因数,其中是Gj中的基因数。我们定义了基因g和基因集g=?g1,g2,·····gk?具体如下:
在这里插入图片描述
其中FSS代表基因间的功能相似性得分,定义如下:
在这里插入图片描述
LLS是基因的标准化LLS,其定义如下:
在这里插入图片描述
其中llsmax和llsmindendent分别表示HumanNet中的最大LLS和最小LLS。
最后,我们将疾病功能相似性表述为:
在这里插入图片描述

4.Gaussian interaction profile kernel similarity for diseases and microbes

基于功能相似的微生物通常表现出与相似疾病的相互作用或非相互作用模式,反之亦然[10],我们基于已知的微生物-疾病证据,利用高斯核函数计算疾病和微生物的高斯核相似性。由于相邻矩阵Y的ithrow和jthcolumn代表了疾病病原微生物mj与所有微生物或所有疾病之间的相互作用,我们分别用IP(di)a和IP(mj)表示疾病病原微生物mj的相互作用剖面。疾病和微生物之间的高斯核相似性定义如下:
在这里插入图片描述
式中,λdand和λm表示归一化核带宽和被定义如下:
在这里插入图片描述
λd和λm保留原始带宽,通常都设置为1

5.Integrated similarities for diseases and microbes

由于并非所有疾病都知道相关基因,如果某一特定疾病缺乏相关基因,我们就无法得出它与其他疾病之间的功能相似性得分。因此,为了补充和提高疾病的相似性,我们结合高斯核疾病相似性和疾病功能相似性,定义了一种新的疾病相似性。具体地说,如果疾病与疾病dj之间存在功能相似性,则定义疾病与dj之间的积分相似性为DF和GD的平均值,否则等于高斯相互作用轮廓核相似度GD。综合疾病相似性DS∈Rnd×ndis计算如下
在这里插入图片描述
同样,微生物综合相似性MS∈Rnm×nms计算如下:
在这里插入图片描述
与方程1中的二部网络一致,微生物和疾病的特征矩阵X∈R(nd+nm)×(nd+nm)描述如下:
在这里插入图片描述

三、方法

在这项工作中,我们提出了一个新的基于半监督图注意力网络(GAT)的框架GATMDA来预测新的微生物-疾病关联。如图1的右侧所示,GATMDA包括三个主要步骤。首先,我们学习基于GAT的微生物和疾病的表示法。对于每个头部,我们进一步设计了一个双交互聚合器,以鼓励神经表示聚合层中相似节点之间的信息传播。其次,我们引入归纳矩阵完成学习一个半监督的解码器来识别疾病和微生物之间的关联等级。第三,我们重建了基于关联评级的微生物-疾病关联。接下来,我们将详细介绍上述三个步骤。
在这里插入图片描述

1.Graph attention network with talking-heads

图注意力网络(GAT)是由[37]提出的,其目的是通过给不同的邻居分配不同的权重来学习图上节点的表示。特别地,GAT利用多脑注意机制来稳定自我注意的学习过程。然而,虽然这样的操作可以有效地避免单一自我注意的影响,但是学习到的表征信息仍然不够丰富。另外,不同的头是完全独立的,这没有考虑到头之间的依赖性。为了解决这些限制,一种解决方案是通过在头部之间传播信息来构建不同头部之间的依赖关系。我们将相关的多脑注意机制称为谈话头注意机制(详细内容将在第3.3节中介绍)。在这里,我们定制了图形-注意力网络,用以预测新的微生物-疾病关联。

2.Attentive representation learning layer

在推导了2.1节中的邻接矩阵A和2.5节的特征矩阵X之后,我们可以利用它们来学习基于GAT的疾病和微生物表示。具体地说,对于给定的节点,GAT首先学习其邻居的重要性,然后根据其注意得分融合其邻居的表示,然后根据其当前表示和邻居融合表示更新其表示。特别是,疾病和微生物mjis之间关联对的注意力得分ek Ij公式如下:
在这里插入图片描述
其中f表示单层前馈神经网络,由权重矩阵wt参数化,该权重矩阵将输入特征/表示转化为微生物和疾病的高级特征。k∈rl表示第k(k∈[1,2,….k])第k个注意头中节点的表示,l表示特征维数。h1定义为节点的初始特征矩阵X.为了使注意力分数在不同节点之间具有可比性,我们使用以下softmax函数进一步标准化注意力分数:
在这里插入图片描述
那里表示疾病的邻居。αk ij是指在信息传播过程中(即下一步),微生物mj对疾病的重要性。
考虑到一个疾病di(或微生物mj),我们将由自身和相邻微生物(或疾病)组成的子网络称为自我网络。用邻接矩阵A确定疾病di的一阶连接性结构,计算其自我网络的线性组合如下:
在这里插入图片描述

3.Neural representation aggregation layer

我们得到了节点表示hk及其网络表示hk N,基于功能相似的微生物往往与相似疾病相互作用的假设[10],我们进一步设计了一个基于非线性图神经网络的双交互聚合器,使得相似的节点在特征空间中是相似的。更具体地说,我们可以更新节点的表示矩阵Z,如下所示:
在这里插入图片描述
其中Wa∈Rl×r,Wc∈r(l+l)×r,Ba∈r(nd+nm)×r和Bc∈r(nd+nm)×r分别是可学习的权矩阵和偏置矩阵。r表示变换大小。||表示串联操作,LeakyReLU表示激活函数。在这里,我们对hk和hk N之间的两种特征交互进行了编码,其中信息的传播对hk和hk N之间的相关性敏感,换句话说,这样的聚合器鼓励在相似的节点之间传播更多的信息。
如上所述,为了稳定自我注意的学习过程,benchmarkgat采用了多头机制。然而,事实上,由于不同首脑的独立性,以这种方式学习到的表征信息仍然不够充分。这里我们引入对话头机制,通过构造不同头部之间的依赖来加强节点表示。具体地说,我们将前一个head生成的输出表示zk−1作为下一个head的输入特性hk。h1定义为节点的初始输入特征x。这种对话头机制强制信息从头部传播到头部,这使得模型能够逐步保持高阶邻居的重要性。因此,我们可以通过连接每个头部的输出表示来获得疾病和微生物的最终表示矩阵Z∈R(nd+nm)×(nd+nm):
在这里插入图片描述
请注意,以上所有参数对于不同的磁头是共享的。

4.Decoder for microbe–disease association reconstruction

在公式17中,我们导出了疾病的特征矩阵Zd∈Rnd×kr,微生物的特征矩阵Zm∈Rnm×kr。在以往基于嵌入/表示的链路预测模型中,最常用的方法是利用节点嵌入/表示的内积来确定其概率得分。然而,由于内积是简单的,它仅限于捕捉节点之间复杂的关联。为了应对这一挑战,我们引入了归纳矩阵完成技术,该技术被证明在节点对的关联等级建模中具有巨大的潜力,可以利用所学的表示来重构新的疾病-微生物关联。IMC的主要思想是在已知信息的基础上重新构造一个矩阵来完成缺失的条目。我们在等式18中定义损失函数,并在等式20中重建微生物-疾病关联的相邻矩阵Q∈Rnd×Nm:
在这里插入图片描述
在这里插入图片描述
式中,Wd,wm为可训练权重参数,λ为平衡正则项的衰减因子

5.Optimization

在这项工作中,GATMDA被训练成通过最小化等式18中的损失L来学习参数,如下所示:
在这里插入图片描述
其中W=?Wt、Wa、Wc、Wd、Wm?和B=?学士,卑诗省?分别表示模型中的权重和偏置矩阵集。我们利用Adam优化器[38]进行优化。另外,为了更好地训练模型,我们采用了负采样。对于每个epoch,正样本(?)?+),我们随机抽取等大小的未知疾病-微生物相关性作为阴性样本(?)?—)用于培训。随后,我们根据公式20计算出的概率得分,对新的疾病-微生物关联对进行优先排序。GATMDA预测新的微生物-疾病关联的详细步骤在算法1中描述。
在这里插入图片描述

四、结果

在这一节中,我们首先简要介绍实验设置,然后通过在三种不同的交叉验证设置下比较两个数据集(即HMDAD和dispiome)上的七种最新方法,来演示我们提出的GATMDA模型的性能。最后,以两种常见疾病为例,验证了模型的有效性。

1.Experimental setup

在这项工作中,我们在以下三种不同的设置下进行了标准的5倍交叉验证(CV):
(1)•CVS1(总体测试):选择微生物-疾病对的CV-Y中的随机已知条目(即微生物-疾病对)进行测试。
(2)•CVS2(疾病水平测试):疾病的CV—Y中的随机行(即疾病)为盲测试。
(3)CVS3(微生物垂直测试):微生物的CV—Y中的随机列(即微生物)被盲测。
对于CVS1,我们将已知的微生物-疾病关联随机分为五组。对于每一轮,依次选择一组微生物-疾病关联(即阳性样本)和一组相同大小的未知随机抽样微生物-疾病对(即阴性样本)作为测试样本。剩下的四组微生物-疾病组合以及其他未知的微生物-疾病对被用来训练模型。具体来说,所有的测试样本都会先得到每一轮的预测分数,然后根据他们的得分进行排序。对于阳性(或阴性)测试样本(微生物-疾病对),我们认为如果该模型的排名高于(或低于)特定阈值,则该模型可以成功地预测微生物-疾病对。因此,我们可以通过设置不同的阈值来获得相应的准确度、真阳性率(TPR,灵敏度/召回率)和假阳性率(FPR,1-特异性)。在这里,精度测量在给定阈值下预测为阳性的所有样本中阳性测试样本的百分比。灵敏度/召回率定义为排名高于给定阈值的阳性测试样品的百分比。特异性是指阴性测试样本中排名低于给定阈值的百分比。随后,通过绘制不同阈值下的TPR与FPR和精度与召回率的关系,可以绘制出接收机工作特性(ROCs)曲线和精确召回(PR)曲线。用ROC曲线下面积(AUC)和PR曲线下面积(AUPR)来衡量性能。为了避免随机除法的影响,每个实验重复进行10次。最后的AUC和AUPR分数是在平均10次重复的基础上计算出来的。同样,对于CVS2和CVS3,我们随机抽取相邻矩阵Y中20%的行和列作为测试样本,其余的行和列分别作为训练样本。值得注意的是,CVS2和CVS3分别用于预测新的微生物-新疾病和新微生物的疾病关联。
在我们的模型中,我们将谈话头的数量K设置为4。在神经表示聚合层中,将神经单元r的数目设置为8。在优化过程中,我们限制了延迟因子γ=0.0005的加权矩阵的影响。虽然这些是我们的默认设置,但它们对模型性能的影响将在下一节的参数敏感性分析中进一步讨论。另外,将训练历元设为200,优化算法中的学习率设为0.001。我们根据经验将每个注意力/头部的隐藏单元数设置为4。HMDAD的辍学率设置为0.5,而Dispiome的辍学率设置为0.3。实验代码基于开源机器学习框架Tensorflow实现(https://github.com/tensorflow/tensorflow)。所有的实验都是在windows10操作系统上进行的,该操作系统采用intelw-2133 8核、3.6GHz CPU和32G内存的hpz4g4工作站计算机。

2.Comparison with state-of-the-art methods

3.Ablation study

4.Parameter sensitivity and runtime analysis

5.Case study

讨论与结论

识别微生物与疾病之间的联系,不仅有助于深入了解人类非传染性疾病的复杂致病机理,而且有助于推动精准医学中的微生物导向治疗。例如,系统地识别潜在的病理微生物有利于医生或生物学家在临床或实验上鉴别诊断和治疗的生物标志物[50,51],特别是对于复杂的人类疾病。此外,对致病微生物的计算预测可以帮助药理学家或生物学家有效地缩小候选化合物的范围[52,53]。这可以进一步指导他们计划实验,从而降低成本。考虑到传统的湿实验方法费时、费时、费时,计算方法提供了很好的补充和指导。然而,以前的计算模型面临两个主要的挑战。一方面,它们大多无法捕捉疾病与微生物之间的非线性联系。另一方面,很少有模型能够对新的疾病或新的微生物做出合理的预测。在这项工作中,我们提出了一个新的深度学习框架,命名为GATMDA,基于图-注意网络和归纳矩阵完成的人类微生物疾病关联预测。我们充分利用多种生物数据源来构建疾病和微生物的相似特征。为了获得更多的信息表示,我们提出了一个优化的图-注意网络,该网络学习疾病和微生物的表征,建立了不同头部之间的依赖关系,从而使模型能够保持高阶邻居的重要性。此外,对于每个头部,我们在神经表示聚合层进一步设计了一个双交互聚合器,以加强相似节点的表示聚合,从而获得更精确的节点表示。此外,我们结合IMC技术重建疾病-微生物的关联,使模型具有捕捉疾病与微生物之间复杂关联的能力。综合实验表明,所提出的GATMDA模型在识别潜在的疾病靶微生物(包括新疾病和新微生物)方面是可靠和有前途的。
然而,尽管我们的模型具有良好的预测性能,但仍存在一些局限性,有待于今后进一步改进。一方面,虽然我们提出的模型可以预测潜在的疾病相关微生物,但它仍然无法确定微生物丰度如何影响疾病状态。我们可以通过将微生物丰度信息整合到网络中来进一步解决这个问题。另一方面,我们的模型不能适用于所有新的疾病和新的微生物,因为我们无法获得没有已知相关基因的新疾病和缺乏蛋白质-蛋白质相互作用信息的新微生物的特征。今后,我们可以收集更多的先验生物学知识,如微生物基因测序[54]、基于疾病症状的相似性[55]、疾病语义相似性[56],来克服这一局限性。

备注(欢迎对生物网络感兴趣的同学一起探讨)

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值