Software:Nom.tam.fits

From HandWiki
Revision as of 12:45, 22 May 2024 by Importwiki (talk | contribs) (import)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
nom.tam.fits
Nom.tam.fits project logo.png
Developer(s)Thomas A. McGlynn, Attila Kovács, Richard van Nieuwhoven, et al.
Initial release2008 July 11
Stable release
1.19.1 / 2024 March 11
Preview release
1.20.0-rc1 / 2024 April 30
Repositorygithub.com/nom-tam-fits/nom-tam-fits
Written inJava
Operating systemCross-platform
TypeTechnical computing
LicenseUnlicense
Websitenom-tam-fits.github.io/nom-tam-fits

nom.tam.fits is a full-featured, fast, 100% pure Java library for reading, writing, and modifying FITS files. The library owes its origins to Thomas A. McGlynn (hence the nom.tam prefix) at NASA Goddard Space Flight Center. Currently, it is maintained by Attila Kovács at the Center for Astrophysics | Harvard & Smithsonian.

Using the library effectively requires a level of familiarity with the FITS standards.[1][2] and conventions[3]. For example, while the library will automatically interpret and populate the mandatory minimum data description in FITS headers, it will not automatically process most optional standard or conventional header entries. It is up to the users to extract or complete the description of data, for example to include FITS world coordinate systems (WCS)[4][5][6], physical units, etc.

nom.tam.fits is an open-source, community maintained project hosted on GitHub as nom-tam-fits/nom-tam-fits[7]. Further information and documentation, including a User's Guide and API documentation, can be found there.

History

The brief history of the library presented here is derived from (a) release notes and documentation published on the original HEASARCH home page[8] of the project; (b) the commit history, release notes, and other documentation, published in the GitHub repository[7]; (c) public[7] and private communications among the three lead maintainers who spearheaded the project at various stages of its existence.

The library was originally conceived and developed by Thomas A. McGlynn at NASA Goddard Space Flight Center. It was originally written for Java 1.0, which influenced many of the original design choices that remain in place to this day. The first published version was version 0.92 (12 October 2000), and was followed by a series of development releases, up until 0.99.6 (4 December 2007)[8].

The library reached 'stable' status with the 1.0.0 release on 11 July 2008. Tom McGlynn remained the lead developer through version 1.12.0 (25 February 2015), occasionally integrating contributions from users, as attested by the release notes[8].

In 2015, Tom passed the baton to Richard van Nieuwhoven, who has already contributed significantly to version 1.12.0, and who then continued to oversee releases 1.13.0 (20 July 2016) through 1.15.2 (28 April 2017)[8][7] as Tom took on a less active advisory role in the project. Ritchie has been instrumental in adding the initial image and table compression support to the library, as well as modernizing the API to use Java 6 features, such as generic types and the java.nio package. He also migrated the source code to GitHub (at version 1.12.0), set up continuous integration, added unit testing with nearly complete code coverage, set up a build system with Apache Maven, and began publishing GPG-signed release packages to both GitHub[7] and the Maven Central repository[9].

In 2021, Attila Kovács from the Center for Astrophysics | Harvard & Smithsonian took over as the lead maintainer (still with the blessing from Tom McGlynn), and continued overseeing releases starting with 1.16.0 (13 December 2021). Continuous integration was migrated from Travis CI to GitHub Actions, and successive releases were/are aimed at fixing outstanding bugs, improving compliance to the FITS standard, providing a more consistent user experience, and more complete, more accurate documentation. The source was also updated to utilize Java 8 features, such as diamond operators, try-with-resources constructs, and default methods in interfaces[7].

At least 14 other developers (excluding bots) have also contributed bits and pieces to the library since the project's presence on GitHub, based on the contributor statistics available in the GitHub repository[7].

Adoption

At the time of writing this article, the GitHub project repository lists 73 other GitHub repositories that utilize nom.tam.fits[10]. A few are also listed as dependents on Maven Central[9].

Some examples of software that rely on nom.tam.fits to handle FITS files (in no particular order):

  • Advanced Data mining And Machine learning System (ADAMS)[24] spectral base modules [25].
  • Spectral Line Identification and Modelling (SLIM)[26] component of the MADCUBA[27] software package for the analysis of astronomical data cubes.
  • Terran Interstellar Plotter System (TRIPS)[32], a stellar cartography system for stellar databases.
  • AstroToolBox[33] for visualizing, identifying, and classifying astronomical objects.
  • Control and Data Handling (CDH) component for the SOFIA/HAWC+[30] camera.

Releases

Early releases, and related documentation, for versions 0.92 through 1.15.1 are available at the original HEASARCH site[8].

More recent releases (1.15.2 and later) are available on the GitHub project site[7].

Starting with version 1.12.0 (21 February 2015) releases are also published to the Maven Central Repository[9].

Starting with version 1.16.0, releases now follow a predictable, quarterly schedule with releases targeted around the 15th of March, June, September, and/or December[7]. In the weeks and month(s) leading up to releases, a number of release candidates are published briefly on the GitHub project site[7] to allow sufficient testing of the fixes and new features.

Redistribution

The nom.tam.fits library is also redistributed as the libfits-java package[35] for Debian Linux, and as the nom-tam-fits RPM package[36] by Fedora Linux. However, as of the writing of this article both of these redistributions are based on outdated versions of the library (specifically version 1.15.2).

External links

References

  1. IAU FITS working group (2018-08-13). "Definition of the Flexible Image Transport System (FITS)". https://fits.gsfc.nasa.gov/fits_standard.html. 
  2. Pence, W.D.; Chiappetti, L.; Page, C.G. et al. (2010). "Definition of the Flexible Image Transport System (FITS), version 3.0". Astronomy & Astrophysics 524: A42. doi:10.1051/0004-6361/201015362. Bibcode2010A&A...524A..42P. 
  3. IAU FITS working group (2023). "The Registry of FITS Conventions". https://fits.gsfc.nasa.gov/fits_registry.html. 
  4. Greisen, E.W.; Calabretta, M.R. (2002). "Representations of world coordinates in FITS". Astronomy & Astrophysics 395 (3): 1061–1075. doi:10.1051/0004-6361:20021326. Bibcode2002A&A...395.1061G. 
  5. Greisen, E.W.; Calabretta, M.R. (2002). "Representations of celestial coordinates in FITS". Astronomy & Astrophysics 395 (3): 1077–1122. doi:10.1051/0004-6361:20021327. Bibcode2002A&A...395.1077C. 
  6. Greisen, E.W.; Calabretta, M.R.; Valdes, F.G. et al. (2006). "Representations of spectral coordinates in FITS". Astronomy & Astrophysics 446 (2): 747–771. doi:10.1051/0004-6361:20053818. Bibcode2006A&A...446..747G. 
  7. 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 "nom.tam.fits GitHub repository". https://github.com/nom-tam-fits/nom-tam-fits. 
  8. 8.0 8.1 8.2 8.3 8.4 "Index of /Docs/Heasarc/Fits/Java". https://heasarc.gsfc.nasa.gov/docs/heasarc/fits/java/. 
  9. 9.0 9.1 9.2 ""nom-tam-fits on Maven Central"". https://mvnrepository.com/artifact/gov.nasa.gsfc.heasarc/nom-tam-fits. 
  10. "Network Dependents · nom-tam-fits/Nom-tam-fits". https://github.com/nom-tam-fits/nom-tam-fits/network/dependents. 
  11. "PDS Transform Tool". https://github.com/NASA-PDS/transform. 
  12. "PDSView". https://github.com/NASA-PDS/pds-view. 
  13. "PDS4 JParser". https://nasa-pds.github.io/pds4-jparser/. 
  14. "Interoperable Remote Component (IRC)". https://opensource.gsfc.nasa.gov/projects/IRC/index.php. 
  15. 15.0 15.1 Dowell, C. D.; Allen, C. A.; Babu, R. S. et al. (2003). "SHARC II: a Caltech submillimeter observatory facility camera with 384 pixels". Proc. SPIE. Millimeter and Submillimeter Detectors for Astronomy 4855: 73. doi:10.1117/12.459360. Bibcode2003SPIE.4855...73D. https://resolver.caltech.edu/CaltechAUTHORS:20150120-140348785. 
  16. Staguhn, Johannes G.; Allen, Christine; Benford, Dominic J. et al. (2008). "GISMO, a 2 mm Bolometer Camera Optimized for the Study of High Redshift Galaxies". Journal of Low Temperature Physics 151 (3-4): 709-714. doi:10.1007/s10909-008-9733-6. Bibcode2008JLTP..151..709S. 
  17. Taylor, M.B. (2005). "TOPCAT & STIL: Starlink Table/VOTable Processing Software". Astronomical Data Analysis Software and Systems XIV. ASP Conference Series. 347. pp. 29. 
  18. King, Gary (2007). "An Introduction to the Dataverse Network as an Infrastructure for Data Sharing". Sociological Methods and Research 36 (2): 173–199. doi:10.1177/0049124107306660. http://nrs.harvard.edu/urn-3:HUL.InstRepos:4215067. 
  19. "IVOA Data Access Layer". https://github.com/opencadc/dal. 
  20. "IVOA Data Access Layer / cadc-data-ops-fits module". https://github.com/opencadc/dal/tree/master/cadc-data-ops-fits. 
  21. "IVOA FITS package". https://skyservice.pha.jhu.edu/develop/vo/ivoafits/. 
  22. Collins, Karen A.; Kielkopf, John F.; Stassun, Keivan G. et al. (2017). "AstroImageJ: Image Processing and Photometric Extraction for Ultra-Precise Astronomical Light Curves". The Astronomical Journal 153 (2): 77. doi:10.3847/1538-3881/153/2/77. Bibcode2017AJ....153...77C. 
  23. "AstroImageJ". https://www.astro.louisville.edu/software/astroimagej/. 
  24. Reutemann, Peter; Vanschoren, Joaquin (2012). "Scientific Workflow Management with ADAMS". Proceedings of the Machine Learning and Knowledge Discovery in Databases (ECML-PKDD), Part II. Lecture Notes in Computer Science. 7524. pp. 833–837. 
  25. "ADAMS Spectral Base Modules". https://github.com/waikato-datamining/adams-spectral-base. 
  26. Martín, S.; Martín-Pintado, J.; Blanco-Sánchez, C. et al. (2019). "Spectral Line Identification and Modelling (SLIM) in the MAdrid Data CUBe Analysis (MADCUBA) package". Astronomy & Astrophysics 631: A159. doi:10.1051/0004-6361/201936144. Bibcode2019A&A...631A.159M. 
  27. "MAdrid Data CUBe Analysis (MADCUBA)". https://cab.inta-csic.es/madcuba/. 
  28. Kovács, A. (2008). "CRUSH: a fast and scalable data reduction for imaging arrays". Proc. SPIE. Millimeter and Submillimeter Detectors and Instrumentation for Astronomy IV 7020: 45. doi:10.1117/12.790276. Bibcode2008SPIE.7020E..1SK. 
  29. "CRUSH: Comprehensive Reduction Utility for SHARC-II". https://www.sigmyne.com/crush. 
  30. 30.0 30.1 Harper, Doyal A.; Runyan, Marcus C.; Dowell, C. Darren et al. (2018). "HAWC+, the Far-Infrared Camera and Polarimeter for SOFIA". Journal of Astronomical Instrumentation 07 (4): 1840008–1841025. doi:10.1142/S2251171718400081. Bibcode2018JAI.....740008H. 
  31. "attipaci/jnum". https://www.github.com/attipaci/jnum. 
  32. "Terran Interstella Plotter System (TRIPS)". https://github.com/ljramones/trips. 
  33. Kiwy, Frank (2022). "AstroToolBox: Java tools for identifying and classifying astronomical objects". https://ascl.net/2201.002. 
  34. Albi, Tomás Alonso (2018). "JPARSEC: a Java package for astronomy with twelve years of development and use". arXiv:1806.03088 [astro-ph.IM].
  35. "Debian libfits-java package". https://packages.debian.org/sid/libfits-java. 
  36. "Fedora Linux nom-tam-fits RPM package". https://src.fedoraproject.org/rpms/nom-tam-fits.