def __init__( self, chemical_name, energy_max=2500, nu_min=216 * u.GHz, nu_max=235 * u.GHz, line_lists=['SLAIM'], freq_type='Freq-GHz', linelimit=100000, ): Splatalogue.LINES_LIMIT = linelimit line_ids = Splatalogue.get_species_ids().find(chemical_name) if len(line_ids) > 1: mwts = [int(lid[:3]) for lid in line_ids] if len(set(mwts)) != 1: raise ValueError("Chemical name {0} matches too many " "different lines: {1}".format( chemical_name, line_ids)) self.molwt = mwts[0] elif len(line_ids) == 1: self.molwt = int(list(line_ids.keys())[0][:3]) else: raise ValueError("No matching molecules") linecat = Splatalogue.query_lines( nu_min, nu_max, chemical_name=chemical_name, energy_max=energy_max, energy_type='eu_k', line_strengths=['ls1', 'ls2', 'ls3', 'ls4', 'ls5'], line_lists=line_lists, show_upper_degeneracy=True) self.linecat = linecat self.freqs = np.array(linecat[freq_type]) * u.GHz self.aij = linecat['Log<sub>10</sub> (A<sub>ij</sub>)'] self.deg = [ x if x > 0 else 1 for x in linecat['Upper State Degeneracy'] ] self.SijMu2 = linecat[ 'S<sub>ij</sub>μ<sup>2</sup> (D<sup>2</sup>)'] self.EU = (np.array(linecat['E_U (K)']) * u.K * constants.k_B).to( u.erg).value ## crappy debug hack #if 'OSU' in line_lists: # self.EU = (np.array(linecat['E_L (K)'])*u.K*constants.k_B).to(u.erg).value slaim_query = Splatalogue.query_lines(1 * u.Hz, 10000 * u.GHz, chemical_name=chemical_name, energy_max=energy_max, energy_type='eu_k', line_lists=['SLAIM'], show_upper_degeneracy=True) self.slaim = slaim_query self.all_EU = (slaim_query['E_U (K)'] * u.K * constants.k_B).to( u.erg).value self.all_freq = slaim_query['Freq-GHz'] self.all_deg = slaim_query['Upper State Degeneracy']
def __init__(self, chemical_name, energy_max=2500, nu_min=216*u.GHz, nu_max=235*u.GHz, line_lists=['SLAIM'], freq_type='Freq-GHz', linelimit=100000, ): Splatalogue.LINES_LIMIT=linelimit line_ids = Splatalogue.get_species_ids().find(chemical_name) if len(line_ids) > 1: mwts = [int(lid[:3]) for lid in line_ids] if len(set(mwts)) != 1: raise ValueError("Chemical name {0} matches too many " "different lines: {1}".format(chemical_name, line_ids)) self.molwt = mwts[0] elif len(line_ids) == 1: self.molwt = int(list(line_ids.keys())[0][:3]) else: raise ValueError("No matching molecules") linecat = Splatalogue.query_lines(nu_min, nu_max, chemical_name=chemical_name, energy_max=energy_max, energy_type='eu_k', line_strengths=['ls1','ls2','ls3','ls4','ls5'], line_lists=line_lists, show_upper_degeneracy=True) self.linecat = linecat self.freqs = np.array(linecat[freq_type])*u.GHz self.aij = linecat['Log<sub>10</sub> (A<sub>ij</sub>)'] self.deg = [x if x > 0 else 1 for x in linecat['Upper State Degeneracy']] self.SijMu2 = linecat['S<sub>ij</sub>μ<sup>2</sup> (D<sup>2</sup>)'] self.EU = (np.array(linecat['E_U (K)'])*u.K*constants.k_B).to(u.erg).value ## crappy debug hack #if 'OSU' in line_lists: # self.EU = (np.array(linecat['E_L (K)'])*u.K*constants.k_B).to(u.erg).value slaim_query = Splatalogue.query_lines(1*u.Hz, 10000*u.GHz, chemical_name=chemical_name, energy_max=energy_max, energy_type='eu_k', line_lists=['SLAIM'], show_upper_degeneracy=True) self.slaim = slaim_query self.all_EU = (slaim_query['E_U (K)']*u.K*constants.k_B).to(u.erg).value self.all_freq = slaim_query['Freq-GHz'] self.all_deg = slaim_query['Upper State Degeneracy']
from astroquery.splatalogue import Splatalogue line_ids = Splatalogue.get_species_ids() print line_ids
from astropy import units as u from astroquery.splatalogue import Splatalogue from config import conn from tables import peaks_table line_ids = Splatalogue.get_species_ids() # --- Find species that have CO --- # # CO_containing_species = Splatalogue.get_species_ids('CHS') # print CO_containing_species # -- Find Species within lines -- # # CO1to0 = Splatalogue.query_lines(115.271 * u.GHz, 115.273 * u.GHz, top20='top20') # CO1to0.pprint() # row = CO1to0[0] # print row[1] mid = 142 threshold = 0.02 frequencies, intensities = peaks_table.get_frequency_intensity_list(conn, mid) class Chemical: def __init__(self, name): self.name = name self.lines = [] self.matched_lines = [] self.N = 0 def add_line(self, line, match):