From 8741ea2cb66ef9446cfc8bc9ec4dc266bb6e6c67 Mon Sep 17 00:00:00 2001 From: Gina Chen Date: Mon, 15 Jun 2026 10:04:33 -0400 Subject: [PATCH 1/4] change empty list to empty dfs --- bin/cosmic-pop | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/bin/cosmic-pop b/bin/cosmic-pop index dced26e29..476d286f0 100755 --- a/bin/cosmic-pop +++ b/bin/cosmic-pop @@ -335,9 +335,9 @@ if __name__ == '__main__': # Simulate the fixed population # This process is illustrated in Fig 1 of Breivik & Larson (2018) steps = 0 - bcm_filter_match = [] - bpp_filter_match = [] - initC_filter_match = [] + bcm_filter_match = pd.DataFrame() + bpp_filter_match = pd.DataFrame() + initC_filter_match = pd.DataFrame() # Warn about qmin and m2_min if (hasattr(args, 'qmin')) & (hasattr(args, 'm2_min')): @@ -546,17 +546,17 @@ if __name__ == '__main__': conv_filter = conv_filter.loc[conv_filter.bin_num.isin(conv_lims_bin_num)] # Filter the bcm and bpp arrays according to user specified filters - bcm_filter_match = bcm_filter.copy() - bpp_filter_match = bpp_filter.copy() - initC_filter_match = initC_filter.copy() - conv_filter_match = conv_filter.copy() - kick_info_filter_match = kick_info_filter.copy() + bcm_filter_match = pd.concat([bcm_filter_match, bcm_filter]) + bpp_filter_match = pd.concat([bpp_filter_match, bpp_filter]) + initC_filter_match = pd.concat([initC_filter_match, initC_filter]) + conv_filter_match = pd.concat([conv_filter_match, conv_filter]) + kick_info_filter_match = pd.concat([kick_info_filter_match, kick_info_filter]) if (args.keep_singles==True): - conv_singles_filter_match = conv_singles_filter.copy() - bpp_singles_filter_match = bpp_singles_filter.copy() - bcm_singles_filter_match = bcm_singles_filter.copy() - initC_filter_singles_match = initC_singles_filter.copy() - kick_info_singles_filter_match = kick_info_singles_filter.copy() + conv_singles_filter_match = pd.concat([conv_singles_filter_match, conv_singles_filter]) + bpp_singles_filter_match = pd.concat([bpp_singles_filter_match, bpp_singles_filter]) + bcm_singles_filter_match = pd.concat([bcm_singles_filter_match, bcm_singles_filter]) + initC_filter_singles_match = pd.concat([initC_singles_filter_match, initC_singles_filter]) + kick_info_singles_filter_match = pd.concat([kick_info_singles_filter_match, kick_info_singles_filter]) if len(conv_filter_match) >= np.min([50, args.Niter]): conv_save = pd.concat([conv_save, pd.DataFrame(conv_filter_match)], ignore_index=True) From 12ca18d2e1144237e5fe736459d1695f3f90ab39 Mon Sep 17 00:00:00 2001 From: Gina Chen Date: Mon, 15 Jun 2026 10:26:44 -0400 Subject: [PATCH 2/4] update singles match --- bin/cosmic-pop | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/bin/cosmic-pop b/bin/cosmic-pop index 476d286f0..b2831cae7 100755 --- a/bin/cosmic-pop +++ b/bin/cosmic-pop @@ -338,6 +338,15 @@ if __name__ == '__main__': bcm_filter_match = pd.DataFrame() bpp_filter_match = pd.DataFrame() initC_filter_match = pd.DataFrame() + conv_filter_match = pd.DataFrame() + kick_info_filter_match = pd.DataFrame() + + if (args.keep_singles == True): + conv_singles_filter_match = pd.DataFrame() + bpp_singles_filter_match = pd.DataFrame() + bcm_singles_filter_match = pd.DataFrame() + initC_filter_singles_match = pd.DataFrame() + kick_info_singles_filter_match = pd.DataFrame() # Warn about qmin and m2_min if (hasattr(args, 'qmin')) & (hasattr(args, 'm2_min')): @@ -555,7 +564,7 @@ if __name__ == '__main__': conv_singles_filter_match = pd.concat([conv_singles_filter_match, conv_singles_filter]) bpp_singles_filter_match = pd.concat([bpp_singles_filter_match, bpp_singles_filter]) bcm_singles_filter_match = pd.concat([bcm_singles_filter_match, bcm_singles_filter]) - initC_filter_singles_match = pd.concat([initC_singles_filter_match, initC_singles_filter]) + initC_filter_singles_match = pd.concat([initC_filter_singles_match, initC_singles_filter]) kick_info_singles_filter_match = pd.concat([kick_info_singles_filter_match, kick_info_singles_filter]) if len(conv_filter_match) >= np.min([50, args.Niter]): @@ -594,17 +603,17 @@ if __name__ == '__main__': bin_state_nums, match_save, idx) # reset the bcm_filter DataFrame - bcm_filter_match = [] - bpp_filter_match = [] - initC_filter_match = [] - conv_filter_match = [] - kick_info_filter_match = [] + bcm_filter_match = pd.DataFrame() + bpp_filter_match = pd.DataFrame() + initC_filter_match = pd.DataFrame() + conv_filter_match = pd.DataFrame() + kick_info_filter_match = pd.DataFrame() if (args.keep_singles==True): - conv_singles_filter_match = [] - bpp_singles_filter_match = [] - bcm_singles_filter_match = [] - initC_filter_singles_match = [] - kick_info_singles_filter_match = [] + conv_singles_filter_match = pd.DataFrame() + bpp_singles_filter_match = pd.DataFrame() + bcm_singles_filter_match = pd.DataFrame() + initC_filter_singles_match = pd.DataFrame() + kick_info_singles_filter_match = pd.DataFrame() log_file.write('\n') Nstep += args.Nstep log_file.flush() From 5dcf30cb048a0e49e6b5f220af0269336530f545 Mon Sep 17 00:00:00 2001 From: Gina Chen Date: Tue, 16 Jun 2026 10:39:54 -0400 Subject: [PATCH 3/4] updated warnings --- bin/cosmic-pop | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/bin/cosmic-pop b/bin/cosmic-pop index b2831cae7..7cb88ea71 100755 --- a/bin/cosmic-pop +++ b/bin/cosmic-pop @@ -31,6 +31,7 @@ from cosmic._version import __version__ from schwimmbad import MPIPool from os import sys +import pdb def str2bool(v): if isinstance(v, bool): @@ -254,18 +255,18 @@ if __name__ == '__main__': if (sampling[argument] == "independent") or (getattr(args, argument) == "independent"): for model in ["primary_model", "porb_model", "ecc_model", "binfrac_model"]: if (model not in sampling.keys()) and not (getattr(args, model)): - raise ValueError("You have selected the {0} sampler " - "but not specified a model for {1} " - "in the inifile or command line".format(sampling[argument], model)) + raise ValueError("You have selected the {sampler} sampler " + "but not specified a model for {model} " + "in the inifile or command line".format(sampler=sampling[argument], model=model)) if sampling[argument] != getattr(args, argument): - warnings.warn("You are overriding the inifile value of {0}={1} " - "with {0}={2} from the commandline".format(argument, sampling[argument], getattr(args, argument))) + warnings.warn("You are overriding the inifile value of {arg}={ini} " + "with {arg}={cmd} from the commandline".format(arg=argument, ini=sampling[argument], cmd=getattr(args, argument))) sampling[argument] = getattr(args, argument) if argument == 'seed': if getattr(args, argument) != seed_int: - warnings.warn("You are overriding the inifile value of {0}={1} " - "with {0}={2} from the commandline".format(argument, seed_int, getattr(args, argument))) + warnings.warn("You are overriding the inifile value of {arg}={ini} " + "with {arg}={cmd} from the commandline".format(arg=argument, ini=seed_int, cmd=getattr(args, argument))) seed_int = getattr(args, argument) # Check that the values in BSEDict, SSEDict, filters, and convergence are valid @@ -471,6 +472,7 @@ if __name__ == '__main__': dtp=dtp, timestep_conditions=filters['timestep_conditions']) + pdb.set_trace() # extract single stars if (args.keep_singles==True): @@ -617,7 +619,18 @@ if __name__ == '__main__': log_file.write('\n') Nstep += args.Nstep log_file.flush() - + +# Print the reason the while loop ended. +# This is not really necessary because you could just check the match value in the log file + if (Nstep >= args.Niter): + log_file.write('Reason for termination: Niter reached. An additional run is recommended.') + log_file.write('\n') + if (np.max(match) <= convergence['match']): + log_file.write('Reason for termination: converged to given match') + log_file.write('\n') + if ((time.time() - start_time) >= args.max_wall_time): + log_file.write('Reason for termination: max wall time reached. An additional run is recommended.') + log_file.write('\n') # close the log file and print the final message log_file.write('All done friend!') log_file.close() From e3693d7adf151fa5da256ffff52464d2fc6e2377 Mon Sep 17 00:00:00 2001 From: Gina Chen Date: Tue, 16 Jun 2026 11:08:55 -0400 Subject: [PATCH 4/4] took out prints and pdbs --- bin/cosmic-pop | 2 -- 1 file changed, 2 deletions(-) diff --git a/bin/cosmic-pop b/bin/cosmic-pop index 7cb88ea71..cc9c26e3d 100755 --- a/bin/cosmic-pop +++ b/bin/cosmic-pop @@ -31,7 +31,6 @@ from cosmic._version import __version__ from schwimmbad import MPIPool from os import sys -import pdb def str2bool(v): if isinstance(v, bool): @@ -472,7 +471,6 @@ if __name__ == '__main__': dtp=dtp, timestep_conditions=filters['timestep_conditions']) - pdb.set_trace() # extract single stars if (args.keep_singles==True):