实操 - peakPantheR

在翻译了 peakPantheR 后,我想按照它的教程在自己的电脑上走一遍,以便了解其中的命令细节。

1. R包安装

1.1. 软件包安装

  1. 设置镜像仓库,并将一些镜像的源替换成国内的,以便加速下载

    # 设置镜像仓库
    setRepositories(ind=1:4)
    # int数值对应的镜像仓库
    # 1: + CRAN
    # 2: BioC software
    # 3: BioC annotation
    # 4: BioC experiment
    # 5: BioC extra
    # 6: + CRAN (extras)
    # 7: Omegahat
    # 8: R-Forge
    # 9: rforge.net
    
    # 更换镜像源(清华):国内来说,下载就能更快
    options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
    options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")
    
  2. 先安装一些依赖包

    # 安装BiocInstaller
    install.packages("BiocInstaller")
    
    # 安装依赖薄mzR
    install.packages("mzR")
    
    # 安装依赖包MSnbase
    install.packages("MSnbase")
    
  3. 从GitHub直接安装peakPantheR的开发版本:

    # 安装devtools
    install.packages("devtools")
    
    # 用devtools从GitHub安装peakPantheR
    devtools::install_github("phenomecentre/peakPantheR")
    
  4. 安装 faahKO 包,这个包提供了一组MS光谱(MS spectra),我们可以使用它作为原始数据进行peakPantheR注释

    # 安装faahKO
    install.packages('faahKO')
    

1.2. 安装错误解决 - Linux

我在Linux系统中部署R并安装上述几个包的时候遇到了一些错误,现在将这些错误记录下来以便后续在新的Linux中安装的时候需要这些信息。

下面是我当前R和Linux的信息。

> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 9 (stretch)

Matrix products: default
BLAS: /usr/lib/openblas-base/libblas.so.3
LAPACK: /usr/lib/libopenblasp-r0.2.19.so

locale:
 [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=C             
 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C              
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats graphics grDevices utils datasets methods base     

loaded via a namespace (and not attached):
[1] compiler_3.5.1 tools_3.5.1 
  1. 错误:/usr/bin/ld: cannot find -lxxx

    其中xxx即表示函式库文件名称,上述问题就是缺少对应的函式库(lib)文件,需要安装缺少的lib

    # 例如这样的错误,就是缺少libc.so
    /usr/bin/ld: cannot find -lc
    # 解决方法:安装对应的lib
    $ apt-get install libc-dev
    
  2. 错误:/bin/bash: nc-config: command not found

    nc-configlibnetcdf-dev包的一部分,上述问题的解决方法就是安装这个包

    $ apt-get install libnetcdf-dev
    
  3. 错误:ERROR: configuration failed for package ‘XML’

    这个是因为R包XML需要libxml2-dev,所以按照相应的包即可:

    $ apt install libxml2-dev 
    
  4. 小结

    基本按照下面几个依赖包就能顺利在Linux的R中安装peakPantheR所需要的包:

    # 可以在安装R包前,在系统中安装下面的三个依赖包
    $ apt-get install libc-dev
    $ apt-get install libnetcdf-dev
    $ apt install libxml2-dev 
    

1.3. 安装错误解决 - Windows

Windows环境下的部署还没有试过,等以后有机会再说

2. 使用peakPantheR分析目标化合物的信息

我们直接将peakPantheR 3: Parallel Annotation的内容整理如下:

### 基于对照组的数据分析,修正化合物的相关信息(保留时间,m/z等)

## 第一步:导入数据

# 导入faahKO包
library(faahKO)
# 获得faahKO中三个数据文件的路径,这些文件作为对照组(QC组)
input_spectraPaths <- c(system.file('cdf/KO/ko15.CDF', package = "faahKO"),
                         system.file('cdf/KO/ko16.CDF', package = "faahKO"),
                         system.file('cdf/KO/ko18.CDF', package = "faahKO"))
# 显示文件的路径信息
input_spectraPaths

# 构建目标化合物的特征信息(targetFeatTable)
input_targetFeatTable <- data.frame(matrix(vector(), 2, 8, dimnames=list(c(), c("cpdID", "cpdName", "rtMin", "rt", "rtMax", "mzMin", "mz", "mzMax"))), stringsAsFactors=F)
input_targetFeatTable[1,] <- c("ID-1", "Cpd 1", 3310., 3344.888, 3390., 522.194778, 522.2, 522.205222)
input_targetFeatTable[2,] <- c("ID-2", "Cpd 2", 3280., 3385.577, 3440., 496.195038, 496.2, 496.204962)
input_targetFeatTable[,c(3:8)] <- sapply(input_targetFeatTable[,c(3:8)], as.numeric)
# 显示目标化合物的相关信息
input_targetFeatTable

# 构建三个数据的元数据信息(spectra Metadata)
input_spectraMetadata <- data.frame(matrix(c("sample type 1", "sample type 2", "sample type 1"), 3, 1, dimnames=list(c(), c("sampleType"))), stringsAsFactors=F)
# 显示这些额外的元数据
input_spectraMetadata


## 第二步:初始化数据

# 导入peakPantheR包
library(peakPantheR)
# 初始化数据,获得`peakPantheRAnnotation` 对象
init_annotation <- peakPantheRAnnotation(spectraPaths = input_spectraPaths,
                                         targetFeatTable = input_targetFeatTable,
                                         spectraMetadata = input_spectraMetadata)
# 显示`peakPantheRAnnotation` 对象
init_annotation


## 第三步:目标化合物第一次注释分析

# 第一次注释分析,结果保存在 annotation_result 中
annotation_result <- peakPantheR_parallelAnnotation(init_annotation, ncores=0, verbose=TRUE)

# 显示分析成功的文件个数
nbSamples(annotation_result$annotation)
# 显示第一次分析后的`peakPantheRAnnotation` 对象的相关信息,与 init_annotation 相比较
data_annotation <- annotation_result$annotation
data_annotation
# 显示分析失败的文件个数
annotation_result$failures


## 第四步:第一次分析结果的可视化检查和处理

# 基于第三步的结果,确定 uROI 和 FIR,更新相关信息
updated_annotation <- annotationParamsDiagnostic(data_annotation, verbose=TRUE)
# 显示更新后的`peakPantheRAnnotation` 对象的相关信息,与 data_annotation 相比较,已经有 uROI
updated_annotation

# 设置可视化相关参数:颜色等
uniq_sType <- sort(unique(spectraMetadata(updated_annotation)$sampleType),na.last=TRUE)
col_sType <- unname( setNames(c('blue', 'red'),c(uniq_sType))[spectraMetadata(updated_annotation)$sampleType] )
# 输出可视化的图,并保存updated_annotation对象的信息到本地,名称为:annotationParameters_summary.csv
outputAnnotationDiagnostic(updated_annotation, saveFolder="/home/cxt/MS", savePlots=TRUE, sampleColour=col_sType, verbose=TRUE, ncores=2)


### 基于QC组的分析,将相关设置应用到全部的研究样本中(WT组和KO组)

## 第五步:初始化研究样本的数据

# 前期修改参数文件所在目录
update_csv_path <- '/home/cxt/MS/annotationParameters_summary.csv'
# 导入前期修改的参数,并生成一个`peakPantheRAnnotation` 对象
new_annotation <- peakPantheR_loadAnnotationParamsCSV(update_csv_path)
# 显示`peakPantheRAnnotation` 对象的相关内容
new_annotation

# 将研究样本加入 new_annotation 对象中
# 样本数据所在路径
new_spectraPaths <- c(system.file('cdf/KO/ko15.CDF', package = "faahKO"),
                       system.file('cdf/WT/wt15.CDF', package = "faahKO"),
                       system.file('cdf/KO/ko16.CDF', package = "faahKO"),
                       system.file('cdf/WT/wt16.CDF', package = "faahKO"),
                       system.file('cdf/KO/ko18.CDF', package = "faahKO"),
                       system.file('cdf/WT/wt18.CDF', package = "faahKO"))
# 样本元数据
new_spectraMetadata <- data.frame(matrix(c("KO", "WT", "KO", "WT", "KO", "WT"), 6, 1, dimnames=list(c(), c("Group"))), stringsAsFactors=F)
# 将研究样本加入 new_annotation 对象中
new_annotation <- resetAnnotation(new_annotation, spectraPaths=new_spectraPaths, spectraMetadata=new_spectraMetadata, useUROI=TRUE, useFIR=TRUE)
# 显示 new_annotation 对象的相关信息
new_annotation


## 第六步:目标化合物第二次注释分析(基于研究样本)

# 第二次注释分析,结果保存在 new_annotation_result 中
new_annotation_result <- peakPantheR_parallelAnnotation(new_annotation, ncores=0, verbose=FALSE)

# 显示分析成功的文件个数
nbSamples(new_annotation_result$annotation)
# 显示第一次分析后的`peakPantheRAnnotation` 对象的相关信息,与 init_annotation 相比较
final_annotation <- new_annotation_result$annotation
final_annotation
# 显示分析失败的文件个数
new_annotation_result$failures

# 再次可视化相关参数:颜色等
uniq_group <- sort(unique(spectraMetadata(final_annotation)$Group),na.last=TRUE)
col_group <- unname( setNames(c('blue', 'red'),c(uniq_sType))[spectraMetadata(final_annotation)$Group] )
# 输出可视化的图,并保存 final_annotation 对象的信息到本地
outputAnnotationDiagnostic(final_annotation, saveFolder='/home/cxt/MS/MS', savePlots=TRUE, sampleColour=col_group, verbose=TRUE)


## 第七步:最终分析结果保存

# 显示第一个研究样本中的化合物峰信息(peakTables)
peakTables(final_annotation)[[1]]

# 提取全部的样本中,每一个化合物的检测到的峰面积(peak area)
annotationTable(final_annotation, column='peakArea')

# 保存全部的注释分析结果:包含化合物元数据、光谱元数据和一个包含`peakTables`每一列信息的文件 (行:样本;列:化合物
outputAnnotationResult(final_annotation, saveFolder='/home/cxt/MS/MS/', annotationName='ProjectName', verbose=TRUE)

3. 小结

在上面分析中,我们总体上可以概况为下面三个方面:

  1. 虽然我们知道目标化合物的相关信息(保留时间,m/z等),但是在每一个具体实验中,由于实验造成的数据偏差,目标化合物在对应的研究样本中的信息会发生偏移,这个时候我们需要根据对照组样本,进行一轮目标化合物分析,由此修正目标化合物的相关信息(保留时间,m/z)在这次实验中的正确数值
  2. 在获得了这些修正信息后,我们就可以对研究的样本进行分析,获得目标化合物在这次实验中的相关信息,比如峰面积(相当于表达量)等
  3. 随后,我们可以根据这个信息进行研究样本中不同组别之间,目标化合物的差异表达分析。

4. 参考

  1. R语言启动与配置
  2. 不用biocLite安装Bioconductor包
更新时间:2019-05-26 19:34:10

本文由 石九流 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://blog.computsystmed.com/archives/practice-peakpanther
最后更新:2019-05-26 19:34:10

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×