BRGenomics 1.11.0
导入基因组文件是使用rtracklayer
包,其中包含多种功能和导入导出选项。
# import床文件genelist <- import.bed("~/data/genelists/genes.bed") # import GFF genelist <- import. GFF ("~/data/genelists/genes.gff") #修改export后导出床文件。床(genelist“~ /数据/ genelists / filtered_genes.bed”)
一个更有用的GenomicRanges
函数是发起人()
函数,返回以特定于输入范围的字符串开头为中心的范围:
库(BRGenomics)
Data ("txs_dm6_chr4") tx4 <- txs_dm6_chr4[c(1,10,200,300)] tx4 . txt ("txs_dm6_chr4"
| tx_name gene_id ## | > ## [1] chr4 879-5039 + | FBtr0346692 FBgn0267363 ## [2] chr4 69326-110059 + | FBtr0308615 FBgn0085432 ## [3] chr4 184225-193489 - | FBtr0089150 FBgn0039890 ## [4] chr4 1009895-1027101 - | FBtr0309865 FBgn0025741 ## ------- # seqinfo: 7个序列来自dm6基因组
Tx4_pr <- promoter (tx4, upstream = 50, downstream = 100) Tx4_pr
| tx_name gene_id ## | > ## [1] chr4 829-978 + | FBtr0346692 FBgn0267363 ## [2] chr4 69276-69425 + | FBtr0308615 FBgn0085432 ## [3] chr4 193390-193539 - | FBtr0089150 FBgn0039890 ## [4] chr4 1027002-1027151 - | FBtr0309865 FBgn0025741 ## ------- # seqinfo: 7个序列来自dm6基因组
宽度(tx4_pr)
## [1] 150 150 150 150
BRGenomics提供了一种更灵活的替代功能genebodies ()
.而发起人()
有论点上游
而且下游
,只取正值,则genebodies ()
函数使用开始
而且结束
论点可以是正面的也可以是负面的,还有论点fix.start
而且fix.end
用于确定是否定义与基因(特定链)开始或结束相关的位置。
的几种用法genebodies ()
功能,使用转录本列表,开始于转录起始位点(TSS)和结束于卵裂和多聚腺苷酸化位点(CPS)。
原来的区域:
tx4
| tx_name gene_id ## | > ## [1] chr4 879-5039 + | FBtr0346692 FBgn0267363 ## [2] chr4 69326-110059 + | FBtr0308615 FBgn0085432 ## [3] chr4 184225-193489 - | FBtr0089150 FBgn0039890 ## [4] chr4 1009895-1027101 - | FBtr0309865 FBgn0025741 ## ------- # seqinfo: 7个序列来自dm6基因组
从TSS下游300 bp到CPS上游300 bp的基因体区域:
Genebodies (tx4, start = 300, end = -300)
| tx_name gene_id ## | ## [1] chr4 1179-4739 + | FBtr0346692 FBgn0267363 ## [2] chr4 69626-109759 + | FBtr0308615 FBgn0085432 ## [3] chr4 184525-193189 - | FBtr0089150 FBgn0039890 ## [4] chr4 1010195-1026801 - | FBtr0309865 FBgn0025741 ## ------- # seqinfo: 7个序列来自dm6基因组
默认情况下,fix.start= "start"
而且fix.end= "end"
.但我们可以改变它们中的任何一个来定义仅仅基于输入区域的开始或结束的范围。
从TSS上游50 bp到下游100 bp的启动子区域:
基因体(tx4, - 50,100,固定。End = "start")
| tx_name gene_id ## | > ## [1] chr4 829-979 + | FBtr0346692 FBgn0267363 ## [2] chr4 69276-69426 + | FBtr0308615 FBgn0085432 ## [3] chr4 193389-193539 - | FBtr0089150 FBgn0039890 ## [4] chr4 1027001-1027151 - | FBtr0309865 FBgn0025741 ## ------- # seqinfo: 7个序列来自dm6基因组
由污水处理厂上游100 bp至50 bp的地区:
基因体(tx4, -100, -50,固定。End = "start")
| tx_name gene_id ## | > [1] chr4 779-829 + | FBtr0346692 FBgn0267363 ## [2] chr4 69226-69276 + | FBtr0308615 FBgn0085432 ## [3] chr4 193539-193589 - | FBtr0089150 FBgn0039890 ## [4] chr4 1027151-1027201 - | FBtr0309865 FBgn0025741 ## ------- # seqinfo:来自dm6基因组的7个序列
从CPS上游1kb到CPS下游1kb的区域
基因体(tx4, - 1000,1000,固定。Start = "end")
| tx_name gene_id ## | ## [1] chr4 4039-6039 + | FBtr0346692 FBgn0267363 ## [2] chr4 109059-111059 + | FBtr0308615 FBgn0085432 ## [3] chr4 183225-185225 - | FBtr0089150 FBgn0039890 ## [4] chr4 1008895-1010895 - | FBtr0309865 FBgn0025741 ## ------- # seqinfo: 7个序列来自dm6基因组
CPS下游首10kb范围内的地区:
基因体(tx4,0,10000,修复。Start = "end")
| tx_name gene_id ## | [1] chr4 5039-15039 + | FBtr0346692 FBgn0267363 ## [2] chr4 110059-120059 + | FBtr0308615 FBgn0085432 ## [3] chr4 174225-184225 - | FBtr0089150 FBgn0039890 ## [4] chr4 999895- | FBtr0309865 FBgn0025741 ## ------- # seqinfo:来自dm6基因组的7个序列
的reduceByGene ()
而且intersectByGene ()
是另外两个有用的函数,它们非常有效地执行两项常见任务。
reduceByGene ()
取所有具有相同基因名称的范围(例如,不同的转录异构体),并将它们组合在一起,以表示所有的位置。
TXS <- txs_dm6_chr4[order(txs_dm6_chr4$gene_id)] #按gene_id排序TXS [1:10]
有10个范围和2个元数据列的GRanges对象:## seqnames ranges | tx_name gene_id ## | b> >
reduceByGene(txs, gene_names = txs$gene_id)
## seqnames ranges strand ## ## FBgn0002521 chr4 1172469-1181628 - ## FBgn0004607 chr4 501810-540874 + ## FBgn0004859 chr4 47710-57041 - ## FBgn0005558 chr4 697689-721173 + ## FBgn0005561 chr4 1088798-1113317 + ## ... ... ... ...## FBgn0266727 chr4 776475-777146 - ## FBgn0266728 chr4 959224-959434 - ## FBgn0267363 chr4 879-5039 + ## FBgn0267734 chr4 228576-229112 - ## FBgn0283557 chr4 400703-400765 - ## ------- # seqinfo:来自dm6基因组的7个序列
默认情况下,基因名被维护为输出中的行(范围)名。要再次将它们设置为元数据,我们可以运行:
txs_redux <- reduceByGene(txs, gene_names = txs$gene_id) txs_redux$gene_id <- names(txs_redux) names(txs_redux) <- NULL txs_redux
## GRanges对象,111个范围和1个元数据列:## seqnames ranges strand | gene_id ## | ## [1] chr4 1172469-1181628 - | FBgn0002521 ## [2] chr4 501810-540874 + | FBgn0004607 ## [3] chr4 47710-57041 - | FBgn0004859 ## [4] chr4 697689-721173 + | FBgn0005558 ## [5] chr4 1088798-1113317 + | FBgn0005561 ## ... ... ... ... . ...## [107] chr4 776475-777146 - | FBgn0266727 ## [108] chr4 959224-959434 - | FBgn0266728 ## [109] chr4 879-5039 + | FBgn0267363 ## [110] chr4 228576-229112 - | FBgn0267734 ## [111] chr4 400703-400765 - | FBgn0283557 ## ------- # seqinfo:来自dm6基因组的7个序列
请注意,reduceByGene ()
不能保证每个基因产生一个单一的范围,但会产生最少数量的范围来表示所有输入位置。
还要注意,虽然给定基因的输出范围是不相连的,但不同基因的范围可能相互重叠。
要使所有范围不相交(没有位置重叠超过一次),请设置disjoin = TRUE
.
3.2intersectByGene
而reduceByGene ()
创建所有输入范围的综合表示(例如,输入范围集的“并集”),intersectByGene ()
仅输出一致区域,即在特定基因的所有范围内共享的区域。
tx [1:10]
有10个范围和2个元数据列的GRanges对象:## seqnames ranges | tx_name gene_id ## | b> >
txs_insxt <- intersectByGene(txs, gene_names = txs$gene_id) txs_insxt[order(names(txs_insxt))]
## seqnames ranges strand ## ## FBgn0002521 chr4 1172469-1181628 - ## FBgn0004607 chr4 501810-538373 + ## FBgn0004859 chr4 47710-56331 - ## FBgn0005558 chr4 707429-721173 + ## FBgn0005561 chr4 1098525-1110974 + ## ... ... ... ...## FBgn0266727 chr4 776475-777146 - ## FBgn0266728 chr4 959224-959434 - ## FBgn0267363 chr4 879-5039 + ## FBgn0267734 chr4 228576-229112 - ## FBgn0283557 chr4 400703-400765 - ## ------- # seqinfo:来自dm6基因组的7个序列
不像reduceByGene ()
,intersectByGene ()
保证每个基因返回不超过1个范围。然而,不可能达成共识的基因(即没有一个单一范围可以重叠每个输入范围)将从基因列表中删除。