これは、やや単純なプログラミングの問題を想定していますが、苦労しています。主に、適切な言葉を知らないためでしょうか。
「範囲」のセット (1-以下の数値のセット、2-IRanges、または 3-GenomicRanges の形式) が与えられた場合、それをより小さな範囲のセットに分割したいと思います。
例の始まり:
Chr Start End
1 1 10000
2 1 5000
休憩のサイズの例: 2000
新しいデータセット:
Chr Start End
1 1 2000
1 2001 4000
1 4001 6000
1 6001 8000
1 8001 10000
2 1 2000
2 2001 4000
2 4001 5000
私はこれを R で行っています。これらを で簡単に生成できることはわかってseq
いますが、新しいリストを作成するたびに手動で行うのではなく、地域のリスト/df に基づいて実行できるようにしたいと考えています。地域の。
seq を使用して作成した例を次に示します。
与えられた 22 の染色体をループして、それぞれをバラバラに分解する
# initialize df
Regions <- data.frame(Chromosome = c(), Start = c(), End = c())
# for each row, do the following
for(i in 1:nrow(Chromosomes)){
# create a sequence from the minimum start to the max end by some value
breks <- seq(min(Chromosomes$Start[Chromosomes$Chromosome == i]), max(Chromosomes$End[Chromosomes$Chromosome == i]), by=2000000)
# put this into a dataframe
database <- data.frame(Chromosome = i, Start = breks, End = c(breks[2:length(breks)]-1, max(Chromosomes$End[Chromosomes$Chromosome == i])))
# bind with what we already have
Regions <- rbind(Regions, database)
rm(database)
}
これは問題なく動作します。これには制限があるため、これをワンライナーまたはより柔軟にするためにパッケージに組み込まれているものがあるかどうか疑問に思っています。