TOSS -- Tübingen Oscillator Strengths Service
2015-08-10T11:30:00
100
This service provides oscillator strengths and transition probabilities.
Mainly based on experimental energy levels, these were calculated with the
pseudo-relativistic Hartree-Fock method including core-polarization
corrections.
When publishing research making use of this tool, please acknowledge:
"The TOSS service (http://dc.g-vo.org/TOSS) used for this paper
was constructed as part of the activities of the German Astrophysical
Virtual Observatory."
Rauch, T.; Quinet, P.; Hoyer, D.; Werner, K.;
Demleitner, M.; Kruk, J. W.
atomic-physics
spectral-line-identification
2016A&A...587A..39R
10.21938/3i01isnuCODnh1zjbCvuwA
Added lines for Krypton.
Added lines for Zirconium and Xenon.
Added lines for Selen, Tellur, and Iodine.
Added lines for Copper.
date: 2023-10-27
date.role: ExportRequested
A table of transitions, their species, and
their properties.
A view on top of toss.data that
has values in conventional units and with air wavelengths
(rather than vacuum) between 2000 and 20000 Ångstrøm.
CREATE VIEW \curtable as (SELECT
c_wavelength,
chemical_element,
ion_stage,
log_gf,
ga,
initial_level_energy*5.034116651114543e+22 as initial_level_energy,
par_init,
j_init,
final_level_energy*5.034116651114543e+22 as final_level_energy,
par_final,
j_final,
pub
FROM \schema.data)
This is a prototype for a future LineTAP specification. If you
are not interested in validating LineTAP, you should probably not
use this table.
//linetap#table-0
@ion_stage@chemical_element.lower().capitalize(){"I": 0, "II": -1, "III": -2, "IV": -3,
"V": -4, "VI": -5, "VII": -6}"charge"
# the file is produced by res/res/get_ground_states.py
with open(rd.getAbsPath(
"res/ground_states.json")) as f:
GROUND_STATE_MAP = json.load(f)
try:
@E0 = GROUND_STATE_MAP[@chemical_element][@ion_stage]
except KeyError:
raise base.ReportableError("Can't find ground state"
" energy for {} at ionisation {}. See"
" res/get_ground_states.py for how to fix this.".format(
@chemical_element, @ion_stage))
# map (atom, ionsation) to (inchi, inchikey)
KNOWN_INCHIS = {}
key = (@chemical_element, @charge)
if key not in KNOWN_INCHIS:
il = linetap.getILib()
iin = il.getInput([
il.getAtom(@chemical_element, charge=@charge)])
inchi = il.getInChI(iin)
inchiKey = il.getInChIKey(inchi)
KNOWN_INCHIS[key] = (inchi, inchiKey)
@inchi, @inchikey = KNOWN_INCHIS[key]
base.computeConversionFactor("cm**-1", "J")
energies = [
float(@initial_nubar)*PER_CENTIMETER,
float(@final_nubar)*PER_CENTIMETER]
@lower_energy = max(energies)
@upper_energy = min(energies)
@inchi@inchikey@charge@pub@E0-@lower_energy"theory""%s %s %s A"%(
@chemical_element, @ion_stage, @wavelength)@E0-@upper_energyfloat(@wavelength)float(@ga)/1e9@chemical_element
TOSS legacy
Tübingen Oscillator Strengths Service Form Interface
TOSS data is also available in a form
compliant to the IVOA spectral line data model in a
\RSTservicelink{toss/q/q/info}{SLAP service} and within our TAP
service (\RSTservicelink{toss/q/examples}{usage examples}).
static
A legacy interface (conventional
units, air wavelength around the optical range) to
TOSS data is also available at
\RSTservicelink{toss/q/legacy/form}. See also
\RSTservicelink{toss/q/examples}{usage examples} for how to do
TAP queries on this data.
TOSS slap
theoretical
wavelength=7e-7/7.1e-7
q/slap.xml
rows = self.getVOTableRows()
self.assertEqual(len(rows), 1)
self.assertAlmostEqual(rows[0]['initial_level_energy'],
2.05219718095184e-19)
self.assertEqual(rows[0]["linename"], "Mo IV 702.115 A")
self.assertAlmostEqual(rows[0]["ga"], 0.0365)
legacy/form
self.assertHasStrings(
"c_wavelength,chemical_element,ion_stage,log_gf,ga,initial_level_energy,par_init,j_init,final_level_energy,par_final,j_final,pub\\r\\n",
"702.115,Mo,IV,-2.57",
",10331.000171505884,e,1.5,152757.00253593305,o,1.5,2015A&A...587A..39R\\r\\n")
/tap/sync
row = self.getFirstVOTableRow()
self.assertAlmostEqual(row["upper_energy"],
1.3639274950980258e-17)
self.assertEqual(row["line_reference"],
"2012A&A...546A..55R")
self.assertEqual(row["ion_charge"], -4)
self.assertEqual(row["element"], "Ge")
q/slap.xml
self.assertHasStrings(
'xmlns:ssldm="http://www.ivoa.net/xml/SimpleSpectrumLineDM/SimpleSpectrumLineDM-v1.0.xsd"',
"query limit was reached")
self.assertXpath("//v:INFO[@name='QUERY_STATUS']",
{"value": "OK"})