Skip to content

Commit

Permalink
Merge pull request #80 from jgallowa07/add_genome_mean_mutation_rate
Browse files Browse the repository at this point in the history
added mean_recombination_rate to genome and respective tests
  • Loading branch information
andrewkern committed May 21, 2019
2 parents 9327873 + 0a8ffa1 commit 2542d14
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 2 deletions.
14 changes: 14 additions & 0 deletions stdpopsim/genomes.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,20 @@ def mean_recombination_rate(self):
mean_recombination_rate += cont
return mean_recombination_rate

@property
def mean_mutation_rate(self):
"""
This method return the weighted mean mutation rate
across all chomosomes in the genome.
:rtype: float
"""
mean_mutation_rate = 0
for chrom in self.chromosomes.values():
normalized_weight = chrom.length / self.length
cont = chrom.default_mutation_rate*normalized_weight
mean_mutation_rate += cont
return mean_mutation_rate


class Chromosome(object):
"""
Expand Down
24 changes: 22 additions & 2 deletions tests/test_homo_sapiens.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ def test_default_recombination_rates(self):
self.assertTrue(np.allclose(default_rr, numpy_rr))

def test_default_recombination_rate(self):
"""
Simply test that the mean recombination rate
lies between the max and min values
"""
genome = homo_sapiens.genome
highest_rr = 0
lowest_rr = 10000
Expand All @@ -92,8 +96,24 @@ def test_default_recombination_rate(self):
lowest_rr = min(lowest_rr, rr)
highest_rr = max(highest_rr, rr)
mean_genome_rr = genome.mean_recombination_rate
self.assertGreater(mean_genome_rr, lowest_rr)
self.assertGreater(highest_rr, mean_genome_rr)
self.assertGreaterEqual(mean_genome_rr, lowest_rr)
self.assertGreaterEqual(highest_rr, mean_genome_rr)

def test_default_mutation_rate(self):
"""
Simply test that the mean mutation rate
lies between the max and min values
"""
genome = homo_sapiens.genome
highest_mr = 0
lowest_mr = 10000
for chrom in genome.chromosomes.values():
mr = chrom.default_mutation_rate
lowest_mr = min(lowest_mr, mr)
highest_mr = max(highest_mr, mr)
mean_genome_mr = genome.mean_mutation_rate
self.assertGreaterEqual(mean_genome_mr, lowest_mr)
self.assertGreaterEqual(highest_mr, mean_genome_mr)

def test_warning_from_no_mapped_chromosome(self):
"""
Expand Down

0 comments on commit 2542d14

Please sign in to comment.