分布式分析人类免疫缺陷病毒的起源
这个例子展示了如何使用并行计算工具箱™进行两两序列比对(PWSA)。在生物信息学PWSA有多个应用程序,如多个序列分析和系统发育树重建。我们看一个PWSA使用全局动态编程算法使每一对序列,然后我们计算成对使用Tajima-Nei距离度量。这给了我们一个矩阵之间的距离序列的发展史我们用来推断HIV和SIV病毒。PWSA是一个计算昂贵的任务与复杂度O (L * L * N * N), L是序列的平均长度和N是序列的数量(杜宾,et al。剑桥大学出版社,1998年)。
关于计算的细节,视图pctdemo_setup_hiv的代码。
先决条件:
相关例子:
分析的顺序问题
首先,我们看看如何计算顺序的例子符合模型中引入的将MATLAB®计算划分为任务的例子。调用seqpdist
是最计算密集型顺序示例的一部分,它主要执行以下参数扫描:
全对(s1, s2)形成元素的seq距离(s1, s2) = seqpdist (s1, s2);结束
当然,距离是对称的,也就是说,seqpdist (s1, s2) = seqpdist (s1, s2)
。因为seqpdist
可以根据整个输入序列的距离seq
,我们需要计算重正化因素在这个例子中,我们还需要确定测量距离之间的配对。
因为我们计算数量相当大的距离,我们每个任务计算一些距离。这需要我们编写一个简单的函数调用包装器的任务seqpdist
。
加载示例设置和数据
示例使用默认配置文件时识别集群使用。的资料文档解释如何创建新的配置文件以及如何修改默认概要文件。看到定制的设置并行计算工具箱™的例子说明如何更改例如难度或创建的任务的数量。
(困难,myCluster numTasks] = pctdemo_helper_getDefaults ();
的pctdemo_setup_hiv
函数获取蛋白质序列信息从NCBI基因库®数据库,和困难
参数控制多少蛋白质序列检索。你可以视图pctdemo_setup_hiv的代码全部细节。
(波尔图,描述)= pctdemo_setup_hiv(困难);numViruses =长度(pol);开始时间=时钟;
从NCBI基因库数据库下载数据下载完成
把工作分成小任务
我们使用Tajima-Nei方法测量之间的距离波尔编码区域。Tajima-Nei距离是基于频率整个集团的核苷酸序列。当你打电话seqpdist
只有两个序列,函数计算基于只有两个序列的核苷酸计数,而不是整个团队。因此,我们计算频率基于整个集团和传递这些信息seqpdist
。
公元前= basecount (strcat (pol.Sequence));男朋友=[公元前。公元前。C bc。G bc.T) / (bc。+ bc。C + bc。G + bc.T);
让我们找到我们想要的参数空间的遍历。的seqpdist
文档在这方面为我们提供了有用的信息:
% D = SEQPDIST (seq)返回一个包含生物距离矢量D%之间每一对序列存储在M细胞的元素% >。D是一个(M * (M - 1) / 2) 1的向量,相应的M * (M - 1) / 2%对seq的序列。输出D的顺序安排% (2,1),(3,1),…(M, 1), (2),……(M, 2), ..... (M M - 1),即,较低的%的左三角形全m×m距离矩阵。
基于这些信息,我们创建两个向量,Aseq
和Bseq
包含之间的序列对,计算距离。
Aseq =结构;Bseq =结构;印第安纳州= 1;为j = 1: numViruses为我= j + 1: numViruses Aseq(印第安纳州)。序列=波尔(j) . Sequence;Bseq(印第安纳州)。序列=波尔(i) . Sequence;印第安纳州=印第安纳+ 1;结束结束
我们想把向量Asplit
和Bsplit
之间的任务。
[Asplit, numTasks] = pctdemo_helper_split_vector (Aseq numTasks);Bsplit = pctdemo_helper_split_vector (Bseq numTasks);流([这个例子将提交作业任务% d (s)”…“集群。\ n”),numTasks);
这个例子将提交作业4 s到集群的任务。
创建和提交工作
我们创建一个工作和任务的工作。任务我
计算两两元素之间的距离Asplit{我}
和Bsplit{我}
。你可以视图pctdemo_task_hiv的代码全部细节。
工作= createJob (myCluster);为i = 1: numTasks createTask(工作,@pctdemo_task_hiv 1 {Asplit {}, Bsplit{},男朋友});结束
我们现在可以提交工作,等待它完成。
提交(工作);等待(工作);
检索结果
当我们获得和验证所有的结果,我们允许集群免费资源。fetchOutputs
会抛出一个错误如果成功的任务没有完成,在这种情况下,我们需要删除之前把错误的工作。
试一试jobResults = fetchOutputs(工作);抓犯错删除(工作);重新抛出(错);结束pold = cell2mat (jobResults (: 1)) ';
我们已经完成了所有的验证,所以我们可以删除工作。
删除(工作);
测量时间
用于分布式计算的时间应该是比较反对执行相同的计算时间序贯分析人类免疫缺陷病毒的起源的例子。时间随底层硬件和网络基础设施。
elapsedTime =结束(时钟、开始时间);流(运行时间是% 2.1 f秒\ n ',elapsedTime);
运行时间是34.8秒
阴谋的结果
现在我们的距离,我们可以构建的系统发育树波尔蛋白质。你可以视图pctdemo_plot_hiv的代码全部细节。
pctdemo_plot_hiv(无花果、pold、描述);