Ejemplo n.º 1
0
def test_roundtrip(
    cubefrequencies=[218.44005, 234.68345, 220.07849, 234.69847, 231.28115] *
    u.GHz,
    degeneracies=[9, 9, 17, 11, 21],
    xaxis=[45.45959683, 60.92357159, 96.61387286, 122.72191958, 165.34856457] *
    u.K,
    indices=[3503, 1504, 2500, 116, 3322],
):

    # integrated line over 1 km/s (see dnu)
    onekms = 1 * u.km / u.s / constants.c
    kkms = lte_molecule.line_brightness(
        tex=100 * u.K,
        total_column=1e15 * u.cm**-2,
        partition_function=1185,
        degeneracy=degeneracies,
        frequency=cubefrequencies,
        energy_upper=xaxis.to(u.erg, u.temperature_energy()),
        einstein_A=einsteinAij[indices],
        dnu=onekms * cubefrequencies) * u.km / u.s
    col, tem, slope, intcpt = fit_tex(xaxis,
                                      nupper_of_kkms(kkms, cubefrequencies,
                                                     einsteinAij[indices],
                                                     degeneracies).value,
                                      plot=True)
    print("temperature = {0} (input was 100)".format(tem))
    print("column = {0} (input was 1e15)".format(np.log10(col.value)))
def test_roundtrip(
    cubefrequencies=[218.44005, 234.68345, 220.07849, 234.69847, 231.28115] * u.GHz,
    degeneracies=[9, 9, 17, 11, 21],
    xaxis=[45.45959683, 60.92357159, 96.61387286, 122.72191958, 165.34856457] * u.K,
    indices=[3503, 1504, 2500, 116, 3322],
):

    # integrated line over 1 km/s (see dnu)
    onekms = 1 * u.km / u.s / constants.c
    kkms = (
        lte_molecule.line_brightness(
            tex=100 * u.K,
            total_column=1e15 * u.cm ** -2,
            partition_function=1185,
            degeneracy=degeneracies,
            frequency=cubefrequencies,
            energy_upper=xaxis.to(u.erg, u.temperature_energy()),
            einstein_A=einsteinAij[indices],
            dnu=onekms * cubefrequencies,
        )
        * u.km
        / u.s
    )
    col, tem, slope, intcpt = fit_tex(
        xaxis, nupper_of_kkms(kkms, cubefrequencies, einsteinAij[indices], degeneracies).value, plot=True
    )
    print("temperature = {0} (input was 100)".format(tem))
    print("column = {0} (input was 1e15)".format(np.log10(col.value)))
    def model(tex, col, einsteinAs=einsteinAs, eupper=eupper):
        tex = u.Quantity(tex, u.K)
        col = u.Quantity(col, u.cm**-2)
        eupper = eupper.to(u.erg, u.temperature_energy())
        einsteinAs = u.Quantity(einsteinAs, u.Hz)

        partition_func = specmodel.calculate_partitionfunction(ch3oh.data['States'],
                                                               temperature=tex.value)
        assert len(partition_func) == 1
        Q_rot = tuple(partition_func.values())[0]
        return lte_molecule.line_brightness(tex, bandwidth, frequencies,
                                            total_column=col,
                                            partition_function=Q_rot,
                                            degeneracy=degeneracies,
                                            energy_upper=eupper,
                                            einstein_A=einsteinAs)
    def model(tex, col, einsteinAs=einsteinAs, eupper=eupper):
        tex = u.Quantity(tex, u.K)
        col = u.Quantity(col, u.cm**-2)
        eupper = eupper.to(u.erg, u.temperature_energy())
        einsteinAs = u.Quantity(einsteinAs, u.Hz)

        partition_func = specmodel.calculate_partitionfunction(hnco.data['States'],
                                                               temperature=tex.value)
        assert len(partition_func) == 1
        Q_rot = tuple(partition_func.values())[0]
        return lte_molecule.line_brightness(tex, bandwidth, frequencies,
                                            total_column=col,
                                            partition_function=Q_rot,
                                            degeneracy=degeneracies,
                                            energy_upper=eupper,
                                            einstein_A=einsteinAs)
Ejemplo n.º 5
0
}
ph2co_322.update(ph2co)
ph2co_322['dnu'] = (1 * u.km / u.s / constants.c * ph2co_322['frequency'])

print("T=18.75 N=1e10")
print("taudnu303 = {0}".format(
    line_tau(**{k: v
                for k, v in ph2co_303.items() if k != 'dnu'})))
print("taudnu321 = {0}".format(
    line_tau(**{k: v
                for k, v in ph2co_321.items() if k != 'dnu'})))
print("taudnu322 = {0}".format(
    line_tau(**{k: v
                for k, v in ph2co_322.items() if k != 'dnu'})))
print("r321/r303 = {0}".format(
    line_brightness(**ph2co_321) / line_brightness(**ph2co_303)))
print("r322/r303 = {0}".format(
    line_brightness(**ph2co_322) / line_brightness(**ph2co_303)))

# CDMS Q
import requests
import bs4

url = 'http://cdms.ph1.uni-koeln.de/cdms/tap/'
rslt = requests.post(
    url + "/sync",
    data={
        'REQUEST': "doQuery",
        'LANG': 'VSS2',
        'FORMAT': 'XSAMS',
        'QUERY': "SELECT SPECIES WHERE MoleculeStoichiometricFormula='CH2O'"
Ejemplo n.º 6
0
ph2co_322['dnu'] = (1*u.km/u.s/constants.c * ph2co_322['frequency'])

# CDMS Q
import requests
import bs4
url = 'http://cdms.ph1.uni-koeln.de/cdms/tap/'
rslt = requests.post(url+"/sync", data={'REQUEST':"doQuery", 'LANG': 'VSS2', 'FORMAT':'XSAMS', 'QUERY':"SELECT SPECIES WHERE MoleculeStoichiometricFormula='CH2O'"})
bb = bs4.BeautifulSoup(rslt.content, 'html5lib')
h = [x for x in bb.findAll('molecule') if x.ordinarystructuralformula.value.text=='H2CO'][0]
tem_, Q_ = h.partitionfunction.findAll('datalist')
tem = [float(x) for x in tem_.text.split()]
Q = [float(x) for x in Q_.text.split()]

del ph2co_303['tex']
del ph2co_303['partition_function']
T_303 = np.array([line_brightness(tex=tex*u.K, partition_function=pf,
                                  **ph2co_303).value for tex,pf in
                  zip(tem,Q)])

del ph2co_321['tex']
del ph2co_321['partition_function']
T_321 = np.array([line_brightness(tex=tex*u.K, partition_function=pf,
                                  **ph2co_321).value for tex,pf in
                  zip(tem,Q)])

del ph2co_322['tex']
del ph2co_322['partition_function']
T_322 = np.array([line_brightness(tex=tex*u.K, partition_function=pf,
                                  **ph2co_322).value for tex,pf in
                  zip(tem,Q)])

if __name__ == "__main__":