def test_get_fitdata(): data_path = pkg_resources.resource_filename("measure_extinction", "data/") # read in the observed data of the stars redstar = StarData("hd229238.dat", path=data_path) compstar = StarData("hd204172.dat", path=data_path) # calculate the extinction curve ext = ExtData() ext.calc_elx(redstar, compstar) # once wavelenth units saved, update FITS file and use this line instead # of the 4 lines above # ext = ExtData(filename=data_path + "hd283809_hd064802_ext.fits") wave, y, unc = ext.get_fitdata( ["BAND", "IUE"], remove_uvwind_region=True, remove_lya_region=True ) # fitting routines often cannot handle units, make sure none are present for cursrc in ext.waves.keys(): assert isinstance(wave, u.Quantity) assert not isinstance(y, u.Quantity) assert not isinstance(unc, u.Quantity)
def calc_extinction(redstarname, compstarname, path): # read in the observed data for both stars redstarobs = StarData("%s.dat" % redstarname.lower(), path=path) compstarobs = StarData("%s.dat" % compstarname.lower(), path=path) # calculate the extinction curve extdata = ExtData() extdata.calc_elx(redstarobs, compstarobs) extdata.save(path + "%s_%s_ext.fits" % (redstarname.lower(), compstarname.lower()))
def test_calc_AV_RV(): # get the location of the data files data_path = pkg_resources.resource_filename("measure_extinction", "data/") # read in the observed data of the stars redstar = StarData("hd229238.dat", path=data_path) compstar = StarData("hd204172.dat", path=data_path) # calculate the extinction curve ext = ExtData() ext.calc_elx(redstar, compstar) # calculate A(V) ext.calc_AV() np.testing.assert_almost_equal(ext.columns["AV"], 2.5626900237367805) # calculate R(V) ext.calc_RV() np.testing.assert_almost_equal(ext.columns["RV"], 2.614989769244703)
def test_calc_ext(): # get the location of the data files data_path = pkg_resources.resource_filename("measure_extinction", "data/") # read in the observed data of the stars redstar = StarData("hd229238.dat", path=data_path) compstar = StarData("hd204172.dat", path=data_path) # calculate the extinction curve ext = ExtData() ext.calc_elx(redstar, compstar) # test that the quantities have units (or not as appropriate) for cursrc in ext.waves.keys(): assert isinstance(ext.waves[cursrc], u.Quantity) assert not isinstance(ext.exts[cursrc], u.Quantity) assert not isinstance(ext.uncs[cursrc], u.Quantity) assert not isinstance(ext.npts[cursrc], u.Quantity) # check that the wavelengths can be converted to microns for cursrc in ext.waves.keys(): twave = ext.waves[cursrc].to(u.micron) assert twave.unit == u.micron
if __name__ == "__main__": # commandline parser parser = argparse.ArgumentParser() parser.add_argument("redstarname", help="name of reddened star") parser.add_argument("compstarname", help="name of comparision star") parser.add_argument( "--path", help="base path to observed data", default="/home/kgordon/Python_git/extstar_data/", ) args = parser.parse_args() # read in the observed data for both stars redstarobs = StarData("DAT_files/%s.dat" % args.redstarname, path=args.path) compstarobs = StarData("DAT_files/%s.dat" % args.compstarname, path=args.path) # output filebase filebase = "fits/%s_%s" % (args.redstarname, args.compstarname) # calculate the extinction curve extdata = ExtData() extdata.calc_elx(redstarobs, compstarobs) # save the extinction curve out_fname = "fits/%s_%s_ext.fits" % (args.redstarname, args.compstarname) extdata.save(out_fname)
# intrinsic sed modsed = modinfo.stellar_sed(fit_params[0:3], velocity=args.velocity) # dust_extinguished sed ext_modsed = modinfo.dust_extinguished_sed(fit_params[3:10], modsed) # hi_abs sed hi_ext_modsed = modinfo.hi_abs_sed(fit_params[10:12], [args.velocity, 0.0], ext_modsed) # create a StarData object for the best fit SED modsed_stardata = modinfo.SED_to_StarData(modsed) # create an extincion curve and save it extdata = ExtData() extdata.calc_elx(reddened_star, modsed_stardata, rel_band=args.relband) col_info = {"av": fit_params[3], "rv": fit_params[4]} extdata.save(out_basename + "_ext.fits", column_info=col_info) # plot the SEDs norm_model = np.average(hi_ext_modsed["BAND"]) norm_data = np.average(reddened_star.data["BAND"].fluxes) # plotting setup for easier to read plots fontsize = 18 font = {"size": fontsize} mpl.rc("font", **font) mpl.rc("lines", linewidth=1) mpl.rc("axes", linewidth=2) mpl.rc("xtick.major", width=2) mpl.rc("xtick.minor", width=2)