Repository: popsim-consortium/stdpopsim (language: python)

Issue:
QC for Papio Anubis (olive baboon)
**PR for new species:** https://github.com/popsim-consortium/stdpopsim/pull/1216

If you volunteer to QC this species, please use the checklist below.
While this list is intended to be comprehensive, it may not be exhaustive.
Where relevant, the QC reviewer should identify that parameter values match
those given in the linked citation(s).

The QC reviewer should start a pull request that fills out the test stubs
with independently obtained values. The reviewer may look at the python code
for rationale provided in comments, but should ignore the actual code
as much as possible - comments in the code should give enough information
that it's obvious how to get the correct value from the provided references.
(In particular, we shouldn't copy-paste the value from the code into the test!)

- [x] Recombination rate.
  - This might be genome-wide, or per-chromosome. Both are fine.
  - Check there's a comment describing where it came from, and/or how calculated.
  - From a publication? Check the value(s) match the publication.
  - Calculated somehow? Average over a recombination map? Redo the calculation.
- [x] Mutation rate.
  - This might be genome-wide, or per-chromosome. Both are fine.
  - Check there's a comment describing where it came from, and/or how calculated.
  - From a publication? Check the value(s) match the publication.
  - Calculated somehow? Redo the calculation.
- [x] Recombination map (if present).
  - Does it match the assembly? Liftover is fine, if clearly stated.
  - Is the description/long_description a good summary of how the map was created?
- [x] Population size.
- [x] Generation time.

For each citation, check:
- Doi link.
- Is publication a preprint? Is there a peer-reviewed publication instead?
- Is the year correct.
- Is the author correct (spelling, accents/ligatures/etc.)

Citations are required for:
- [x] Genome reference assembly.
- [x] Mutation rate.
- [x] Recombination rate.
- [x] Recombination map(s) (if relevant).
- [x] Population size.
- [x] Generation time.

The final PR should:
- [x] fill out the test stubs
- [x] delete the `pytest.mark.skip` lines that make the tests not run
- [x] make sure they pass, talking to the original author to figure out discrepancies

Added the demographic model docs parameter table for Olive Baboons
I hadn't added the parameter table for the demographic model in the docs directory in my previous PR. Creating a new PR since that previous PR has already been merged. 


Discussion / hints:
Note that can't be done until #1216 is done (i.e., the species itself is merged in).
I'll QC this.


Fix patch:
diff --git a/stdpopsim/catalog/PapAnu/species.py b/stdpopsim/catalog/PapAnu/species.py
index edeb16e2e..c64b1c81e 100644
--- a/stdpopsim/catalog/PapAnu/species.py
+++ b/stdpopsim/catalog/PapAnu/species.py
@@ -2,8 +2,10 @@
 
 from . import genome_data
 
-# recombination rates for autosomes are obtained from
+# Recombination rates for autosomes are obtained from
 # Wall et. al. 2022 GBE
+# The autosomes recombination rates were computed as simple averages
+# across all windows.
 # Recombination for X chromosome has not been estimated
 # and is assigned the mean value of other chromosomes
 _recombination_rate = {


Test patch:
diff --git a/tests/test_PapAnu.py b/tests/test_PapAnu.py
index 10f817b52..70c2b6007 100644
--- a/tests/test_PapAnu.py
+++ b/tests/test_PapAnu.py
@@ -21,13 +21,11 @@ def test_common_name(self):
     # independently referring to the citations provided in the
     # species definition, filling in the appropriate values
     # and deleting the pytest "skip" annotations.
-    @pytest.mark.skip("Population size QC not done yet")
     def test_qc_population_size(self):
-        assert self.species.population_size == -1
+        assert self.species.population_size == 335505
 
-    @pytest.mark.skip("Generation time QC not done yet")
     def test_qc_generation_time(self):
-        assert self.species.generation_time == -1
+        assert self.species.generation_time == 11
 
 
 class TestGenomeData(test_species.GenomeTestBase):
@@ -38,28 +36,28 @@ class TestGenomeData(test_species.GenomeTestBase):
     @pytest.mark.parametrize(
         ["name", "rate"],
         {
-            "1": -1,
-            "2": -1,
-            "3": -1,
-            "4": -1,
-            "5": -1,
-            "6": -1,
-            "7": -1,
-            "8": -1,
-            "9": -1,
-            "10": -1,
-            "11": -1,
-            "12": -1,
-            "13": -1,
-            "14": -1,
-            "15": -1,
-            "16": -1,
-            "17": -1,
-            "18": -1,
-            "19": -1,
-            "20": -1,
-            "X": -1,
-            "Y": -1,
+            "1": 9.926379e-09,
+            "2": 9.605435e-09,
+            "3": 9.022377e-09,
+            "4": 9.825128e-09,
+            "5": 9.579804e-09,
+            "6": 1.049788e-08,
+            "7": 1.118884e-08,
+            "8": 1.108988e-08,
+            "9": 1.132883e-08,
+            "10": 1.175322e-08,
+            "11": 1.184026e-08,
+            "12": 1.082400e-08,
+            "13": 1.246772e-08,
+            "14": 1.274188e-08,
+            "15": 1.260836e-08,
+            "16": 1.476158e-08,
+            "17": 1.524101e-08,
+            "18": 1.368410e-08,
+            "19": 1.303735e-08,
+            "20": 1.677201e-08,
+            "X": 1.18898e-08,
+            "Y": 0.0,
         }.items(),
     )
     def test_recombination_rate(self, name, rate):
@@ -67,32 +65,31 @@ def test_recombination_rate(self, name, rate):
             self.genome.get_chromosome(name).recombination_rate
         )
 
-    @pytest.mark.skip("Mutation rate QC not done yet")
     @pytest.mark.parametrize(
         ["name", "rate"],
         {
-            "1": -1,
-            "2": -1,
-            "3": -1,
-            "4": -1,
-            "5": -1,
-            "6": -1,
-            "7": -1,
-            "8": -1,
-            "9": -1,
-            "10": -1,
-            "11": -1,
-            "12": -1,
-            "13": -1,
-            "14": -1,
-            "15": -1,
-            "16": -1,
-            "17": -1,
-            "18": -1,
-            "19": -1,
-            "20": -1,
-            "X": -1,
-            "Y": -1,
+            "1": 5.7e-9,
+            "2": 5.7e-9,
+            "3": 5.7e-9,
+            "4": 5.7e-9,
+            "5": 5.7e-9,
+            "6": 5.7e-9,
+            "7": 5.7e-9,
+            "8": 5.7e-9,
+            "9": 5.7e-9,
+            "10": 5.7e-9,
+            "11": 5.7e-9,
+            "12": 5.7e-9,
+            "13": 5.7e-9,
+            "14": 5.7e-9,
+            "15": 5.7e-9,
+            "16": 5.7e-9,
+            "17": 5.7e-9,
+            "18": 5.7e-9,
+            "19": 5.7e-9,
+            "20": 5.7e-9,
+            "X": 5.7e-9,
+            "Y": 5.7e-9,
         }.items(),
     )
     def test_mutation_rate(self, name, rate):