@@ -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
0 commit comments