Exemple #1
0
    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>&#956;<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>&#956;<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
Exemple #4
0
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):