def fill(self): import xastropy.spec.abs_line as xspa # Data self.atomic = xspa.abs_line_data(self.wrest) # self.analy['VLIM'] = [0., 0.] # km/s self.analy['FLG_ANLY'] = 1 # Analyze self.analy['FLG_EYE'] = 0 self.analy['FLG_LIMIT'] = 0 # No limit self.analy['DATFIL'] = '' self.analy['IONNM'] = self.atomic['name']
def fill(self): import xastropy.spec.abs_line as xspa # Data self.atomic = xspa.abs_line_data(self.wrest) # self.analy["VLIM"] = [0.0, 0.0] # km/s self.analy["FLG_ANLY"] = 1 # Analyze self.analy["FLG_EYE"] = 0 self.analy["FLG_LIMIT"] = 0 # No limit self.analy["DATFIL"] = "" self.analy["IONNM"] = self.atomic["name"]
def fill_data(self): import xastropy.spec.abs_line as xspa # Data self.atomic = xspa.abs_line_data(self.wrest) # self.analy['WVMNX'] = [0., 0.] # Wavelength interval about the line (observed) self.analy['VLIM'] = [0., 0.]*u.km/u.s # Velocity limit of line self.analy['FLG_ANLY'] = 1 # Analyze self.analy['FLG_EYE'] = 0 self.analy['FLG_LIMIT'] = 0 # No limit self.analy['DATFIL'] = '' self.analy['IONNM'] = self.atomic['name'] self.analy['z'] = 0. # Redshift # Characteristics self.attrib = {'N': 0., 'Nsig': 0., 'flgN': 0, # Column 'b': 0., 'bsig': 0., # Doppler 'EW': 0., 'EWsig': 0., 'flgEW': 0 # EW }
def mk_ew_lyman_spline(bval, ew_fil=None): """ Generate a pickle file of a Spline of EW vs NHI for the Lyman series Parameters: bval: float Doppler parameter (km/s) ew_fil: string ('EW_SPLINE_b##.p') Name of output pickle file """ from astropy import constants as const from xastropy.spec import abs_line as xsab from xastropy.spec import voigt as xsv # Outfil if ew_fil == None: ew_fil = "EW_SPLINE_b" + str(int(bval)) + ".p" # Units if not isinstance(bval, u.quantity.Quantity): bval = bval * u.km / u.s # km/s # NHI nspl = 100 log_NHI = 11.0 + 11 * np.arange(nspl) / (nspl - 1.0) # Lines wrest = tau_eff_llist() # Output outp = {"wrest": wrest, "tck": []} # Setup nvel = 60001 velo = (-30000.0 + np.arange(nvel, dtype="float64")) * u.km / u.s # km/s dvel = 1.0 * u.km / u.s # km/s uval = velo / bval # Loop for cnt, line in enumerate(wrest): # Get atomic data abl_data = xsab.abs_line_data(line.value) # Wave array dwv = dvel.to(u.cm / u.s) * line / const.c.cgs # Ang # Voigt vd = (bval / line).to(u.Hz) # Frequency a = abl_data["gamma"] / (12.56637 * vd.value) vgt = xsv.voigtking(uval, a) # tau tau = 0.014971475 * abl_data["fval"] * vgt / vd # Normalized to N_HI = 1 cm^-2 # Flux tau_array = np.outer(tau, 10.0 ** log_NHI) fx = np.exp(-1.0 * tau_array) # EW EW = np.sum(1.0 - fx, 0) * dwv # EW_SPLINE[qq].EW = EW # Spline # EW_SPLINE[qq].splint = spl_init(NHI, EW, /double) tck = interpolate.splrep(log_NHI, EW) # , s=0) # Check? chk = False # if line == (1215.6701*u.AA): # xdb.set_trace() # chk=True if chk: from matplotlib import pyplot as plt plt.clf() plt.plot(log_NHI, EW, "o") # Spline xnew = np.linspace(np.amin(log_NHI), np.amax(log_NHI), nspl * 10) ynew = interpolate.splev(xnew, tck, der=0) plt.plot(xnew, ynew, "-") plt.show() # Output print("line = %g" % line.value) outp["tck"].append(tck) # Write print("Writing %s" % ew_fil) pickle.dump(outp, open(ew_fil, "wb"))
def mk_ew_lyman_spline(bval, ew_fil=None): """ Generate a pickle file of a Spline of EW vs NHI for the Lyman series Parameters: bval: float Doppler parameter (km/s) ew_fil: string ('EW_SPLINE_b##.p') Name of output pickle file """ from astropy import constants as const from xastropy.spec import abs_line as xsab from xastropy.spec import voigt as xsv # Outfil if ew_fil == None: ew_fil = 'EW_SPLINE_b' + str(int(bval)) + '.p' # Units if not isinstance(bval, u.quantity.Quantity): bval = bval * u.km / u.s # km/s # NHI nspl = 100 log_NHI = 11.0 + 11 * np.arange(nspl) / (nspl - 1.) # Lines wrest = tau_eff_llist() # Output outp = {'wrest': wrest, 'tck': []} # Setup nvel = 60001 velo = (-30000. + np.arange(nvel, dtype='float64')) * u.km / u.s # km/s dvel = 1. * u.km / u.s # km/s uval = velo / bval # Loop for cnt, line in enumerate(wrest): # Get atomic data abl_data = xsab.abs_line_data(line.value) # Wave array dwv = dvel.to(u.cm / u.s) * line / const.c.cgs # Ang # Voigt vd = (bval / line).to(u.Hz) # Frequency a = abl_data['gamma'] / (12.56637 * vd.value) vgt = xsv.voigtking(uval, a) # tau tau = 0.014971475 * abl_data[ 'fval'] * vgt / vd # Normalized to N_HI = 1 cm^-2 # Flux tau_array = np.outer(tau, 10.**log_NHI) fx = np.exp(-1. * tau_array) # EW EW = np.sum(1. - fx, 0) * dwv #EW_SPLINE[qq].EW = EW # Spline #EW_SPLINE[qq].splint = spl_init(NHI, EW, /double) tck = interpolate.splrep(log_NHI, EW) #, s=0) # Check? chk = False #if line == (1215.6701*u.AA): # xdb.set_trace() # chk=True if chk: from matplotlib import pyplot as plt plt.clf() plt.plot(log_NHI, EW, 'o') # Spline xnew = np.linspace(np.amin(log_NHI), np.amax(log_NHI), nspl * 10) ynew = interpolate.splev(xnew, tck, der=0) plt.plot(xnew, ynew, '-') plt.show() # Output print('line = %g' % line.value) outp['tck'].append(tck) # Write print('Writing %s' % ew_fil) pickle.dump(outp, open(ew_fil, "wb"))