Skip to content

Commit 1fcc70e

Browse files
committed
Updated Simulation to take mutation rate parameter
1 parent 00d47c3 commit 1fcc70e

2 files changed

Lines changed: 40 additions & 2 deletions

File tree

exploration.ipynb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2325,6 +2325,38 @@
23252325
"1 - np.array(counts_pop_1)"
23262326
]
23272327
},
2328+
{
2329+
"cell_type": "code",
2330+
"execution_count": 6,
2331+
"metadata": {},
2332+
"outputs": [
2333+
{
2334+
"data": {
2335+
"text/plain": [
2336+
"[<matplotlib.lines.Line2D at 0x7264ca18d950>]"
2337+
]
2338+
},
2339+
"execution_count": 6,
2340+
"metadata": {},
2341+
"output_type": "execute_result"
2342+
},
2343+
{
2344+
"data": {
2345+
"image/png": "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5+/2QEZzxFz4aG5uliRmOgUAwIWam5vl8/n63SfmBpx2dHTo8OHDysrK6nVG1MFoampSfn6+amtrE3Iwa6K3X+IYJHr7JY5Bordf4hhEq/3GGDU3Nys3N1dJSf2P6oi5no+kpCTl5eVF9T2ys7MT8gvXKdHbL3EMEr39Escg0dsvcQyi0f7z9Xh0YsApAACwFeEDAADYKqHCh9fr1cMPP5ywN7JL9PZLHINEb7/EMUj09kscg1hof8wNOAUAAPEtoXo+AACA8wgfAADAVoQPAABgK8IHAACwVcKEj5/97GcqKCjQkCFDNHXqVL3++utOl2SJFStWyOPxhCx+vz+43RijFStWKDc3V+np6Zo5c6b27dsX8jcCgYDuu+8+jRgxQpmZmfrKV76ijz76yO6mDNhrr72mW265Rbm5ufJ4PPrNb34Tst2qNjc0NGj+/Pny+Xzy+XyaP3++jh8/HuXWnd/52n/HHXf0+E5Mnz49ZB83t7+iokJXXnmlsrKyNGrUKN16663av39/yD7x/B0YSPvj/Tuwdu1aTZ48OThJVklJiV566aXg9nj+/KXzt98Vn79JABs2bDCpqanmiSeeMO+88465//77TWZmpjl48KDTpQ3aww8/bC6//HJz5MiR4FJfXx/c/uijj5qsrCzz7LPPmj179pjbbrvNjB492jQ1NQX3ufvuu81FF11kKisrzdtvv22uu+46M2XKFNPW1uZEk87rxRdfNMuXLzfPPvuskWSef/75kO1WtfnGG280RUVFprq62lRXV5uioiJz880329XMPp2v/QsWLDA33nhjyHfi2LFjIfu4uf033HCDefLJJ83evXvNrl27zE033WTGjBljTpw4Edwnnr8DA2l/vH8HXnjhBbNx40azf/9+s3//fvPQQw+Z1NRUs3fvXmNMfH/+xpy//W74/BMifFx11VXm7rvvDll32WWXmQcffNChiqzz8MMPmylTpvS6raOjw/j9fvPoo48G150+fdr4fD7z85//3BhjzPHjx01qaqrZsGFDcJ8//elPJikpyWzatCmqtVuh+4+vVW1+5513jCSzbdu24D5bt241ksx7770X5VYNXF/h46tf/Wqfr4mn9htjTH19vZFkqqqqjDGJ9x3o3n5jEu87YIwxw4YNM7/4xS8S7vPv1Nl+Y9zx+cf9aZfW1lbt2LFDZWVlIevLyspUXV3tUFXWOnDggHJzc1VQUKBvfvOb+uCDDyRJNTU1qqurC2m71+vVjBkzgm3fsWOHzpw5E7JPbm6uioqKXHl8rGrz1q1b5fP5VFxcHNxn+vTp8vl8rjguW7Zs0ahRozRhwgR95zvfUX19fXBbvLW/sbFRkjR8+HBJifcd6N7+TonyHWhvb9eGDRt08uRJlZSUJNzn3739nWL984+5G8tZ7ejRo2pvb1dOTk7I+pycHNXV1TlUlXWKi4v19NNPa8KECfr444/1yCOPqLS0VPv27Qu2r7e2Hzx4UJJUV1entLQ0DRs2rMc+bjw+VrW5rq5Oo0aN6vH3R40aFfPHZfbs2frGN76hsWPHqqamRt///vd1/fXXa8eOHfJ6vXHVfmOMlixZoquvvlpFRUWSEus70Fv7pcT4DuzZs0clJSU6ffq0hg4dqueff14TJ04M/jDG++ffV/sld3z+cR8+Onk8npDnxpge69xo9uzZwceTJk1SSUmJxo8fr3Xr1gUHGEXSdrcfHyva3Nv+bjgut912W/BxUVGRpk2bprFjx2rjxo2aM2dOn69zY/sXLVqk3bt36/e//32PbYnwHeir/YnwHbj00ku1a9cuHT9+XM8++6wWLFigqqqq4PZ4//z7av/EiRNd8fnH/WmXESNGKDk5uUdSq6+v75GM40FmZqYmTZqkAwcOBK966a/tfr9fra2tamho6HMfN7GqzX6/Xx9//HGPv//JJ5+47riMHj1aY8eO1YEDByTFT/vvu+8+vfDCC3r11VeVl5cXXJ8o34G+2t+bePwOpKWl6ZJLLtG0adNUUVGhKVOm6LHHHkuYz7+v9vcmFj//uA8faWlpmjp1qiorK0PWV1ZWqrS01KGqoicQCOjdd9/V6NGjVVBQIL/fH9L21tZWVVVVBds+depUpaamhuxz5MgR7d2715XHx6o2l5SUqLGxUW+++WZwnzfeeEONjY2uOy7Hjh1TbW2tRo8eLcn97TfGaNGiRXruuef0yiuvqKCgIGR7vH8Hztf+3sTbd6A3xhgFAoG4//z70tn+3sTk5z/oIasu0Hmp7S9/+UvzzjvvmMWLF5vMzEzz4YcfOl3aoD3wwANmy5Yt5oMPPjDbtm0zN998s8nKygq27dFHHzU+n88899xzZs+ePeb222/v9ZKzvLw887vf/c68/fbb5vrrr4/pS22bm5vNzp07zc6dO40ks2rVKrNz587gpdNWtfnGG280kydPNlu3bjVbt241kyZNionL7Pprf3Nzs3nggQdMdXW1qampMa+++qopKSkxF110Udy0/5577jE+n89s2bIl5FLCU6dOBfeJ5+/A+dqfCN+BZcuWmddee83U1NSY3bt3m4ceesgkJSWZzZs3G2Pi+/M3pv/2u+XzT4jwYYwxP/3pT83YsWNNWlqaueKKK0IuS3OzzuvXU1NTTW5urpkzZ47Zt29fcHtHR4d5+OGHjd/vN16v11x77bVmz549IX+jpaXFLFq0yAwfPtykp6ebm2++2Rw6dMjupgzYq6++aiT1WBYsWGCMsa7Nx44dM/PmzTNZWVkmKyvLzJs3zzQ0NNjUyr711/5Tp06ZsrIyM3LkSJOammrGjBljFixY0KNtbm5/b22XZJ588sngPvH8HThf+xPhO3DnnXcG/z0fOXKk+eIXvxgMHsbE9+dvTP/td8vn7zHGmMH3nwAAAAxM3I/5AAAAsYXwAQAAbEX4AAAAtiJ8AAAAWxE+AACArQgfAADAVoQPAABgK8IHAACwFeEDAADYivABAABsRfgAAAC2InwAAABb/X/R3z/G3fydGQAAAABJRU5ErkJggg==",
2346+
"text/plain": [
2347+
"<Figure size 640x480 with 1 Axes>"
2348+
]
2349+
},
2350+
"metadata": {},
2351+
"output_type": "display_data"
2352+
}
2353+
],
2354+
"source": [
2355+
"data = pd.read_csv(\"./Outputs/Kiel2025/4subpop_popsize100_island_neutral_interaction_0.001_0.0_noburnin_subpop_set_counts.csv\", index_col=0)\n",
2356+
"\n",
2357+
"plt.plot(data.mean(axis=1), color=\"tab:blue\")"
2358+
]
2359+
},
23282360
{
23292361
"cell_type": "code",
23302362
"execution_count": null,

metapypulation/simulation.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ class Simulation():
2727
measure_timing (int): Number of generations between measurements.
2828
verbose (bool): Whether to print text during the simulation.
2929
verbose_timing (int): Number of generations between each print statement.
30-
migration_matrix (str | np.ndarray): Type of migration topology.
30+
migration_matrix (str | np.ndarray): Type of migration topology ('island' or 'stepping stone'), or matrix of migrations between demes.
31+
mutation_rate (float): Probability of a mutation to occur during copying.
3132
subpop_set_counts (pd.DataFrame): Collects the number of unique set counts per subpopulation averaged over subpopulations.
3233
subpop_shannon (pd.DataFrame): Collects the Shannon diversity index per subpopulation averaged over subpopulations.
3334
metapop_set_counts (pd.DataFrame): Collects the number of unique set counts over the whole metapopulation.
@@ -43,6 +44,7 @@ def __init__(self,
4344
output_path: str,
4445
burn_in: int = 0,
4546
migration_rate: float = 0.001,
47+
mutation_rate: float = 0.0,
4648
measure_timing: int = 100,
4749
verbose: bool = True,
4850
verbose_timing: int = 10000):
@@ -59,6 +61,7 @@ def __init__(self,
5961
output_path (str): Path of folder in which to save results. TODO Creates new folder if it does not exist.
6062
burn_in (int): Number of generations without migration in the beginning of the simulation. Defaults to 0.
6163
migration_rate (float): Migration rate between 0 and 1 used to generate a migration matrix when there is str input. Used only in the function `create_migration_table()`.
64+
mutation_rate (float): Probability of a mutation to occur during copying. Defaults to 0.0.
6265
measure_timing (int, optional): Number of generations between measurements. Defaults to 100.
6366
verbose (bool, optional): Whether to print text during the simulation. Defaults to True.
6467
verbose_timing (int, optional): Number of generations between each print statement. Defaults to 10000.
@@ -77,6 +80,8 @@ def __init__(self,
7780
self.verbose = verbose
7881
self.verbose_timing = verbose_timing
7982

83+
self.mutation_rate = mutation_rate
84+
8085
match migration_matrix:
8186
case str():
8287
self.create_migration_table(migration_matrix, migration_rate)# np.genfromtxt(f'./configs/{migration_matrix}.csv', delimiter=',')
@@ -103,7 +108,8 @@ def run_single_replicate(self, replicate_id: int) -> None:
103108
Args:
104109
replicate_id (int): The number of the current replicate (for the output data columns).
105110
"""
106-
metapopulation = Metapopulation(self.number_of_subpopulations, self.interaction_type, self.migration_matrix, self.carrying_capacities)
111+
metapopulation = Metapopulation(self.number_of_subpopulations, self.interaction_type, self.migration_matrix,
112+
self.carrying_capacities, mutation_rate = self.mutation_rate)
107113
metapopulation.populate()
108114

109115
set_counts = []

0 commit comments

Comments
 (0)