Line lists are added to the Specview library of line lists by adding one or two files to a specific directory in the local file system. This directory can be anywhere in the system, but must be pointed to by an entry in the user preferences file. See Sec. 9 for details on how to create a preferences file.
The two files added to that directory are the line list file itself, and a meta file that describes the contents and format of the line list file. Optionally, only the meta file will suffice, in those cases the line list file must be accessed remotely via a URL.
The following paragraphs discuss the details associated with the two files, the line list and the meta file. Once these two files are at hand, just place them in the directory pointed to by the user preferences and all is set. Next time it is invoked, the Line Identification Tool will see the new list as part of its library.
Line lists acceptable as input to the Line Identification Tool must be in the basic form of text tables with fixed format columns. That is, each column must be contained between two specific, fixed character positions in a table row.
Two columns are mandatory in a line list: one must contain valid wavelength / frequency / energy values (in any units supported by Specview), and the other must contain the line identification, in the form of character strings, associated with the corresponding value of wavelength / frequency / energy. These are the character strings that are displayed on the plot surface.
Apart from the limitations above, pretty much everything can be regarded as a valid line list. The variations in format are handled by the meta file that is associated with each line list. The meta file is an XML file that stores descriptive information about the line list and allows the line list reader to correctly locate, parse and interpret the text table.
The basic structure of a meta file can better be presented using a real implementation. The following XML code is the actual meta file for the CO line list.
<Linelist>
<Name>CO Lines (65 - 200 um)</Name>
<ShortName>CO</ShortName>
<Description>
<Line>CO
Rotational Values.</Line>
<Line>I. G. Nolt,
et. al., Journal of Molecular Spectroscopy 125, 274-287 (1987)</Line>
<Line>C.
Chackerian, Jr. and R. H. Tipping</Line>
<Line>Journal of
Molecular Spectroscopy 99, 431-449 (1983))</Line>
<Line>http://www.mpe.mpg.de/ir/ISO/linelists/CO.html</Line>
<Line>28 lines
from 65 to 200 um</Line>
</Description>
<Locations>
<Location>CO.txt</Location>
<Location>http://www.mpe.mpg.de/ir/ISO/linelists/CO.html</Location>
</Locations>
<Range>
<Units>micron</Units>
<Low>65.6</Low>
<High>200.3</High>
</Range>
<SkipLines>18</SkipLines>
<Columns>
<Column>
<Type>Wavelength</Type>
<Class>java.lang.Double</Class>
<Name>Wavelength</Name>
<Units>micron</Units>
<Begin>21</Begin>
<End>30</End>
</Column>
<Column>
<Type>ID</Type>
<Tooltip>Line identification</Tooltip>
<Begin>3</Begin>
<End>4</End>
</Column>
<Column>
<Name></Name>
<Begin>6</Begin>
<End>13</End>
</Column>
</Columns>
</Linelist>
The meta file contains a single instance of a </Linelist> XML element, which encloses a set of mandatory XML elements.
The <Name>, <ShortName> and <Description> elements store identification information for the list as a whole. They are used to populate the user interface widgets. Note that the <Description> element is comprised of a list of <Line> elements to allow a long text to be broken up into multiple lines.
The <Locations> element enables the list reader to locate the list. It is comprised of a list of <Location> elements, each one listing one possible place where the list can be found.
In the example above, two possible locations are listed: the first points to a place in the local file system, relative to the UserLineLists user preference (see Sec. 9). An absolute path patterned as a URL, such as file:/usr/local/linelists/CO.txt would be valid as well. The second location points to a remote URL where the list can be found as well.
The line list reader will scan each location in turn and will get the actual line list file from the first location that succeeds. If no list file can be found, it will silently ignore the request to get the list.
The <Range> element describes the range of wavelengths / frequencies / energies encompassed by the list, as well as the units in which these quantities are expressed. The range information is used by the user interface to decide if a given list matches the displayed spectrogram and should be included in the user interface or not, as well as which lines should be included in the displayed table. The units string must be one of the types supported by the Specview units conversion mechanism.
The rest of the meta file is comprised of a <Columns> element, which encloses a list of <Column> elements. Each one of these entries describes a single column in the line list text file. Not all columns present in the line list text file must be included, just the ones one wants to see displayed in the user interface table. However, the wavelength / frequency / energy, and the line identification columns, must always be present.
Mandatory elements in a <Column> element are the <Name>, <Begin> and <End> elements.
The <Name> element sole purpose is to be used as a column header by the user interface, and has no relationship with the actual name of the column (if any) in the line list text file. If no name is required, just leave it blank. The <Begin> and <End> elements tell the row parser where the column is located in the text file. Values for these two parameters should be one-indexed (matching for example the description files from the Vizier catalogues).
The wavelength / frequency / energy column is identified by
a <Type>Wavelength</Type>
entry. In the same way, the line identification column is
identified by a <Type>ID</Type>
entry.
The wavelength / frequency / energy column also requires a <Units> entry. This is to allow the range information to be entered in different units than the actual values in the column.
Columns that hold numerical values must also include a <Class>java.lang.Double</Class> entry. If no such entry is present, the values in the column will be regarded as character strings instead. This will makes the column sorting engine handle them in lexical order instead of numerical order.
Additional optional XML elements can be used to exert further control over the table reading and formatting:
<Tooltip> elements can be used inside a <Column> definition to provide a tool tip display for the column header, where a longer description of the column contents can be placed.
A <SkipLines>N</SkipLines> element can be placed anywhere at the top level of the XML file to tell the reader to skip the first N lines in the file (for example to skip html headers).
A <Type>ID_modifier</Type> element can be assigned to a specific column whose contents are not to be displayed as an actual column, but should be used instead to modify the line identification character strings. The only case where this is implemented so far is to support line lists that use a separate column with special encoding to tell apart permitted lines from forbidden lines, instead of the usual square bracket notation for forbidden lines.
A <Modifiers> list is placed inside the <Column> element for the modifiers column. <Modifier> elements, one for each possible modifier value, are added to the list such as in the example below:
<Column>
<Name>n_lambda</Name>
<Type>ID_modifier</Type>
<Tooltip>See note 1</Tooltip>
<Begin>27</Begin>
<End>27</End>
<Modifiers>
<Modifier value="F"
type="ForbiddenLineModifier"></Modifier>
<Modifier value="f"
type="ForbiddenLineModifier"></Modifier>
<Modifier value="N"
type="ForbiddenLineModifier"></Modifier>
<Modifier value="L"
type="ForbiddenLineModifier"></Modifier>
<Modifier value="A"
type="ForbiddenLineModifier"></Modifier>
<Modifier value="C" type="ForbiddenLineModifier"></Modifier>
</Modifiers>
</Column>
This construct tells that the line identification character string should be enclosed in square brackets whenever the n_lambda column contains a value of “F”, “f”, “N”, “L”, “A”, or “C”.
A <Format>fixed</Format> element can be used anywhere at the top level of the XML file to force the table renderer to display the columns with their natural sizes. The default mode is to squeeze all columns to the fit the user interface window. This works when a small number of columns is displayed, but is not appropriate when a large number of columns must be displayed.
A template file was generated for the Kurucz line lists (http://kurucz.harvard.edu/LINELISTS). It is listed below. To get a specific list other that the one pointed to by this example, just modify the URL in the second <Location> entry, and the high and low values in the <Range> element to match the list you are interested into.
<Linelist>
<Name>Kurucz list</Name>
<ShortName>Kurucz</ShortName>
<Description>
<Line>Kurucz list
example.</Line>
</Description>
<Locations>
<Location>/linelists/gf8000.10.txt</Location>
<Location>http://kurucz.harvard.edu/LINELISTS/GF10/gf8000.10</Location>
</Locations>
<Range>
<Units>Angstrom</Units>
<Low>7900</Low>
<High>8000</High>
</Range>
<Format>fixed</Format>
<Columns>
<Column>
<Type>Wavelength</Type>
<Class>java.lang.Double</Class>
<Name>wl</Name>
<Units>nm</Units>
<Begin>1</Begin>
<End>11</End>
</Column>
<Column>
<Type>ID</Type>
<Name>elem code</Name>
<Tooltip>element code = element number +
charge/100</Tooltip>
<Begin>19</Begin>
<End>24</End>
</Column>
<Column>
<Name>log gf</Name>
<Class>java.lang.Double</Class>
<Tooltip>log gf</Tooltip>
<Begin>12</Begin>
<End>18</End>
</Column>
<Column>
<Name>E(cm-1)</Name>
<Class>java.lang.Double</Class>
<Tooltip>first
energy level in cm-1</Tooltip>
<Begin>25</Begin>
<End>36</End>
</Column>
<Column>
<Name>J</Name>
<Class>java.lang.Double</Class>
<Tooltip>J for first level</Tooltip>
<Begin>37</Begin>
<End>41</End>
</Column>
<Column>
<Name>label</Name>
<Tooltip>label field for first level</Tooltip>
<Begin>42</Begin>
<End>51</End>
</Column>
<Column>
<Name>E'(cm-1)</Name>
<Class>java.lang.Double</Class>
<Tooltip>second energy level in cm-1</Tooltip>
<Begin>52</Begin>
<End>63</End>
</Column>
<Column>
<Name>J'</Name>
<Class>java.lang.Double</Class>
<Tooltip>J for second level</Tooltip>
<Begin>64</Begin>
<End>68</End>
</Column>
<Column>
<Name>label'</Name>
<Tooltip>label field for second level</Tooltip>
<Begin>70</Begin>
<End>79</End>
</Column>
<Column>
<Name>log Gamma rad</Name>
<Class>java.lang.Double</Class>
<Tooltip>log of radiative damping constant</Tooltip>
<Begin>81</Begin>
<End>86</End>
</Column>
<Column>
<Name>log Gamma stark</Name>
<Class>java.lang.Double</Class>
<Tooltip>log of stark damping constant/electron
number</Tooltip>
<Begin>87</Begin>
<End>92</End>
</Column>
<Column>
<Name>log Gamma vdW</Name>
<Class>java.lang.Double</Class>
<Tooltip>log of van der Waals damping constant/neutral hydrogen
number</Tooltip>
<Begin>93</Begin>
<End>97</End>
</Column>
<Column>
<Name>log Gamma vdW</Name>
<Class>java.lang.Double</Class>
<Tooltip>log of van der Waals damping constant/neutral hydrogen
number</Tooltip>
<Begin>93</Begin>
<End>97</End>
</Column>
<Column>
<Name>NLTE</Name>
<Class>java.lang.Double</Class>
<Tooltip>non-LTE level index for first level</Tooltip>
<Begin>102</Begin>
<End>103</End>
</Column>
<Column>
<Name>NLTE'</Name>
<Class>java.lang.Double</Class>
<Tooltip>non-LTE level index for second level</Tooltip>
<Begin>104</Begin>
<End>105</End>
</Column>
<Column>
<Name>iso</Name>
<Class>java.lang.Double</Class>
<Tooltip>isotope number</Tooltip>
<Begin>106</Begin>
<End>108</End>
</Column>
<Column>
<Name>log f</Name>
<Class>java.lang.Double</Class>
<Tooltip>hyperfine component log fractional
strength</Tooltip>
<Begin>109</Begin>
<End>114</End>
</Column>
<Column>
<Name>iso</Name>
<Class>java.lang.Double</Class>
<Tooltip>isotope number
(for diatomics there are two and no hyperfine)</Tooltip>
<Begin>115</Begin>
<End>117</End>
</Column>
<Column>
<Name>log frac</Name>
<Class>java.lang.Double</Class>
<Tooltip>log isotopic abundance fraction</Tooltip>
<Begin>118</Begin>
<End>123</End>
</Column>
<Column>
<Name>hyper shift (mK)</Name>
<Class>java.lang.Double</Class>
<Tooltip>hyperfine shift for first level in mK to be added to E
</Tooltip>
<Begin>124</Begin>
<End>128</End>
</Column>
<Column>
<Name>hyper shift (mK)</Name>
<Class>java.lang.Double</Class>
<Tooltip>hyperfine shift for second level in mK to be added to E' </Tooltip>
<Begin>129</Begin>
<End>133</End>
</Column>
<Column>
<Name>iso shift (mA)</Name>
<Class>java.lang.Double</Class>
<Tooltip>isotope shift of wavelength in mA</Tooltip>
<Begin>154</Begin>
<End>160</End>
</Column>
</Columns>
</Linelist>