本文概述
在本教程中, 你将熟悉生物导体领域。这样, 你就可以对生物学实验的结果进行计算和统计分析, 因为任何研究人员都必须证明其结论的重要性。换句话说, 通过使用该项目, 你将能够表明所使用的数据是否与你的假设一致。此外, 你可以从统计角度验证你的科学问题, 而不会浪费太多时间和金钱。
简而言之, 本教程将理顺:
什么是生物导体? Bioconductor R包装代表什么?我们如何使用它?
简要概述
生物导体:高通量基因组数据的分析和理解
Bioconductor是用于计算生物学和生物信息学的开放软件开发。这是一个用于计算生物学社区的开源, 开放开发的软件项目。它是开源的, 因为任何人都可以阅读和修改基础代码, 而开源是因为任何人都可以贡献并参与代码的开发。它使用R语言, 这是数据科学中广泛使用的语言, 因为它是一种灵活的语言, 尤其是用于数据分析。 R还具有高质量的图形, 对于其他语言来说, 它很容易成为坏工具。 Bioconductor提供了用于分析基因组数据的强大统计和图形方法的途径。它还有助于在实验数据分析中整合生物元数据, 如GenBank, GO, LocusLink和PubMed。
此外, 它允许快速开发可扩展, 可互操作和可扩展的软件。此外, 使用Bioconductor可以促进高质量的文献记录和可重复的研究。这样就可以进行计算和统计方法方面的培训。简而言之, 生物导体可以分为三个不同的部分, 如下所示:
统计分析 | 理解 | 高通量 |
---|---|---|
大数据 | 生物背景 | 排序 |
技术文物 | 可视化 | 微阵列 |
设计实验 | 重现性 | 流式细胞仪 |
计算生物学中的分析几乎总是需要许多不同的工具来将它们组合在一起, 以回答特定的问题。通常, 这也将成为其他研究人员使用的软件包。因此, Bioconductor还是具有某些规则和指导原则的R软件包的软件存储库。 3.7版具有1500多个软件包。这些被全世界成千上万的研究人员所使用。这些软件包通常都有出色的文档。由于每个人都可以做出贡献, 因此可以有多种选择的软件包来解决特定的问题。因此, 这在软件包开发人员之间创造了竞争环境。
该网站包含有关如何安装, 学习, 使用和回馈Bioconductor项目的材料。该项目于2001年秋季开始, 包括美国, 欧洲和澳大利亚的20多个核心开发人员。
简而言之, Bioconductor致力于统计分析和高通量基因组数据的理解。专注于统计分析来自数据的性质。现代方法生成大量数据, 这些数据必然需要统计摘要。作为研究人员, 我们必须在统计框架内进行有针对性的设计实验。生成现代遗传数据类型的技术和实验室协议, 这些协议在需要使用统计技术解决的技术工件之后采用。最后, 紧凑的数据集成挑战使我们仔细考虑所涉及步骤的统计后果。
Bioconductor R包装
Bioconductor软件由R附加软件包组成。 R包是用于执行特定类型分析的代码(R, C或其他), 文档和/或数据的结构化集合, 例如affy, cluster, graph包。它提供特定统计和图形方法的执行。
在最新版本的Bioconductor中, 提供了1500多个软件包。它们可以分为四种类型:
•分析软件包:用于分析高通量基因组数据的工具, 例如IMMAN, limma
•注释包:标识符图, 基因模型, 途径等的静态数据库;例如, TxDb.Hsapiens.UCSC.hg19.knownGene
•说明性实验数据包:用于说明软件功能的数据集, 例如气道
•工作流程软件包:描述生物信息学工作流程的文档, 其中涉及多个生物导体软件包, 以解释诸如蛋白质组学之类的生物学特定领域, 例如高通量分析
主要生物导体包装
- GenomicRanges:描述数据和注释的”范围”; GRanges(), GRangesList()
- 生物字符串:DNA和其他序列, DNAStringSet()
- GenomicAlignments:对齐的读段; GAlignemts()和朋友
- GenomicFeatures, AnnotationDbi:注释资源, TxDb和org包。
- 总结实验:协调实验数据
- rtracklayer:导入基因组注释, 例如BED, WIG, GTF等。
生物导体利用
安装
首次使用Bioconductor, 我们必须获取最新版本的R, 然后通过启动R并输入以下命令来安装最新版本的Bioconductor:
## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite()
通过此命令, 将安装最新版本的Bioconductor的所有核心软件包。要安装Bioconductor信息库中可用的特定软件包(例如IMMAN和GenomicRanges), 我们可以使用软件包着陆页上的说明, 例如以下命令:
source("https://bioconductor.org/biocLite.R")
biocLite(c( "Biostrings", "GenomicRanges", "IMMAN"))
BiocInstaller软件包中的biocLite()函数用于软件包安装, 而不是R中的通用函数install.packages()。之所以这样做是因为Bioconductor具有与CRAN不同的存储库, 并且发行时间表与R不同。可能会导致R和Bioconductor释放时间表不匹配。这是install.packages()标识的版本, 它通常不是最新的可用”发行版”。
使用范例
完成主要安装后, 此部分将为你提供Bioconductor工作区的简单示例, 以使你更加熟悉上下文。在这里, 生物导体项目的不同组成部分(例如高通量测序, 统计分析和理解)的两个不同实例被收集在一起。
首先, 要熟悉高通量数据, 你将要使用DNA序列。为此, 你必须使用Biostring, 这是用于处理大型生物序列的主要软件包。由此, 你可以将DNAStringSet()用作存储一组DNAString(基于指示IUPAC扩展遗传字母的DNA字母的字符串)的函数。这可以将输入转换为DNA基本类型的XStringSet对象。字母以优化快速搜索算法的方式进行编码。
library(Biostrings)
## Loading required package: BiocGenerics
## Loading required package: parallel
##
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:parallel':
##
## clusterApply, clusterApplyLB, clusterCall, clusterEvalQ, ## clusterExport, clusterMap, parApply, parCapply, parLapply, ## parLapplyLB, parRapply, parSapply, parSapplyLB
## The following objects are masked from 'package:stats':
##
## IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
##
## anyDuplicated, append, as.data.frame, basename, cbind, ## colMeans, colnames, colSums, dirname, do.call, duplicated, ## eval, evalq, Filter, Find, get, grep, grepl, intersect, ## is.unsorted, lapply, lengths, Map, mapply, match, mget, order, ## paste, pmax, pmax.int, pmin, pmin.int, Position, rank, rbind, ## Reduce, rowMeans, rownames, rowSums, sapply, setdiff, sort, ## table, tapply, union, unique, unsplit, which, which.max, ## which.min
## Loading required package: S4Vectors
## Loading required package: stats4
##
## Attaching package: 'S4Vectors'
## The following object is masked from 'package:base':
##
## expand.grid
## Loading required package: IRanges
##
## Attaching package: 'IRanges'
## The following object is masked from 'package:grDevices':
##
## windows
## Loading required package: XVector
##
## Attaching package: 'Biostrings'
## The following object is masked from 'package:base':
##
## strsplit
dnaSequence <- DNAStringSet( c("AAACTG", "CCCAACCA") )
dnaSequence
## A DNAStringSet instance of length 2
## width seq
## [1] 6 AAACTG
## [2] 8 CCCAACCA
然后, 我们可以使用complement()函数来补充DNA序列。
complement(dnaSequence)
## A DNAStringSet instance of length 2
## width seq
## [1] 6 TTTGAC
## [2] 8 GGGTTGGT
学习与DNAStringSet和Biostrings等程序包一起使用会在其他程序包中有所作为。
在另一个示例中, 我们要使用GenomicRanges软件包, 该软件包指定用于指示Bioconductor项目中的基因组位置。它通过提供三个类别(GRanges, GPos和GRangesList)来提供基因组分析的基础, 这三个类别用于显示基因组范围, 基因组位置和基因组范围组。
GRanges类用于说明一组基因组范围, 每个基因组范围在基因组上具有单个起点和终点。它存储基因组特征的位置, 例如连续的结合位点, 转录本和外显子。我们可以使用GRanges构造函数访问这些对象, 如下所示:
library(GenomicRanges)
## Loading required package: GenomeInfoDb
grangeObj <-
GRanges(seqnames =
Rle(c("chr1", "chr2", "chr1", "chr3"), c(1, 3, 2, 4)), ranges =
IRanges(1:10, end = 7:16, names = head(letters, 10)), strand =
Rle(strand(c("-", "+", "*", "+", "-")), c(1, 2, 2, 3, 2)), score = 1:10, GC = seq(1, 0, length=10))
grangeObj
## GRanges object with 10 ranges and 2 metadata columns:
## seqnames ranges strand | score GC
## <Rle> <IRanges> <Rle> | <integer> <numeric>
## a chr1 1-7 - | 1 1
## b chr2 2-8 + | 2 0.888888888888889
## c chr2 3-9 + | 3 0.777777777777778
## d chr2 4-10 * | 4 0.666666666666667
## e chr1 5-11 * | 5 0.555555555555556
## f chr1 6-12 + | 6 0.444444444444444
## g chr3 7-13 + | 7 0.333333333333333
## h chr3 8-14 + | 8 0.222222222222222
## i chr3 9-15 - | 9 0.111111111111111
## j chr3 10-16 - | 10 0
## -------
## seqinfo: 3 sequences from an unspecified genome; no seqlengths
结果是一个具有10个基因组范围的GRanges对象。如图所示, 该函数将信息划分为左右两个区域, 并用|分隔。符号。基因组的坐标(序列名称, 范围和链)位于左侧, 而元数据列(注释)位于右侧。在这种情况下, 元数据包括分数和GC信息。但是, 几乎所有内容都可以存储在GRanges对象的元数据部分中。
seqnames(), ranges()和strand()辅助函数用于减少GRanges对象内基因组坐标的分量。例如,
seqnames(grangeObj)
## factor-Rle of length 10 with 4 runs
## Lengths: 1 3 2 4
## Values : chr1 chr2 chr1 chr3
## Levels(3): chr1 chr2 chr3
ranges(grangeObj)
## IRanges object with 10 ranges and 0 metadata columns:
## start end width
## <integer> <integer> <integer>
## a 1 7 7
## b 2 8 7
## c 3 9 7
## d 4 10 7
## e 5 11 7
## f 6 12 7
## g 7 13 7
## h 8 14 7
## i 9 15 7
## j 10 16 7
strand(grangeObj)
## factor-Rle of length 10 with 5 runs
## Lengths: 1 2 2 3 2
## Values : - + * + -
## Levels(3): + - *
最后, 提供了项目统计分析部分的简单示例。为此, 可以讨论基因本体论(GO)分类。 GO是用于解释基因功能的概念(分子功能, 细胞成分和生物学过程)的集合, 以及这些概念之间的关系。更具体地说, GO将基因和基因产物分层地分类为称为本体的图形。为了访问该三个适用的示例, 称为clusterProfiler的Bioconductor程序包, 可以使用DOSE和org.Hs.eg.db。
library("clusterProfiler")
##
## clusterProfiler v3.8.1 For help: https://guangchuangyu.github.io/software/clusterProfiler
##
## If you use clusterProfiler in published research, please cite:
## Guangchuang Yu, Li-Gen Wang, Yanyan Han, Qing-Yu He. clusterProfiler: an R package for comparing biological themes among gene clusters. OMICS: A Journal of Integrative Biology. 2012, 16(5):284-287.
library("DOSE")
## DOSE v3.6.1 For help: https://guangchuangyu.github.io/DOSE
##
## If you use DOSE in published research, please cite:
## Guangchuang Yu, Li-Gen Wang, Guang-Rong Yan, Qing-Yu He. DOSE: an R/Bioconductor package for Disease Ontology Semantic and Enrichment analysis. Bioinformatics 2015, 31(4):608-609
library("org.Hs.eg.db")
## Loading required package: AnnotationDbi
## Loading required package: Biobase
## Welcome to Bioconductor
##
## Vignettes contain introductory material; view with
## 'browseVignettes()'. To cite Bioconductor, see
## 'citation("Biobase")', and for packages 'citation("pkgname")'.
##
clusterProfiler软件包是一组指定用于分析和可视化功能配置文件(如基因和基因簇的GO)的方法。通过使用它, 你将能够根据不同基因的相似性对其进行聚类。为了举例说明该程序, 在DOSE软件包中使用的geneList数据集是一个不错的选择。它包含基因ID的信息内容。另一方面, org.Hs.eg.db程序包包括全基因组注释, 即遗传物质的序列表示形式, 其中丰富了涉及人类基因组位置的信息。
data(geneList, package="DOSE")
gene <- names(geneList)[abs(geneList) > 2]
richGO()函数对给定的基因载体执行GO富集分析。富集分析是一种根据功能分类来区分指定给一类预定义仓位的基因组的方法。丰富的结果可能包含非常笼统的术语。要使用此功能, 你必须填写一个名为” OrgDb”的参数。为此, 需要包括人类全基因组注释的org.Hs.eg.db软件包。该软件包由遗传材料的序列表示组成, 其中包含与基因组位置有关的信息。
ego <- enrichGO(gene = gene, universe = names(geneList), OrgDb = org.Hs.eg.db, ont = "CC", pAdjustMethod = "BH", pvalueCutoff = 0.01, qvalueCutoff = 0.05, readable = TRUE)
head(ego)
## ID Description GeneRatio
## GO:0005819 GO:0005819 spindle 25/201
## GO:0000779 GO:0000779 condensed chromosome, centromeric region 15/201
## GO:0072686 GO:0072686 mitotic spindle 14/201
## GO:0000775 GO:0000775 chromosome, centromeric region 18/201
## GO:0000776 GO:0000776 kinetochore 15/201
## GO:0000793 GO:0000793 condensed chromosome 18/201
## BgRatio pvalue p.adjust qvalue
## GO:0005819 256/11817 1.353146e-12 3.897060e-10 3.546666e-10
## GO:0000779 91/11817 3.013479e-11 3.393318e-09 3.088217e-09
## GO:0072686 77/11817 3.534706e-11 3.393318e-09 3.088217e-09
## GO:0000775 156/11817 1.429309e-10 1.029103e-08 9.365738e-09
## GO:0000776 106/11817 2.849245e-10 1.406873e-08 1.280378e-08
## GO:0000793 163/11817 2.970249e-10 1.406873e-08 1.280378e-08
## geneID
## GO:0005819 CDCA8/CDC20/KIF23/CENPE/ASPM/DLGAP5/SKA1/NUSAP1/TPX2/TACC3/NEK2/CDK1/MAD2L1/KIF18A/BIRC5/KIF11/TTK/AURKB/PRC1/KIFC1/KIF18B/KIF20A/AURKA/CCNB1/KIF4A
## GO:0000779 CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/CDT1/BIRC5/NCAPG/AURKB/AURKA/CCNB1
## GO:0072686 KIF23/CENPE/ASPM/NUSAP1/TPX2/TACC3/CDK1/MAD2L1/KIF18A/KIF11/AURKB/KIFC1/KIF18B/AURKA
## GO:0000775 CDCA8/CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/KIF18A/CDT1/BIRC5/TTK/NCAPG/AURKB/AURKA/CCNB1
## GO:0000776 CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/KIF18A/CDT1/BIRC5/TTK/AURKB/CCNB1
## GO:0000793 CENPE/NDC80/TOP2A/NCAPH/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/CDT1/BIRC5/NCAPG/AURKB/CHEK1/AURKA/CCNB1
## Count
## GO:0005819 25
## GO:0000779 15
## GO:0072686 14
## GO:0000775 18
## GO:0000776 15
## GO:0000793 18
为了说明浓缩图, 可以使用emapplot()函数。此功能将基因集展示为网络。要进行简单声明, 请考虑相互重叠的基因集将它们聚在一起。
emapplot(ego)
获得帮助
在使用Bioconductor软件包的过程中, 如果需要任何帮助, 则可以使用以下命令:
class(dnaSequence) # Indicate the class of the input object
## [1] "DNAStringSet"
## attr(, "package")
## [1] "Biostrings"
methods(class = "DNAStringSet") # List all available methods for a S3 and S4 generic function or class
## [1] ! !=
## [3] $ $<-
## [5] %in% [
## [7] [[ [[<-
## [9] [<- <
## [11] <= ==
## [13] > >=
## [15] aggregate alphabetFrequency
## [17] anyNA append
## [19] as.character as.complex
## [21] as.data.frame as.env
## [23] as.factor as.integer
## [25] as.list as.logical
## [27] as.matrix as.numeric
## [29] as.raw as.vector
## [31] by c
## [33] cbind chartr
## [35] coerce compact
## [37] compareStrings complement
## [39] concatenateObjects consensusMatrix
## [41] consensusString countOverlaps
## [43] countPattern countPDict
## [45] dinucleotideFrequencyTest do.call
## [47] droplevels duplicated
## [49] elementMetadata elementMetadata<-
## [51] elementNROWS elementType
## [53] eval expand
## [55] expand.grid extractAt
## [57] extractROWS Filter
## [59] findOverlaps getListElement
## [61] hasOnlyBaseLetters head
## [63] ifelse2 intersect
## [65] is.na is.unsorted
## [67] isEmpty isMatchingEndingAt
## [69] isMatchingStartingAt lapply
## [71] length lengths
## [73] letterFrequency match
## [75] matchPattern matchPDict
## [77] mcols mcols<-
## [79] merge metadata
## [81] metadata<- mstack
## [83] names names<-
## [85] nchar neditEndingAt
## [87] neditStartingAt NROW
## [89] nucleotideFrequencyAt oligonucleotideFrequency
## [91] order overlapsAny
## [93] PairwiseAlignments PairwiseAlignmentsSingleSubject
## [95] parallelSlotNames parallelVectorNames
## [97] pcompare pcompareRecursively
## [99] PDict PWM
## [101] rank rbind
## [103] Reduce relist
## [105] relistToClass rename
## [107] rep rep.int
## [109] replaceAt replaceLetterAt
## [111] replaceROWS rev
## [113] revElements reverse
## [115] reverseComplement ROWNAMES
## [117] sapply seqinfo
## [119] seqinfo<- seqlevelsInUse
## [121] seqtype seqtype<-
## [123] setdiff setequal
## [125] setListElement shiftApply
## [127] show showAsCell
## [129] sort split
## [131] split<- stack
## [133] stringDist strsplit
## [135] subseq subseq<-
## [137] subset subsetByOverlaps
## [139] table tail
## [141] tapply threebands
## [143] toString transform
## [145] translate trimLRPatterns
## [147] twoWayAlphabetFrequency union
## [149] unique uniqueLetters
## [151] unlist unsplit
## [153] unstrsplit updateObject
## [155] values values<-
## [157] vcountPattern vcountPDict
## [159] vmatchPattern vwhichPDict
## [161] which.isMatchingEndingAt which.isMatchingStartingAt
## [163] whichPDict width
## [165] window window<-
## [167] windows with
## [169] within xtabs
## [171] xvcopy zipdown
## see '?methods' for accessing help and source code
?complement # Show the help page of the function
## starting httpd help server ... done
browseVignettes(package="Biostrings") # Refers to all available vignettes of the input package
此外, Bioconductor网站上有很多方便的帮助页面和工作流程:
- https://bioconductor.org/packages
- https://support.bioconductor.org
本文总结
通过阅读本教程, 你熟悉了生物导体项目, 它在生物学研究工作中的基本作用。此外, 还提到了生物导体包装的类型以及一些最重要的包装。在下一步中, 说明了有关如何安装和使用项目的简短工作流程。你了解了如何与Biostring和GenomicRanges软件包一起使用, 结果, 你熟悉了DNA序列和基因组范围。在另一个样本中, 你试图对一组人类基因进行富集分析。因此, 你学习了浓缩分析和GO的概念。在下一部分中, 将介绍在生物导体研究过程中获得帮助的各种方法。如果你想了解更多有关该项目的信息, 请随时访问Bioconductor_courses。
如果你想了解有关R的更多信息, 请参加srcmini的R实验课程。
评论前必须登录!
注册