本小插图提供了本文第7点所述过程的实现RNA-Seq数据分析指南1协议可从Epigenesys网站.
简单地说,它详细说明了必要的步骤:1。创建非冗余注释
每个特性读取数
预分析数据,即根据其生物来源评估样本特征的相关性;即。换句话说,执行一个所谓的“生物QA”使用评估方法,如主成分分析,多维定标,Hierarcical集群,等。
这个小插图的目的是使用easyRNASeq包,因此实施的基本原理将不进行讨论,尽管相关文献将在必要时指出。
在这篇短文中,我们将复制Robinson, Delhomme等人进行的分析。(Robinson et al. 2014)这是一项研究两性异形在欧亚阿斯彭.
为了执行列出的步骤,我们需要实例化一些对象来存储描述所执行操作的最小参数集RNA-Seq实验中,如。BAM文件位置,注释位置和类型,排序参数,等。
为了开始这个过程,我们将包加载到R会话中:
库(easyRNASeq)
##当加载'easyRNASeq'时,在包'BiocGenerics'中没有找到用于请求:'clusterApply'的方法
在实例化AnnotParam对象,通知要使用的注释的位置和类型。
的AnnotParam类用于存储检索注释所需的最小信息集
提供的最少信息是:
在本教程中,我们将重现在罗宾逊,Delhomme等人。(Robinson et al. 2014).为此,我们将从下载原始注释gff3文件开始p . trichocarpa,将该研究中使用的近缘树种纳入当前目录。
download.file(url=paste0("ftp://ftp.plantgenie.org/Data/PopGenIE/", "Populus_trichocarpa/v3.0/v10.1/GFF3/", "Ptrichocarpa_210_v3.0_gene_exons.gff3.gz"), destfile=,"./Ptrichocarpa_210_v3.0_gene_exons.gff3.gz")
##[1]真
在实例化" AnnotParam "对象之前。
注解param <-注解param (datasource="./Ptrichocarpa_210_v3.0_gene_exons.gff3.gz")
然而,这个注释文件包含了相同外显子的多个副本,即。当外显子被一个基因的几个异构体共享时。这可能会导致所谓的“多重计数”,如本指南所述2,我们将规避这个问题,创建一组合成转录本。
使用对齐的RNA-Seq reads估计基因表达的一个主要警告是,来自单个mRNA分子的单个reads有时可能与具有等效质量的几个特征(例如转录本或基因)对齐。
例如,这可能是基因复制和重复或共同结构域存在的结果。为了避免多次计算唯一的mRNA片段,严格的方法是只保留唯一的映射读取-注意潜在的后果,见下面的注释。
多重计数不仅是由生物学原因引起的,也是由技术工件引起的,主要是由格式糟糕的gff3/gtf注释文件引入的。为了避免这种情况,最好的做法是采取保守的方法,将单个基因位点的所有现有转录本折叠成一个合成包含该基因所有外显子的转录本。在外显子重叠的情况下,保留最长的基因组间隔,即创建一个人工外显子。这一过程导致了一个扁平的转录本:一个具有一对一关系的基因结构。
为了创建这样的结构,我们使用createSyntheticTranscripts函数在我们刚刚下载的文件上执行,只需将annotParam对象作为参数。
注释param <- createSyntheticTranscripts(注释param,verbose=FALSE)
该函数返回一个更新后的annotParam对象,该对象包含新创建的平摊文本注释。对象可以保存为rda文件,以供以后重用或与合作者共享。
保存(annotParam、文件=“。/ Ptrichocarpa_210_v3.0_gene_exons_synthetic-transcripts_annotParam.rda”)
而不是更新annotParamObject,我们可以创建一个Object of classGenome_Intervals从genomeIntervals包,使用相同的功能,但使用实际数据源之前的annotParam对象作为参数,而不是对象本身。
gI <- createssynthetictranscripts ("./Ptrichocarpa_210_v3.0_gene_exons.gff3.gz", verbose=FALSE)
这胃肠道对象然后可以导出为gff3文件。
writeGff3 (gI、文件=“。/ Ptrichocarpa_210_v3.0_gene_exons_synthetic-transcripts.gff3.gz”)
注意:忽略多重映射读取可能会在某些基因的读取计数中引入偏差(例如谬误基因或非常保守的基因家族的读取计数),但在保守的初步分析背景下,我们目前认为最好忽略它们。人们当然应该评估有多少读取是多映射的(例如检查STAR输出),并可能将它们从对齐读取文件中提取出来,使用基因组浏览器将它们可视化,以便了解它们的位置以及它们如何影响任何分析。基于此,在稍后的阶段,可以决定放宽计数参数以接受多映射读取。
高通量测序RNA-Seq数据有很多口味,即。即使来自单一提供商,协议-如。特定于链,配对端读特性-如。读取长度——会有所不同。
的easyRNASeq simpleRNASeq方法将根据从数据中抽样的摘录推断这些信息。然而,最好总是提供这些信息,如1。推理是在小的摘录上进行的,可能会失败2。记录分析总是好的
默认情况下easyRNASeq simpleRNASeq如果用户提供的参数不一致,将保留推断出来的参数并发出相应的警告。选择依赖于推断的参数而不是用户提供的参数是为了强制用户交叉验证他们对数据特征的了解,因为这些对充分的处理至关重要。记得GIGO3..
如果自动推理如果失败了,请告诉我,以便我进行优化。同时,您可以使用覆盖参数强制使用用户传递的参数。
从…得到的结果罗宾逊,Delhomme等人。(Robinson et al. 2014),我们首先需要下载一段数据摘录。
我们首先检索文件清单和md5代码
download.file(url=paste0("ftp://ftp.plantgenie.org/Tutorials/RnaSeqTutorial/", "data/star/md5.txt"), destfile="md5.txt")
在小插图的这一部分,我们将不处理所有数据,尽管这是可能的,但为了简洁起见,我们将只检索前六个数据集。我们从包中包含的示例信息中获取这些信息。
data(RobinsonDelhomme2014) lapply(RobinsonDelhomme2014[1:6,"Filename"],function(f){# BAM文件下载.file(url=paste0("ftp://ftp.plantgenie.org/Tutorials/", "RnaSeqTutorial/data/star/",f), destfile=as.character(f)) # BAM索引文件下载.file(url=paste0("ftp://ftp.plantgenie.org/Tutorials/", "RnaSeqTutorial/data/star/",f,".bai"), destfile=as.character(paste0(f,".bai"))})
# # # #[1]([1])真正的# # # # # #[1]([2])真正的# # # # # #[1]([3])真正的# # # # # #[1][[4]]真正的# # # # # #[1][[5]]真正的# # # # # # [[6]][1]
这六个文件-作为数据集的其余部分-已在Illumina HiSeq 2500上以成对端模式测序,使用读取长度为100bp的非链特定库协议。原始数据已按照上述指南中所述进行处理4因此,已经过滤了rRNA序列,修剪了适配器,并剪辑了质量。结果读取(长度为50-100bp)然后使用STAR对齐[Dobin:2013p5293]。
利用这些信息,我们最终生成BamParam对象。
bamParam <- bamParam(成对= TRUE,搁浅= FALSE)
第三个参数yieldSize可以设置为加快多cpu或多核计算机的处理速度。它以块的大小拆分和处理BAM文件yieldSize默认为1M读取。
最后,我们创建刚刚检索到的BAM文件列表。
bamFiles < - getBamFileList (dir (".","*\\. bam $ "), dir (".","*\\. 白”)美元)
我们需要定义的最后一组参数封装AnnotParam而且BamParam并详细说明应如何执行读摘要。simpleRNASeqA) 2种计数方式:
通过阅读
英国石油公司
后者是默认的计数方法easyRNASeq函数。由于需要更复杂的实施,无证据的增加计数精度和扩展的支持read-based方法由主流、标准化Bioconductor包装引领了读中的默认方法simpleRNASeq.由于缺乏时间进行维护和改进bp-based方法也不推荐使用。
B) 4种特征类型:外显子、转录本、基因或任何功能由用户提供。例如,后者可用于计数启动子区域中的读数。
给出一个平面化的转录本结构——就像在前一节中创建的那样——由成绩单或基因是等价的。注意,对任何特征类型使用非平面化注释都会导致多次计数!!即。单个mRNA片段的产物将被计算为它重叠的每一个特征,因此引入一个重要的偏见在下游分析中。
给出一个扁平的转录本结构,通过外显子汇总可以使用结果计数表进行过程,如差异外显子使用分析,如在DEXSeq包中。
罗宾逊,德尔霍姆et al。数据集,我们对基因表达感兴趣,因此我们创建了我们的RnaSeqParam对象如下:
rnaSeqParam <- rnaSeqParam (annotParam = annotParam, bamParam = bamParam, countBy = "genes", precision = "read")
我们现在可以进行量化了
sexp1 <- simpleRNASeq(bamFiles=bamFiles, param=rnaSeqParam, verbose=TRUE)
## ==========================
simpleRNASeq 2.35.0版本
## ==========================
##创建一个rangedsummarizeexperiment
## ==========================
##处理对齐。
## ==========================
预处理6个BAM文件。
验证BAM文件。
提取1446个参考序列信息。
从202_subset_sortmerna_trimmomatic_sorted.bam中提取参数
从207_subset_sortmerna_trimmomatic_sorted.bam中提取参数
##从213.1_subset_sortmerna_trimmomatic_sorted.bam中提取参数
从221_subset_sortmerna_trimmomatic_sorted.bam中提取参数
从226.1 .1_subset_sortmerna_trimmomatic_sorted.bam中提取参数
从229.1 . subset_sortmerna_trimmomatic_sorted.bam中提取参数
##找到0个单端BAM文件
找到6个成对的端BAM文件。
Bam文件:202_subset_sortmerna_trimmomatic_sortedBam的读取长度为50bp-101bp
Bam文件:207_subset_sortmerna_trimmomatic_sortedBam的读取长度为50bp-101bp
## Bam文件:213.1_subset_sortmerna_trimmomatic_sortedBam的读取长度为50bp-101bp
Bam文件:221_subset_sortmerna_trimmomatic_sorted。Bam的读取长度为50bp-101bp
## Bam文件:226.1 1_subset_sortmerna_trimmomatic_sorted。Bam的读取长度为50bp-101bp
## Bam文件:229.1_subset_sortmerna_trimmomatic_sortedBam的读取长度为50bp-101bp
##警告在FUN(X[[i]]],…):Bam文件:## 202_subset_sortmerna_trimmomatic_sorted。Bam被认为是未搁浅的。
##警告在FUN(X[[i]]],…):Bam文件:## 202_subset_sortmerna_trimmomatic_sorted。在每条链上使用4492个区域,跨越1379593 bp,在90%的截距下无法确定链性##;23.35%的人似乎被困住了。
##警告在FUN(X[[i]]],…):Bam文件:## 207_subset_sortmerna_trimmomatic_sorted。Bam被认为是未搁浅的。
##警告在FUN(X[[i]]],…):Bam文件:## 207_subset_sortmerna_trimmomatic_sorted。利用每条链上1462563 bp的4706个区域在90%的截距下无法确定链性##;20.61%的人似乎陷入困境。
##警告在FUN(X[[i]]],…):Bam文件:## 213.1_subset_sortmerna_trimmomatic_sorted。Bam被认为是未搁浅的。
##警告在FUN(X[[i]]],…):Bam文件:## 213.1_subset_sortmerna_trimmomatic_sorted。在每条链上的4457个区域,跨越1338599 bp,在90%的截距下,无法确定链性;23.02%的人被困。
## FUN(X[[i]]],…):Bam文件:## 221_subset_sortmerna_trimmomatic_sorted。Bam被认为是未搁浅的。
## FUN(X[[i]]],…):Bam文件:## 221_subset_sortmerna_trimmomatic_sorted。在每条链上使用4458个跨越1368624 bp的区域在90%的截距下无法确定链性##;23.1%的人似乎搁浅了。
##警告在FUN(X[[i]]],…):Bam文件:## 226.1_subset_sortmerna_trimmomatic_sorted。Bam被认为是未搁浅的。
##警告在FUN(X[[i]]],…):Bam文件:## 226.1_subset_sortmerna_trimmomatic_sorted。在每条链上的4431个区域,跨越1368899 bp,在90%的截距下,无法确定链性;22.3%的人被困。
##警告在FUN(X[[i]]],…):Bam文件:## 229.1 .1_subset_sortmerna_trimmomatic_sorted。Bam被认为是未搁浅的。
##警告在FUN(X[[i]]],…):Bam文件:## 229.1 .1_subset_sortmerna_trimmomatic_sorted。在每条链上的4378个区域,跨越1346291 bp,在90%的截距下,无法确定链性;19.96%的人被困。
在simpleRNASeq(bamFiles = bamFiles, param = rnaSeqParam, verbose = ## TRUE)中##警告:在2.15.5版本中,easyRNASeq假设,如果数据是特定于##的链,则测序是使用Illumina TruSeq等协议完成的,其中反向链被量化-即## BamParam类的strandProtocol参数默认为'reverse'。
流式202_subset_sortmerna_trimmomatic_sorted.bam
##读取44496
##流式207_subset_sortmerna_trimmomatic_sorted.bam
##读取49318读取
##流式213.1_subset_sortmerna_trimmomatic_sorted.bam
##读取43300个读取
##流式221_subset_sortmerna_trimmomatic_sorted.bam
##读47521
226.1 .1_subset_sortmerna_trimmomatic_sorted.bam
##读取45860
229.1 . subset_sortmerna_trimmomatic_sorted.bam
##读49077个读
Bam文件:202_subset_sortmerna_trimmomatic_sortedBam有44496个读取。
Bam文件:207_subset_sortmerna_trimmomatic_sortedBam有49318个读取。
## Bam文件:213.1_subset_sortmerna_trimmomatic_sortedBam有43300个读取。
Bam文件:221_subset_sortmerna_trimmomatic_sorted。Bam有47521个读取。
## Bam文件:226.1 1_subset_sortmerna_trimmomatic_sorted。Bam有45860个读取。
## Bam文件:229.1_subset_sortmerna_trimmomatic_sortedBam有49077个读取。
## ==========================
##处理注释
## ==========================
##验证注释源
##在该阶段没有执行验证
##获取注释
##使用所提供的注释
## ==========================
##健全检查
## ========================== ## ==========================
##创建计数表
## ==========================
##使用1个CPU核
流式202_subset_sortmerna_trimmomatic_sorted.bam
##数据端配对;只保留有效的配偶。
##数据是非链的;重叠的特征将被忽略。
##摘要是由'read'和模式是:联合。
##在. make_galignmentpairs_from_galignments (gal, strandMode = strandMode,: 542对齐不明确的配对被转储。使用“getDumpedAlignments()”从转储环境中检索它们。
##处理21977读取
使用202_subset_sortmerna_trimmomatic_sorted.bam完成
##流式207_subset_sortmerna_trimmomatic_sorted.bam
##数据端配对;只保留有效的配偶。
##数据是非链的;重叠的特征将被忽略。
##摘要是由'read'和模式是:联合。
##在. make_galignmentpairs_from_galignments (gal, strandMode = strandMode,: 816对齐不明确的配对被转储。使用“getDumpedAlignments()”从转储环境中检索它们。
##处理24251个读取
使用207_subset_sortmerna_trimmomatic_sorted.bam完成
##流式213.1_subset_sortmerna_trimmomatic_sorted.bam
##数据端配对;只保留有效的配偶。
##数据是非链的;重叠的特征将被忽略。
##摘要是由'read'和模式是:联合。
##在. make_galignmentpairs_from_galignments (gal, strandMode = strandMode,: 476对齐不明确的配对被转储。使用“getDumpedAlignments()”从转储环境中检索它们。
##处理21412读取
使用213.1_subset_sortmerna_trimmomatic_sorted.bam完成
##流式221_subset_sortmerna_trimmomatic_sorted.bam
##数据端配对;只保留有效的配偶。
##数据是非链的;重叠的特征将被忽略。
##摘要是由'read'和模式是:联合。
##在. make_galignmentpairs_from_galignments (gal, strandMode = strandMode,: 680对齐不明确的配对被转储。使用“getDumpedAlignments()”从转储环境中检索它们。
##处理23420读取
使用221_subset_sortmerna_trimmomatic_sorted.bam完成
226.1 .1_subset_sortmerna_trimmomatic_sorted.bam
##数据端配对;只保留有效的配偶。
##数据是非链的;重叠的特征将被忽略。
##摘要是由'read'和模式是:联合。
##在. make_galignmentpairs_from_galignments (gal, strandMode = strandMode,: 532对齐不明确的配对被转储。使用“getDumpedAlignments()”从转储环境中检索它们。
##处理22664读取
使用226.1 .1_subset_sortmerna_trimmomatic_sorted.bam完成
229.1 . subset_sortmerna_trimmomatic_sorted.bam
##数据端配对;只保留有效的配偶。
##数据是非链的;重叠的特征将被忽略。
##摘要是由'read'和模式是:联合。
##在. make_galignmentpairs_from_galignments (gal, strandMode = strandMode,: 798对齐不明确的配对被转储。使用“getDumpedAlignments()”从转储环境中检索它们。
##处理24139个读取
使用229.1 . subset_sortmerna_trimmomatic_sorted.bam完成
## ==========================
##返回
# # RangedSummarizedExperiment
## ==========================
##文件中的警告。remove(c("./Ptrichocarpa_210_v3.0_gene_exons.gff3.gz", "/ ## ptrichocarpa_210_v3 .0_gene_exons_synthetic- transcripts_注解参数。rda”,不能删除文件“1”,原因是“没有这样的文件或目录”
##文件中的警告。remove(c("./Ptrichocarpa_210_v3.0_gene_exons.gff3.gz", "/ ## ptrichocarpa_210_v3 .0_gene_exons_synthetic- transcripts_注解参数。rda",不能删除文件'2',原因是'没有这样的文件或目录'
##文件中的警告。remove(c("./Ptrichocarpa_210_v3.0_gene_exons.gff3.gz", "/ ## ptrichocarpa_210_v3 .0_gene_exons_synthetic- transcripts_注解参数。rda",不能删除文件'3',原因是'没有这样的文件或目录'
##文件中的警告。remove(c("./Ptrichocarpa_210_v3.0_gene_exons.gff3.gz", "/ ## ptrichocarpa_210_v3 .0_gene_exons_synthetic- transcripts_注解参数。rda",不能删除文件'4',原因是'没有这样的文件或目录'
##文件中的警告。remove(c("./Ptrichocarpa_210_v3.0_gene_exons.gff3.gz", "/ ## ptrichocarpa_210_v3 .0_gene_exons_synthetic- transcripts_注解参数。rda",不能删除文件'5',原因是'没有这样的文件或目录'
##文件中的警告。remove(c("./Ptrichocarpa_210_v3.0_gene_exons.gff3.gz", "/ ## ptrichocarpa_210_v3 .0_gene_exons_synthetic- transcripts_注解参数。rda",不能删除文件'6',原因是'没有这样的文件或目录'
##[1]真真真假假假假假假假真真真##[13]真真真
## R正在开发中(不稳定)(2022-10-25 r83175) ##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 22.04.1 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.17-bioc/R/lib/libRblas。so ## LAPACK: /usr/lib/x86_64-linux-gnu/ LAPACK /liblapack.so.3.10.0 ## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats graphics grDevices utils datasets methods基础## ##其他附加包:## [1]easyRNASeq_2.35.0 BiocStyle_2.27.0 ## ##通过命名空间加载(且未附加):# # # # [1] tidyselect_1.2.0 dplyr_1.0.10 [3] blob_1.2.3 genomeIntervals_1.55.0 # # [5] filelock_1.0.2 Biostrings_2.67.0 # # [7] bitops_1.0-7 fastmap_1.1.0 # # [9] rcurl_1.98 - 1.9 BiocFileCache_2.7.0 # # [11] GenomicAlignments_1.35.0 xml_3.99 - 0.12 # # [13] digest_0.6.30 lifecycle_1.0.3 # # [15] ellipsis_0.3.2 KEGGREST_1.39.0 # # [17] RSQLite_2.2.18 magrittr_2.0.3 # # [19] compiler_4.3.0 progress_1.2.2 # # [21] rlang_1.0.6 sass_0.4.2 # # [23] tools_4.3.0 utf8_1.2.2 # # [25] yaml_2.3.6 knitr_1.40 # # [27][39] BiocGenerics_0.45.0 grid_4.3.0 ## [41] stats4_4.3.0 fansi_1.0.3 ## [43] latticeExtra_0.6-30 edgeR_3.41.0 ## [45] biomaRt_2.55.0 SummarizedExperiment_1.29.0 ## [47] cli_3.4.1 rmarkdown_2.17 ## [49] crayon_1.5.2 intervals_0.1.3 httr_1.4.4 ## [53] rcolorbrewer_1 .3 ## [35] BiocParallel_1.33.0 withr_2.5.0 ## [37] purrr_0.3.5 hwriter_1.3.2.1 ## [39] BiocGenerics_0.45.0 grid_4.3.0 ## [41] stats4_4.3.0 fansi_1.0 ## [45] biomaRt_2.55.0DBI_1.1.3 cachem_1.0.6 # # [55] stringr_1.4.1 zlibbioc_1.45.0 # # [57] assertthat_0.2.1 parallel_4.3.0 # # [59] AnnotationDbi_1.61.0 BiocManager_1.30.19 # # [61] XVector_0.39.0 matrixStats_0.62.0 # # [63] vctrs_0.5.0 Matrix_1.5-1 # # [65] jsonlite_1.8.3 hms_1.1.2 # # [67] IRanges_2.33.0 S4Vectors_0.37.0 # # [69] bit64_4.0.5 jpeg_0.1-9 # # [71] locfit_1.5 - 9.6 LSD_4.1-0 # # [73] limma_3.55.0 jquerylib_0.1.4 # # [75] glue_1.6.2 codetools_0.2-18 # # [77] stringi_1.7.8 GenomeInfoDb_1.35.0 # # [79] deldir_1.0-6[81] tibble_3.1.8 pillar_1.8.1 ## [83] rappdirs_0.3.3 htmltools_0.5.3 ## [85] GenomeInfoDbData_1.2.9 R6_2.5.1 ## [87] dbplyr_2.2.1 evaluate_0.17 ## [89] Biobase_2.59.0 lattice_0.20-45 ## [91] png_0.1-7 Rsamtools_2.15.0 ## [93] memoise_2.0.1 bslib_0.4.0 ## [95] Rcpp_1.0.9 xfun_0.34 ## [97] MatrixGenerics_1.11.0 pkgconfig_2.0.3
Robinson, Kathryn, Nicolas Delhomme, Niklas Mähler, Bastian Schiffthaler, Jenny Önskog, Benedicte alrectsen, Pär Ingvarsson, Torgeir Hvidsten, Stefan Jansson和Nathaniel Street。2014。“欧洲白杨(Populus Tremula)没有性别二态性的证据。”BMC植物生物学14(1): 276-76。https://doi.org/10.1186/s12870-014-0276-5.
http://www.epigenesys.eu/en/protocols/bio-informatics/1283-guidelines-for-rna-seq-data-analysis↩︎
http://www.epigenesys.eu/en/protocols/bio-informatics/1283-guidelines-for-rna-seq-data-analysis↩︎
垃圾进垃圾出↩︎
http://www.epigenesys.eu/en/protocols/bio-informatics/1283-guidelines-for-rna-seq-data-analysis↩︎