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

Issue:
threespine stickleback
- **Name:** Gasterosteus aculeatus
- **Common name:** Threespine stickleback

**Demographic information:**

- [] 2 years (Liu et al. Mol Ecol doi: 10.1111/mec.13827)
- [] 10000 (Liu et al. Mol Ecol doi: 10.1111/mec.13827, estimate for marine populations)


**Chromosome structure:**
name length (Mb)
Chr1 29.62
Chr2 23.69
Chr3 17.76
Chr4 34.18
Chr5 15.55
Chr6 18.83
Chr7 30.78
Chr8 20.55
Chr9 20.84
Chr10 17.99
Chr11 17.65
Chr12 20.69
Chr13 20.75
Chr14 16.15
Chr15 17.32
Chr16 19.51
Chr17 20.20
Chr18 15.94
Chr19 20.58
Chr20 20.45
Chr21 17.42
ChrY  15.86
- [] ensembl assembly ID *or*, if the assembly is not in Ensembl, a list of chromosomes with *name* and *length* (in bp)
https://www.ncbi.nlm.nih.gov/genome/146
Ensembl assembly is old Broad assembly from 2012 and is not chromosomal.
*Note: species in Ensembl can be found in one of these lists:
[vertebrates](https://uswest.ensembl.org/info/about/species.html),
["metazoa"](https://metazoa.ensembl.org/species.html),
[plants](https://plants.ensembl.org/species.html),
[fungi](https://fungi.ensembl.org/species.html),
[protists](http://protists.ensembl.org/species.html),
or [bacteria](http://bacteria.ensembl.org/species.html).*


**Recombination rates:**

- [3.11 cM/Mb] genome-wide mean recombination rate (which will be used as the default)
Roesti et al. doi: 10.1111/mec.12322

**Mutation rate:**

- [3.7 × 10−8 substitutions/nucleotide/generation] genome-wide mean mutation rate
(Liu et al. Mol Ecol doi: 10.1111/mec.13827)

**Demographic model:**

- [] as a list of population sizes, growth rates, migration rates, etcetera. **(optional)**
- [] citation


**Other information:**

These are things we don't currently use, but will want to use in the future:

- [] sex determination system, and which chromosomes are the sex chromosome(s)
- [] ploidy



Discussion / hints:
@Stickle-Back-in-Time we just added  support for pulling this information from NCBI. You can run it like this:

```
$ python3 -m maintenance add-species-ncbi 9307941
```




Fix patch:
diff --git a/stdpopsim/catalog/GasAcu/species.py b/stdpopsim/catalog/GasAcu/species.py
index 1e657305f..ec8d226b6 100644
--- a/stdpopsim/catalog/GasAcu/species.py
+++ b/stdpopsim/catalog/GasAcu/species.py
@@ -2,6 +2,8 @@
 
 from . import genome_data
 
+# Average genome-wide recombination rate of 3.11 cM/Mb.
+# From the abstract and the beginning of the Results section.
 _recombination_rate = {
     "1": 3.11e-08,
     "2": 3.11e-08,
@@ -28,6 +30,8 @@
     "MT": 0,
 }
 
+# From the PSMC results.
+# Intermediate value between the from Materials and Methods.
 _overall_rate = 3.7e-8
 _mutation_rate = {
     "1": _overall_rate,
@@ -69,13 +73,13 @@
         stdpopsim.Citation(
             author="Roesti et al.",
             year=2013,
-            doi="https://10.1111/mec.12322",
+            doi="https://doi.org/10.1111/mec.12322",
             reasons={stdpopsim.CiteReason.REC_RATE},
         ),
         stdpopsim.Citation(
             author="Liu et al.",
             year=2016,
-            doi="https://10.1111/mec.13827",
+            doi="https://doi.org/10.1111/mec.13827",
             reasons={stdpopsim.CiteReason.MUT_RATE},
         ),
     ],
@@ -87,13 +91,13 @@
     name="Gasterosteus aculeatus",
     common_name="Three-spined stickleback",
     genome=_genome,
-    generation_time=1,
-    population_size=1e4,
+    generation_time=2,  # PSMC description at the Materials and Methods.
+    population_size=1e4,  # From PSMC results.
     citations=[
         stdpopsim.Citation(
             author="Liu et al.",
             year=2016,
-            doi="https://10.1111/mec.13827",
+            doi="https://doi.org/10.1111/mec.13827",
             reasons={stdpopsim.CiteReason.POP_SIZE, stdpopsim.CiteReason.GEN_TIME},
         ),
     ],


Test patch:
diff --git a/tests/test_GasAcu.py b/tests/test_GasAcu.py
index a9815f91a..647ce59d3 100644
--- a/tests/test_GasAcu.py
+++ b/tests/test_GasAcu.py
@@ -21,46 +21,43 @@ 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 == 1e4
 
-    @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 == 2
 
 
 class TestGenomeData(test_species.GenomeTestBase):
 
     genome = stdpopsim.get_species("GasAcu").genome
 
-    @pytest.mark.skip("Recombination 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,
-            "21": -1,
-            "Y": -1,
-            "MT": -1,
+            "1": 3.11e-08,
+            "2": 3.11e-08,
+            "3": 3.11e-08,
+            "4": 3.11e-08,
+            "5": 3.11e-08,
+            "6": 3.11e-08,
+            "7": 3.11e-08,
+            "8": 3.11e-08,
+            "9": 3.11e-08,
+            "10": 3.11e-08,
+            "11": 3.11e-08,
+            "12": 3.11e-08,
+            "13": 3.11e-08,
+            "14": 3.11e-08,
+            "15": 3.11e-08,
+            "16": 3.11e-08,
+            "17": 3.11e-08,
+            "18": 3.11e-08,
+            "19": 3.11e-08,
+            "20": 3.11e-08,
+            "21": 3.11e-08,
+            "Y": 0,
+            "MT": 0,
         }.items(),
     )
     def test_recombination_rate(self, name, rate):
@@ -68,33 +65,32 @@ 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,
-            "21": -1,
-            "Y": -1,
-            "MT": -1,
+            "1": 3.7e-8,
+            "2": 3.7e-8,
+            "3": 3.7e-8,
+            "4": 3.7e-8,
+            "5": 3.7e-8,
+            "6": 3.7e-8,
+            "7": 3.7e-8,
+            "8": 3.7e-8,
+            "9": 3.7e-8,
+            "10": 3.7e-8,
+            "11": 3.7e-8,
+            "12": 3.7e-8,
+            "13": 3.7e-8,
+            "14": 3.7e-8,
+            "15": 3.7e-8,
+            "16": 3.7e-8,
+            "17": 3.7e-8,
+            "18": 3.7e-8,
+            "19": 3.7e-8,
+            "20": 3.7e-8,
+            "21": 3.7e-8,
+            "Y": 3.7e-8,
+            "MT": 3.7e-8,
         }.items(),
     )
     def test_mutation_rate(self, name, rate):