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

Issue:
add vaquita
As discussed today, vaquita has a good assembly and various demographic models. It even has a DFE inferred, but @klohmueller says that it doesn't fit significantly better than the human-inferred one added in #1505.

Here's the info:  https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9881057/
and see Table S2 for demographic parameter estimates.




Discussion / hints:
@igronau has volunteered to do this! <3 <3
I'm pretty much done implementing the species. I'm just missing a recombination rate estimate. Couldn't find anything reported for this species or anything closely related. In analyses, studies appear to use 'reasonable values for mammals', or even the human average recombination rate. Will try to sort this out in the next stdpopsim meeting.
@igronau discussed with @ckyriazis; they decided that the recombination rate is okay.
The species has been added and is now QC'd. This issue can be closed @petrelharp.

Fix patch:
diff --git a/docs/parameter_tables/PhoSin/Vaquita2Epoch_1R22.csv b/docs/parameter_tables/PhoSin/Vaquita2Epoch_1R22.csv
new file mode 100644
index 000000000..0ceddcac3
--- /dev/null
+++ b/docs/parameter_tables/PhoSin/Vaquita2Epoch_1R22.csv
@@ -0,0 +1,5 @@
+Population size,"4,485",Ancestral pop. size
+Population size,"2,807",Pop. size during second epoch
+Epoch Time (gen.),"2,162",Start time of second epoch
+Generation time (yrs.),11.9,Average generation interval
+Mutation rate,5.83e-9,Per-base per-generation mutation rate
diff --git a/stdpopsim/catalog/PhoSin/__init__.py b/stdpopsim/catalog/PhoSin/__init__.py
index a518c0337..7e49c4342 100644
--- a/stdpopsim/catalog/PhoSin/__init__.py
+++ b/stdpopsim/catalog/PhoSin/__init__.py
@@ -2,3 +2,4 @@
 Catalog definitions for PhoSin (Ensembl ID='phocoena_sinus')
 """
 from . import species  # noqa: F401
+from . import demographic_models  # noqa: F401
diff --git a/stdpopsim/catalog/PhoSin/demographic_models.py b/stdpopsim/catalog/PhoSin/demographic_models.py
new file mode 100644
index 000000000..8248bed68
--- /dev/null
+++ b/stdpopsim/catalog/PhoSin/demographic_models.py
@@ -0,0 +1,57 @@
+import msprime
+import stdpopsim
+
+_species = stdpopsim.get_species("PhoSin")
+
+
+def _2epoch():
+    N_anc = 4485
+    N_curr = 2807
+    T = 2162
+    populations = [
+        stdpopsim.Population(
+            id="Vaquita",
+            description="Vaquita (Phocoena sinus)",
+        )
+    ]
+
+    return stdpopsim.DemographicModel(
+        id="Vaquita2Epoch_1R22",
+        description="Vaquita two epoch model",
+        long_description="""
+            A two-epoch demographic model estimated using dadi from the site
+            frequency spectrum at putatively neutrally evolving regions of
+            the genome identified as those located >10 kb from coding
+            sequences which did not overlap with CpG islands.
+            Population genomic data obtained from 20 individuals sequenced
+            at mean coverage 60x.
+            Robinson et al. (2022) reports several inferred models in Supp
+            Table S2. This is the 2-epoch model inferred by dadi, which is
+            also depicted in Main Figure 1E.
+            Size changes from N_anc to N_curr in time T.
+        """,
+        populations=populations,
+        citations=[
+            stdpopsim.Citation(
+                author="Robinson et al.",
+                year=2022,
+                doi="https://doi.org/10.1126/science.abm1742",
+                reasons={stdpopsim.CiteReason.DEM_MODEL},
+            )
+        ],
+        generation_time=11.9,
+        mutation_rate=5.83e-9,
+        population_configurations=[
+            msprime.PopulationConfiguration(
+                initial_size=N_curr, metadata=populations[0].asdict()
+            )
+        ],
+        demographic_events=[
+            msprime.PopulationParametersChange(
+                time=T, initial_size=N_anc, population_id=0
+            )
+        ],
+    )
+
+
+_species.add_demographic_model(_2epoch())


Test patch:
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index bef554f7c..740e8e5eb 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -48,7 +48,7 @@ jobs:
         uses: actions/cache@v3
         env:
           # Increase this to reset the cache if the key hasn't changed.
-          CACHE_NUM: 6
+          CACHE_NUM: 7
         with:
           path: |
             ${{ steps.find-conda.outputs.CONDA }}/envs/${{ env.CONDA_ENV_NAME }}