({{, (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[entity] 
gives the values of all known properties for an atomic state or state transition.}, {, (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[entity,property]
gives the value of the specified property for the given entity.}, {, (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[quantity]
returns the state transition with the closest wavelength or frequency specified.}, {, (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[class,quantity]
returns the entity in the specified entity class with the closest wavelength or energy to the specified quantity.}, {, (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[spec,{(Subscript[quantity, 1]),(Subscript[quantity, 2])}]
returns the entities in spec that fall within the range specified between (Subscript[quantity, 1]) and (Subscript[quantity, 2]).}})

OpenersNotesSection(Spacer1)Details

entity can be either an atomic state or an atomic state transition.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])["Ions"] gives a complete list of supported ions.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])["EntityClass"] returns a complete list of entity classes.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[element] returns all entity classes for the specified element.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[class] returns all entities for that entity class.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[class,property] returns the property values for all entities in that entity class.

Entity classes are identified by their element and ionization, with the lowest level 1 corresponding to the ground state.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])["Properties"] gives a list of all properties available for atomic states.

Properties that do not apply or are not known in a particular case are indicated by (RefLink[Missing, paclet:ref/Missing])[…].

The (StringTypeLink["Entity", paclet:ref/interpreter/Entity]) property can be used to verify that an input is a valid entity or entity class for (RefLink[SpectralLineData, paclet:ref/SpectralLineData]).

Common properties for atomic states and state transitions include:

Atomic state properties include:

Atomic state transitional properties include:

"TransitionType" includes several possible forbidden transitions:

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[quantity,n] will return the n closest entities to the quantity. n should be a positive integer.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[class,quantity,n] will return the n closest entities to the quantity. n should be a positive integer.

For atomic levels, (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[spec,{(Subscript[quantity, 1]),(Subscript[quantity, 2])}] takes quantities of energy or inverse length. Quantities should be in terms of length, frequency or angular frequency for atomic lines.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[class,(RefLink[Quantity, paclet:ref/Quantity])[(RefLink[Interval, paclet:ref/Interval])[...],unit]] can also be used to query for entities within a range of values.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[<|(StringTypeLink["Element", paclet:ref/interpreter/Element])->element,"IonizationLevel"->i,"PrincipalN"->n,"OrbitalL"->l,"SpinS"->s,"JValue"->j|>,(StringTypeLink["Entity", paclet:ref/interpreter/Entity])] returns all levels with the requested quantum numbers. (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[quantumnumbers] and (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[quantumnumbers,property] can be used to query for properties of these transitions.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[(Subscript[level, 1])->(Subscript[level, 2]),(StringTypeLink["Entity", paclet:ref/interpreter/Entity])], (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[(Subscript[level, 1])->(Subscript[level, 2])] and (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[(Subscript[level, 1])->(Subscript[level, 2]),property] can be used to find and query for atomic line transitions and their properties.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[level->quantity,(StringTypeLink["Entity", paclet:ref/interpreter/Entity])] searches for the transition with a wavelength or frequency with the specified energy level as an upper or lower level. (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[level->quantity] and (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[level->quantity,property] can be used to query for properties of these transitions.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[level->type,(StringTypeLink["Entity", paclet:ref/interpreter/Entity])] returns all transitions involving the specified energy level and the forbidden transition type. (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[level->type] and (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[level->type,property] can be used to query for properties of these transitions.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData])[(Subscript[quantumnumbers, 1])->(Subscript[quantumnumbers, 2]),(StringTypeLink["Entity", paclet:ref/interpreter/Entity])], (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[(Subscript[quantumnumbers, 1])->(Subscript[quantumnumbers, 2])] and (RefLink[SpectralLineData, paclet:ref/SpectralLineData])[(Subscript[quantumnumbers, 1])->(Subscript[quantumnumbers, 2]),property] can be used to find and query for atomic line transitions and their properties.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData]) takes a (RefLink[Method, paclet:ref/Method]) option. The suboption "Search" takes the options (RefLink[All, paclet:ref/All]) and (RefLink[Automatic, paclet:ref/Automatic]). (RefLink[Automatic, paclet:ref/Automatic]) searches over state transitions with observed wavelengths. (RefLink[All, paclet:ref/All]) includes states that have only calculated wavelengths in searches.

(RefLink[SpectralLineData, paclet:ref/SpectralLineData]) is based on a wide range of sources, with enhancement at Wolfram Research by both human and algorithmic processing.

[1] Ralchenko, Y., et al. "NIST Atomic Spectra Database (Version 4.0.1)." National Institute of Standards and Technology.

OpenersPrimaryExamplesSection(Spacer1)Examples  (28)

OpenersExampleSection0(Spacer1)Basic Examples  (5)

Discover the properties of an atomic line near 400 nm:

line=First@SpectralLineData[(EntityClass["hydrogen I", EntityClass["AtomicLine",{"Hydrogen",1}], "EntityClass[\"AtomicLine\", {\"Hydrogen\", 1}]", "spectral lines"]),(Quantity[400, "nm", nanometers, "Nanometers"])]

SpectralLineData[line]

Find the electron configuration for the ground state of different elements:

SpectralLineData[(Entity[(RowDefault[(Superscript["H", 0]), (RowDefault[(Superscript["1s", 1])]), (RowDefault[(Superscript["", "2"]), (Subscript["S", "1/2"])])]), Entity["AtomicLevel","Hydrogen::1::001001.001.000001"], "Entity[\"AtomicLevel\", \"Hydrogen::1::001001.001.000001\"]", "atomic level"]),"ElectronConfigurationString"]

SpectralLineData[(Entity[(RowDefault[(Superscript["Ne", 0]), (RowDefault["[He]", (Superscript["2s", 2]), (Superscript["2p", 6])]), (RowDefault[(Superscript["", "1"]), (Subscript["S", 0])])]), Entity["AtomicLevel","Neon::1::010001.000001"], "Entity[\"AtomicLevel\", \"Neon::1::010001.000001\"]", "atomic level"]),"ElectronConfigurationString"]

Examine the electron configuration for excited states:

SpectralLineData[(Entity[(RowDefault[(Superscript["H", 0]), (RowDefault[(Superscript["2p", 1])]), (RowDefault[(Superscript["", "2"]), (Subscript["P", "1/2"])])]), Entity["AtomicLevel","Hydrogen::1::001001.001.000002"], "Entity[\"AtomicLevel\", \"Hydrogen::1::001001.001.000002\"]", "atomic level"]), "ElectronConfigurationString"]

SpectralLineData[(Entity[(RowDefault[(Superscript["Ne", 0]), (QuantityPostfix[134459.2871`, "/""cm", reciprocal centimeters, (1/("Centimeters"))])]), Entity["AtomicLevel","Neon::1::010001.000003"], "Entity[\"AtomicLevel\", \"Neon::1::010001.000003\"]", "atomic level"]),"ElectronConfigurationString"]

Find the energy level of an atomic state:

SpectralLineData[(Entity[(RowDefault[(Superscript["H", 0]), (RowDefault[(Superscript["2p", 1])]), (RowDefault[(Superscript["", "2"]), (Subscript["P", "1/2"])])]), Entity["AtomicLevel","Hydrogen::1::001001.001.000002"], "Entity[\"AtomicLevel\", \"Hydrogen::1::001001.001.000002\"]", "atomic level"]),"Energy"]

Find the wavelength of a spectral line between two atomic states:

SpectralLineData[Rule[(Entity[(RowDefault[(Superscript["H", 0]), (RowDefault[(Superscript["1s", 1])]), (RowDefault[(Superscript["", "2"]), (Subscript["S", "1/2"])])]), Entity["AtomicLevel","Hydrogen::1::001001.001.000001"], "Entity[\"AtomicLevel\", \"Hydrogen::1::001001.001.000001\"]", "atomic level"]),(Entity[(RowDefault[(Superscript["H", 0]), (RowDefault[(Superscript["2p", 1])]), (RowDefault[(Superscript["", "2"]), (Subscript["P", "1/2"])])]), Entity["AtomicLevel","Hydrogen::1::001001.001.000002"], "Entity[\"AtomicLevel\", \"Hydrogen::1::001001.001.000002\"]", "atomic level"])],"Wavelength"]

Find state transitions within a specific range:

SpectralLineData[(EntityClass["hydrogen I", EntityClass["AtomicLine",{"Hydrogen",1}], "EntityClass[\"AtomicLine\", {\"Hydrogen\", 1}]", "spectral lines"]),{(Quantity[400, "nm", nanometers, "Nanometers"]),(Quantity[600, "nm", nanometers, "Nanometers"])}]

OpenersExampleSection1(Spacer1)Scope  (14)

OpenersExampleSubsection0(Spacer1)Ions  (3)

Find all valid ions:

SpectralLineData["Ions"]//Length

Find all entity classes for an element:

SpectralLineData[(Entity["carbon", Entity["Element","Carbon"], "Entity[\"Element\", \"Carbon\"]", "element"])]

Retrieve all entities for an ion:

SpectralLineData[(EntityClass["lithium II", EntityClass["AtomicLevel",{"Lithium",2}], "EntityClass[\"AtomicLevel\", {\"Lithium\", 2}]", "atomic levels"])]//Length

OpenersExampleSubsection1(Spacer1)Properties  (2)

Obtain a list of properties:

SpectralLineData["Properties"]

Find all properties of a state of neutral helium:

SpectralLineData[(Entity[(RowDefault[(Superscript["He", 0]), (RowDefault[(Superscript["2p", 1]), (Superscript["3p", 1])]), (RowDefault[(Superscript["", "3"]), (Subscript["D", 1])])]), Entity["AtomicLevel","Helium::1::002001.000196"], "Entity[\"AtomicLevel\", \"Helium::1::002001.000196\"]", "atomic level"])]

OpenersExampleSubsection2(Spacer1)Listability  (1)

(RefLink[SpectralLineData, paclet:ref/SpectralLineData]) can be run over lists of entities:

levels=SpectralLineData[(EntityClass["iron I", EntityClass["AtomicLevel",{"Iron",1}], "EntityClass[\"AtomicLevel\", {\"Iron\", 1}]", "atomic levels"])];

SpectralLineData[levels[[;;10]],"Energy"]

lines=SpectralLineData[(EntityClass["sulfur I", EntityClass["AtomicLine",{"Sulfur",1}], "EntityClass[\"AtomicLine\", {\"Sulfur\", 1}]", "spectral lines"]),{(Quantity[700, "nm", nanometers, "Nanometers"]),(Quantity[750, "nm", nanometers, "Nanometers"])}];
SpectralLineData[lines,"Wavelength"]

OpenersExampleSubsection3(Spacer1)Searchability  (8)

Search for atomic state transitions by wavelength or frequency:

SpectralLineData[(EntityClass["hydrogen I", EntityClass["AtomicLine",{"Hydrogen",1}], "EntityClass[\"AtomicLine\", {\"Hydrogen\", 1}]", "spectral lines"]),{(Quantity[4000, "Å", ångströms, "Angstroms"]),(Quantity[6000, "Å", ångströms, "Angstroms"])}]

SpectralLineData[(EntityClass["hydrogen I", EntityClass["AtomicLine",{"Hydrogen",1}], "EntityClass[\"AtomicLine\", {\"Hydrogen\", 1}]", "spectral lines"]),{(Quantity[800, "THz", terahertz, "Terahertz"]),(Quantity[810, "THz", terahertz, "Terahertz"])}]

Find the atomic state transition closest to a specific wavelength:

SpectralLineData[(Quantity[1776, "Å", ångströms, "Angstroms"])]

Discover the 10 closest state transitions to 500 nm:

SpectralLineData[(Quantity[500, "nm", nanometers, "Nanometers"]),10]

Find spectral lines within a interval of wavelengths:

SpectralLineData[(EntityClass["helium I", EntityClass["AtomicLine",{"Helium",1}], "EntityClass[\"AtomicLine\", {\"Helium\", 1}]", "spectral lines"]),(Quantity[Interval[{500,510}], "Å", ångströms, "Angstroms"])]

Find atomic states with energies near 2 eV:

SpectralLineData[(EntityClass["oxygen I", EntityClass["AtomicLevel",{"Oxygen",1}], "EntityClass[\"AtomicLevel\", {\"Oxygen\", 1}]", "atomic levels"]),(Quantity[2, "eV", electronvolts, "Electronvolts"])]

Locate the two closest states:

SpectralLineData[(EntityClass["oxygen I", EntityClass["AtomicLevel",{"Oxygen",1}], "EntityClass[\"AtomicLevel\", {\"Oxygen\", 1}]", "atomic levels"]),(Quantity[2, "eV", electronvolts, "Electronvolts"]),2]

Verify if a transition exists between two atomic states:

SpectralLineData[(Entity[(RowDefault["H", (RowDefault["(", 1, (Superscript["s", 1]), ")"]), (RowDefault[(Superscript["", "2"]), (Subscript["S", "1/2"])])]), Entity["AtomicLevel","Hydrogen::1::001001.001.000001"], "Entity[\"AtomicLevel\", \"Hydrogen::1::001001.001.000001\"]", "atomic level"])->(Entity[(RowDefault[(Superscript["H", "*"]), (RowDefault["(", 2, (Superscript["p", 1]), ")"]), (RowDefault[(Superscript["", "2"]), (Subscript["P", "1/2"])])]), Entity["AtomicLevel","Hydrogen::1::001001.001.000002"], "Entity[\"AtomicLevel\", \"Hydrogen::1::001001.001.000002\"]", "atomic level"]),"Entity"]

Locate a transition with a level and the frequency of the emitted photon:

SpectralLineData[(Entity[(RowDefault[(Superscript["He", "1+"]), ": ", (RowDefault["(", 1, (Superscript["s", 1]), ")"]), (RowDefault[(Superscript["", "2"]), (Subscript["S", "1/2"])])]), Entity["AtomicLevel","Helium::2::002002.000001"], "Entity[\"AtomicLevel\", \"Helium::2::002002.000001\"]", "atomic level"])->(Quantity[10000, "MHz", megahertz, "Megahertz"]),"Entity"]

SpectralLineData[(Entity[(RowDefault[(Superscript["He", "1+"]), ": ", (RowDefault["(", 1, (Superscript["s", 1]), ")"]), (RowDefault[(Superscript["", "2"]), (Subscript["S", "1/2"])])]), Entity["AtomicLevel","Helium::2::002002.000001"], "Entity[\"AtomicLevel\", \"Helium::2::002002.000001\"]", "atomic level"])->(Quantity[10000, "MHz", megahertz, "Megahertz"]),"CalculatedFrequency"]

Find all magnetic dipole transitions from a particular atomic level:

SpectralLineData[(Entity[(RowDefault["H", ": ", (RowDefault["(", 1, (Superscript["s", 1]), ")"]), (RowDefault[(Superscript["", "2"]), (Subscript["S", "1/2"])])]), Entity["AtomicLevel","Hydrogen::1::001001.001.000001"], "Entity[\"AtomicLevel\", \"Hydrogen::1::001001.001.000001\"]", "atomic level"])->"M1","Entity"]

Find an atomic level based on its element and quantum numbers:

SpectralLineData[\[LeftAssociation]"Element"->(Entity["helium", Entity["Element","Helium"], "Entity[\"Element\", \"Helium\"]", "element"]),"IonizationLevel"->2,"PrincipalN"->1,"OrbitalL"->0,"SpinS"->(1/2),"JValue"->(1/2)\[RightAssociation],"Entity"]

Find atomic transitions using the quantum numbers of the states:

SpectralLineData[Rule[\[LeftAssociation]"Element"->(Entity["helium", Entity["Element","Helium"], "Entity[\"Element\", \"Helium\"]", "element"]),"IonizationLevel"->2,"PrincipalN"->1,"OrbitalL"->0,"SpinS"->(1/2),"JValue"->(1/2)\[RightAssociation],\[LeftAssociation]"Element"->(Entity["helium", Entity["Element","Helium"], "Entity[\"Element\", \"Helium\"]", "element"]),"IonizationLevel"->2,"PrincipalN"->2,"OrbitalL"->1,"SpinS"->(1/2),"JValue"->(1/2)\[RightAssociation]],"CalculatedWavelength"]

OpenersExampleSection2(Spacer1)Options  (1)

OpenersExampleSubsection4(Spacer1)Method  (1)

Search over all wavelengths, not just observed values:

Length/@{SpectralLineData[(EntityClass["helium I", EntityClass["AtomicLine",{"Helium",1}], "EntityClass[\"AtomicLine\", {\"Helium\", 1}]", "spectral lines"]),{(Quantity[100, "Å", ångströms, "Angstroms"]),(Quantity[10000, "Å", ångströms, "Angstroms"])}],
SpectralLineData[(EntityClass["helium I", EntityClass["AtomicLine",{"Helium",1}], "EntityClass[\"AtomicLine\", {\"Helium\", 1}]", "spectral lines"]),{(Quantity[100, "Å", ångströms, "Angstroms"]),(Quantity[10000, "Å", ångströms, "Angstroms"])},Method->{"Search"->All}]}

OpenersExampleSection3(Spacer1)Applications  (2)

Find the wavelengths of the Balmer lines:

lines=SpectralLineData[(EntityClass["hydrogen I", EntityClass["AtomicLine",{"Hydrogen",1}], "EntityClass[\"AtomicLine\", {\"Hydrogen\", 1}]", "spectral lines"]),{(Quantity[400, "nm", nanometers, "Nanometers"]),(Quantity[700, "nm", nanometers, "Nanometers"])}]

SpectralLineData[lines,"Wavelength"]

Plot wavelengths within the visible spectrum for carbon:

lines=SpectralLineData[(EntityClass["carbon I", EntityClass["AtomicLine",{"Carbon",1}], "EntityClass[\"AtomicLine\", {\"Carbon\", 1}]", "spectral lines"]),{(Quantity[400, "nm", nanometers, "Nanometers"]),(Quantity[750, "nm", nanometers, "Nanometers"])}];

linevalues=QuantityMagnitude[SpectralLineData[lines,"Wavelength"],"Nanometers"];

Graphics[{ColorData["VisibleSpectrum"][#],Line[{{#,0},{#,1}}]}&/@linevalues,Frame->True,FrameTicks->{True,False},AspectRatio->1/3,Background->Black,FrameLabel->Quantity[None,"Nanometers"]]

OpenersExampleSection4(Spacer1)Properties & Relations  (1)

Excitation levels are ordered in terms of increasing wavenumber:

levels=SpectralLineData[(EntityClass["hydrogen I", EntityClass["AtomicLevel",{"Hydrogen",1}], "EntityClass[\"AtomicLevel\", {\"Hydrogen\", 1}]", "atomic levels"])];

{#,
   SpectralLineData[levels[[#]], "ElectronConfigurationString"],
   SpectralLineData[levels[[#]], "Wavenumber"]} & /@
 Range[2, 10]

OpenersExampleSection5(Spacer1)Possible Issues  (1)

Atomic states can be searched by quantities of energy and inverse length only:

SpectralLineData[(EntityClass["helium I", EntityClass["AtomicLevel",{"Helium",1}], "EntityClass[\"AtomicLevel\", {\"Helium\", 1}]", "atomic levels"]),{(Quantity[300000, "cm", centimeters, "Centimeters"]),(Quantity[900000, "cm", centimeters, "Centimeters"])}]

State transitions can only be searched using quantities of length or frequency:

SpectralLineData[(EntityClass["helium I", EntityClass["AtomicLine",{"Helium",1}], "EntityClass[\"AtomicLine\", {\"Helium\", 1}]", "spectral lines"]),(QuantityPostfix[300000, "/""cm", reciprocal centimeters, (1/("Centimeters"))])]

OpenersExampleSection6(Spacer1)Neat Examples  (4)

Examine the visible transition lines for tungsten:

lines=SpectralLineData[EntityClass["AtomicLine",{"Tungsten",1}],{(Quantity[400, "nm", nanometers, "Nanometers"]),(Quantity[750, "nm", nanometers, "Nanometers"])}];

linevalues=QuantityMagnitude[SpectralLineData[lines,"Wavelength"],"Nanometers"];

Length[linevalues]

Graphics[{ColorData["VisibleSpectrum"][#],Line[{{#,0},{#,1}}]}&/@linevalues,Frame->True,FrameTicks->{True,False},AspectRatio->1/3,Background->Black,FrameLabel->Quantity[None,"Nanometers"]]

Learn about the available energy levels for all ground state atoms:

levels=Cases[SpectralLineData["EntityClass"],EntityClass["AtomicLevel",{_,1}]];

s1={#[[2,1]],Entity["Element", #[[2,1]]]["AtomicNumber"],EntityValue[#,"EntityCount"]}&/@ levels;

s2=Sort[Tooltip[{#2,#3}, #1]&@@@ Cases[s1, {_,_Integer,_Integer}]];

Show[{ListLinePlot[s2,PlotRange -> All ,Mesh->All],ListPlot[{Callout[#1,#2,Right]&@@@Cases[s2,Tooltip[_,"Thorium"|"Iron"|"Tungsten"|"Xenon"|"Chromium"]]},PlotRange -> All]},PlotRangePadding->{{Automatic,10},{Automatic,40}}]

Explore the distribution of energies for the possible atomic states of tungsten:

energies=SpectralLineData[(EntityClass["tungsten I", EntityClass["AtomicLevel",{"Tungsten",1}], "EntityClass[\"AtomicLevel\", {\"Tungsten\", 1}]", "atomic levels"]),"Energy"];

Differences[Union[energies]]//Min

Histogram[Differences[Union[QuantityMagnitude[energies]]], {"Log",50},AxesLabel->{Quantity[None,"Electronvolts"]}]

Plot the excitation energy for the first 20 atomic states of neon:

energy=SpectralLineData[(EntityClass["neon I", EntityClass["AtomicLevel",{"Neon",1}], "EntityClass[\"AtomicLevel\", {\"Neon\", 1}]", "atomic levels"]),"Energy"][[;;20]];

ListPlot[energy,AxesLabel->Automatic]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[ElementData, paclet:ref/ElementData])  ▪  (RefLink[IsotopeData, paclet:ref/IsotopeData])  ▪  (RefLink[PlanckRadiationLaw, paclet:ref/PlanckRadiationLaw])  ▪  (RefLink[StarData, paclet:ref/StarData])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Physics & Chemistry: Data and Computation, paclet:guide/PhysicsAndChemistryDataAndComputation])}, {▪(RefLinkPlain[Astronomical Computation & Data, paclet:guide/AstronomicalComputationAndData])}})}})