主要内容

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

此示例显示了如何使用单个计算机,多核计算机或计算机集群以预处理大集质谱信号。注意:此示例的最后一部分需要并行计算工具箱™和MATLAB®PartantServer™。

介绍

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

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

为数据设置存储库

此示例假定您已下载并未压缩数据集到存储库中。理想情况下,您应该将数据集放在网络驱动器中。如果工人都可以访问网络上的相同驱动器,则可以访问驻留在这些共享资源上的所需数据。这是共享数据的首选方法,因为它最大限度地减少了网络流量。

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

local_repository =.'C:/ examples / masspecropository / ovararcd_postqaqc /';Worker_Repository =.'l:/ examples / masspecropository / ovararcd_postqaqc /';

对于此特定示例,文件存储在两个子目录中:“普通”和“癌症”。您可以创建包含要使用文件进行处理的列表谜语命令,

癌症= dir([local_repository'癌症/ *。TXT'])普通文件= dir([local_repository'正常/ *。txt'])
CancerFiles = 121×1结构阵列与字段:名称文件夹日期字节ISDIR数据rancorFiles = 95×1结构阵列与字段:名称文件夹日期字节ISDIR数据

并将它们放入一个变量:

files = [strcat('癌症/',{cancerfiles.name})......Strcat('普通的/',{normalfiles.name})];n = numel(文件)%总数的总数
n = 216.

顺序批处理

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

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

类型msbatchprocessing
函数[mz,y] = msbatchprocessing(存储库,文件)%msbatchprocessing示例函数for biodistcompdemo%up%up%up%up%[mz,y] = msbatchprocessing(存储库,文件)预处理文件文件中的%谱图并返回质量/充电(MZ)和离子%强度(Y)载体。预处理步骤中的%%硬编码参数已经调整为%处理该示例的高分辨率谱图。%Copyright 2004-2012 MathWorks,Inc.K = Numel(文件);y =零(15000,k);对于存储性能MZ =零(15000,1),%需要预设Y的大小;k = 1:k文件= [存储库文件{k}];%读取具有大规模充电和强度值fid = fopen(文件,'r')的两列文本文件;ftext = textscan(fid,'%f%f');fclose(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®语句(或程序)序列,而无需修改它。在这种情况下,循环顺序执行,因为您未创建并行池(假设在并行计算工具箱™首选项中未选中该复选框,则不会检查Matlab,否则将并行执行)。为了示例目的,仅预处理20个谱图并存储在y矩阵。您可以测量Matlab®需要使用的时间量Tic.TOC.命令。

tic存储库= local_repository;k = 20;%改变为n做所有人[MZ,Y] = msbatchProcessing(存储库,文件(1:k));DISP(SPRINTF('%d频谱图的顺序时间:%f秒',k,toc))
序列时间为20分谱图:7.725275秒

具有多核计算机的并行批处理

如果您有并行计算工具箱™,则可以使用本地工人并行化循环迭代。例如,如果您的本地机器有四个核心,则可以使用默认的“本地”群集配置文件启动具有四名工人的并行池:

池= parpool('当地的'4);tic存储库= local_repository;k = 20;%改变为n做所有人[MZ,Y] = msbatchProcessing(存储库,文件(1:k));DISP(SPRINTF('平行时间有四名本地工人的%d谱图:%f秒',k,toc))
使用“本地”配置文件...连接到并行池(工人数:4)开始并行池(Parpool)。平行时间与四个本地工人20分谱图:3.549382秒

停止当地工人池:

删除(池)

具有分布式计算的并行批处理

如果您有并行计算工具箱™和MATLAB®PartantServer™,您还可以将循环迭代分发到更大数量的计算机。在此示例中,群集配置文件'compbio_config_01'链接到6个工人。有关设置和选择并行配置的信息,请参阅并行计算工具箱™文档中的“群集配置文件和计算缩放”。

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

池= parpool('compbio_config_01'6);TIC Repository = Worker_Repository;k = 20;%改变为n做所有人[MZ,Y] = msbatchProcessing(存储库,文件(1:k));DISP(SPRINTF('平行时间有6个遥控器的%d频谱图:%f秒',k,toc))
使用“CompBio_Config_01”配置文件启动并行池(Parpool)...连接到并行池(工人数:6)。6个遥控器的平行时间20分谱图:3.541660秒

停止群集池:

删除(池)

异步并行批处理

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

使用一项任务创建一个作业(msbatchprocessing)。任务在其中一个工人上运行,其内部议案循环在并行配置中的所有可用工人之间分发。请注意,如果N(谱图的数量)远大于并行配置中可用工人的数量,并行计算工具箱™自动平衡工作负载,即使您有异构群集。

Tic.%启动时钟存储库= worker_repository;k = n;%频谱图cluster = parcluster('compbio_config_01');作业= createCommunicatingJob(群集,'numworkersrange',[6 6]);任务= createTask(作业,@ msbatchprocessing,2,{存储库,文件(1:k)});提交(工作)

提交作业后,您的本地MATLAB®Quelt立即返回。一旦并行资源可用,您的并行作业就会启动。同时,您可以通过检查来监控您的并行工作任务或者工作对象。使用等待以编程方式等待到任务完成的方法:

等待(任务)任务.Outputrguments
ANS = 1×2单元阵列{15000×1双} {15000×216双}
mz = task.outputarguments {1};y = task.outputarguments {2};摧毁(工作)%完成检索结果DISP(SPRINTF(“并行时间(异步),具有6个远程工作者的%d频谱图:%f秒',k,toc))
平行时间(异步)有6个遥控器的216次频谱图:68.368132秒

后期处理

收集所有数据后,您可以在本地使用它。例如,您可以应用组归一化:

y = msnorm(mz,y,'standile',0.5,'限制',[3500 11000],'最大限度',50);

使用每个频谱图的类型和索引向量创建分组向量。这种“标签”将有助于对数据集进行进一步的分析。

grp = [repmat({'癌症'},大小(癌症));......repmat({'普通的'},大小(普通文件))];canceridx =查找(Strcmp(grp,'癌症'));numel(canceridx)%“癌症”子目录中的文件数
ans = 121.
normalidx = find(strcmp(grp,'普通的'));numel(normalidx)%“正常”子目录中的文件数
ans = 95.

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

H = Plot(MZ,Y(:,Canceridx(1:5)),'B',MZ,Y(:,普通方式(1:5)),'r');轴([7650 8200 -2 50])Xlabel('质量/充电(m / z)'); ylabel(“相对强度”)传奇(H([1结束]),{'卵巢癌''控制'}) 标题('预处理谱图的区域'

保存预处理的数据集,因为它将在示例中使用识别显着的特征和分类蛋白质谱遗传算法在质谱数据中搜索特征

保存ovararcancerqaqcdataset.matyMZ.GRP.

免责声明

Tic.-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]百素,Emanuel F,Ali M Ardekani,Ben A Hitt,Peter J Levine,Vincent A Fusaro,Seth M Steinberg,Gordon B Mills等。“在血清中使用蛋白质组学模式来鉴定卵巢癌。”柳叶瓶359,没有。9306(2002年2月):572-77。

也可以看看

||||