主要内容

预处理原始质谱数据

这个例子展示了如何提高原始质谱数据的质量。特别地,本例说明了预处理蛋白质表面增强激光解吸/电离飞行时间质谱(SELDI-TOF)的典型步骤。

加载数据

质谱数据可以以不同的格式存储。如果数据存储在有两列的文本文件中(质量/电荷(M/Z)比值和相应的强度值),您可以使用以下MATLAB®I/O函数之一:importdatadlmread,或textscan.或者,如果数据存储在JCAMP-DX格式的文件中,则可以使用该函数jcampread.如果数据包含在Excel®工作簿的电子表格中,则可以使用此函数xlsread如果数据存储在mzXML格式的文件中,可以使用该函数mzxmlread最后,如果数据存储在SPC格式的文件中,可以使用tgspcread

本例使用了来自NCI/FDA的低分辨率卵巢癌数据集之一的频谱图FDA-NCI临床蛋白质组学项目数据库.这些光谱是使用WCX2蛋白结合芯片生成的,其中两个用手动样本处理,两个用机器人样本分配器/处理器。

样本= importdata(“mspec01.csv”
sample = struct with fields: data: [15154x2 double] textdata: {'M/Z' 'Intensity'} colheaders: {'M/Z' 'Intensity'}

M/Z比值在表的第一列数据场和离子强度在第二。

MZ = sample.data(:,1);Y = sample.data(:,2);

为了更好地处理数据,您可以加载多个频谱图并将它们连接到单个矩阵中。使用dlmread函数读取逗号分隔的值文件。注意:本例假设这四个文件的M/Z比相同。对于具有不同M/Z比的数据集,使用msresample来创建一个统一的M/Z向量。

文件= {“mspec01.csv”“mspec02.csv”“mspec03.csv”“mspec04.csv”};i = 1:4 Y(:,i) = dlmread(files{i},”、“, 1, 1);%跳过第一行(标头)结束

使用情节命令检查加载的频谱图。

plot(MZ,Y)坐标轴([0 20000 -20 105])“质量/电荷(M / Z)”) ylabel (的相对强度)标题(“四个低分辨率质谱例子”

重新采样光谱

重采样质谱数据有几个优点。它使质量/电荷(M/Z)矢量均匀化,允许您在相同的参考和相同的分辨率下比较不同的光谱。在高分辨率数据集中,大文件大小导致计算密集型算法。然而,高分辨率光谱可能是多余的。通过重新采样,可以将信号抽取为更易于管理的M/Z向量,同时保留光谱的信息内容。的msresample函数允许您选择新的M/Z向量,并应用抗混叠滤波器,防止高频噪声折叠成较低的频率。

从NCI/FDA高分辨率卵巢癌数据集中加载高分辨率光谱。为了方便起见,频谱包含在mat格式的文件中。

负载sample_hi_res元素个数(MZ_hi_res)
Ans = 355760

在2000到11000之间将光谱降采样到10000 M/Z点。使用SHOWPLOT属性创建一个自定义图,使您可以跟踪和评估预处理操作的质量。

[MZH,YH] = msresample(MZ_hi_res,Y_hi_res,10000,“范围”(2000 11000),“SHOWPLOT”,真正的);

放大到一个缩小的区域,揭示了下采样过程的细节。

轴([3875 3895 0 90])

基线校正

质谱数据通常显示由基质中的化学噪声或离子过载引起的变化基线。的msbackadj函数估计低频基线,该基线隐藏在高频噪声和信号峰值之间。然后从谱图中减去基线。

调整光谱图的基线,只显示第二张及其估计的背景。

YB = msbackadj(MZ,Y,“WINDOWSIZE”, 500,分位数的, 0.20,“SHOWPLOT”2);

剖面光谱对准

质谱仪的错误校准导致观测到的M/Z矢量和离子的真实飞行时间之间的关系发生变化。因此,在重复实验中会出现系统性的位移。当谱图中有一个已知的峰轮廓时,您可以使用该函数msalign标准化M/Z值。

为了使光谱图对齐,提供一组M/Z值,其中预计会出现参考峰。还可以定义具有相对权重的向量,对齐算法使用该向量来强调面积较小的峰值。

P = [3991.4 4598 7964 9160];% M/Z参考峰位置W = [60 100 60 100];%权重为参考峰

显示热图,观察应用对齐算法前后光谱的对齐情况。

msheatmap (MZ, YB,“标记”、磷、“范围”,[3000 10000])标题(“之前对齐”

将光谱图与给定的参考峰对齐。

YA = msalign(MZ,YB,P,“重量”, W);msheatmap (MZ,是的,“标记”、磷、“范围”,[3000 10000])标题(调整后的

归一化

在重复实验中,经常发现解吸蛋白和电离蛋白的总量存在系统性差异。的msnorm函数实现了典型规范化(或标准化)方法的几种变体。

例如,标准化频谱图值的许多方法之一是将每个信号的最大强度重新缩放到特定的值,例如100。也有可能忽略有问题的地区;例如,在血清样本中,您可能要忽略低质量区域(M/Z < 1000 Da.)。

YN1 = msnorm(MZ,YA,分位数的, 1“限制”, 1000年正无穷,“马克斯”, 100);图图(MZ,YN1)轴([0 10000 -20 150])“质量/电荷(M / Z)”) ylabel (的相对强度)标题(“归一化到最大峰值”

msnorm函数也可以通过使用曲线下面积(AUC)来标准化,然后重新缩放光谱图,使其相对强度低于100。

YN2 = msnorm(MZ,YA,“限制”, 1000年正无穷,“马克斯”, 100);图图(MZ,YN2)轴([0 10000 -20 150])“质量/电荷(M / Z)”) ylabel (的相对强度)标题(“使用曲线下面积(AUC)归一化”

保峰降噪

标准光谱通常包含噪声和信号的混合物。一些应用要求对谱图进行降噪,以提高光谱中峰的质量/电荷观测值的有效性和精度。出于同样的原因,去噪也进一步改进了峰值检测算法。然而,尽可能保留峰值的锐度(或高频成分)是很重要的。为此,你可以使用Lowess平滑(mslowess)和多项式滤波器(mssgolay).

用二阶多项式滤波器平滑谱图。

YS = mssgolay(MZ,YN2,“跨越”, 35岁,“SHOWPLOT”3);

放大到一个缩小的区域显示了平滑算法的细节。

轴([8000 9000 -1 8])

用小波去噪寻找峰值

寻找假定峰值的一个简单方法是查看平滑信号的一阶导数,然后对其中一些位置进行填充,以避免出现小的离子强度峰值。

P1 = mspoke (MZ,YS,“去噪”假的,“HEIGHTFILTER”2,“SHOWPLOT”, 1)
P1 = 4x1单元格数组{164x2 double} {171x2 double} {169x2 double} {147x2 double}

mspeaks函数也可以用小波去噪来估计噪声。这种方法通常更稳健,因为峰值检测可以直接实现噪声谱。该算法能适应信号的不同噪声条件,即使存在低分辨率或过分割的情况下也能分辨出峰值。

P2 = mspeaks(MZ,YN2,“基地”12“乘数”10“HEIGHTFILTER”, 1“SHOWPLOT”, 1)
P2 = 4x1单元格阵列{322x2 double} {370x2 double} {324x2 double} {295x2 double}

消除低质量区域的额外峰值

P3 = cellfun(@(x) x(x(:,1)>1500,:),P2,“统一”假)
P3 = 4x1单元格阵列{81x2 double} {93x2 double} {57x2 double} {53x2 double}

分箱:通过层次聚类进行峰值聚类

与类似化合物相对应的峰仍然可能报告有轻微的质量/电荷差异或漂移。假设这四张光谱图对应于可比较的生物/化学样品,比较不同光谱的峰值可能是有用的,这需要峰宾化(也称为峰聚并)。数据装箱的关键任务是创建一个公共质量/电荷参考向量(或箱)。理想情况下,容器应该从每个信号中收集一个峰值,并且应该避免从同一个信号中收集多个相关峰值到同一个容器中。

这个例子使用层次聚类来计算一个公共的质量/电荷参考向量。当使用低分辨率光谱时,该方法是足够的;然而,对于高分辨率光谱或具有许多光谱图的数据集,函数mspalign提供其他可伸缩的方法来估计公共质量/电荷参考并执行数据分箱。

把所有的峰放到一个数组中,用每个峰的谱图索引构造一个矢量。

allPeaks = cell2mat(P3);numPeaks = cellfun(@(x) length(x),P3);Sidx = accumarray(cumsum(numPeaks),1);Sidx = cumsum(Sidx)-Sidx;

创建一个自定义距离函数,惩罚包含来自同一光谱图的峰值的簇,然后执行分层聚类。

Distfun = @(x,y) (x(:,1)-y(:,1))。^ 2 + (x (:, 2) = = y(:, 2)) * 10 ^ 6树=连杆(pdist ([allPeaks (: 1), Sidx], distfun));集群=集群(树,“截止”, 75,“标准”“距离”);
distfun = function_handle价值:@ (x, y) (x (: 1) - y(: 1))。^ 2 + (x (:, 2) = = y (:, 2)) * 10 ^ 6

通过计算每个簇的质心,得到了公共质量/电荷参考向量(CMZ)。

CMZ = accumarray(clusters,prod(allPeaks,2))./accumarray(clusters,allPeaks(:,2));

同样,还计算了每个簇的最大峰值强度。

PR = accumarray(clusters,allPeaks(:,2),[],@max);[CMZ,h] = sort(CMZ);PR = PR(h);图保存盒子plot([CMZ CMZ],[-10 100],“- k”图(MZ,YN2)轴([7200 8500 -10 100])“质量/电荷(M / Z)”) ylabel (的相对强度)标题(聚类发现的共同质量/电荷(M/Z)位置

动态规划分箱

samplealign函数允许您使用动态规划算法将每个谱图中的观测峰值分配给公共质量/电荷参考向量(CMZ).

当使用更简单的分箱方法时,例如舍入质量/电荷值或使用最近邻量化到CMZ矢量,由于仍然存在的小漂移,来自不同光谱的相同峰值将被分配到不同的容器。为了避免这个问题,可以在牺牲质谱峰值分辨率的情况下增加料仓尺寸。通过使用动态规划分仓,可以保留分辨率,同时最大限度地减少将不同谱图中的相似化合物分配到不同峰位置的问题。

PA = nan(数字(CMZ),4);i = 1:4 [j,k] = samplealign([CMZ PR],P3{i},“乐队”15岁的“重量”[1。1]);PA(j,i) = P3{i}(k,2);结束图保存盒子plot([CMZ CMZ],[-10 100],”:k”) plot(MZ,YN2) plot(CMZ,PA,“o”xlabel([7200 8500 -10 100])“质量/电荷(M / Z)”) ylabel (的相对强度)标题(峰与质量/电荷(M/Z)基准对齐

使用msviewer在给定的范围内(例如,在值7600和8200之间)检查预处理的频谱图。

R1 = 7600;R2 = 8200;range = MZ > r1 & MZ < r2;rangeMarkers = CMZ(CMZ > r1 & CMZ < r2);msviewer (MZ(范围),YN2(范围:)“标记”rangeMarkers,“集团”1:4)

另请参阅

|||||||

相关的话题