的MSstatsConvert
包的成员MSstatst
MSstats和MSstatsTMT。它为质谱(MS)数据分析中的步骤创建了一个抽象,这些步骤在数据集可以用于统计建模之前是必需的。简而言之,该包负责从信号处理工具如转换输出OpenMS
或MaxQuant
转换成适合统计分析的格式。这包括:
MSstatsConvert
允许将任何MS量化结果转换为所需的格式MSstats
而且MSstatsTMT
包。此外,它还为输出提供了内置的清洗函数DIAUmpire
,MaxQuant
,OpenMS
,OpenSWATH
,初期发育
,ProteomeDiscoverer
,天际线
,Spectromine
,Spectronaut
.这些函数作为转换器函数(称为* toMSstatsFormat
或* toMSstatsTMTFormat
)由MSstats
而且MSstatsTMT
包。
MSstats系列软件包可用于无标签、SRM和TMT数据集。以下列是必需的。
ProteinName
:表示蛋白质ID的列。如果分析是在肽水平上进行的,列应该存储肽id。由MSstats
而且MSstatsTMT
为这一列中的每个ID分别执行packages,PeptideSequence
,PrecursorCharge
,碎片离子
而且ProductCharge
:这四列定义了一个光谱特征(SRM情况下的跃迁)。如果任何列的信息不可用,则应该将其设置为一个常量值(例如NA
),IsotopeLabelType
:列表示测量是基于内源性肽(用值“L”或“轻”表示)还是参考肽(用值“H”或“重”表示),运行
:存储质谱运行id的列。如果描述生物条件和复制的注释是通过单独的表提供的,则运行id应该匹配运行
注释中的id,条件
:存储生物条件(兴趣组)标签的列。对于时间过程实验,这一列表示时间点。如果设计实验包括时间点和不同的生物受试者,这些标签应该是受试者和时间点的组合,BioReplicate
:该栏应包含实验中每个生物复制的唯一标识符。例如,在临床蛋白质组学研究中,这应该是唯一的患者ID。来自不同组别的患者(由条件
列)应该有不同的id,强度
:列,存储给定Run (TMT情况下为Channel)中未转换(特别是没有日志转换)的特征丰度测量值。它们可以是峰高,曲线下的峰面积,或者其他特征丰度的定量表示,通道
列是必需的。类似于运行
列,如果单独提供,则此列中的值必须与注释文件中的值对应。此外,如果实验涉及到分馏,分数
可以添加列来存储分数标签。
MSstatsConvert
允许基于log4r
包中。关于预处理步骤的信息可以写入文件、写入控制台、写入两者或都不写入。的MSstatsLogsSettings
功能帮助管理日志设置。用户可以将现有文件的路径传递给log_file_path
参数。结合设置append = TRUE
,这允许将与特定数据分析相关的所有信息写入单个文件。如果用户没有指定文件,将自动创建一个新文件,其名称以“MSstats_log”开头,后面跟着一个时间戳。
图书馆(MSstatsConvert)# default -创建一个新文件MSstatsLogsSettings(use_log_file =真正的,附加=假)# default -创建一个新文件MSstatsLogsSettings(use_log_file =真正的,附加=真正的,log_file_path =“log_file.log”)#开关关闭MSstatsLogsSettings(use_log_file =假,附加=假)#关闭日志和消息MSstatsLogsSettings(use_log_file =假,verbose =假)
方法生成的会话信息跑龙套:sessionInfo ()
函数可以保存到文件中MSstatsSaveSessionInfo
函数。
MSstatsSaveSessionInfo()
默认情况下,输出文件名将以“MSstats_session_info”开始,并以当前时间戳结束。
MS数据处理MSstatsConvert
从导入和清洗数据开始。的MSstatsImport
函数为可能描述单个数据集的多个文件生成包装器。例如,MaxQuant
输出由两个文件组成,而OpenMS
只输出一个文件。
read.csv(执行(“tinytest / raw_data / MaxQuant / mq_ev.csv”, maxquant_evidence =包=“MSstatsConvert”))read.csv(执行(“tinytest / raw_data / MaxQuant / mq_pg.csv”, maxquant_proteins =包=“MSstatsConvert”))MSstatsImport(列表(证据=maxquant_evidence, maxquant_imported =protein_groups =maxquant_proteins),类型=“MSstats”,工具=“MaxQuant”)是(maxquant_imported)#> [1] "MSstatsMaxQuantFiles" "MSstatsInputFiles"read.csv(执行( openms_input =“tinytest / raw_data / OpenMSTMT / openmstmt_input.csv”,包=“MSstatsConvert” ))MSstatsImport(列表(输入=openms_input), openms_imported =“MSstatsTMT”,“OpenMS”)是(openms_imported)#> [1] "MSstatsOpenMSFiles" "MSstatsInputFiles"
的getInputFile
方法允许用户检索文件:
getInputFile(maxquant_imported“证据”)[1:5,1:5]#>序列长度修改#> 1: AEAPAAAPAAK 11未修改的_AEAPAAAPAAK_#> 2: AEAPAAAPAAK 11未修改的_AEAPAAAPAAK_#> 3: AEAPAAAPAAK 11未修改的_AEAPAAAPAAK_#> 4: AEAPAAAPAAK 11未修改的_AEAPAAAPAAK_#> 5: AEAPAAAPAAK 11未修改的_AEAPAAAPAAK_
作为分析的下一步,将输入文件合并为单个文件data.table
的标准化列名MSstatsClean
函数。它是一个通用函数,内置支持“MSstatsConvert包的用途”一节中列出的工具的输出。的类型
参数等于任意一个MSstats
或MSstatsTMT
并表明数据是否来自标记的TMT实验。
对于某些数据集,MSstatsClean
可能需要在各自的帮助文件中描述的其他参数。对于我们的示例数据集,下面的调用将输入文件合并到一个表中。
MSstatsClean(maxquant_importedprotein_id_col =“蛋白质”) maxquant_cleaned =头(maxquant_cleaned)肽序列修饰前体电荷#> 1: P06959 AEAPAAAPAAK未修改2#> 2: P06959 AEAPAAAPAAK未修改#> 3: P06959 AEAPAAAPAAK未修改2#> 4: P06959 AEAPAAAPAAK未修改2#> 5: P06959 AEAPAAAPAAK未修改#> 6: P06959 AEAPAAAPAAK未修改#>跑步强度得分#> 1: 121219_S_CCES_01_01_LysC_Try_1to10_Mixt_1_1 4023100 76.332#> 2: 121219_S_CCES_01_02_LysC_Try_1to10_Mixt_1_2 5132500 83.081#> 3: 121219_S_CCES_01_03_LysC_Try_1to10_Mixt_1_3 2761600 104.430#> 4: 121219_S_CCES_01_05_LysC_Try_1to10_Mixt_2_2 4091800 94.465#> 5: 121219_S_CCES_01_06_LysC_Try_1to10_Mixt_2_3 4727000 88.596#> 6: 121219_S_CCES_01_08_LysC_Try_1to10_Mixt_3_2 2258400 90.050MSstatsClean(openms_imported) openms_cleaned =头(openms_cleaned)#>蛋白名肽序列#> 1: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 2: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 3: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 4: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 5: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 6: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR# > PrecursorCharge#> 1:3#> 2:3#> 3:3#> 4:3#> 5:3#> 6: 3#> PSM条件#> 1: .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3_4359.56536443198 Long_HF#> 2: .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3_6190.04195694402 Long_HF#> 3: .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3_4359.56536443198 Long_HF#> 4: .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3_6190.04195694402 Long_HF#> 5: .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3_6190.04195694402 Long_HF#> 6: .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3_4359.56536443198 Long_HF运行通道强度混合物techrepmix分数#> 1: 21 3_3_3 1 na 3 3_3 3#> 2: 21 3_3_3 1 na 3 3_3 3#> 3: 24 3_3_3 4 na 3 3_3 3#> 4: 24 3_3_3 4 na 3 3_3 3#> 5: 26 3_3_3 6 na 3 3_3 3#> 6: 26 3_3_3 6 1820.072 3 3_3 3
如果用户想要使用MSstatsConvert
如果将数据以当前不支持的格式打包,则首先将数据重新格式化为data.table
与列ProteinName, PeptideSequence, PrecursorCharge, FragmentIon, ProductCharge(与后两个可能等于NA),运行和同位素类型(在非TMT数据的情况下)或通道(在TMT数据的情况下)。此外,数据集可以包括用于过滤数据集的任何列(例如存储q值的列)。在我们的例子中,这样的附加列是来自MaxQuant文件的“changes”和“Score”。
注释列应该被称为Condition和BioReplicate。对于TMT数据,可以增加mix、techrepmix列。分数应该由分数列表示。
的目标MSstatsPreprocess
功能是将清洗后的MS数据转换为可用于统计分析的格式MSstats
或MSstatsTMT
包。这个函数接受几个参数,每个参数对应一个预处理步骤。
输入
参数是用于预处理的数据集,注释
是与MS运行(以及TMT情况下的通道)相关的生物条件和复制的描述。属性中已包含的注释输入
它应该等于零
.方法创建注释MSstatsMakeAnnotation
函数,feature_columns
是表示特征的列名向量,remove_shared_peptides
是逻辑参数- if真正的
,共享肽将从分析中移除。目前,MSstats
假设只使用独特的肽,共享肽的存在可能会导致问题,remove_single_feature_proteins
是一个逻辑参数,指示是否只具有单一特征的蛋白质应从分析中移除(真正的
),feature_cleaning
是一个列表,当前由两个命名元素组成:remove_features_with_few_measurements
应该等于TRUE或FALSE。在第一种情况下,跨运行(或TMT数据运行中的通道)具有少于三次测量的特性将被删除。FALSE意味着只有不缺少测量值的特征才会被删除。的summarize_multiple_psms
元素应该是一个函数,将用于聚合多个特征测量在单一MS运行,aggregate_isotopic
逻辑参数是-真正的
意味着同位素峰值将被聚合(目前仅用于Skyline输入),columns_to_fill
是一个可选的命名列表,其名称对应于列,值对应于将用于这些列的值。例如,如果数据集缺少关于ProductCharge
,这样的列可以通过传递添加list(ProductCharge = NA)
对于这个参数,score_filtering
,exact_filtering
而且pattern_filtering
参数为可选参数,可用于数据过滤。下面给出了一个例子。read.csv(执行( maxquant_annotation =“tinytest / raw_data / MaxQuant / annotation.csv”,包=“MSstatsConvert” ))MSstatsMakeAnnotation(maxquant_cleaned maxquant_annotation = maxquant_annotation,运行=“Rawfile”)列表(col_name =“PeptideSequence”, m_filter =模式=“M”,过滤器=真正的,drop_column =假)列表(col_name =“修改”, oxidation_filter =模式=“氧化”,过滤器=真正的,drop_column =真正的)c(“PeptideSequence”,“PrecursorCharge”) feature_columns =MSstatsPreprocess( maxquant_processed = maxquant_cleaned, maxquant_annotation, feature_columns,remove_shared_peptides =真正的,remove_single_feature_proteins =假,pattern_filtering =列表(氧化=oxidation_filter,m =m_filter),feature_cleaning =列表(remove_features_with_few_measurements =真正的,summarize_multiple_psms =max),columns_to_fill =列表(“碎片离子”=NA,“ProductCharge”=NA,“IsotopeLabelType”=“L”))头(maxquant_processed)运行PeptideSequence PrecursorCharge#> 1: 121219_S_CCES_01_01_LysC_Try_1to10_Mixt_1_1 AEAPAAAPAAK#> 2: 121219_S_CCES_01_02_LysC_Try_1to10_Mixt_1_2 AEAPAAAPAAK#> 3: 121219_S_CCES_01_03_LysC_Try_1to10_Mixt_1_3 AEAPAAAPAAK#> 4: 121219_S_CCES_01_05_LysC_Try_1to10_Mixt_2_2 AEAPAAAPAAK 2#> 5: 121219_S_CCES_01_06_LysC_Try_1to10_Mixt_2_3 AEAPAAAPAAK#> 6: 121219_S_CCES_01_08_LysC_Try_1to10_Mixt_3_2 AEAPAAAPAAK强度蛋白质名称条件生物复制实验#> 1: 4023100 p06959 1 1 1_1 l#> 2: 5132500 p06959 1 1 1_2 l#> 3: 2761600 p06959 1 1 1_3 l#> 4: 4091800 p06959 2 2 2_2 l#> 5: 4727000 p06959 2 2 2_3 l#> 6: 2258400 p06959 3 3 3_2 l#> FragmentIon ProductCharge#> 1: na na#> 2: na na#> 3:呐呐#> 4:呐呐#> 5:呐呐#> 6:呐呐# OpenMS - TMT数据c(“PeptideSequence”,“PrecursorCharge”) feature_columns_tmt =MSstatsPreprocess( openms_processed = openms_cleaned,零, feature_columns_tmt,remove_shared_peptides =真正的,remove_single_feature_proteins =真正的,feature_cleaning =列表(remove_features_with_few_measurements =真正的,summarize_multiple_psms =马克斯) )头(openms_processed)#>蛋白名肽序列#> 1: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 2: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 3: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 4: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 5: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 6: sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> PrecursorCharge PSM条件#> 1:3 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3 Long_HF#> 2:3 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3 Long_HF#> 3:3 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3 Long_HF#> 4:3 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3 Long_HF#> 5:3 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3 Long_LF#> 6: 3 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3 Long_M运行通道强度混合物techrepmix分数#> 1: 21 3_3_3 1 na 3 3_3 3#> 2: 24 3_3_3 4 na 3 3_3 3#> 3: 26 3_3_3 6 1820.0721 3 3_3 3#> 4: 28 3_3_3 8 445.7412 3 3_3 3#> 5: 25 3_3_3 5 1580.9510 3 3_3 3#> 6: 23 3_3_3 3 1508.3302 3 3_3 3# >碎片离子#> 1: < na >#> 2: < na >#> 3: < na >#> 4: < na >#> 5: < na >#> 6: < na >
注释是通过MSstatsMakeAnnotation
函数。它接受清理后的数据集和注释文件作为输入。此外,可以将键-值对传递给该函数,以将注释中的列名(不包括点和其他符号)从值给出的名称更改为键给出的名称。
对于编程应用程序和接口的一致性,过滤是在列表的帮助下完成的。
对于基于数值分数的过滤(例如q值过滤),列表应该包含命名为
score_column
:存储分数的列的名称,score_threshold
:高于或低于应保持的测量值,方向
: if " greater ",值大于score_threshold
将被保留;如果" bigger ",值小于score_threshold
将被保留;行为
:如果“remove”,则不低于/高于阈值的行将被删除;如果“replace”,不低于或高于阈值行的强度将被给定值替换,handle_na
:如果“keep”,NA
分数栏不会被删除,fill_value
:如果行为= "replace"
,过滤器
:如果真正的
,进行过滤(可用于条件过滤),drop_column
:如果真正的
,存储分数的列将被删除。例如,要删除小于1的强度,可以将以下列表传递给score_filtering
参数:
列表(列表(score_column =“强度”,score_threshold =1,方向=“更大的”,行为=“删除”,handle_na =“删除”,fill_value =NA,过滤器=真正的,滴=假 ) )
对于基于模式的过滤(例如,去除氧化肽),列表应该包含命名为
col_name
:可以被删除的列的名称,filter_symbols
:值的向量—包含这些值的行col_name
将被移除或相应的强度将被替换,行为
:如果" remove ",包含filter_symbols
在col_name
将被移除;如果“替换”,则包含的行中的强度filter_symbols
在col_name
将被一个给定的值所取代,fill_value
:如果行为= "replace"
,过滤器
:如果真正的
,进行过滤(可用于条件过滤),drop_column
:如果真正的
,存储分数的列将被删除。对于基于精确值的过滤(例如,去除iRT蛋白),列表应该包含命名为
col_name
:存储要搜索给定模式的字符串的列的名称,模式
:正则表达式的向量col_name
将被移除,过滤器
:如果真正的
,进行过滤(可用于条件过滤),drop_column
:如果真正的
,存储过滤值的列将被删除。最后,经过预处理,MSstatsBalancedDesign
函数可以应用于处理分数和创建平衡设计。对于无标签和SRM数据,这意味着如果没有提供这些信息,将检测到分馏或技术复制。在多个分数(重叠)中测量的特征将被分配到一个唯一的分数。然后,对数据进行调整,使每个分数内的每个特征都有一行用于特定的运行。如果强度值缺失,则表示为NA
.
对于TMT数据,将为每个重叠的特征选择一个唯一的分数,并对数据进行调整,以便在每次运行中,每个特征对于每个通道都有一行。如果一个通道缺少强度,则表示为NA
.
MSstatsBalancedDesign(maxquant_processed feature_columns) maxquant_balanced =头(maxquant_balanced)#> ProteinName PeptideSequence PrecursorCharge FragmentIon ProductCharge#> 1 p06959 aeapaaapaak 2 na na#> 2 p06959 aeapaaapaak 2 na na#> 3 p06959 aeapaaapaak 2 na na#> 4 p06959 aeapaaapaak 2 na na#> 5 p06959 aeapaaapaak 2 na na#> 6 p06959 aeapaaapaak 2 na na> isotope elabeltype条件生物复制#> 1 l 11 1#> 2 l 11 1#> 3 l 11 1#> 4 l 2 2#> 5 l 2 2#> 6 l 2#>运行分数强度#> 1 121219_S_CCES_01_01_LysC_Try_1to10_Mixt_1_1 1 4023100#> 2 121219_S_CCES_01_02_LysC_Try_1to10_Mixt_1_2 1 5132500#> 3 121219_S_CCES_01_03_LysC_Try_1to10_Mixt_1_3 1 2761600#> 4 121219_S_CCES_01_04_LysC_Try_1to10_Mixt_2_1 1 2932900#> 5 121219_S_CCES_01_05_LysC_Try_1to10_Mixt_2_2 1 4091800#> 6 121219_S_CCES_01_06_LysC_Try_1to10_Mixt_2_3 1 4727000昏暗的(maxquant_balanced)#> [1] 690昏暗的(maxquant_processed)#> [1] 625 14MSstatsBalancedDesign(openms_processed feature_columns_tmt) openms_balanced =头(openms_balanced)#>蛋白名肽序列#> 1 sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 2 sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 3 sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 4 sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 5 sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#> 6 sp|Q60854|SPB6_MOUSE .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR#>前置充电PSM混合液3 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_33 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_33 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_33 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_33 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_33 .(TMT6plex)AFVEVNEEGTEAAAATAGMM(氧化)TVR_3运行通道BioReplicate条件强度#> 1 3_3 3_3_3 1 21 Long_HF NA#> 2 3_3 3_3_3 2 22规范1068.580#> 3 3_3 3_3_3 3 23 Long_M 1508.330#> 4 3_3 3_3_3 4 24 Long_HF NA#> 5 3_3 3_3_3 5 25 Long_LF 1580.951#> 6 3_3 3_3_3 6 26 Long_HF 1820.072昏暗的(openms_balanced)#> [1] 330昏暗的(openms_processed)#> [1] 370 16
MSstatsBalancedDesign
输出是data.frame
类的MSstatsValidated
.这样一个data.frame
将由统计处理函数识别出来MSstats
而且MSstatsTMT
包作为有效的输入,这将允许它们跳过将数据适合这种格式所必需的检查和转换。