def truncate_samples(df, params): if "mass_1" not in df: df["total_mass"] = conversion.chirp_mass_and_mass_ratio_to_total_mass( df["chirp_mass"], df["mass_ratio"] ) ( df["mass_1"], df["mass_2"], ) = conversion.total_mass_and_mass_ratio_to_component_masses( df["mass_ratio"], df["total_mass"] ) if "reference_frequency" not in df: df["reference_frequency"] = 20 if "H1_optimal_snr" in df: matched_filter_snr = np.sqrt(((np.abs(df["H1_matched_filter_snr"])**2) + (np.abs(df["L1_matched_filter_snr"])**2))) optimal_snr = np.sqrt(((np.abs(df["H1_optimal_snr"])**2) + (np.abs(df["L1_optimal_snr"])**2))) df['matched_filter_snr'] = matched_filter_snr df['snr'] = optimal_snr else: df['snr'] = df['network_snr'] df = conversion.generate_spin_parameters(df) df = conversion.generate_mass_parameters(df) df = add_cos_theta_12_from_component_spins(df) if isinstance(df, pd.DataFrame): df = df[params] else: df = {p: df[p] for p in params} return df
def convert_df_to_gwosc_df(df: pd.DataFrame) -> pd.DataFrame: converted_df = df.copy() # rename converted_df['GPS'] = converted_df['tc'] converted_df['chirp_mass'] = converted_df['mchirp'] converted_df['symmetric_mass_ratio'] = converted_df['eta'] converted_df['luminosity_distance'] = converted_df['DL'] converted_df['ra'] = converted_df['RA'] converted_df['dec'] = converted_df['DEC'] # re-parameterisation converted_df['mass_ratio']= \ symmetric_mass_ratio_to_mass_ratio(converted_df['symmetric_mass_ratio']) converted_df['total_mass'] = \ chirp_mass_and_mass_ratio_to_total_mass( converted_df['chirp_mass'], converted_df['mass_ratio'] ) converted_df['mass_1'], converted_df['mass_2'] = \ total_mass_and_mass_ratio_to_component_masses( converted_df['mass_ratio'], converted_df['total_mass'] ) converted_df['chi_eff'] = (converted_df['s1z'] + converted_df['s2z'] * converted_df['mass_ratio']) / \ (1 + converted_df['mass_ratio']) return converted_df
def test_total_mass_and_mass_ratio_to_component_masses(self): mass_1, mass_2 = conversion.total_mass_and_mass_ratio_to_component_masses( self.mass_ratio, self.total_mass) self.assertTrue( all([ abs(mass_1 - self.mass_1) < 1e-5, abs(mass_2 - self.mass_2) < 1e-5 ]))
def get_component_mass_from_mchirp_q(mchirp, q): mtot = chirp_mass_and_mass_ratio_to_total_mass(chirp_mass=mchirp, mass_ratio=q) m1, m2 = total_mass_and_mass_ratio_to_component_masses(mass_ratio=q, total_mass=mtot) return m1, m2