如何使用 R 从 FASTA 文件中为 BED 文件中定义的每个间隔提取序列?
How can I extract sequences from a FASTA file for each of the intervals defined in a BED file using R?
如何使用 R 从 FASTA 文件中为 BED 文件中定义的每个间隔提取序列?
使用的参考基因组是"Gallus gallus",可以通过以下方式获得:
source("http://bioconductor.org/biocLite.R")
biocLite("BSgenome.Ggallus.UCSC.galGal4")
library(BSgenome.Ggallus.UCSC.galGal4)
我的数据文件是 gRanges 包的结果
library("GenomicRanges")
> olaps
GRanges object with 2141 ranges and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr14 [ 1665929, 1673673] *
[2] chr14 [ 2587465, 2595209] *
[3] chr14 [ 8143785, 8151529] *
[4] chr14 [ 9779705, 9787449] *
[5] chr14 [10281129, 10288873] *
... ... ... ...
[2137] chr24 [3280553, 3288297] *
[2138] chr24 [3330889, 3338633] *
[2139] chr24 [3005641, 3015321] *
[2140] chr24 [3319273, 3327017] *
[2141] chr24 [5549545, 5557289] *
-------
seqinfo: 31 sequences from an unspecified genome; no seqlengths
我可以在 data.table
中进行转换
olaps<- as.data.table(olaps)
要使用的示例:
olaps<-"seqnames start end width strand
chr1 1665929 1673673 7745 *
chr1 2587465 2595209 7745 *
chr1 8143785 8151529 7745 *
chr2 9779705 9787449 7745 *
chr2 10281129 10288873 7745 *"
olaps<-read.table(text=olaps,header=T)
预期结果:
像这样(fasta 格式):
>SEQUENCE_1
ACTGACTAGCATCGCAT...
>SEQUENCE_2
ACGTAGAGAGGGACATA...
>SEQUENCE_3...
我一直尝试使用这个包直到现在都没有成功:
source("http://bioconductor.org/biocLite.R")
biocLite("rtracklayer")
这个,应该可以解决你的问题:
第一个:
seq = BSgenome::getSeq(BSgenome.Ggallus.UCSC.galGal4, olaps)
向序列中添加名称:
names(seq) = paste0("SEQUENCE_", seq_along(seq))
从您的序列中生成“.fasta”:
Biostrings::writeXStringSet(seq, "my.fasta")
之前提供了更多详细信息:
如何使用 R 从 FASTA 文件中为 BED 文件中定义的每个间隔提取序列? 使用的参考基因组是"Gallus gallus",可以通过以下方式获得:
source("http://bioconductor.org/biocLite.R")
biocLite("BSgenome.Ggallus.UCSC.galGal4")
library(BSgenome.Ggallus.UCSC.galGal4)
我的数据文件是 gRanges 包的结果
library("GenomicRanges")
> olaps
GRanges object with 2141 ranges and 0 metadata columns:
seqnames ranges strand
<Rle> <IRanges> <Rle>
[1] chr14 [ 1665929, 1673673] *
[2] chr14 [ 2587465, 2595209] *
[3] chr14 [ 8143785, 8151529] *
[4] chr14 [ 9779705, 9787449] *
[5] chr14 [10281129, 10288873] *
... ... ... ...
[2137] chr24 [3280553, 3288297] *
[2138] chr24 [3330889, 3338633] *
[2139] chr24 [3005641, 3015321] *
[2140] chr24 [3319273, 3327017] *
[2141] chr24 [5549545, 5557289] *
-------
seqinfo: 31 sequences from an unspecified genome; no seqlengths
我可以在 data.table
中进行转换olaps<- as.data.table(olaps)
要使用的示例:
olaps<-"seqnames start end width strand
chr1 1665929 1673673 7745 *
chr1 2587465 2595209 7745 *
chr1 8143785 8151529 7745 *
chr2 9779705 9787449 7745 *
chr2 10281129 10288873 7745 *"
olaps<-read.table(text=olaps,header=T)
预期结果: 像这样(fasta 格式):
>SEQUENCE_1
ACTGACTAGCATCGCAT...
>SEQUENCE_2
ACGTAGAGAGGGACATA...
>SEQUENCE_3...
我一直尝试使用这个包直到现在都没有成功:
source("http://bioconductor.org/biocLite.R")
biocLite("rtracklayer")
这个,应该可以解决你的问题:
第一个:
seq = BSgenome::getSeq(BSgenome.Ggallus.UCSC.galGal4, olaps)
向序列中添加名称:
names(seq) = paste0("SEQUENCE_", seq_along(seq))
从您的序列中生成“.fasta”:
Biostrings::writeXStringSet(seq, "my.fasta")
之前提供了更多详细信息: