def get_completeness(starname, date): """ Get the completeness as a function of mass-ratio for the given star and observation date. """ # Read in the completeness vs. temperature with h5py.File('data/Completeness.h5', 'r') as comp: if starname in comp.keys() and date in comp[starname].keys(): ds = comp[starname][date]['marginalized'] comp_df = pd.DataFrame(data=ds.value, columns=ds.attrs['columns']) comp_df['Instrument'] = ds.attrs['Instrument'] else: logging.warn('starname/date combination not found in dataset!') return None # Get the primary mass spt = StarData.GetData(starname).spectype primary_mass_samples, _ = Priors.get_primary_mass(starname, spt) comp_df['M1'] = np.median(primary_mass_samples) # Convert the companion temperature to mass using spectral type relations spt_int = Priors.SpectralTypeInterpolator() comp_df['M2'] = comp_df.Temperature.map(spt_int) # Make mass ratio and return comp_df['q'] = comp_df.M2 / comp_df.M1 # Make sure all columns are floats for col in ['Temperature', 'Detection_Rate', 'vsini', 'M1', 'M2', 'q']: comp_df[col] = pd.to_numeric(comp_df[col], errors='coerce') return comp_df