这个包包含一个更新的并行实现UniBic biclustering算法(Wang2016)基因表达数据。该算法定位trend-preserving biclusters在复杂和嘈杂的数据和被认为是biclustering最准确的方法。
因为他们的第一个应用程序(Cheng2000)基因表达数据biclustering算法[Eren2012]获得了人气。这样做的原因是方法同时检测有效模式的能力只包括在数据行和列的子集。
在这个包中,我们提供了一种有效的并行改进实施UniBic biclustering算法。据说这种先进的算法优于多个biclustering方法合成和基因数据集。我们的主要贡献是重新实现方法为更现代c++ 11语言以及多个改进代码(内存管理、代码重构等)。
这个包提供了以下主要功能:
BCUnibic
/runibic
——平行UniBic连续数据BCUnibicD
——平行UniBic离散数据包提供了一些额外的功能:
pairwiseLCS
——计算最长公共子序列(LCS)两个向量之间的关系calculateLCS
——计算两两之间lcs的输入数据集(斐波那契堆或标准排序)backtrackLCS
——复苏LCS的动态规划矩阵集群
UniBic算法的主要部分(biclusters播种和扩展)unisort
——返回矩阵索引的基础上,增加在每一行离散化
——执行离散化使用斐波那契堆(排序方法最初用于UniBic)这个例子展示了runibic合成数据的基本用法。我们开始加载库。
首先,我们准备一个随机矩阵。
然后,我们运行UniBic biclustering算法在数据集。我们使用一个Biclust
包包装。
我们可以检查返回的结果的方法。让我们看看有多少biclusters检测到。
我们也可以检查一个特定的行bicluster,例如第三个。
同样我们可以检查第三bicluster索引的列。
在biclustering视觉分析是非常有用的。我们画的热图bicluster使用获得的drawHeatmap
函数biclust
包中。
我们也可以给bicluster平行坐标图的功能parallelCoordinates
从biclust
包中。
同样的包可以用来找到离散数据的趋势。我们运行runiDiscretize
函数。
最后,我们运行UniBic算法用于处理离散数据集。
这个示例介绍了如何使用runibic包样本数据集。后加载所有必需的库
我们应用UniBic biclustering酵母样本数据集的方法biclust
包中。
92 biclusters方法发现。现在我们将分析结果。我们将开始绘制的热图的第一个发现bicluster使用drawHeatmap
从biclust
包中。
然后我们可以检查的结果绘制基因bicluster使用平行坐标图parallelCoordinates
函数biclust
包中。
runibic第三应用程序使用数据集的算法从一个RNA-Seq实验(SummarizedExperiment
)。我们开始加载必要的包(runibic
,SummarizedExperiment
),加载数据集气管。
我们将只有一个子集的数据检查方法是否可以返回任何模式。
看看UniBic检测到任何模式的数据集。
可以使用可视化的结果parallelCoordinates
方法从biclust
包中。
我们也可以画一个与第二bicluster热图。
runibic包分析的另一个非常有用的应用程序真正从基因表达综合(GEO)获得的数据集。对于这个任务我们将使用三个包:getGEO
从GEOquery
下载数据,GDS2eSet
从affy
将数据集ExpressionSet
最后exprs
提取基因表达矩阵。
我们下载数据集与鼠外围,从基因表达综合大脑区域。
现在我们将数据集转换成ExpressionSet数据集的子集。
我们在前100的基因进行分析。
最后,我们画出的热图第一bicluster使用drawHeatmap
函数biclust
包中。
我们加载包QUBIC biclustering算法进行比较
现在,我们使用CC执行biclustering Bimax, Qubic,格子和Unibic:
resCC < -biclust::biclust(BicatYeast方法=BCCC())resBi < -biclust::biclust(BicatYeast方法=BCBimax())resQub < -biclust::biclust(BicatYeast方法=BCQU())resPlaid < -biclust::biclust(BicatYeast方法=BCPlaid())resUni < -biclust::biclust(BicatYeast方法=BCUnibic())
聚类的结果相比,可以使用showinfo
从QUBIC
包中。
最长公共子序列(LCS)最长的两个向量之间的一系列的数据存在于两个向量分析。让我们准备两个向量的分析。
您可能会注意到,值(1、2、4)都包含在这两个向量:A: (1 2 x, x 4 x)和B: (2 x, 1, x, x, 4)
让我们使用提供的方法包计算最长公共子序列。我们首先检查该值向量使用很常见backtrackLCS
。
然后使用动态规划计算最长公共子序列的矩阵pairwiselLCS
在我们的下一个示例中,我们会发现矩阵内的最长公共子序列的长度我们开始准备输入矩阵。
< - - - - - -矩阵(c(11,17,12,10,8,9,19,15,18,13,14,7,4,6,16,2,3,1,5,20.,17,1,8,15,5,10,2,12,9,7,3,14,11,4,6,16,20.,13,19,18,15,8,17,12,18,14,19,11,16,20.,10,13,6,3,7,9,1,2,5,4,15,12,16,9,19,17,10,18,11,20.,8,13,2,5,7,14,1,3,4,6,15,10,9,6,13,19,7,18,16,17,14,4,3,1,2,20.,12,5,11,8,1,7,4,3,2,6,8,13,5,9,12,11,16,15,17,10,19,20.,14,18,10,5,3,9,2,11,6,13,8,1,7,4,16,14,15,12,18,17,20.,19,10,5,1,12,8,11,7,13,6,4,3,2,18,14,15,9,17,16,20.,19,9,6,3,10,1,12,7,13,8,2,5,4,16,14,15,11,19,17,20.,18,12,8,1,3,2,11,4,14,9,7,10,5,16,13,15,6,18,17,20.,19),nrow =10,byrow =真正的)
我们在每一行数据的功能unisort
提供的runibic
包中。
现在我们计算每一对之间的LCS长度的行calculateLCS
利用斐波那契堆或标准。
您可能会注意到,根据所选择的方法结果可能有所不同。
我们可以检查最长公共子序列的长度(例如LCS行6和7 = 10)之间。
首先,我们创建一个随机矩阵
从UniBic离散化(使用原始排序方法使用斐波那契堆)可以应用使用runiDiscretize
函数。
为了充分利用runibic提供的模块化,我们应用UniBic算法一步一步使用标准的稳定。最后一个例子展示了如何使用集群功能的方案。创建一个矩阵后我们每一行中的值并计算所有成对的行之间的LCS。
< - - - - - -矩阵(c(4,3,1,2,5,8,6,7,9,10,11,12),nrow =4,byrow =真正的)iA < -unisort(一)lcsResults < -calculateLCS(一个useFibHeap =假)
最后,我们应用集群
功能检查结果。
原来的顺序biclustering算法请使用以下引用:
李* * Zhenjia Wang Guojun Robert w . Robinson Xiuzhen黄UniBic:序贯行的biclustering基因表达数据的分析算法科学报告6,2016;23466年,doi:https://doi: 10.1038 / srep23466 * *
如果你使用这个包在你的工作与并行版本的UniBic请使用以下引用:
Patryk Orzechowski,阿图尔Pańszczyk, Xiuzhen黄,杰森·H·摩尔;runibic: Bioconductor包并行行的biclustering基因表达数据生物信息学,bty512,https://doi.org/10.1093/bioinformatics/bty512
助理条目:
作者@article {orzechowski2018runibic = {Orzechowski, Patryk Pańszczyk,阿图尔和黄,Xiuzhen摩尔,杰森H}, title = {runibic: Bioconductor方案并行基因表达数据的基于行的biclustering},杂志={生物信息学},体积={},数量={},页面= {bty512} = {2018}, doi ={10.1093 /生物信息学/ bty512}, URL = {http://dx.doi.org/10.1093/bioinformatics/bty512}, eprint ={/牛津大学出版社/过期刊物/ content_public /杂志/生物信息学/巴氏/ 10.1093 _bioinformatics_bty512/4 / bty512。pdf}}