neat change log and development
neat is developed by Roger Wesson (UCL, UK, rw AT nebulousresearch.org), Dave Stock (University of Western Ontario, Canada), and Peter Scicluna (Academia Sinica Institute of Astronomy and Astrophysics, Taiwan), with assistance from Bruce Duncan (University of Edinburgh, UK). In case of any queries, bug reports, feature requests or code contributions, please get in touch!
Change log
Version 1.0 of neat was released on 8 February 2012. The changes included in each version since then are listed here. Changes are described as "major", meaning some significant change to the working of the code; "bug fix" for problems which have been corrected, and "minor" for changes only to the underlying code which do not affect the methodology and should not affect the results.
Unreleased changes
current source code snapshot | changes since v2.4 | open issues
- The current non-release revision of neat may contain new features that you wish to make use of, but there is no guarantee that it will work as expected or even at all, so use at your own risk.
v2.3 — 16 January 2023
source code | changes from v2.3 to v2.4
- Major: added temperature calculation from He I 7281/6678 ratio
- Minor: hard-coded Balmer line ratios replaced with values determined directly from the data
- Minor: added option to specify Hβ flux if it has not been measured
- Minor: added option to disable parallelisation
- Minor: exit statuses returned if code does not complete its analysis
- Bug fix: fixed issue which occasionally led to output FITS files being very large and invalid
- Bug fix: S/H abundance was previously not calculated correctly if S2+ was available from both optical and IR lines
v2.3 — 4 June 2020
source code | changes from v2.2 to v2.3
- Major: implemented reading of FITS files produced by alfa, and writing to the input FITS file or a new FITS file if plain text was read in. Plain text output is still available using the
‑‑output‑format
option. - Major: added option to use Delgado-Inglada 2014 ICF but with N/O = N+/O+
- Major: most collisionally excited line atomic data updated to CHIANTI 9.0
- Major: OII atomic data now from Storey et al. 2017
- Minor: warning given if duplicate lines are detected in input
- Minor: recombination line abundances flagged as unreliable if multiplet abundances show large dispersion
- Minor: added option to skip confirmation of line identifications (when linefinder is requested)
- Minor: code refactoring for minor speed improvements
- Bug fix: fixed ICF for recombination line N/H - previous summed N2+ and N3+ without correcting for N+ (typically very small)
- Bug fix: recombination contribution to collisionally excited lines was wrongly calculated
v2.2 — 2 August 2018
source code | changes from v2.1 to v2.2
- Major: changed default weighting of multiplets in recombination line abundances from equal to flux-weighted
- Major: updated OII recombination line atomic data
- Major: collisionally excited lines can be corrected for the recombination contribution if desired. Previously the correction was calculated but not applied
- Minor: output formatting improved, lines used in ratios reported
- Bug fix: Porter (2012,2013) He I data was always used even if Smits 1996 data was requested; fixed
- Bug fix: fixed some array out-of-bounds errors which could occur if the temperature fell outside the range of the atomic data
- Bug fix: if temperatures fell outside the available range (5-35kK), their weight was set to zero but not restored to its default value for subsequent iterations, which resulted in incorrect averaged values
- Bug fix: fixed a missing condition which resulted in icf(C) being calculated as infinite if O2+ was not present
v2.1 — 5 June 2017
source code | changes from v2.0 to v2.1
- Major: added Cl+ and Cl3+ to abundance calculations
- Major: recombination coefficient of Hb was calculated differently in different parts of the code. now consistent throughout. Significant errors could have arisen at high densities (Ne>1e4)
- Minor: many small improvements to formatting of output files
- Bug fix: atomic data for SII had a formatting error which caused occasional segmentation faults
- Bug fix: corrected wavelength of [Ar V] line
- Bug fix: ionisation correction for Cl using DI14 was incorrect
- Bug fix: checked for ionisation correction factor calculated to be less than one; code now returns the sum of all observed ions in this case
v2.0 — 9 May 2016
source code | changes from v1.9 to v2.0
- Major: weightings used for diagnostic and abundance calculations are now user configurable
- Major: default He I atomic data changed from Smits 1996 to Porter et al. 2012, 2013.
- Major: blended line wavelengths are checked and rewritten to ensure that NEAT can treat them.
- Major: He II abundances calculated for all optical transitions with upper level ≤20, previously only 4686 was used.
- Minor: significant efficiency improvements, faster extinction calculation and line identification.
- Minor: bash completions available if installed on bash systems
- Bug fix: numerous fixes to avoid zeroes and undefined values being used in calculations and potentially causing floating point exceptions
v1.9 — 12 April 2016
source code | changes from v1.8 to v1.9
- Major: median values of quantities are reported instead of modes
- Major: default ICF changed from Kingsburgh & Barlow 1994 to Delgado-Inglada et al 2014
- Major: correction for upward bias of line measurements at low signal to noise removed, following our finding that its existence is highly dependent on line fitting procedures (Wesson R., Stock D.J., Scicluna P., 2016, MNRAS, 459, 3475)
- Minor: makefile now allows installation to any directory
- Minor: code now parallelised with OpenMP for faster calculation of uncertainties
- Minor: information about code version, data directories and thread usage printed to terminal
v1.8 — 30 December 2015
source code | changes from v1.7 to v1.8
- Major: density calculated from Paschen lines
- Major: temperature calculated from Paschen decrement
- Minor: recombination line coefficients read in once per execution instead of once per iteration, resulting in a minor time saving for uncertainty calculations
- Minor: code now checks number of columns in input file, so that it no longer breaks if no uncertainties are given, and the observed wavelength of the line can also be given.
- Minor: files referred to by the code are now installed to standard system directories
- Minor: removed unused variables from source code
- Bug fix: blended line dereddened intensities were not written out properly
v1.7 — 12 October 2015
source code | changes from v1.6 to v1.7
- Major: Updated He I emissivities from Porter et al. following erratum
- Major: Included ICF from Delgado-Inglada et al. (2014)
- Major: Made correction for the RP effect optional, should the user wish not to apply it for any reason.
- Major: Statistical analysis of results moved to a separate python module
- Major: All atomic data previously taken from CHIANTI 5.2 now taken from CHIANTI 7.0
- Major: OII atomic data updated - collision strengths from Kisielius et al. 2008 instead of Pradhan 1976
- Major: Balmer decrement used to estimate density
- Major: Helium lines used to estimate temperature
- Major: OII recombination lines used to esimate temperature and density
- Major: Blended lines indicated by asterisks can be read in instead of breaking the code. The flux of blends is dereddened and listed but not used for abundance calculations.
- Major: If low ionisation temperature is not calculated, it defaults first to the medium zone temperature, and then to 10,000K. Previously it defaulted straight to 10,000K
- Minor: Output files renamed in consistent hierarchical way
- Minor: New makefile with various compiler options added
- Minor: Lots of internal updates to reflect developing FORTRAN standards
- Minor: New computationally simpler binning procedure for determining distributions
- Minor: Output line list table includes full transition data for each line
- Bug fix: Command line option for triggering Fitzpatrick extinction law did not work
- Bug fix: Neon abundance discrepancy was previously not written out
v1.6 — 9 August 2013
source code | changes from v1.5 to v1.6
- Major: the line finder routine, previously a separate code, is now incorporated into the main code. See usage for details.
- Major: recombination line abundances were calculated using the [O III] temperature and the [O II] density. They are now calculated using the medium ionisation zone values.
- Major: [O III] (4959+5007)/1666 temperature diagnostic added.
- Minor: If Hβ is not present, but Hα is, then the code can calculate the expected Hβ flux from the Hα flux if a value of c(Hβ) is specified.
- Bug fix: negative fluxes now trigger an error where they previously just caused inexplicable crashes.
- Bug fix: total OII recombination line flux omitted some multiplets from the average - all are included now.
- Bug fix: if F(Hβ) was not equal to 100.0, un-normalised fluxes were written out instead of normalised fluxes, though the abundances were correctly calculated.
- Bug fix: when calculating uncertainties, if the vast majority of results were a lower limit with just a few meaningful results, the code did not report the correct value for the lower limit.
- Bug fix: if the calculated emissivity of a recombination line was zero, the code would return an infinite abundance. It now checks for this. Only abundances for extremely weak recombination lines could have been affected by this.
v1.5 — 30 Jan 2013
source code | changes from v1.4 to v1.5
- Major: helium emissivities from Porter R.L. et al., 2012, MNRAS, 425, 28 included. User can choose whether to calculate helium abundances using the Porter data or the Smits 1996 emissivities.
- Major: emissivities for all 15 lines listed in Smits now included, where previously only the 4471, 5876 and 6678 lines were included. The emissivities are calculated from fourth order polynomial fits to the tabulated values in Smits 1996.
- Major: ionisation correction scheme from Peimbert et al. 1992, RMxAA, 24, 155 included. User can select the ICF to be used.
- Major: a summary of all results and a full line list are written out in both plain text and latex formats. The line list includes all abundances calculated.
- Major: ionisation correction factors, ORL ionic abundances and multiplet abundances for OII and NII are now written to files with the rest of the outputs.
- Minor: simple test implemented to determine if probability distributions are normal, log-normal or exp-normal. Unusual distributions are flagged.
- Minor: implemented verbosity option, user can suppress output of unbinned and/or binned results from multiple iteration analyses
- Bug fix: code broke if trying to calculate abundances for CIII due to incorrect atomic levels being passed to the level population solver
v1.4 — 8 Oct 2012
source code | changes from v1.3 to v1.4
- Major: added calculation of Balmer jump temperature
- Major: abundances were formerly weighted by the inverse square of the fractional uncertainty. If uncertainties were given as zero, this broke the code, so they are now weighted by the observed flux.
- Minor: quicksort could take a very long time to "sort" arrays if all values were actually equal. This is now checked for and reduces the run time by a large fraction for shallow line lists.
- Minor: output routines check whether a quantity was calculated
- Bug fix: ICF calculation broke if helium lines were not present. This is now checked.
- Bug fix: equations A20 and A25 from KB94 were incorrectly specified in the code, which would have resulted in incorrect carbon abundances for nebulae in which N4+ was absent and He2+ was present.
- Bug fix: checks for presence of OII and SII were wrongly coded - unpredictable abundances were reported if these lines were absent.
v1.3 — 31 May 2012
source code | changes from v1.2 to v1.3
- Major: Diagnostic line ratios and their uncertainties now written out
- Minor: Atomic data read in once only instead of during each iteration, significantly speeding up the code
- Bug fix: Default value for
medtemp
was 10,000K instead of the intended behaviour of defaulting tolowtemp
in the absence of medium ionisation diagnostics - Bug fix: File reading routine tried to read one line more than the line list actually contained. In some circumstances this may have resulted in unpredictable behaviour.
- Bug fix: Uninitialised variables now initialised
v1.2 — 21 Mar 2012
source code | changes from v1.1 to v1.2
- Major: Included atomic data in repository, instead of requiring it to be downloaded separately.
- Major: Changed the diagnostic calculation scheme - no change to the methodology but implemented a new iteration scheme which achieves greater precision with fewer calculations.
- Minor: Results file naming changed for consistency.
- Minor: Results file formatting improved.
- Minor: All files written to are closed.
v1.1 — 13 Mar 2012
source code | changes from v1.0 to v1.1
- Major: code previously reported median, mode, and median+-34.1% values from distributions. This has been changed so that it reports the mode, and mode +-34.1% values. For distributions which are normal, log-normal or exponential-normal, this is the mean and standard deviation of the distribution as normally defined.
- Major: the user can now override the calculated diagnostics and specify their own temperature and/or density for any or all of the three ionisation zones.
- Major: previously, logging messages and final results were written to the terminal. Logging messages only are now written to the terminal; all results are saved to files.
- Minor: unused variables and subroutines removed
- Minor: combined
diagnostic_equib.f90
andabundance_equib.f90
into a single file,equib_routines.f90
, removed duplicated subroutines. - Minor: duplicated code in
rec_lines.f90
removed. - Minor: reading in of CEL data now occurs only once instead of in every iteration.
- Bug fix: Oxygen CEL abundance output file was being overwritten with the Ne II abundance.
- Bug fix: He+/H+, He++/H+ and He/H abundances were all being written to the same output file.
v1.0 — 13 Feb 2012
Feed
If you put the following URL into your preferred feed reader, you can be notified of every change made to the neat source code.
We last updated the code on February 17, 2023 with the change being
fixed bug in calculation of O3N2 strong line abundance
Upcoming development plans can be seen at https://github.com/rwesson/NEAT/issues. Feel free to submit your own issues on that page, either bug reports or feature requests.
Roadmap
Some of the ideas we are working on that will appear in future releases include:
Latex-formatted output for easy inclusion into papers- done, v1.5Calculate the recombination contribution to collisionally excited lines of singly ionised species- done, v1.7Calculate the Balmer jump temperature- done, v1.4Calculate temperatures from helium line ratios- done, v1.7Calculate densities from the ratios of high order Balmer lines- done, v1.7Parallelisation- done, v1.9Easier customisation of abundance calculations- done, v2.0Support for FITS input- done, v2.3
More development plans can be seen at https://github.com/rwesson/NEAT/issues.
- Major: implemented reading of FITS files produced by alfa, and writing to the input FITS file or a new FITS file if plain text was read in. Plain text output is still available using the