1简介

在这个小插图中,我们展示了如何准备参考文件,以估计无对齐方法(例如,大马哈鱼小鲑鱼kallisto).这种丰度被用作输入,例如,用于估计单细胞数据中的RNA速度。

库(eisaR)

2生成特征范围

第一步是生成一个GRangesList对象,包含感兴趣的特征的基因组范围(剪接转录本、未剪接转录本或内含子序列)。这是使用getFeatureRanges ()函数,基于一个参考GTF文件。这里,我们用GTF文件的一个小子集来举例说明Gencode第28版.我们提取剪接转录本和内含子的基因组范围,其中后者分别为每个转录本定义(使用与本研究中相同的术语)BUSpaRse包)。对于每个内含子,在每一侧添加一个50 nt的侧翼序列,以适应跨外显子/内含子边界的读取映射。

GTF <- system.file("extdata/gencode.v28.annotation.sub. "gtf", package = "eisaR") grl <- getfeatatureranges (gtf = gtf, featureType = c("spliced", "intron"), intronType = "separate", flankLength = 50L, joinOverlappingIntrons = FALSE, verbose = TRUE) #>从文件中导入基因组特征作为GRanges对象…准备“元数据”数据帧…创建TxDb对象…. get_cds_idx (mcols0$type, mcols0$phase)中的#>警告:“phase”元数据列包含stop_codon类型的#>特性的非na值。这个信息被忽略了。#> OK #> 'select()'返回键和列之间的1:1映射#>提取拼接的转录本特征#>使用单独的方法提取内含子

的输出getFeatureRanges ()是一个GRangesList对象,包含所有感兴趣的特征(包括拼接转录本和内含子):

#> $ENST00000456328.2 #> GRanges对象有3个范围和5个元数据列:# > seqnames范围链| exon_id exon_rank # > < Rle > < IRanges > < Rle > | <人物> <整数> # > [1]chr1 11869 - 12227 + | ENSE00002234944.1 1 # > [2] chr1 12613 - 12721 + | ENSE00003582793.1 2 # > [3] chr1 13221 - 14409 + | ENSE00002312635.1 3 # > transcript_id gene_id类型# > <人物> <人物> <人物> # > [1]ENST00000456328.2 ENSG00000223972.5外显子# > [2]ENST00000456328.2 ENSG00000223972.5外显子# > [3]ENST00000456328.2 ENSG00000223972.5外显子  #> ------- #> seqinfo:1个未知基因组序列;没有seqlength# > #> $ENST00000450305.2 #> GRanges对象有6个范围和5个元数据列:# > seqnames范围链| exon_id exon_rank # > < Rle > < IRanges > < Rle > | <人物> <整数> # > [1]chr1 12010 - 12057 + | ENSE00001948541.1 1 # > [2] chr1 12179 - 12227 + | ENSE00001671638.2 2 # > [3] chr1 12613 - 12697 + | ENSE00001758273.2 3 # > [4] chr1 12975 - 13052 + | ENSE00001799933.2 4 # > [5] chr1 13221 - 13374 + | ENSE00001746346.2 5 # > [6] chr1 13453 - 13670 + | ENSE00001863096.1 6 # > transcript_id gene_id类型# > <人物> <人物> <人物> # > [1]ENST00000450305.2 ENSG00000223972.5外显子> [3] ENST00000450305.2 ENSG00000223972.5外显子#> [4]ENST00000450305.2 ENSG00000223972.5外显子#> [5]ENST00000450305.2 ENSG00000223972.5外显子#> [6]ENST00000450305.2 ENSG00000223972.5外显子#> ------- #> seqinfo:来自未指定基因组的1个序列;没有seqlength# > #> $ENST00000473358.1 #> GRanges对象有3个范围和5个元数据列:# > seqnames范围链| exon_id exon_rank # > < Rle > < IRanges > < Rle > | <人物> <整数> # > [1]chr1 29554 - 30039 + | ENSE00001947070.1 1 # > [2] chr1 30564 - 30667 + | ENSE00001922571.1 2 # > [3] chr1 30976 - 31097 + | ENSE00001827679.1 3 # > transcript_id gene_id类型# > <人物> <人物> <人物> # > [1]ENST00000473358.1 ENSG00000243485.5外显子# > [2]ENST00000473358.1 ENSG00000243485.5外显子# > [3]ENST00000473358.1 ENSG00000243485.5外显子  #> ------- #> seqinfo:1个未知基因组序列;没有seqlength# > #>… #> <892 more elements>

元数据槽位号GRangesList对象包含每个类型的特性id的列表:

lapply(S4Vectors::metadata(grl)$featurelist, head) #> $spliced #>[1]“ENST00000456328.2”“ENST00000450305.2”“ENST00000473358.1”#> b[4]“ENST00000469289.1”“ENST00000607096.1”“ENST00000606857.1”#> #> $内含子#>[1]“ENST00000456328.2- i”“ENST00000456328.2- i1”#>[3]“ENST00000450305.2- i”“ENST00000450305.2- i3”#[5]“ENST00000450305.2- i3”

如我们所见,内含子id由a标识-我后缀。每个特征都被进一步注释为一个基因ID。对于内含子的特征,相应的基因ID也承载着-我后缀附加到原始基因ID。为剪接的转录本和内含子提供单独的基因id,例如,可以用alevin联合量化基因的剪接和未剪接版本。添加一个后缀,而不是定义一个全新的基因ID,可以让我们轻松匹配相应的拼接和未拼接的特征ID。为了进一步简化后者,将元数据的GRangesList返回的对象getFeatureRanges ()包含data.frames匹配对应的基因id(以及转录本id,如果提取未拼接的转录本):

head(S4Vectors::metadata(grl)$corrgene) #>剪接内含子#> 1 ENSG00000223972.5 ENSG00000223972.5- i #> 2 ENSG00000243485.5 ENSG00000243485.5- i #> 3 ENSG00000284332.1 ENSG00000268020.3- i #> 4 ENSG00000268020.3 ENSG00000240361.2 ENSG00000240361.2- i #> 6 ENSG00000186092.6 ENSG00000186092.6- i #>

3.提取特征序列

一旦感兴趣的特征的基因组范围被提取,我们可以获得核苷酸序列使用extractTranscriptSeqs ()函数从GenomicFeatures包中。除了范围,这还需要基因组序列。例如,这可以从相应的BSgenome包或外部FASTA文件中获得。

suppressPackageStartupMessages({library(BSgenome) library(BSgenome. hsapiens . ucsc .hg38)}) seqs <- GenomicFeatures::extractTranscriptSeqs(x = BSgenome. hsapiens . ucsc .hg38)。hg38, transcripts = grl) seqs #> DNAStringSet对象长度为895:#> width seq names #> [1] 1657Acactgttggtttctg enst00000456328.2 #> [2] 632 gtgtctgacttccagca…Acaggggaatcccgaa enst00000450305.2 #> [3] 712 gtgcacacggctcccat…#> [4] 535 tcatcagtccaaagtcc…Gtatgattttaaagtc enst00000469289.1 #> [5] 138 ggatgcccagctagttt…Agaattaagcatttta enst00000607096.1 #> ... ... ...#> [891] 178 gcgccagccgacccca…CGCGTATTAACGAGAG ENST00000304952.1……#> [892] 193 ggagatgaccgtgagac…Gtaccgcgccggcttc enst00000481869.1-i #> [893] 193 ggagatgaccgtgagac…Gtaccgcgccggcttc enst00000484667.2-i #> [894] 352 gcgccagccggacccca…Tcctggagatgaccgt enst00000484667.2-i1 #> [895] 826 acctccgcctgccaggc…AGAGATTGTGGTGAGC ENST00000458555.1-I

由此产生的DNAStringSet可以写入FASTA文件,并用于为无对齐方法生成索引,例如大马哈鱼而且kallisto

4生成一个展开的GTF文件

除了提取特征序列之外,我们还可以导出包含全部特征集的GTF文件。这是有用的,例如,为了生成一个链接的转录组,以便以后输入估计的丰度tximeta

exportToGtf(grl, filepath = file.path(tempdir(), " exports .gtf"))

在导出的GTF文件中,每个条目的grl将对应一个“转录本”特征,而每个单独的范围对应一个“外显子”特征。此外,每个基因被表示为一个“基因”特征。

5生成一个转录到基因的图谱

最后,导出adata.frame(或制表符分隔的测试文件)提供“转录本”和“基因”标识符之间的转换表。这是需要聚合转录水平丰度估计从校准自由的方法,如大马哈鱼而且kallisto到基因层面。

df < - getTx2Gene (grl)头(df) # > transcript_id gene_id # > ENST00000456328.2 ENST00000456328.2 ENSG00000223972.5 # > ENST00000450305.2 ENST00000450305.2 ENSG00000223972.5 # > ENST00000473358.1 ENST00000473358.1 ENSG00000243485.5 # > ENST00000469289.1 ENST00000469289.1 ENSG00000243485.5 # > ENST00000607096.1 ENST00000607096.1 ENSG00000284332.1 # > ENST00000606857.1 ENST00000606857.1 ENSG00000268020.3尾巴(df) # > transcript_id gene_id # > ENST00000304952.10-I1 ENST00000304952.10-I1 ENSG00000188290.10-I#> enst00000481869.1-i enst00000481869.1-i ensg00000188290.10-i #> enst00000484667.2-i enst00000484667.2-i ensg00000188290.10-i #> enst00000458555.1-i enst00000458555.1-i enst00000458555.1-i ensg00000224969.1-i

6会话信息

sessionInfo() #> R version 4.2.0 RC (2022-04-19 r82224) #>平台:x86_64-pc-linux-gnu (64-bit) #>运行在:Ubuntu 20.04.4 LTS #> #>矩阵产品:默认#> BLAS: /home/biocbuild/bbs-3.15-bioc/R/lib/libRblas。所以#> LAPACK: /home/biocbuild/bbs-3.15-bioc/R/lib/libRlapack。so #> #> 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_TELEPHONE= c# > [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION= c# > #>附加基础包:#>[1]并行stats4统计图形grDevices utils #>[7]数据集方法基础#> #>其他附加包:# > [1] BSgenome.Hsapiens.UCSC.hg38_1.4.4 # > [2] BSgenome_1.64.0 # > [3] Biostrings_2.64.0 # > [4] XVector_0.36.0 # > [5] edgeR_3.38.0 # > [6] limma_3.52.0 # > [7] QuasR_1.36.0 # > [8] Rbowtie_1.36.0 # > [9] rtracklayer_1.56.0 # > [10] GenomicFeatures_1.48.0 # > [11] AnnotationDbi_1.58.0 # > [12] Biobase_2.56.0 # > [13] GenomicRanges_1.48.0 # > [14] GenomeInfoDb_1.32.0 # > [15] IRanges_2.30.0 # > [16] S4Vectors_0.34.0 # > [17] BiocGenerics_0.42.0 # > [18] eisaR_1.8.0 # > [19] BiocStyle_2.24.0 # > # >通过加载命名空间(且未附加):#> [9] tools_4.2.0 bslib_0.3.1 #> [11] utf8_1.2.2 R6_2.5.1 #> [13] DBI_1.1.2 tidyselect_1.1.2 #> [15] prettyunits_1.1.1 bit_4.0.4 #> [17] curl_4.3.2 compiler_4.2.0 #> [19] SGSeq_1.30.0 cli_3.3.0 #> [21] xml2_1.3.3 bookdown_0.26 sass_0.4.1 #> [25] rappdirs_0.3.3 string_1 .4.0 #> [27] digest_0.6.29 Rsamtools_2.12.0 #>[29] rmarkdown_2.14 Rhisat2_1.12.0 # > [31] jpeg_0.1-9 pkgconfig_2.0.3 # > [33] htmltools_0.5.2 MatrixGenerics_1.8.0 # > [35] highr_0.9 dbplyr_2.1.1 # > [37] fastmap_1.1.0 rlang_1.0.2 # > [39] RSQLite_2.2.12 jquerylib_0.1.4 # > [41] BiocIO_1.6.0 generics_0.1.2 # > [43] hwriter_1.3.2.1 jsonlite_1.8.0 # > [45] BiocParallel_1.30.0 dplyr_1.0.8 # > [47] VariantAnnotation_1.42.0 rcurl_1.98 - 1.6 # > [49] magrittr_2.0.3 GenomeInfoDbData_1.2.8 # > [51] Matrix_1.4-1 Rcpp_1.0.8.3 # > [53] fansi_1.0.3 lifecycle_1.0.1 # >[55] stringi_1.7.6 yaml_2.3.5 #> [57] SummarizedExperiment_1.26.0 zlibbioc_1.42.0 #> [59] BiocFileCache_2.4.0 grid_4.2.0 #> [61] blob_1.2.3 crayon_1.5.1 #> [63] lattice_0.20-45 splines_4.2.0 #> [65] hms_1.1.1 KEGGREST_1.36.0 #> [67] magick_2.7.3 locfit_1.5-9.5 #> [69] knitr_1.38 pillar_1.7.0 #> [71] igraph_1.3.1 RUnit_0.4.32 #> [73] rjson_0.2.21 biomaRt_2.52.0 #> [75] XML_3.99-0.9 glue_1.6.2 #> [77] ShortRead_1.54.0 evaluate_0.15 #> [79] latticeExtra_0.6-29 BiocManager_1.30.17 #> [81] png_0.1-7 vctrs_0.4.1 #> [83] purrr_0.3.4 assertthat_0.2.1 #> [85] cachem_1.0.6 xfun_0.30 #> [87] restfulr_0.0.13 tibble_3.1.6 #> [89] GenomicAlignments_1.32.0 memoise_2.0.1 #> [91] ellipsis_0.3.2