摘要

背景:

疾病基因优先排序是试图找出某一特定表型的潜在致病基因,从而揭示人类疾病的遗传基础,促进药物的开发。

本文的动机是受到标签传播算法假阳性蛋白质-蛋白质相互作用的启发。假阳性蛋白质-蛋白质相互作用此前没有在疾病基因优先排序中被考虑过。在以往的基于网络的方法中,标记传播已经成功地应用于对致病基因进行优先排序。这些基于网络地方法使用基本的标签传播,比如随机游走,在网络上以不同的方式优先考虑疾病基因。

然而,这些方法不能处理数据集中存在大量假阳性蛋白相互作用的情况,因为在以往的方法中,PPI网络都是固定的输入。数据源的这一重要特性可能会导致结果出现较大偏差。

结果:

本文提出了一种新的基于网络的IDLP框架来优先选择候选疾病基因。

IDLP可以有效地在PPI网络和表型相似网络中传播标签。它避免了在已知的疾病基因很少的情况下方法失效。同时,IDLP将PPI网络矩阵表型相似度矩阵作为待学习矩阵,对假阳性蛋白相互作用等潜在因素造成的误差进行建模。通过对训练矩阵中的噪声进行修正,显著提高了训练效果。

本文在OMIM数据集上进行了广泛的实验,与八种最先进的方法相比,IDLP证明了它的有效性。通过对受干扰的PPI网络进行实验,验证了IDLP的鲁棒性。此外,通过文献检索,验证了IDLP预测的新基因与已知疾病相关,较高的预测精度表明IDLP可以帮助生物学家发现新疾病基因的有力工具。

正文

一、背景

疾病基因优先排序的目的是识别潜在致病基因的查询表型。准确识别相应的疾病基因是系统理解复杂疾病的分子机制的第一步。此外,了解与疾病相关的基因对诊断和药物开发也至关重要。然而,疾病相关基因的识别并不是一项容易的工作,这仍然是生物信息学领域的主要挑战之一。

随着系统生物学研究的积累,研究表明,在生理或功能上接近的基因往往参与相同的生物学途径,对表型的影响相似。基于这样的假设,许多基于网络的优先排序方法被开发出来,以优先选择候选基因。

早期的算法根据候选基因和已知疾病的相似性对其进行优先排序。尽管这种类型的方法性能很好,但它们仍然有两个限制:

  1. 第一个限制是由于这些方法只考虑了同质网络(即PPI网络)上的标签传播。因此,当与疾病相关的基因很少时,这些方法容易失败。后来又提出了集成异构网络的方法。通过在PPI网络和表型相似网络上传播标签,进一步提高了预测效果。
  2. 第二个限制是假阳性。高通量技术已经产生了大量的蛋白质相互作用数据。然而由于测量技术的不准确,在现有的蛋白质=蛋白质相互作用数据中存在大量的假阳性他。由于以往方法,采用的交替迭代学习方法,PPI网络只能作为一个固定的输入,PPI网络中蛋白质之间的假阳性相互作用会引入偏差,这些噪声数据很可能会导致性能不太令人满意。

为了解决这些问题,本文提出了一种改进的双标签传播(Improved Dual Label Propagation)方法。动机是受到标签传播和PPI网络中假阳性蛋白质-蛋白质相互作用的启发。

标签传播在同构网络和基因与表型之间的关系启发本文在异构网络上构建双重标签传播框架,假阳性蛋白质相互作用激发本文认为PPI网络变量需要学习而不是一个固定的输入。

本文将基因网络和表型相似网络与基因-表型关联联系起来,构建了一个异质网络。将基本标签传播框架从同质网络扩展到异构网络上的双标签传播。选择查询急病表型和查询疾病基因作为种子节点,在异质网络上进行标签传播。在此基础上,本文提出了一种改进的双标签传播框架,以减少假阳性蛋白-蛋白相互作用带来的偏差。将PPI网络邻接矩阵作为IDLP框架下待学习的变量,通过优化IDLP的损失函数,从噪声中修正其值。在对训练数据过拟合的情况下,引入额外的正则化项来约束PPI网络矩阵中的值与其初始值一致。在表型相似网络中也引入了相同的正则化项。通过最小化损失函数优化目标矩阵。在此基础上,本文提出了一种有效的封闭解(closed-form solution),以提高计算效率。

本文的贡献可以概括为以下两个部分:

  1. 首次通过直接建模将基本标签传播从同质网络扩展到异构网络,直接建模有标记数据和未标记数据之间的损失函数,从而可以在损失函数中加入额外的约束条件。相反,之前几乎所有的工作都采用了交替迭代策略,但这种策略并不能有效地处理约束。
  2. 首次考虑假阳性PPI,该误差正则化项极大地帮助我们减少了对数据的干扰,提高了基因-表型预测任务的精度。

方法

数据准备

从OMIM数据库下载了人类基因-表型关联的两个版本:2015年8月版和2016年12月版。2015年8月版包含了4392个表型和3400个基因之间的5117个关联;2016年12月版包含了4741个疾病表型和3638个基因之间的5465个关联。

人类蛋白相互作用(PPI)网络从BioGRID获得的2015年8月版。PPI网络包含356720个双向相互作用的19511个基因。

疾病表型网络是由8004个顶点表示OMIM疾病表型的无向图,通过文本挖掘计算两种表型之间的疾病表型相似性。

筛选分离基因和疾病表型后,得到4120个疾病表型和3292个基因之间的4678/4801个关联(2015年8月版/2016年12月版),并提取相应的PPI网络和疾病表型相似网络。

表一 实验数据统计
统计 数值
基因数量 3292
表型数量 4120
基因-表型关联数量(2015年8月/2016年12月) 4678/4801
每个表型平均关联基因数(2015年8月/2016年12月) 1.1354/1.1653
每个基因平均关联表型数(2015年8月/2016年12月) 1.4210/1.4584
只包含一个疾病基因的表型占比(2015年8月/2016年12月) 91.87%/94.10%
只包含一个相互作用表型的基因占比(2015年8月/2016年12月) 66.22%/66.74%
PPI矩阵稀疏度(2015年8月) 99.74%

符号

表二 符号
符号 描述
n 基因数量
m 表型数量
矩阵X的第i行
矩阵X的第j列
PPI二进制网络
表型相似度网络
标准化PPI网络
标准化表型相似度网络
已知的用于训练的二进制基因-表型关联
要学习的基因-表型关联
要学习的权重PPI网络
要学习的权重表型相似度网络

问题定义

疾病基因优先排序的目标是试图识别特定表型的潜在致病基因。在本文中,我们使用变量Y作为基因-表型关联矩阵进行预测。在完成损失函数的优化后,Y中值较高的基因会被预测为给定表型的潜在致病基因。

总体目标函数

(1)

为考虑PPI网络噪声因素,在PPI网络上对所有查询表型进行标签传播时的目标函数。

为考虑表型相似网络中的噪声,在表型相似网络上对所有查询基因进行标签传播时的目标函数。

IDLP算法并没有直接优化整体目标函数,变量Y只能通过梯队下降来更新,非常耗时本文分别对进行优化,寻找次最优解,通过次最优解可以将每个变量更新为封闭解。

异构网络上的双标签传播

给定查询表型p和PPI网络W1,标签传播的目标是学习给每个基因与查询表型p之间打分。分数显示出每个基因与查询表型p之间的接近程度。

,即已知关联矩阵的第p列。中的非零元素是查询表型p的PPI网络上的初始标签。

,即已知关联矩阵Y的第p列。y是查询表型p需要学习的基因的标签的的向量。

标签传播假设,如果基因连接在PPI网络中,它们应该被赋予相似的标签分数,这导致了以下目标函数:

(2)

是平衡两项贡献的参数。第一项是拉普拉斯图约束,它鼓励PPI网络中的一致性标记。第二项是正则化,用于保持每个节点的标签值与初始标签值相似。

式(2)可以扩展为预测所有表型的关联,如下:

(3)

另一方面,在给定查询基因g和表型相似网络W2的情况下,标签传播的目标是给每个查询基因g的表型赋值,该值表示每个表型与基因g的接近程度。如果表型在某一基因的表型相似网络中得分较高,则应该给予相应的标签。

,即已知关系矩阵的第g行。中的非零元素是查询基因g的表型相似网络的初始标签。

,即关系矩阵Y的第g行。z是查询基因g需要学习的标签的向量。

给定查询基因g,在表型相似网络上的标签传播可以表示为:

(4)

是平衡两项贡献的参数。与式(2)的扩展相似,式(4)可以扩展为预测所有基因的关联,如下:

(5)

异构网络上的改进双标签传播

PPI网络中的假阳性蛋白相互作用表明包含噪声。因此,一个直观的想法是引入变量S1,试图捕捉真实的基因相互作用关系。

将式(2)中的常数矩阵替换成变量矩阵S1,我们可以得到转换后的拉普拉斯约束项,然后引入正则项来保持作用值和初始值相似。根据S1的这两个分量进行优化,可以去除噪声。

对于给定的查询表型p,这将导致以下损失函数:

(6)

式(6)可以扩展到预测所有表型的关联,如下:

(7)

为了最小化式(7)中的损失函数,采用了一种可选的迭代方法。它通过固定其他变量来解决一个变量的问题。式(7)中的损失函数不是在Y和S1上联合凸的,而是在一个变量固定时,另一个变量凸。

对于式(7)而言,Y和S1的闭式解可以表示为如下:

(8)

对噪声进行建模后,标签在PPI网络上传播,结果如图b所示。除了Y的值,还更新了PPI网络S1中每条边的权值。

表型相似矩阵也可以认为时不准确的表型相似关系。引入了一个变量S2,试图捕捉表型的真实关系。、

首先,将式(4)中常数矩阵替换成变量矩阵S2,可以得到转换后的拉普拉斯约束项,然后引入正则化项来保持预测的相似值和它的初始值相似。根据S2的这两个分量进行优化,可以去除噪声。

对于给定的查询基因g,这将导致以下损失函数:

(9)

式(9)可以扩展到预测所有基因的关联,如下:

(10)

对于式(10)而言,Y和S2的闭式解可以表示为如下:

(11)

图d为考虑表型相似网络中的噪声,标签在表型网络上传播后的结果。除了Y的值外,表型网络S2也更新了。

IDLP的算法细节如下:

算法讨论

基于Kurdyka-Lojasiewicz不等式和多变量目标函数的凸性,当一次只关注一个变量时,算法是收敛的。对于多变量目标函数的求解,通常需要采用替代迭代法,也称为“块坐标下降法”。在手稿中描述的目标函数是凸的,专注于一次只改变一个变量,而其它的变量保持不变。该凸优化问题满足多变量目标函数的收敛条件,并利用Kurdyka-Lojasiewicz不等式证明了其收敛性。

关于逆矩阵有一点需要注意。求解逆矩阵是优化问题中的一个常见步骤。一般情况下,用共轭行列式法求逆矩阵比较费时。为了提高IDLP算法的效率,采用高斯消元法求逆矩阵。试验结果表明,用高斯消元法计算速度快两倍。即使矩阵变得很大时,使用高斯消元法也更加准确和有效。

请注意S1和S2的更新顺序是可以交换的,因为更新顺序不会改变目标函数的收敛性。除了算法1中给出的算法外,先更新S2和Y开始算法,然后再更新S1和Y也是一种可行的算法。无论哪一个先出现,它们都能使目标函数收敛。

理论分析

BiRW是IDLP的一个特例

BiRW通过表型网络和基因网络的双随机游走迭代扩展表型路径和基因路径,以评估潜在的候选关联。BiRW使用“Left Walk”和“Right Walk”交替引入表型网络和基因网络的额外步骤。然而,BiRW引入的损失函数具有相当的误导性,使其无法通过优化损失函数得到结果。

BiRW的基本更新规则是:

PPI网络上的Left Walk:(12)

表型网络上的Right Walk:(13)

在足够的左行右行之后:(14)其中

需要注意的是,式(14)中的解与式(8)和(11)中的解完全相同,只考虑了标签在异构网络中的传播,而不考虑模型中的数据噪声。这表明BiRW是IDLP的一个特例。BiRW的最终损失函数如下:

(15)

结果

基线

简要介绍了实验中使用的基线。

  • CIPHER采用回归模型量化候选基因与查询表型之间的一致性,然后根据一致性得分对候选基因进行排序。
  • RWR和DK(Diffusion Kernel)可以通过随机游走从已知的基因中筛选出特定疾病的基因。
  • RWRH算法将RWR算法扩展到异构网络,通过同时查询表型和相应的基因作为种子节点,更好地利用表型数据。
  • PRINCE利用已知的疾病关系来确定一组与疾病表型相关的初始基因,让后在PPI网络上进行传播,以确定疾病的优先级。
  • MINProp基于一种原则性方法,将三个网络集成到一个优化框架中,并在每个独立子网上执行迭代标签传播工作。
  • BiRW在PPI网络和表型相似网络上交替进行随机游走,丰富基因-表型关联矩阵,然后根据丰富的关联矩阵对疾病基因进行优先排序。

除了上述方法外,还介绍了IDLP的两种变体,即IDLP-G和IDLP-P。具体来说,IDLP_G只假设PPI网络是有噪声的,将式(10)中的设为0。IDLP-P只假设表型相似网络是有噪声的,在式(7)中将设为0。

实验设置

IDLP有四个参数,即。由于约束条件,当选择时,就固定了。

本实验使用了5折交叉验证。用五次的平均结果来选择最佳参数。

在参数选择中,我们考虑以下值的所有组合:{0.0001,0.001,0.01,0.1,1};{1,10,100,1000,10000}。

根据其它论文的中的描述实现了所有的基线。

  • CIPHER没有任何要调优的参数,可以直接应用于数据集。
  • 对于RWR、DK和PRINCE而言,它们是基于网络的方法,只在基因相互作用网络上游走,参数α是从{0.1,0.3,0.5,0.7,0.9}中经过5折交叉验证选择的。
  • 对于RWRH、MINProp和BiRW而言,它们是在基因相互作用和人类疾病的异构网络(即OMIM表型相似网络)上进行随机游走。使用了Xie等人提出的三个版本中BiRW最优的平均版本,并且按照Xie等人的建议将左右游走的步长设为4。BiRW有一个参数,通过交叉验证从{0.1,0.3,0.5,0.7,0.9}中选择。MINProp中有两个参数,通过交叉验证,通过网格从{0.1,0.3,0.5,0.7,0.9}中选择。RWRH中有三个参数,都是通过网格搜索从{0.1,0.3,0.5,0.7,0.9}中选择的。

评估

使用了两个指标来评估被测基因阿排名:

  1. 计算了曲线下面积(AUC);
  2. 计算了测试集在top-k位置(k=20,50,100)的平均精度和召回率;

这两个指标是互补的:AUC评估基因的整个排名,而top-k精度和召回强调排名最高的基因。

由于排名靠前的基因的准确性比排名靠后的基因的准确性更重要,本实验突出了一组ROC曲线的假阳性截断点,并比较了两种方法的对应的AUC,AUC得分越高,表现越好。

采用两个版本的数据,2015年8月版数据作为验证集训练模型,2015年8月-2016年12月之间的新添加的数据作为测试集测量模型。实验将2015年8月版数据的已知基因与疾病关联分为5个部分。进行5次交叉验证后,利用5次交叉验证的平均结果为每种方法选择参数。然后将这些方法应用于2015年8月至2016年12月之间加入OMIM的一组独立关联中预测关联。

表现评估

为了定量评价IDLP和其他基线方法,如CIPHER、RWR、DK、RWRH、MINProp、BiRW、PRINCE,这些算法被用于预测各表型的疾病基因。

IDLP和其它基线方法在测试集和交叉验证集上的表现如表3。

在p<0.05情况下在IDLP和其它基线方法在测试集的结果上进行了学生t测试。如果IDLP在AUC指标下显著优于一个基线,在表3的性能值后面加一个“*”。交叉性能的结果为每个方法选择参数。RWRH在交叉验证集上取得了最好的结果。但RWRH在测试集的性能上较IDLP明显下降。RWRH严重依赖于PPI网络和表现相似网络的完整性和正确性,导致严重的过拟合。可以看出,在测试集上,在AUC20和AUC50的条件下,IDLP的性能最好,说明IDLP可以很好地预测新发现地基因-表现关联。通过引入了双标签传播框架,将PPI网络和表现相似网络中的偏差建模到框架中,成功地利用了异构网络中的信息,克服了数据源噪声的干扰。这说明了IDLP相对于其它基线的优势。

可以看出,IDLP-P在测试集上的AUC值比IDLP-G有明显优势,说明表型相似网络中的噪声比较严重,是否对表型相似网络中的噪声建模对结果有很大的影响。还可以观察到,IDLP-G的性能比大多数基线都要差,这表明只有对PPI网络中的噪声建模才会给模型带来更多的噪声。

  • 通过文本挖掘计算表型间的相似度,构建表型相似网络。相似度评分的计算取决于表型描述的术语、术语频率、句子表达等。表型描述的完整性和准确性对表型间的相似度评分有很大的影响,因此相似度评分具有主观性,表型相似度包含较多的噪声。
  • 至于PPI网络,其大部分数据来源于体外实验,虽然不精确的测量会导致假阳性,但蛋白质之间仍然有很多真实的相互作用。PPI网络中的数据更加客观,包含的噪声更少。

造成IDLP-G和IDLP-P差异的另一个原因是,PPI网络是一个稀疏网络,表型相似网络是稠密网络。稀疏网络对网络的变化更敏感。结果表明,在PPI网络和表型相似网络上同时对噪声建模优于仅在PPI网络或表型相似网络上对噪声建模。结果表明,两种网络上的噪声建模对结果有相互增强作用。基于这一事实,在接下来的讨论中,将重点讨论IDLP,忽略它的两种变体。

为了进一步理解IDLP,对数据的构成进行分析。

图2a显示了这两个版本数据根据它们所关联的疾病基因的表型分布。具体来说,2015年8月版数据中有3785个表型与一个疾病基因相关,2016年12月版数据中表型数量增加到3877个;超过一种疾病基因的表型数量略有变化。

有123个新添加的基因-表型关联。具体来说,如图2b所示,2016年12月版数据中新增了100个表型,即2015年8月版本中有100个表型存在未知疾病基因。其余23种关联可以分为2类,19种已知疾病基因加1个疾病基因,1种已知疾病基因表型加4个新疾病基因。

由图2a和图2b可知,2015年8月版和2016年12月版之间新添加的基因-表型关联所涉及的表型大多为2015年8月版存在未知疾病基因的表型。在这里,将这些没有任何已知疾病基因的表型定义为单例表型,由于单例表型的数量占很大比例,因此研究单例表型的表现非常重要和必要。

图2c显示了使用不同关联作为测试集时的结果。图2c种的左直方图显示了当使用23个与非单例表现关联作为测试集时的表现,右直方图显示了仅使用单例表型的100个关联作为测试集时的性能。由于CIPHER_SP和CIPHER_DN的结果在直方图中太小,所以忽略。比较图2c中的这两张直方图,可以观察到,对于每种方法,对具有已知疾病基因的表型查询的预测比具有非疾病基因的表型查询的预测更精确。这与直觉一致,丰富的表型(即至少有一个已知疾病基因的表型)更容易发现疾病基因。RWRH,PRINCE和IDLP在丰富表型查询中具有较高的AUC20分。相反,单例表型的疾病基因很难识别,因为这些单例表型还没有发现已知的疾病基因。这就是RWR和DK降为0的原因。同时,IDLP在这种情况下表现最好,这说明了IDLP对单例表型的有效性

噪声讨论

一般来说,没有关于数据源中噪声是如何存在的先验信息。在处理网络中未知的不平衡噪声时,一种好的算法可以自动选择合适的惩罚值。适当的惩罚值由两种网络中的噪声情况决定,即噪声大则惩罚值大,噪声小则惩罚值小。在IDLP中,该算法对不平衡噪声具有自适应能力,通过对验证集上的参数进行网格搜索,自动选择合适的超参数。

注意,IDLP在某些情况下可能无法工作。当数据噪声较小时,IDLP可能会失败。IDLP是为了处理噪声数据而设计的,但是不必要地从噪声中学习变量会使模型偏离干净的数据。这导致算法在测试集上的性能下降。为了避免这种故障,在应用IDLP之前,最好先了解噪声的一些基本信息,并决定是否对噪声进行建模。

top-k准确率和召回率评估

实验通过准确率和召回率来评价IDLP和基线。计算每个top-k位置的精度和召回率说明不同方法之间更严格和详细的比较。准确率测量在一个表型的top-k预测中恢复的真阳性(基因)的比例。召回率是一个表型的top-k预测中恢复的真阳性和测试集中真阳性的比率。

图3和图4分别为1≤k≤25的top-k位置不同值的top-k准确率和召回率图。在给定k处的值是所有表型的平均值。IDLP由于其它基线,特别是当1≤k≤5时。例如,在图3中,IDLP的top-1准确率时0.05,时PRINCE和MINProp的第二佳准确率0.025的两倍。在图4中,IDLP的top-1召回率位0.05,也是PRINCE和MINProp第二佳召回率0.025的两倍。当k小于5时,IDLP的准确率和召回率都表现很好,尤其是top-1位置。这证明了通过双标签传播框架对偏差建模和去噪的有效性。

讨论

参数的敏感度

图5显示了参数的影响。AUC20被用来衡量性能。对于IDLP,当α变化时固定γ=1000,当γ变化时固定α=0.1。同时介绍了其它方法的性能以供参考。可以观察到当γ变大时IDLP不敏感。γ增大会提高的作用,降低对S1更新的影响,当γ足够大时,作用消失。在本实验中,设置IDLP的

IDLP的鲁棒性评估

在四种受干扰地PPI网络下,检验了每种方法地AUC20性能结果:

  1. 随即删除10%PPI数据;
  2. 随机删除10%PPI数据,添加10%PPI数据;
  3. 随即删除20%PPI数据;
  4. 随即删除20%PPI数据,随机添加20%PPI数据;

这四种情况地最佳和最差地表现被绘制成直方图上的误差条。

图6a显示了选择所有疾病表现作为测试集的结果,显示出IDLP在各种干扰下都有很好的稳定性。图6b显示了选择全部新疾病表现作为测试集的结果。当只考虑全部的新表现(即上面定义的单例表型)作为测试集时,这种优势变得更加明显。由图6可知,IDLP具有很好的鲁棒性。

鲁棒性来自于对损失函数的设计。具体来说,更新机制决定了IDLP的鲁棒性。算法1中,首先S1按照的规则更新,然后基因-表型矩阵Y按照的规则更新。充分迭代更新后,对S1产生了足够的影响,当γ变得非常大时,这个影响也会变得非常大。

预测帕金森疾病的新基因

对特定疾病的新基因进行预测,以检验IDLP预测的准确性。在获取的数据中,截至2016年12月,OMIM上有30个已知与帕金森病(PD)相关的基因。除了OMIM数据中已知的30个帕金森致病基因外,根据提出的IDLP评分,其它前10位预测基因应该与帕金森病关联最为密切。搜索了支持预测的文献,结果如表4所示。前10个基因中有8个有支持证据,对这种特定疾病的预测精度为80%。

表4中列出的10个基因在OMIM数据集中未被记录。但根据IDLP的计算结果,它们时高度PD相关的候选基因。搜索文献,试图找到这些基因和帕金森疾病之间的联系。具体来说,维拉里诺发现,特发性帕金森病在核内体受体分选/回收方面的微妙缺陷,通过发现致病突变DNAJC13而得到强调。Lu证明,CYP2D6代谢不良表型表明白种人对帕金森病具有显著的遗传易感性。Wan进行了实验,以验证DRD4多态性与帕金森病易感性相关的假设。Lesage报道了另外一名患有典型帕金森病和轻度智力迟钝的男性患者,该患者在RAB39B中存在一种新的截断突变。Sun发现TRPM7通道功能和表达的差异导致帕金森病。Laura的研究表明,SNCB基因位点可能改变PD发病的年龄。Araki发现DCTN1突变可能导致不同的神经退行性疾病诊断,包括家族性运动神经元病、帕金森病和额颞叶萎缩。Korvatska报告称,X-连锁帕金森病伴痉挛(XPDS)表现为典型的成人发作帕金森病或早期发作痉挛后出现帕金森病。我们在表4中简单列出了帕金森病的前10位预测基因、IDLP预测评分和文献证据。

总结

本文提出了一种该井的双标签传播(IDLP)算法,该算法基于优化正则化框架,而不是以往工作中给使用的交替迭代,以全局优先考虑所有表型的疾病基因。IDLP在蛋白质相互作用(PPI)网络和表型相似网络上交替进行标签传播。同时,对数据源中假阳性PPIs的噪声干扰进行建模,以获得更好的效果。通过修正训练矩阵中的噪声,显著提高了训练结果。同时给出了一个封闭解,使算法更加高效。在本文的实验中,发现IDLP在PPI网络中具有优秀的基因排序性能和良好的鲁棒性,这使IDLP成为生物学家更好的基因排序工具。

读《Prioritizing disease genes with animproved dual label propagation framework》相关推荐

  1. 读《Android 安全架构深究》

    Android 安全架构深究 安全是一个非常立体而丰富得概念.在不同的场景下,安全有着不同的含义. 比如对于网络传输,安全指的是传输的数据不会被其他人看到.篡改.伪造及仿冒,传输的数据不会遭到破坏,数 ...

  2. 《最强Android书 架构大剖析》读书笔记

    文章目录 第一章 Android 体系结构的变革之路 1.2 Android系统源码目录 与Linux的异同 Android的框架 原生二进制可执行文件 Android 的原生库 核心(core)库 ...

  3. Android Jetpack架构组件之 Room(使用、源码篇)

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...

  4. 抖音、美团等大厂千万级用户的Android客户端架构演进之路—

    在移动开发中,对开发者来说不同的人具有不同的能力.就像读一本书一样,一千个读者,有一千个哈姆雷特.但不管怎样,只要你是个软件开发者你就必须学习windows或Linux等操作系统的运行原理.Andro ...

  5. Android 图形架构之一 ——概述

    前言 本系列的文章,可以让你明白,一个View最终是如何显示到屏幕上的,从应用层到硬件抽象层.对分析app的卡顿,掉帧等 有很大帮助. 由于图形架构的涉及到的代码量很大,所以本篇先来个总体的概述,有个 ...

  6. Android display架构分析-SW架构分析(1-8)

    参考: Android display架构分析二-SW架构分析 Android display架构分析三-Kernel Space Display架构介绍 Android display架构分析四-m ...

  7. 高通Android display架构分析

    目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 K ...

  8. [Android] Android MVP 架构下 最简单的 代码实现

    Android  MVP 架构下  最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...

  9. Android系统架构-[Android取经之路]

    摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...

  10. Android系统架构图及简单的系统架构介绍

    2019独角兽企业重金招聘Python工程师标准>>> ndroid的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层. ...

最新文章

  1. java 调用c/c++
  2. python的for循环累加_在python中将6 for循环累计和矢量化
  3. 如何成为公司独当一面的工程师
  4. 栅格矢量化_学会用栅格系统,普通LOGO秒变高大上
  5. LintCode 550. 最常使用的K个单词II(自定义set(可修改数据的优先队列) + map)
  6. 【华为云技术分享】程序员实用JDK小工具归纳
  7. SQL语言基础【DDL、DML、DCL、DQL】
  8. 19 Signals and Signal Handling
  9. 函数节流(throttle)与函数去抖(debounce)
  10. 正坐标系及矢量知识,点乘与差乘,旋转
  11. 解决办法:更新linux时候提示“由于没有公钥,无法验证下列签名 ***”
  12. c语言C的ascii码是多少,c的ascii码值是多少
  13. 机器学习基础教程 -应用随机微分方程2020-最新
  14. 开发方法---形式化方法
  15. dede-采集替换关键词为空
  16. 一文解读该用开源BI工具还是智能BI工具?
  17. KEIL arm C51中常量变量函数的绝对地址设定
  18. html 置换元素和非置换元素
  19. maven打包缺少依赖异常eu.neilalexander:jnacl:jar:1.0.0 was not found in...解决
  20. 微信小程序设置缓存过期时间

热门文章

  1. 哈利波特2 消失的密室
  2. 修改 Virtual PC 2007 的显存大小
  3. android手机 运行java程序退出_手机为什么程序退出还在运行怎么办
  4. 中国国内开源社区发展的困境——以FreeBSD 吧为例
  5. Linux权限管理攻略
  6. delphi 经销商 英巴卡迪诺delphi代理
  7. 动态网页设计(ASP)期末复习总结03 asp六大基本对象
  8. UVM中的sequence
  9. 如果一百多人在漏水的船上讨价还价谁该往外多舀水
  10. 汇编程序的格式和模板