主要内容

使用顺序和并行计算的光谱批处理

此示例演示如何使用一台计算机、一台多核计算机或一组计算机对大量质谱信号进行预处理。注:并行计算工具箱™ 和MATLAB®并行服务器™ 在本示例的最后一部分中需要。

介绍

这个例子显示了在一组包含在一个或多个目录中的质谱上建立批处理操作所需的步骤。您可以按顺序或使用多核计算机或计算机集群并行地实现此目标。批处理适应单程序多数据(SPMD)并行计算模型,最适合并行计算工具箱™和MATLAB®并行服务器™。

预处理信号来自蛋白质表面增强激光解吸/电离飞行时间(SELDI-TOF)质谱。本例中的数据来自FDA-NCI临床蛋白质组学计划数据库.特别是,该示例使用了使用WCX2蛋白阵列生成的高分辨率卵巢癌数据集。有关该数据集的详细描述,请参见[1]和[2]。

为数据设置存储库

此示例假定您已将数据集下载并解压缩到存储库中。理想情况下,您应该将数据集放置在网络驱动器中。如果所有工作人员都可以访问网络上的相同驱动器,则他们可以访问驻留在这些共享资源上的所需数据。这是共享数据的首选方法,因为它是迷你型的使网络流量最大化。

首先,获取数据存储库的名称和完整路径。定义了两个字符串:从本地计算机到存储库的路径和群集计算机访问同一目录所需的路径。根据您的网络配置相应地更改这两个字符串。

local_repository =“C: / / MassSpecRepository / OvarianCD_PostQAQC /的例子;worker_repository =L: / / MassSpecRepository / OvarianCD_PostQAQC /例子'

对于这个特定的示例,文件存储在两个子目录中:'Normal'和'Cancer'。属性可以创建包含要处理的文件的列表迪尔命令

cancerFiles=dir([local\u存储库“Cancer/*.txt”) normalFiles = dir([local_repository .]“正常/ * . txt”])
cancerFiles=121×1结构数组,带字段:名称文件夹日期字节isdir datenum normalFiles=95×1结构数组,带字段:名称文件夹日期字节isdir datenum

把它们放到一个变量中:

文件= [strcat(“癌症/”,{cancerFiles.name})...strcat (“正常/ ', {normalFiles.name}));N =元素个数(文件)%文件总数
N = 216

连续的批处理

在尝试并行处理所有文件之前,需要使用for循环在本地测试算法。

用需要应用于每个数据集的顺序指令集编写一个函数。输入参数是数据的路径(取决于实际执行工作的机器如何查看它们)和要处理的文件列表。输出参数是预处理信号和M/Z向量。因为预处理后的每个谱图的M/Z矢量都是相同的,所以只需要存储一次即可。例如:

类型msbatch处理
预处理文件文件中的%谱图,返回质量/电荷(MZ)和离子%强度(Y)向量。预处理步骤中的硬编码参数已调整为处理示例的高分辨率光谱图。版权所有2004-2012 The MathWorks, Inc.K =元素个数(文件);Y = 0 (15000 K);%需要预设Y的大小以获得内存性能MZ = 0 (15000,1);parfor k = 1: k file = [repository files{k}];% read the two-column text file with mass-charge and intensity values(文件,'r');Ftext = textscan(fid, '%f%f'); / /输出文件关闭(fid); signal = ftext{1}; intensity = ftext{2}; % resample the signal to 15000 points between 2000 and 11900 mzout = (sqrt(2000)+(0:(15000-1))'*diff(sqrt([2000,11900]))/15000).^2; [mz,YR] = msresample(signal,intensity,mzout); % align the spectrograms to two good reference peaks P = [3883.766 7766.166]; YA = msalign(mz,YR,P,'WIDTH',2); % estimate and adjust the background YB = msbackadj(mz,YA,'STEP',50,'WINDOW',50); % reduce the noise using a nonparametric filter Y(:,k) = mslowess(mz,YB,'SPAN',5); % the mass/charge vector is the same for all spectra after the resample if k==1 MZ(:,k) = mz; end end

函数中的注释MSBATCHPROCESSING故意使用帕弗而不是对于.批处理通常由迭代之间独立的任务实现。在这种情况下,语句对于冷漠能变成什么帕弗,创建一系列MATLAB®语句(或程序),这些语句(或程序)可以在顺序计算机、多核计算机或计算机集群上无缝运行,而无需修改。在本例中,循环按顺序执行,因为您没有创建并行池(假设在Parallel Computing Toolbox™Preferences中没有选中用于自动创建并行池的复选框,否则MATLAB无论如何都会并行执行)。为示例目的,只有20个光谱图被预处理并存储在Y矩阵。您可以测量MATLAB®需要的时间数量,以完成环路使用抽搐TOC命令。

Tic repository = local_repository;K = 20;%改为N来做所有的事情(MZ, Y) = msbatchprocessing(存储库,文件(1:K));disp (sprintf ('光谱图%d的顺序时间:%f秒', K, toc))
20个光谱图的顺序时间:7.725275秒

多核计算机并行批处理

如果您有Parallel Computing Toolbox™,您可以使用本地工作者并行化循环迭代。例如,如果你的本地机器有四个核,你可以使用默认的'local'集群配置文件启动一个有四个worker的并行池:

POOL=parpool(“本地”4);Tic repository = local_repository;K = 20;%改为N来做所有的事情(MZ, Y) = msbatchprocessing(存储库,文件(1:K));disp (sprintf (' 4个本地工作人员的平行时间%d摄谱图:%f秒', K, toc))
使用“local”配置文件启动并行池(parpool)…连接平行池(工位4人),与4位本地工位20幅谱图平行时间:3.549382秒

停止本地工作人员池:

删除(池)

分布式并行批处理

如果你有并行计算工具箱™和MATLAB®并行服务器™,你也可以将循环迭代分配到更多的计算机。在本例中,集群配置文件'compbio_config_01'链接到6个worker。有关设置和选择并行配置的信息,请参阅并行计算工具箱™文档中的“集群概要文件和计算缩放”。

请注意,如果您编写了自己的批处理功能,则应使用群集配置文件管理器将其包含在相应的群集配置文件中。这将确保MATLAB®将新功能正确传输给工作人员。您可以使用MATLAB®桌面上的平行下拉菜单访问群集配置文件管理器。

POOL=parpool(“compbio_config_01”6);Tic repository = worker_repository;K = 20;%改为N来做所有的事情(MZ, Y) = msbatchprocessing(存储库,文件(1:K));disp (sprintf ('对于%d个光谱图,与6个远程工作者的并行时间:%f秒', K, toc))
使用“compbio_config_01”配置文件启动并行池(parpool)…连接并联池(6个工位),与6个远程工位20个谱图并行时间:3.541660秒

停止集群池:

删除(池)

异步并行批处理

上述执行方案都是同步运行的,也就是说,它们阻塞MATLAB®命令行,直到执行完成。如果要启动批处理作业并在计算异步运行时访问命令行(异步),您可以手动分发并行任务并在以后收集结果。此示例使用与以前相同的群集配置文件。

用一个任务创建一个任务(MSBATCHPROCESSING).任务在一个工人及其内部运行帕弗在并行配置中,循环分布在所有可用的worker中。注意,如果N(光谱图的数量)比并行配置中可用的工作人员的数量大得多,parallel Computing Toolbox™自动平衡工作负载,即使您有异构集群。

抽搐%启动时钟repository=worker\u repository;K=N;%做所有的光谱图集群= parcluster (“compbio_config_01”); 作业=创建通信作业(群集,“NumWorkersRange”6 [6]);任务= createTask(工作,@msbatchprocessing 2{库,文件(1:K)});提交(工作)

当作业提交时,您的本地MATLAB®提示立即返回。一旦并行资源可用,并行作业就开始了。同时,您可以通过检查并行作业来监视任务工作对象。使用等待方法以编程方式等待任务完成:

等待(任务)的任务。OutputArguments
Ans = 1×2 cell array {15000×1 double} {15000×216 double}
MZ=TASK.OutputArguments{1};Y=TASK.OutputArguments{2};销毁(作业)%完成检索结果disp (sprintf (“并行时间(异步)与6个远程工作者%d光谱图:%f秒”, K, toc))
并行时间(异步)与6个远程工作人员216个光谱图:68.368132秒

后处理

收集完所有数据后,就可以在本地使用它了。例如,可以应用组规范化:

Y=msnorm(MZ,Y,“分位数”, 0.5,“限制”(3500 11000),“马克斯”, 50);

为每个谱图以及索引向量创建具有该类型的分组向量。这种“标记”将有助于对数据集进行进一步的分析。

grp = [repmat ({“癌症”},大小(癌变文件);...雷普马特({“正常”},大小(normalFiles));cancerIdx =找到(strcmp (grp,“癌症”));元素个数(cancerIdx)“Cancer”子目录中的文件数
ans = 121
normalIdx =找到(strcmp (grp,“正常”));numel(normalIdx)“Normal”子目录下的文件数
ans=95

标记数据后,可以使用不同的颜色(本例中每组的前五个)显示每个类别的一些光谱图。

h=曲线图(MZ,Y(:,cancerIdx(1:5)),“b”,MZ,Y(:,normalIdx(1:5)),“r”);xlabel([7650 8200 -2 50])“质量/电荷(M / Z)”); ylabel (“相对强度”)传说(h(结束[1]),{卵巢癌的,“控制”})标题(“预处理光谱图区域”)

保存预处理的数据集,因为它将在示例中使用识别重要特征并对蛋白质图谱进行分类质谱数据特征的遗传算法搜索

保存OvarianCancerQAQCdataset.matYMZ玻璃钢

免责声明

抽搐-TOC这里以计时为例。顺序和并行执行时间将根据所使用的硬件而变化。

参考文献

[1]Conrads, T P, V A Fusaro, S Ross, D Johann, V Rajapakse, B A Hitt, S M Steinberg,等“高分辨率血清蛋白质组学特征用于卵巢癌检测”。内分泌相关癌症,2004年6月,163-78。

[2]Petricoin,Emanuel F,Ali M Ardekani,Ben A Hitt,Peter J Levine,Vincent A Fusaro,Seth M Steinberg,Gordon B Mills,et al.“利用血清蛋白质组模式识别卵巢癌”,《柳叶刀》359,第9306期(2002年2月):572-77。

另见

||||