Skip to content

Commit eb20fb0

Browse files
committed
Commit after Kiel
1 parent db82b6c commit eb20fb0

File tree

6 files changed

+200
-37
lines changed

6 files changed

+200
-37
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ Outputs
77
old_bits_of_code
88

99
script_Kiel2025.py
10-
script_TAG2024.py
10+
script_TAG2024.py
11+
12+
metapypulation_requirements.txt

exploration.ipynb

Lines changed: 97 additions & 18 deletions
Large diffs are not rendered by default.

plotting.py

Lines changed: 92 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,17 @@ def metapopulation_plot_comparison(dataset_1, dataset_2, title, legend_1, legend
7272
dataset_1_global = pd.read_csv(f"{dataset_1}_beta_diversity.csv", index_col=0)
7373
dataset_2_global = pd.read_csv(f"{dataset_2}_beta_diversity.csv", index_col=0)
7474
else:
75-
print("You need to decide what measure you will plot: 'set_counts', 'shannon', 'simpson' or 'gini'?")
75+
raise ValueError("You need to decide what measure you will plot: 'set_counts', 'shannon', 'simpson' or 'gini'?")
7676

77-
line1, = plt.plot(dataset_1_global.mean(axis=1), color = 'xkcd:blue', label=f"{legend_1}")
78-
line2, = plt.plot(dataset_2_global.mean(axis=1), color = 'xkcd:puce', label=f"{legend_2}")
77+
color1 = "xkcd:medium blue"
78+
color2 = "xkcd:violet"
79+
color3 = "xkcd:dark orange"
80+
81+
line1, = plt.plot(dataset_1_global.mean(axis=1), color = color1, label=f"{legend_1}")
82+
line2, = plt.plot(dataset_2_global.mean(axis=1), color = color2, label=f"{legend_2}")
7983

80-
plt.fill_between(dataset_1_global.index, dataset_1_global.mean(axis=1) - dataset_1_global.std(axis=1), dataset_1_global.mean(axis=1) + dataset_1_global.std(axis=1), color='xkcd:blue', alpha=0.3)
81-
plt.fill_between(dataset_2_global.index, dataset_2_global.mean(axis=1) - dataset_2_global.std(axis=1), dataset_2_global.mean(axis=1) + dataset_2_global.std(axis=1), color='xkcd:puce', alpha=0.3)
84+
plt.fill_between(dataset_1_global.index, dataset_1_global.mean(axis=1) - dataset_1_global.std(axis=1), dataset_1_global.mean(axis=1) + dataset_1_global.std(axis=1), color=color1, alpha=0.2)
85+
plt.fill_between(dataset_2_global.index, dataset_2_global.mean(axis=1) - dataset_2_global.std(axis=1), dataset_2_global.mean(axis=1) + dataset_2_global.std(axis=1), color=color2, alpha=0.2)
8286

8387
plt.axvline(500, color="black", linestyle='--', ymax=1)
8488

@@ -96,8 +100,8 @@ def metapopulation_plot_comparison(dataset_1, dataset_2, title, legend_1, legend
96100
else:
97101
print("You need to decide what measure you will plot: 'set_counts', 'shannon', 'simpson' or 'gini'?")
98102

99-
line3, = plt.plot(dataset_3_global.mean(axis=1), color = 'xkcd:light purple', label=f"{legend_3}")
100-
plt.fill_between(dataset_3_global.index, dataset_3_global.mean(axis=1) - dataset_3_global.std(axis=1), dataset_3_global.mean(axis=1) + dataset_3_global.std(axis=1), color='xkcd:light purple', alpha=0.3)
103+
line3, = plt.plot(dataset_3_global.mean(axis=1), color = color3, label=f"{legend_3}")
104+
plt.fill_between(dataset_3_global.index, dataset_3_global.mean(axis=1) - dataset_3_global.std(axis=1), dataset_3_global.mean(axis=1) + dataset_3_global.std(axis=1), color=color3, alpha=0.2)
101105

102106
if dataset_3 is not None:
103107
plt.legend(loc=3, handles=[line1, line2, line3])
@@ -107,9 +111,88 @@ def metapopulation_plot_comparison(dataset_1, dataset_2, title, legend_1, legend
107111
plt.axvline(500, color="black", linestyle='--', ymax=1)
108112
for i in range(1, number_of_pulses + 1):
109113
plt.axvline(500 + i*(length_of_pulses + settling_period), color="dimgrey", linestyle='--', ymax=1)
114+
115+
match what_measure:
116+
case 'set_counts':
117+
plt.ylabel("Number of sets of features")
118+
case 'shannon':
119+
plt.ylabel("Shannon diversity")
120+
case 'simpson':
121+
plt.ylabel("Simpson diversity")
122+
case 'gini':
123+
plt.ylabel(r"Gini-Simpson diversity")
124+
case 'beta':
125+
plt.ylabel(r"Whittaker $\beta$-diversity")
126+
plt.xlabel("Steps (x100)")
127+
plt.grid(linestyle=':', linewidth=0.5)
128+
plt.title(title)
110129

111-
plt.ylabel(r"Whittaker $\beta$ Diversity")
112-
plt.xlabel("Generations (x100)")
130+
plt.savefig(output_file)
131+
132+
133+
def subpopulation_plot_comparison(dataset_1, dataset_2, title, legend_1, legend_2, output_file, what_measure, number_of_pulses = 5, length_of_pulses = 1, settling_period = 99, dataset_3 = None, legend_3 = None):
134+
if what_measure == 'set_counts':
135+
dataset_1_global = pd.read_csv(f"{dataset_1}_subpop_set_counts.csv", index_col=0)
136+
dataset_2_global = pd.read_csv(f"{dataset_2}_subpop_set_counts.csv", index_col=0)
137+
elif what_measure == 'shannon':
138+
dataset_1_global == pd.read_csv(f"{dataset_1}_subpop_shannon.csv", index_col=0)
139+
dataset_2_global = pd.read_csv(f"{dataset_2}_subpop_shannon.csv", index_col=0)
140+
elif what_measure == 'simpson':
141+
dataset_1_global = pd.read_csv(f"{dataset_1}_subpop_simpson.csv", index_col=0)
142+
dataset_2_global = pd.read_csv(f"{dataset_2}_subpop_simpson.csv", index_col=0)
143+
elif what_measure == 'gini':
144+
dataset_1_global = pd.read_csv(f"{dataset_1}_subpop_gini.csv", index_col=0)
145+
dataset_2_global = pd.read_csv(f"{dataset_2}_subpop_gini.csv", index_col=0)
146+
else:
147+
raise ValueError("You need to decide what measure you will plot: 'set_counts', 'shannon', 'simpson' or 'gini'?")
148+
149+
color1 = "xkcd:medium blue"
150+
color2 = "xkcd:violet"
151+
color3 = "xkcd:dark orange"
152+
153+
line1, = plt.plot(dataset_1_global.mean(axis=1), color = color1, label=f"{legend_1}")
154+
line2, = plt.plot(dataset_2_global.mean(axis=1), color = color2, label=f"{legend_2}")
155+
156+
plt.fill_between(dataset_1_global.index, dataset_1_global.mean(axis=1) - dataset_1_global.std(axis=1), dataset_1_global.mean(axis=1) + dataset_1_global.std(axis=1), color=color1, alpha=0.2)
157+
plt.fill_between(dataset_2_global.index, dataset_2_global.mean(axis=1) - dataset_2_global.std(axis=1), dataset_2_global.mean(axis=1) + dataset_2_global.std(axis=1), color=color2, alpha=0.2)
158+
159+
plt.axvline(500, color="black", linestyle='--', ymax=1)
160+
161+
if dataset_3 is not None:
162+
if what_measure == 'set_counts':
163+
dataset_3_global = pd.read_csv(f"{dataset_3}_subpop_set_counts.csv", index_col=0)
164+
elif what_measure == 'shannon':
165+
dataset_3_global == pd.read_csv(f"{dataset_3}_subpop_shannon.csv", index_col=0)
166+
elif what_measure == 'simpson':
167+
dataset_3_global = pd.read_csv(f"{dataset_3}_subpop_simpson.csv", index_col=0)
168+
elif what_measure == 'gini':
169+
dataset_3_global = pd.read_csv(f"{dataset_3}_subpop_gini.csv", index_col=0)
170+
else:
171+
print("You need to decide what measure you will plot: 'set_counts', 'shannon', 'simpson' or 'gini'?")
172+
173+
line3, = plt.plot(dataset_3_global.mean(axis=1), color = color3, label=f"{legend_3}")
174+
plt.fill_between(dataset_3_global.index, dataset_3_global.mean(axis=1) - dataset_3_global.std(axis=1), dataset_3_global.mean(axis=1) + dataset_3_global.std(axis=1), color=color3, alpha=0.2)
175+
176+
if dataset_3 is not None:
177+
plt.legend(loc=3, handles=[line1, line2, line3])
178+
else:
179+
plt.legend([f"{legend_1}", f"{legend_2}"])
180+
181+
plt.axvline(500, color="black", linestyle='--', ymax=1)
182+
for i in range(1, number_of_pulses + 1):
183+
plt.axvline(500 + i*(length_of_pulses + settling_period), color="dimgrey", linestyle='--', ymax=1)
184+
185+
match what_measure:
186+
case 'set_counts':
187+
plt.ylabel("Number of sets of features")
188+
case 'shannon':
189+
plt.ylabel("Shannon diversity")
190+
case 'simpson':
191+
plt.ylabel("Simpson diversity")
192+
case 'gini':
193+
plt.ylabel("Gini-Simpson diversity")
194+
# plt.ylim([0, 100])
195+
plt.xlabel("Steps (x100)")
113196
plt.grid(linestyle=':', linewidth=0.5)
114197
plt.title(title)
115198

script_Kiel2025_diversity.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
mutation_rates = 0.0005
1919

2020
burn_in = 50000
21-
pulse_length = 100
21+
pulse_length = 0
2222
number_of_pulses = 5
2323
settling_period = 10000 - pulse_length # 10000
2424

@@ -121,13 +121,12 @@
121121
# print(metapopulation.count_origin_id_spread())
122122

123123
if save_output:
124-
# subpop_set_counts_df.to_csv(f"./Outputs/Kiel2025/{title}/{interaction}_{rate_of_migration}_{number_of_pulses}pulses_{pulse_length}gen_subpop_set_counts.csv", sep=",")
125-
# subpop_gini_df.to_csv(f"./Outputs/Kiel2025/{title}/{interaction}_{rate_of_migration}_{number_of_pulses}pulses_{pulse_length}gen_subpop_gini.csv", sep=",")
126-
# metapop_set_counts_df.to_csv(f"./Outputs/Kiel2025/{title}/{interaction}_{rate_of_migration}_{number_of_pulses}pulses_{pulse_length}gen_metapop_set_counts.csv", sep=",")
127-
# metapop_gini_df.to_csv(f"./Outputs/Kiel2025/{title}/{interaction}_{rate_of_migration}_{number_of_pulses}pulses_{pulse_length}gen_metapop_gini.csv", sep=",")
124+
subpop_set_counts_df.to_csv(f"./Outputs/Kiel2025/{title}/{interaction}_{rate_of_migration}_{number_of_pulses}pulses_{pulse_length}gen_subpop_set_counts.csv", sep=",")
125+
subpop_gini_df.to_csv(f"./Outputs/Kiel2025/{title}/{interaction}_{rate_of_migration}_{number_of_pulses}pulses_{pulse_length}gen_subpop_gini.csv", sep=",")
126+
metapop_set_counts_df.to_csv(f"./Outputs/Kiel2025/{title}/{interaction}_{rate_of_migration}_{number_of_pulses}pulses_{pulse_length}gen_metapop_set_counts.csv", sep=",")
127+
metapop_gini_df.to_csv(f"./Outputs/Kiel2025/{title}/{interaction}_{rate_of_migration}_{number_of_pulses}pulses_{pulse_length}gen_metapop_gini.csv", sep=",")
128128
beta_diversity_df.to_csv(f"./Outputs/Kiel2025/{title}/{interaction}_{rate_of_migration}_{number_of_pulses}pulses_{pulse_length}gen_beta_diversity.csv", sep=",")
129129

130-
# subpop_gini_df.to_csv("test.csv")
131130

132131
end_time = time.time() - start_time
133132
hours = round(end_time//3600)

script_Kiel2025_spread.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@
1212
total_population = 800
1313
replicates = 50
1414
save_output = True
15-
interactions = ['axelrod_interaction'] # 'axelrod_interaction'
15+
interactions = ['neutral_interaction'] # 'axelrod_interaction'
1616
number_of_subpopulations = 8
1717
migration_rates = [0.0001]
1818
mutation_rates = 0.0005
1919

2020
burn_in = 50000
21-
pulse_length = 100
21+
pulse_length = 1000
2222
number_of_pulses = 5
2323
settling_period = 10000 - pulse_length # 10000
2424

2525
start_time = time.time()
2626

2727
count = 0
2828

29-
title = "singleConnection"
29+
title = "frontConnection"
3030
migration_config = np.genfromtxt(f"./configs/maritime_configs/{title}.csv", delimiter=",")
3131

3232
for interaction in interactions:

test.png

95.4 KB
Loading

0 commit comments

Comments
 (0)