1

I need to draw the probability density for a random position for Length of fragment = 600, Genome size = 3 × 109, and Number of reads = 10 million reads

depth_of_coverage <- function(genome = 3E9, fragment_length = 600, reads = 10E6) {
  depth <- 0
  for(i in 1:reads){
    random_position <- sample(1:genome, 1)
    coverage <- sample(1:genome, fragment_length)
    depth <- depth + sum(coverage == random_position)
  }
  return(depth)
}

depth_of_coverage()

This takes a long time to run...

ibnadam
  • 13
  • 2

1 Answers1

0

Sample the binomial distribution using rbinom():

depth_of_coverage <- function(genome = 3E9, fragment_length = 600, reads = 10E6, sims = 1) {
  rbinom(sims, reads, fragment_length/genome)
}

This will be many orders of magnitude faster than your current approach.

Ritchie Sacramento
  • 29,890
  • 4
  • 48
  • 56