man(1) | neat man page | man(1) |
neat - nebular empirical analysis tool
neat [option1] [value1] ...
neat carries out a comprehensive empirical analysis on a list of nebular emission line fluxes. If uncertainties are required, it evaluates them using a Monte Carlo approach. neat's philosophy is that abundance determinations should be as objective as possible, and so user input should be minimised. A number of choices can be made by the user, but the default options should yield meaningful results.
Valid values are:
How: Galactic law of Howarth (1983, MNRAS, 203, 301)
CCM: Galactic law of Cardelli, Clayton, Mathis (1989, ApJ, 345,
245)
Fitz: Galactic law of Fitzpatrick & Massa (1990, ApJS, 72,
163)
LMC: LMC law of Howarth (1983, MNRAS, 203, 301)
SMC: SMC law of Prevot et al. (984, A&A, 132, 389)
Default: How
Valid values are:
S96: Smits, 1996, MNRAS, 278, 683
P12: Porter et al., 2012, MNRAS, 425, 28
Default: P12
Valid values are:
KB94: Kingsburgh & Barlow (1994, MNRAS, 271, 257)
PT92: Peimbert, Torres-Peimbert & Ruiz (1992, RMxAA, 24, 155)
DI14: Delgado-Inglada, Morisset & Stasinska (2014, MNRAS, 440,
536)
DI14mod: DI14, but using the classical ICF for nitrogen
(N/O=N+/O+)
Default: DI14. The KB94 ICF implemented in neat additionally contains a correction for chlorine, from Liu et al., 2000, MNRAS, 312, 585.
Valid values are:
1: write out summary files, binned results and complete results
2: write out summary files and binned results
3: write out summary files only
Default: 3
neat requires as input a plain text file containing a list of emission line fluxes. The file can contain two, three or four columns. If two columns are found, the code assumes they contain the the laboratory wavelength of the line (λ0) and its flux (F). Three columns are assumed to be λ0, F, and the uncertainty on F (ΔF). Four columns are assumed to be the observed wavelength of the line, λobs, λ0, F, and ΔF. The rest wavelengths should correspond exactly to those listed in the file /usr/share/neat/complete_line_list. The flux column can use any units, and the uncertainty on the flux should be given in the same units. Examples can be found in the /usr/share/neat/examples/ directory.
neat identifies lines by comparing the quoted wavelength to its list of rest wavelengths. However, rest wavelengths of lines can differ by up to a few tenths of an Angstrom depending on the source. Making sure that neat is identifying your lines properly is probably the most important step in using the code, and misidentifications are the first thing to suspect if you get unexpected results. To assist with preparing the line list, the command line option -id can be used. This applies a very simple algorithm to the input line list to determine their rest wavelengths, which works as follows:
1. A reference list of 10 rest wavelengths of common bright emission lines is
compared to the wavelengths of the 20 brightest lines in the observed
spectrum.
2. Close matches are identified and the mean offset between observed and rest
wavelengths is calculated.
3. The shift is applied, and then an RMS scatter between shifted and rest
wavelengths is calculated.
4. This RMS scatter is then used as a tolerance to assign line IDs based on
close coincidences between shifted observed wavelengths and the full
catalogue of rest wavelengths listed in utilities/complete_line_list
The routine is not intended to provide 100% accuracy and one should always check very carefully whether the lines are properly identified, particularly in the case of high resolution spectra.
In low resolution spectra, lines of comparable intensity may be blended into a single feature. These can be indicated with an asterisk instead of a flux in the input line list. Currently, neat has only limited capabilities for dealing with blends: lines marked as blends are not used in any abundance calculations, and apart from a few cases, it assumes that all other line fluxes represent unblended or deblended intensities. The exceptions are some collisionally excited lines which are frequently blended, such as the [O II] lines at 3727/3729Å. In these cases the blended flux can be given with the mean wavelength of the blend, and the code will treat it properly. These instances are indicated in the utilities/complete_line_list file by a "b" after the ion name.
The uncertainty column of the input file is of crucial importance if you want to estimate uncertainties on the results you derive. Points to bear in mind are that the more realistic your estimate of the line flux measurement uncertainties, the more realistic the estimate of the uncertainties on the results will be, and that in all cases, the final reported uncertainties are a lower limit to the actual uncertainty on the results, because they account only for the propagation of the statistical errors on the line fluxes and not on sources of systematic uncertainty.
In some cases you may not need or wish to propagate uncertainties. In this case you can run just one iteration of the code, and the uncertainty values are ignored if present.
Assuming you have a line list prepared as above, you can now run the code. In line with our philosophy that neat should be as simple and objective as possible, this should be extremely straightforward. To use the code in its simplest form on one of the example linelists, you would type
% cp /usr/share/neat/examples/ngc6543_3cols.dat .
% neat -i ngc6543_3cols.dat
This would run a single iteration of the code, not propagating uncertainties. You'll see some logging output to the terminal, and the calculated results will have been written to the file ngc6543_3cols.dat_results. If this is all you need, then the job's done and you can write a paper now.
Your results will be enhanced greatly, though, if you can estimate the uncertainty associated with them. To do this, invoke the code as follows:
% neat -i ngc6543_3cols.dat -u
The -u switch causes the code to run 10,000 times. In each iteration, the line flux is drawn from a normal distribution with a mean of the quoted flux and a standard deviation of the quoted uncertainty. By repeating this randomisation process lots of times, you build up a realistic picture of the uncertainties associated with the derived quantities. The more iterations you run, the more accurate the results; 10,000 is a sensible number to achieve well sampled probability distributions. If you want to run a different number of iterations for any reason, you can use the -n command line option to specify your preferred value
If the -rp option is specified, then for lines with a signal to noise ratio of less than 6, the line flux is drawn from a log-normal distribution which becomes more skewed the lower the signal to noise ratio is. This corrects the low SNR lines for the upward bias in their measurement described by Rola & Pelat (1994). The full procedure is described in Wesson et al. (2012). However, use of this option is no longer recommended as the bias is highly dependent on the fitting procedure - see Wesson et al. (2016).
If the code does not complete the analysis, it will return one of the following exit codes:
100 no input file specified
101 input file does not exist
102 config file does not exist
103 invalid number of iterations
104 invalid output format requested
105 could not read input line list
106 could not read LINES extension in FITS input
107 error reading line list from FITS
108 error creating FITS output
109 invalid configuration file
200 invalid temperature or density
201 no Hbeta found
202 unknown ion
203 line identifications rejected
In the case of a FITS handling error, it will also return the CFITSIO exit code.
The code corrects for interstellar reddening using the ratios of the Hα, Hβ, Hγ and Hδ lines. Intrinsic ratios of the lines are first calculated assuming a temperature of 10,000K and a density of 1000cm-3. The line list is then dereddened, and temperatures and densities are then calculated as described below. The temperatures and densities are then used to recalculate the intrinsic Balmer line ratios, and the original line list is then dereddened using this value.
neat determines temperatures, densities and abundances by dividing emission lines into low (ionisation potential <20eV), medium (20eV<IP<45eV) and high excitation (IP>45eV) lines. In each zone, the diagnostics are calculated as follows:
1. A temperature of 10000K is initially assumed, and the density is then
calculated from the line ratios relevant to the zone.
2. The temperature is then calculated from the temperature diagnostic line
ratios, using the derived density.
3. The density is recalculated using the appropriately weighted average of
the temperature diagnostics.
4. The temperature is recalculated using this density.
This iterative procedure is carried out successively for low-, medium- and high-ionization zones, and in each case if no diagnostics are available, the temperature and/or density will be taken to be that derived for the previous zone. Temperatures and densities for each zone can also be specified on the command line with the -telow, -temed, -tehigh and -nelow, -nemed, -nehigh options.
neat also calculates a number of diagnostics from recombination line diagnostics. These are:
1. The Balmer jump temperature is calculated using equation 3 of Liu et al.
(2001)
2. The Paschen jump temperature is calculated using equation 7 of Fang et al.
(2011)
3. A density is derived from the Balmer and Paschen decrements if any lines
from H10-H25 or P10-P25 are observed. Their ratios relative to Hβ are
compared to theoretical ratios from Storey & Hummer (1995), and a
density for each line calculated by linear interpolation. The final density
is calculated as the weighted average of all the densities.
4. Temperatures are estimated from helium line ratios, using equations
derived from fits to tabulated values of 5876/4471 and 6678/4471. The tables
are calculated at ne=5000cm-3 only. We plan to improve this calculation in
future releases.
5. OII recombination line ratios are used to derive a temperature and
density, using atomic data calculations from Storey et al. (2017). Values
are found by linearly interpolating the logarithmic values.
6. Recomination line contributions to CELs of N+, O+ and O2+ are estimated
using equations 1-3 of Liu et al. (2000).
These recombination line diagnostics are not used in abundance calculations. By default, the recombination contribution to CELs is reported but not subtracted. The command line option --subtract-recombination can be used if the subtraction is required - this requires an additional loop within the code which makes it run roughly half as fast as when the subtraction is not carried out.
Ionic abundances are calculated from collisionally excited lines (CELs) using the temperature and density appropriate to their ionization potential. Where several lines from a given ion are present, the ionic abundance adopted is a weighted average of the abundances from each ion.
Recombination lines (RLs) are also used to derive ionic abundances for helium and heavier elements. The method by which the helium abundance is determined depends on the atomic data set being used; neat includes atomic data from Smits (1996) and from Porter et al. (2012, 2013). The Smits data is given for seven temperatures between 312.5K and 20000K, and for densities of 1e2, 1e4 and 1e6 cm-3; we fitted fourth order polynomials to the coefficient for each line at each density. neat then calculates the emissivities for each density using these equations, and interpolates logarithmically to the correct density.
For the Porter et al. data, the emissivities are tabulated between 5000 and 25000K, and for densities up to 1e14cm-3. neat interpolates logarithmically in temperature and density between the tabulated values to determine the appropriate emissivity.
In deep spectra, many more RLs may be available than CELs. The code calculates the ionic abundance from each individual RL intensity using the atomic data listed in Table 1 of Wesson et al. (2012). Then, to determine the ionic abundance to adopt, it first derives an ionic abundance for each individual multiplet from the multiplet’s co-added intensity, and then averages the abundances derived for each multiplet to obtain the ionic abundance used in subsequent calculations.
The weakness of recombination lines means that care must be taken in deriving abundances from them. neat applies some simple checks to the N2+/H+ and O2+/H+ abundances it derives to see if they are reliable: they will be flagged as unreliable in the _results file if any of the following apply:
1. only one multiplet is detected
2. the highest abundance calculated for a multiplet exceeds the lowest by a
factor greater than 3.0
3. (O2+ only) no lines are detected from either the V1 or V10 multiplets
If either abundance is flagged as unreliable, an abundance discrepancy factor for the relevant ion and element is not calculated. Weights may be set to exclude any unreliable multiplets so that a reliable abundance and ADF can be calculated.
Total elemental abundances are estimated using the ionisation correction scheme selected from Kingsburgh and Barlow (1994), Peimbert, Torres-Peimbert and Ruiz (1992), or Delgado-Inglada et al. (2014). Total oxygen abundances estimated from several strong line methods are also reported.
Where ionic or total abundances are available from both collisionally excited lines and recombination lines, the code calculates the measured discrepancy between the two values.
The code prints some logging messages to the terminal, so that you can see which iteration it is on, and if anything has gone wrong. Starting from version 2.3, outputs are created in FITS format by default. If the input file was in FITS format (as generated by v2.0 or later of alfa) then the results of the analysis will be written to the same file, updating the LINES extension and creating a RESULTS extension. If the input was plain text, then a new FITS file will be created, in the same directory as the input file. fv is a convenient way to view the tables.
If plain text output is requested, then the results are written to a summary file, and a linelist file, the paths to which are indicated in the terminal output. The summary file lists the results of the calculations of extinction, temperatures, densities, ionic and total abundances. Two linelist files are written - one is a plain text file listing observed and rest wavelengths, ionic identifications, observed and dereddened fluxes, and ionic abundances for each line used in the abundance calculations. The other is latex-formatted, intended to be usable with minimal further editing in a publication.
In the case of a single iteration, these files are the only output. If you have run multiple iterations, you can also use the -v option to tell the code to create additional results files for each quantity calculated: -v 1 tells the code to write out for each quantity all the individual results, and a binned probability distribution file; with -v 2, only the binned distributions are written out, and with -v 3 - the default - no additional results files are created.
Plain text output is deprecated, and will be removed in a future release.
The code now applies a simple test to the probability distributions to determine whether they are well described by a normal, log-normal or exp-normal distribution. The test applied is that the code calculates the mean and standard deviation of the measured values, their logarithm and their exponent, and calculates in each case the fraction of values lying within 1, 2 and 3σ of the mean. If the fractions are close to the expected values of 68.3%, 95.5% and 99.7%, then the relevant distribution is considered to apply. In these cases, the summary file contains the calculated mean and reports the standard deviation as the 1σ uncertainty.
If the file is not well described by a normal-type distribution, then the code reports the median of the distribution and takes the values at 15.9% and 84.1% of the distribution as the lower and upper limits.
It is often useful to directly inspect the probability distributions. In the utilities directory there is a small shell script, utilities/plot.sh, which will plot the histogram of results together with a bar showing the value and its uncertainty as derived above. It will create PNG graphics files for easy inspection.
The script requires that you ran the code with -v 1 or -v 2, and that you have gnuplot installed. It takes one optional parameter, the prefix of the files generated by neat. So, for example, if you've run 10,000 iterations on examples/ngc6543_3cols.dat, then there will now be roughly 150 files in the example directory, with names like examples/ngc6543_3cols.dat_mean_cHb, examples/ngc6543_3cols.dat_Oii_abund_CEL, etc. You can then generate plots of the probability distributions for the results by typing:
% /usr/share/neat/utilities/plot.sh ngc6453.dat
Running the code without the optional parameter will generate plots for all files with names ending in "binned" in the working directory.
alfa, equib06, mocassin
No known bugs. If reporting a bug, please state which version of neat you were using, and include input and any output files produced if possible.
Roger Wesson, Dave Stock, Peter Scicluna
5 June 2016 | 2.1 |