1からNまでの位置(Nは数百万にもなるが、ここではN = 1000と仮定する)の場合、 2つの軸上のいくつかの点の位置をそれぞれ記録する2つのベクトルがある。例えば:組換えベクターを効率的に得るには?
chrm1 <- c(1, 35, 456, 732) # 4 points on axis 1 at position 1, 35, 456, 732;
chrm2 <- c(23, 501, 980)
組換えは、2つの軸の位置300で、2つの車軸上の300の背後に指している場合は、他の軸に切り替わります。ポイントの位置を記録 二つのベクトルはなります:
chrm1 <- c(1, 35, 501, 980)
chrm2 <- c(23, 456, 732)
第2の組換えが600で発生した場合、新しいベクトルは次のようになります。
chrm1 <- c(1, 35, 501, 732)
chrm2 <- c(23, 456, 980)
実際のデータは、次のようになります。
set.seed(1)
chrm1 <- sample.int(1e8, 50)
chrm2 <- sample.int(1e8, 50)
breaks.site <- sample.int(1e8, 5)
私の強引なやり方は、各ブレークサイトのポイントを他のベクトルに入れ替えることでした。しかし、これは2 x 1000 x 20000回行う必要があるため、これはかなり遅いです。 どのように再結合されたベクトルを効率的に得るには?
for(i in breaks.site){
chrm1.new <- c(chrm1[chrm1 < i], chrm2[chrm2 > i])
chrm2.new <- c(chrm1[chrm1 > i], chrm2[chrm2 < i])
chrm1 <- chrm1.new
chrm2 <- chrm2.new
}
換えに関する背景: https://en.wikipedia.org/wiki/Genetic_recombination
点の説明に長さの異なるベクトルがあるのはなぜですか? – Roland
あなたのブルートフォースは何ですか? – alistaire
@aichao、私は、短い例で論理を明確にし、各段階で何が起こるかと思います。 – mt1022