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)
} 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'"
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__":