Skip to content

Commit 5c149f9

Browse files
Alice Pearsonpetrelharp
Alice Pearson
authored andcommitted
Added model
1 parent 329f702 commit 5c149f9

File tree

2 files changed

+158
-0
lines changed

2 files changed

+158
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Population size,"50,000",Bronze Age pop. size
2+
Population size,"5,000",Yamnaya pop. size
3+
Population size,"10,000",Western Hunter-Gatherer pop. size
4+
Population size,"10,000",Eastern Hunter-Gatherer pop. size
5+
Population size,"50,000",Neolithic Farmer pop. size
6+
Population size,"10,000",Caucasus Hunter-Gatherer pop. size
7+
Population size,"5,000",Northern European pop. size (ancestor of WHG and EHG)
8+
Population size,"5,000",West Asian pop. size (ancestor of Anatolian Farmers and CHG)
9+
Time (gen.),"140",Time of Yamnaya and Neolithic Farmer admixture
10+
Time (gen.),"180",Time of EHG and CHG admixture
11+
Time (gen.),"200",Time of Anatolian Farmer and WHG admixture
12+
Time (gen.),"600",Time of WHG and EHG divergence
13+
Time (gen.),"800",Time of Anatolian Farmers and CHG divergence
14+
Time (gen.),"1500",Time of Basal European split
15+
Growth rate (per gen.),"6.7",Growth rate from Bronze Age to present day
16+
Time (gen.),"0",Time of present day samples
17+
Time (gen.),"135",Time of Bronze Age samples
18+
Time (gen.),"160",Time of Yamnaya samples
19+
Time (gen.),"180",Time of Neolithic Farmer samples
20+
Time (gen.),"250",Time of Western Hunter-Gatherer samples
21+
Time (gen.),"250",Time of Eastern Hunter-Gatherer samples
22+
Time (gen.),"260",Time of Anatolian Farmer samples
23+
Time (gen.),"300",Time of Caucasus Hunter-Gatherer samples
24+
Generation time (yrs.),"29",Generation time
25+
Mutation rate,1.25e-8,Per-base per-generation mutation rate

stdpopsim/catalog/HomSap/demographic_models.py

+133
Original file line numberDiff line numberDiff line change
@@ -1809,3 +1809,136 @@ def _africanBoyko():
18091809

18101810

18111811
_species.add_demographic_model(_africanBoyko())
1812+
1813+
1814+
def _ancient_europe():
1815+
id = "AncientEurope_4A21"
1816+
description = "Multi-population model of ancient Europe"
1817+
long_description = """
1818+
Population structure that has existed over the last 45,000 years in Europe, leading
1819+
to modern Europeans. The model demonstrates the divergence of a Basal European
1820+
Lineages into four ancient populations; Western, Eastern and Caucasus Hunter-
1821+
Gatherers and Anatolian Farmers. Migration of Anatolian farmers into Western Europe
1822+
and admixture with Western Hunter-Gatherers produces the European Neolithic Farmers.
1823+
In West Asia the admixture of Eastern Hunter-Gatherers and Caucasus Hunter-
1824+
Gatherers leads to the formation of the Yamnaya Steppe population. The Yamnaya
1825+
migrate into Western Europe to admixture with the Neolithic farmers giving rise to
1826+
Bronze Age europeans. There is only an exponential growth in population size from
1827+
then to the Present-day. Samples are taken at multiple point throughout history
1828+
from each population.
1829+
"""
1830+
populations = [
1831+
stdpopsim.Population(
1832+
id="Pop0",
1833+
description="1000GenomesEUR/BronzeAge/Neolithic/Anatolian/WestAsian/Basal",
1834+
),
1835+
stdpopsim.Population(id="Pop1", description="Yamnaya/CHG"),
1836+
stdpopsim.Population(id="Pop2", description="WHG/NorthernEuropean"),
1837+
stdpopsim.Population(id="Pop3", description="EHG"),
1838+
]
1839+
citations = [
1840+
stdpopsim.Citation(
1841+
author="Allentoft et al.",
1842+
year="2022",
1843+
doi="https://doi.org/10.1101/2022.05.04.490594",
1844+
reasons={stdpopsim.CiteReason.DEM_MODEL},
1845+
)
1846+
]
1847+
1848+
generation_time = 29
1849+
mutation_rate = 1.25e-8
1850+
1851+
# initial population sizes:
1852+
N_bronze = 50000
1853+
N_Yam = 5000
1854+
N_whg = 10000
1855+
N_ehg = 10000
1856+
N_neo = 50000
1857+
N_chg = 10000
1858+
N_NE = 5000 # Ancestor of WHG and EHG
1859+
N_WA = 5000 # Ancestor of CHG and Anatolian farmers
1860+
1861+
# Time of events
1862+
T_bronze = 140
1863+
T_Yam = 180
1864+
T_neo = 200
1865+
T_near_east = 800
1866+
T_europe = 600
1867+
T_basal = 1500
1868+
1869+
# Growth rate and initial population size for present day from bronze age
1870+
r_EU = 0.067
1871+
N_present = N_bronze / math.exp(-r_EU * T_bronze)
1872+
1873+
population_configurations = [
1874+
msprime.PopulationConfiguration(
1875+
initial_size=N_present, growth_rate=r_EU, metadata=populations[0].asdict()
1876+
),
1877+
msprime.PopulationConfiguration(
1878+
initial_size=N_Yam, metadata=populations[1].asdict()
1879+
),
1880+
msprime.PopulationConfiguration(
1881+
initial_size=N_whg, metadata=populations[2].asdict()
1882+
),
1883+
msprime.PopulationConfiguration(
1884+
initial_size=N_ehg, metadata=populations[3].asdict()
1885+
),
1886+
]
1887+
1888+
Bronze_formation = [
1889+
msprime.MassMigration(time=T_bronze, source=0, dest=1, proportion=0.5),
1890+
msprime.PopulationParametersChange(
1891+
time=T_bronze, initial_size=N_neo, growth_rate=0, population=0
1892+
),
1893+
]
1894+
1895+
Yam_formation = [
1896+
msprime.MassMigration(time=T_Yam, source=1, dest=3, proportion=0.5),
1897+
msprime.PopulationParametersChange(
1898+
time=T_Yam, initial_size=N_chg, population=1
1899+
),
1900+
]
1901+
1902+
European_neolithic = [
1903+
msprime.MassMigration(time=T_neo, source=0, dest=2, proportion=1.0 / 4.0)
1904+
]
1905+
1906+
HG_split = [
1907+
msprime.MassMigration(time=T_europe, source=3, dest=2, proportion=1),
1908+
msprime.PopulationParametersChange(
1909+
time=T_europe, initial_size=N_NE, population=2
1910+
),
1911+
]
1912+
1913+
Near_east_split = [
1914+
msprime.MassMigration(time=T_near_east, source=1, dest=0, proportion=1),
1915+
msprime.PopulationParametersChange(
1916+
time=T_near_east, initial_size=N_WA, population=0
1917+
),
1918+
]
1919+
1920+
Basal_split = [msprime.MassMigration(time=T_basal, source=2, dest=0, proportion=1)]
1921+
1922+
demographic_events = (
1923+
Bronze_formation
1924+
+ Yam_formation
1925+
+ European_neolithic
1926+
+ HG_split
1927+
+ Near_east_split
1928+
+ Basal_split
1929+
)
1930+
1931+
return stdpopsim.DemographicModel(
1932+
id=id,
1933+
description=description,
1934+
long_description=long_description,
1935+
populations=populations,
1936+
citations=citations,
1937+
generation_time=generation_time,
1938+
mutation_rate=mutation_rate,
1939+
population_configurations=population_configurations,
1940+
demographic_events=demographic_events,
1941+
)
1942+
1943+
1944+
_species.add_demographic_model(_ancient_europe())

0 commit comments

Comments
 (0)