CINXE.COM
FITS Libraries Guide
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="Author" content="noyb"> <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]"> <title>FITS Libraries Guide</title> <link rel="StyleSheet" HREF="fits_style.css" type="text/css"> <script id="fed_an_js_tag" type="text/javascript" src="http://asd.gsfc.nasa.gov/scripts/Federated-Analytics.js?agency=NASA"> <!-- Google Analytics --> </script> </head> <BODY> <blockquote> <center> <img SRC="FITSlogo.gif" ALT="FITS The Astronomical Image and Table Format" height=180 width=720 align="top"> <HR width=720> <font size="2"> <table bgcolor="#f0f0f0" border="0" cellpadding="0" cellspacing="0" width="720" align="center"> <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_home.html" style="text-decoration:none;">Home</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_verify.html" style="text-decoration:none;">Verifier</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_news.html" style="text-decoration:none;">News</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_documentation.html" style="text-decoration:none;">Docs</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_wcs.html" style="text-decoration:none;">WCS</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_samples.html" style="text-decoration:none;">Samples</a> | <td align="center" width="750"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_libraries.html" style="text-decoration:none;">Libraries</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_viewer.html" style="text-decoration:none;">Viewers</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_utility.html" style="text-decoration:none;">Utilities</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_dictionary.html" style="text-decoration:none;">Keywords</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_conventions.html" style="text-decoration:none;">Conventions</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_resources.html" style="text-decoration:none;">Resources</a> </table> </font> <HR width="720"> <!-- DO NOT DELETE THIS FILE. IF YOU DO, YOU'LL GET AN ERROR ON YOUR WEB PAGES. --> <!-- THE MASTER FILE RESIDES AT /universe/htdocs/universe/downtime.inc --> <!-- THAT FILE SHOULD BE EDITED TO COMMENT OUT THE CONTENT WHEN IT'S NOT NEEDED. --> <!-- <div align="center"> <table style="border: 2px solid black; background-color:white; color: black;padding:5px;width:80%"> <tr><td align="center"> <span style="font-size: 12pt;">There will be a network outage, Wednesday May 2, 2018 from 19:00 EDT - 23:59 EDT. All services, web sites, and systems that require access to the internet will be affected by this work.</span> </td></tr> </table> </div> <br> --> <h1>FITS I/O Libraries</h1> </center> <p>This page describes a number of packages that are available to assist computer programmers in reading and writing FITS files. FITS software that is integral to existing analysis environments is not discussed unless it can be easily used outside the environment. <p>The table below provides a quick overview of the capabilities of the libraries. A capsule description of the kinds of FITS data and conventions follows. The remainder of the document contains summaries and links to each of these libraries ordered by the native language of the library.</p> <table BORDER> <tr> <td>Library</td> <td>Language[s]</td> <td>Level</td> <td>Images</td> <td>Groups</td> <td>ASCII Table</td> <td>Binary Table</td> <td>Var. Len. Arrays</td> </tr> <tr> <td><a href="#c_cfitsio">CFITSIO</a></td> <td>C/Fortran</td> <td>Low</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr><td><a href="#c_libwcs">WCS FITS library</a></td> <td> C (Fortran callable) </td> <td> High </td> <td> rw </td> <td> - </td> <td> r </td> <td> r </td> <td> - </td> </tr> <tr><td><a href="#fitsy">fitsy/funtools</a></td> <td> C</td> <td> High </td> <td> rw </td> <td> - </td> <td> rw </td> <td> rw </td> <td> - </td> </tr> <tr><td><a href="#SFITSIO">SFITSIO</a></td> <td> C</td> <td> High </td> <td> rw </td> <td> - </td> <td> rw </td> <td> rw </td> <td> rw </td> </tr> <tr><td><a href="#c_qfits">qfits</a></td> <td> C/Python</td> <td> Low </td> <td> rw </td> <td> - </td> <td> - </td> <td> rw </td> <td> - </td> </tr> <tr> <td><a href="#ccfits">CCfits</a></td> <td>C++</td> <td>Medium</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#cpp_aipspp">C++ FITS</a></td> <td>C++</td> <td>Medium</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#EleFits">EleFits</a></td> <td>C++</td> <td>High</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>-</td> </tr> <tr> <td><a href="#python_astropy"> Astropy IO Library </a> </td> <td> Python </td> <td> Low </td> <td> rw </td> <td> rw </td> <td> rw </td> <td> rw </td> <td> rw </td> </tr> <tr> <td><a href="#python_barrett">PyFITS</a></td> <td>Python</td> <td>Low</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#python_fitsio">Python/fitsio</a></td> <td>Python</td> <td>Low</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#pfits">PFITS</a></td> <td>Python</td> <td>Medium</td> <td>r</td> <td>-</td> <td>r</td> <td>r</td> <td>r</td> </tr> <tr> <td><a href="#CSharpFITS">CSharpFITS</a></td> <td>C-Sharp (.Net)</td> <td>Medium</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#OOFITS">OOFITS</a></td> <td>C-Sharp (.Net)</td> <td>High</td> <td>rw</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td><a href="#fitslib">FitsLib</a></td> <td>C-Sharp (.Net)</td> <td>Medium</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#JPFITS">JPFITS</a></td> <td>.Net platforms</td> <td>Medium</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#miips">MIIPS FITS</a></td> <td>Fortran</td> <td>High</td> <td>rw</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td><a href="#delafits">DeLaFits</a></td> <td>Pascal (Delphi & Lazarus)</td> <td>High</td> <td>rw</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td><a href="#idl_mrdfits">MRDFITS/ <br>MWRFITS</a></td> <td>IDL</td> <td>High</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#idl_fx">FX library</a></td> <td>IDL</td> <td>Low</td> <td>rw</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#idl_readfits">READFITS/ <br>WRITEFITS</a></td> <td>IDL</td> <td>High</td> <td>rw</td> <td>rw</td> <td>rw*</td> <td>r*</td> <td>-</td> </tr> <tr> <td><a href="#idl_fitstab">FITS_ library</a></td> <td>IDL</td> <td>Medium</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>r</td> <td>-</td> </tr> <tr> <td><a href="#idl_iuedac">IUEDAC</a></td> <td>IDL</td> <td>Medium</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>-</td> </tr> <tr> <td><a href="#java_tam">nom.tam.fits</a></td> <td>Java</td> <td>Medium</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#java_eap">eap.fits</a></td> <td>Java</td> <td>Medium</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#java_grosbol">jfits</a></td> <td>Java</td> <td>Medium</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>-</td> </tr> <tr> <td><a href="#java_stil">STIL</a></td> <td>Java</td> <td>Medium</td> <td>-</td> <td>-</td> <td>r</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#fitsjs">fitsjs</a></td> <td>JavaScript</td> <td>Medium</td> <td>r</td> <td>-</td> <td>r</td> <td>r</td> <td>-</td> </tr> <tr> <td><a href="#julia_fitsio"> FITSIO.jl </a> <td>Julia </td> <td> Low </td> <td> rw </td> <td> rw </td> <td> rw </td> <td> rw </td> <td> rw </td> </tr> <tr> <td><a href="#perl_cfitsio">CFITSIO.pm</a></td> <td>Perl</td> <td>Low</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#tcl_fits">FitsTcl</a></td> <td>TCL</td> <td>Medium</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#perl_pdl">PDL FITS</a></td> <td>Perl</td> <td>High</td> <td>rw</td> <td>-</td> <td>-</td> <td>rw</td> <td>-</td> </tr> <tr> <td><a href="#mfitsio">MFITSIO</a></td> <td>MatLab</td> <td>Medium</td> <td>rw</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td><a href="#matlab_rydes">MatLab</a></td> <td>MatLab</td> <td>High/Low</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#matlab_FITS_static">FITS static class</a></td> <td>MatLab</td> <td>High</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>-</td> </tr> <tr> <td><a href="#matlab_nz">Canterbury</a></td> <td>MatLab</td> <td>High</td> <td>rw</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td><a href="#LabVIEW">GFITSIO</a></td> <td>LabVIEW</td> <td>High</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>-</td> </tr> <tr> <td><a href="#Mathematica">Mathematica</a></td> <td>Mathematica</td> <td>High</td> <td>rw</td> <td>-</td> <td>rw</td> <td>-</td> <td>-</td> </tr> <tr> <td><a href="#IgorPro">IGOR Pro</a></td> <td>IGOR Pro</td> <td>High</td> <td>r</td> <td>-</td> <td>r</td> <td>r</td> <td>-</td> </tr> <tr> <td><a href="#Rlang">R language</a></td> <td>R</td> <td>High</td> <td>rw</td> <td>-</td> <td>-</td> <td>r</td> <td>-</td> </tr> <tr> <td><a href="#Liberator">Liberator</a></td> <td>Photoshop plug-in</td> <td>High</td> <td>rw</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td><a href="#FitsPlug">FitsPlug</a></td> <td>Photoshop plug-in</td> <td>High</td> <td>rw</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td><a href="#golang">golang FITS reader</a></td> <td>golang (google go)</td> <td>High</td> <td>r</td> <td>-</td> <td>r</td> <td>r</td> <td>-</td> </tr> <tr> <td><a href="#gocfitsio">golang wrappers for CFITSIO</a></td> <td>golang (google go)</td> <td>High</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#gofitsio">pure-Go FITS package</a></td> <td>golang (google go)</td> <td>High</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> <tr> <td><a href="#swift_fitscore">Swift FITS Core package </a> </td> <td>Swift</td> <td>Medium</td> <td>rw</td> <td>-</td> <td>rw</td> <td>rw</td> <td>rw</td> </tr> </table> * using ancillary libraries. <blockquote><b>Library:</b> The name of the I/O library. <br><b>Level:</b> The lowest level at which the user can typically access information in FITS files; lower-level packages offer more fine-grained control of the reading/writing process but may be more complicated to use than higher-level packages. Packages that offer low-level access often provide higher-level access routines as well. <br><b>Languages: </b>The languages for which the library is primarily intended. <br><b>Images:</b> Does the package support FITS images? <br><b>Groups:</b> Does the package support FITS random group data? <br><b>ASCII Tables: </b>Does the package support ASCII tables? <br><b>Binary Tables:</b> Does the package support FITS binary Tables? <br><b>Variable Length Arrays: </b>Does the package support the variable length array conventions in binary tables?</blockquote> <h3> FITS data types</h3> <p>A full discussion of FITS formats with links to definitive documentation is <a href="fits_documentation.html"> available</a>. Since different packages support distinct subsets of the available FITS formats and conventions we briefly summarize them here. <p> A FITS file is comprised of segments called Header/Data Units (HDUs) which may be any of four formats. The table indicates the formats each package supports. <ul> <li> FITS images are generally supported and can include 1-999 dimensional arrays of unsigned bytes, signed 2 and 4 byte integers and 4 and 8 byte floating point numbers using IEEE representations. Some packages may only read images in the first HDU. <li>FITS binary tables store tabular information in a binary representation. Each cell in the table can be an array but the dimensionality of the array must be constant within a column. Binary tables can support the datatypes available for images as well as logical variables (stored as T and F), bit arrays, characters, strings (stored as arrays of characters), and 8 and 16 byte complex numbers. <li>FITS ASCII tables store tabular information with all numeric information stored in ASCII formats. While ASCII tables are generally less efficient than binary tables, they can be made relatively human readable and can store numeric information with essentially arbitrary size and accuracy (e.g., 16 byte reals). <li>The random groups extension is deprecated but is nonetheless extensively used in radio astronomy. It allows groups of arrays where each element of the group has exactly the same dimensionality. </ul> Variable-length-arrays are widely used. There one or more columns in a FITS binary table consists of pointers to a heap area with each pointer defining the length and location of the array entry for the given row. <p>Many FITS readers can read information that has been stored using standard compression algorithms, particularly the .Z and .gz files created by the Unix compress and gzip utilities. FITS also supports compression internally for both images and binary tables which can be more efficient for astronomical data and can also allows access to uncompressed image metadata. <p>Several additional conventions are also supported by some FITS readers. Some of these are part of the official standard but may not be supported by all readers. Users may wish to ensure that their specific communities' software are prepared to handle these features before committing to them. <ul> <li> The long-string convention allows FITS headers to specify string values longer than 68 characters.</li> <li> The FITS hierarchical grouping convention defines a kind of FITS table which describes an association of HDUs which may span multiple files.</li> <li> The header inheritance convention allows for FITS header information in the primary HDU to be used to default information in subsequent HDUs.</li> <li> The HIERARCH keyword convention allows FITS keywords to be longer than the standard value of 8 characters.</li> </ul> <hr> <h3> C and Fortran</h3> <a name=c_cfitsio></a> <p><br><a href="http://legacy.gsfc.nasa.gov/docs/software/fitsio/fitsio.html">CFITSIO/FITSIO</a> <blockquote>This is the most sophisticated package available for reading and writing FITS files available on any platform. It provides support for all standard FITS formats. This library has been used as the basis of many FITS readers and writers. It is extensively tested and optimized for high performance. Recent releases of the library include powerful filtering functions for FITS data. [C]FITSIO can read and write compressed FITS data and supports the variable length records, long-string, hierarchical grouping and HIERARCH keyword conventions. </blockquote> <p> <a name=c_libwcs></a> <a href="http://tdc-www.harvard.edu/software/wcstools">WCS FITS library </a> <blockquote> The WCS FITS library provides support for reading and writing primary images and reading extension data. It is quite compact, requiring only four files in the distribution. The package is particularly complete in reading header information, and of course in dealing with FITS World Coordinate System (WCS) information. A small addition allows the reading of IRAF format data. </blockquote> <p> <a name=fitsy></a> fitsy <blockquote>This is a small C library for FITS I/O originally written by John Roll at SAO. It is now maintained and distributed as part of the <a href="http://hea-www.harvard.edu/RD/funtools/">FUNTOOLS</a> utility package. </blockquote> <a name=SFITSIO></a> <a href="https://www.ir.isas.jaxa.jp/~cyamauch/sli/#SFITSIO">SFITSIO</a> <blockquote> This C library is independent from other existing FITS libraries. It was developed to minimize the effort needed to write data analysis code by using an API that is more intuitive to use and easier to learn than some other libraries. </blockquote> <a name=c_qfits></a> <a href="http://www.eso.org/sci/software/eclipse/qfits/">qfits </a> <blockquote> The qfits library is a small, portable C library that provides low level support for accessing FITS images, headers and tables. </blockquote> <hr> <h3> C++</h3> <a name=ccfits></a> <a href="http://heasarc.gsfc.nasa.gov/fitsio/CCfits">CCfits library</a> <blockquote>The CCfits library is build on top of CFITSIO and provides an interface that allows the user to manipulate FITS data through high-level object-oriented building blocks.</blockquote> <a name=cpp_aipspp></a> <a href="http://www.cv.nrao.edu/fits/src">AIPS++ FITS library</a> <blockquote>The AIPS++ FITS library is available separately from the AIPS++ distribution. Currently there is limited documentation. This defines a set of C++ objects to read and write FITS files.</blockquote> <a name=EleFits></a> <a href="https://github.com/CNES/EleFits">EleFits library</a> <blockquote>EleFits is a modern C++ API for reading and writing FITS files built on top of the CFITSIO C library. It was developed for use by the Euclid space telescope project and emphasizes safety, user-friendliness and performance. It features a fully consistent internal type management system and other benefits that can significantly reduce the amount of code required to analyze FITS data files. </blockquote> <hr> <h3> Python </h3> <a name="python_astropy"></a> <a href="https://docs.astropy.org/en/stable/io/fits/"> Astropy IO Library</a> <blockquote> This is a full featured I/O library for reading and writing FITS libraries in the Astropy context and making it easy to use FITS data with the other elements of Astropy. </blockquote> <a name=python_barrett></a> <a href="https://pypi.org/project/pyfits"> PyFITS </a> <blockquote> PyFITS is a set of Python modules which read and write most FITS formats. PyFITS has essentially been absorbed into the Astropy I/O libraries discussed above but is still available at the URL given. </blockquote> <a name=python_fitsio></a> <a href="https://pypi.python.org/pypi/fitsio/"> Python/fitsio </a> <blockquote> fitsio is a full featured python library to read and write data to FITS files. This is a python extension written in c and python. Data are read into numerical python arrays. A version of cfitsio is bundled with this package, which is used, in particular, to read and write images in tile-compressed format. This library is also available on <a href="https://github.com/esheldon/fitsio">GitHub</a>. </blockquote> <a name=pfits></a> <a href="http://pypi.python.org/pypi/pfits">PFITS</a> <blockquote> [Note: this library appears to not have been updated since 2009 and may no longer be supported.] <br> This package uses the CFITSIO library to interface to FITS files from Python. Particular attention has been paid to supporting ASCII and BINARY tables with fixed and variable-length entries. Data I/O is handled through numpy arrays. </blockquote> <hr> <h3>C# (Microsoft .Net platform)</h3> <a name=CSharpFITS></a> <a href="http://github.com/SidWatch/CSharpFITS">CSharpFITS</a> <blockquote> The CSharpFITS package is a pure C# .NET port of Tom McGlynn's nom.tam.fits Java package. It provides native C# support for reading and writing FITS files. It also supports writing FITS binary tables directly from database result streams. </blockquote> <a name=OOFITS></a> <a href="https://www.nuget.org/packages/TA.ObjectOrientedAstronomy.FlexibleImageTransportSystem">OOFITS</a> <blockquote> The OOFITS package is written in C# and is mainly focused on providing a simple and clean object oriented interface for reading and writing simple FITS files containing a single image that are typically produced by the CCD cameras used by amateur astronomiers. See the <a href= "https://github.com/Tigra-Astronomy/TA.ObjectOrientedAstronomy/wiki/FITS">wiki</a> pages and the <a href= "https://github.com/Tigra-Astronomy/TA.ObjectOrientedAstronomy/tree/master/TA.ObjectOrientedAstronomy.FlexibleImageTransportSystem"> source code</a> for more information. </blockquote> <a name=fitslib></a> <a href="http://skyservice.pha.jhu.edu/develop/Fitslib/">FitsLib</a> <blockquote> [NOTE: this library is no longer supported]. FitsLib aims to provide an interface to the FITS file on the Dot Net Platform. It is built as an object oriented wrapper around the CFITSIO library's interface to the FITS files. Even though this library should be accessible in all the Dot Net Languages, the main focus is on making it available for C-Sharp. The documentation also emphasizes C-Sharp. This library is intended to assist astronomers in writing webservices utilizing the immense amount of data available in the FITS files. The library provides an interface to the FITS files using a set of active and passive objects. Active Objects access the file and passive objects contain the data accessed from the file. The FitsLib namespace provides all the necessary interfaces to access the FITS files. </blockquote> <a name=JPFITS></a> <a href="http://github.com/user29A/JPFITS">JPFITS</a> <blockquote> Written in Visual Studio C++ .Net and compatible across all .Net platforms. It is written from the ground up, consistent with the FITS standard, designed to interact with FITS files as object-oriented structures. JPFITS provides functionality to interact with FITS images and binary table extensions, as well as providing common mathematical methods for manipulation of data, data reductions, profile fitting, photometry, etc. JPFITS also implements object-oriented classes for Point Source Extraction, World Coordinate Solutions (WCS) and WCS automated field solving, etc. See the <a href="http://github.com/user29A/JPFITS/wiki">wiki</a> pages for more information. </blockquote> <hr> <h3> Fortran</h3> <a name=miips></a> <a href="http://www.astro.gsu.edu/~gudehus/fits_library_package.html">MIIPS FITS</a> <blockquote> This library package for Linux, and Mac OS X consists of a collection of routines to carry out various useful functions associated with FITS image files. Besides the source code for the library, a demonstration program, "testfits", which illustrates the library's capabilities and shows how to code the subroutines into your own customized applications, is included. The source code for subroutines from the MIIPS Plot Package and subroutines to display images on Enhanced SAOimage are included as well. </blockquote> <hr> <h3> Pascal</h3> <a name=delafits></a> <a href="https://github.com/felleroff/delafits">DeLaFits</a> <blockquote> DeLaFits (free software, MIT License) is published on GitHub. DeLaFits is native for Delphi and Lazarus and is not a wrapper around another library. <br> Features: building, reading, editing, and rendering of a FITS primary array image. <br> DeLaFits supports only Single Image (one header and one data unit). </blockquote> <hr> <h3> IDL</h3> A number of IDL packages are available for reading and writing FITS files. A more complete discussion of these is given in the <a href="http://idlastro.gsfc.nasa.gov/fitsio.html">IDLASTRO</a> library. <a name=idl_mrdfits></a> <p><a href="http://idlastro.gsfc.nasa.gov/fitsio.html">MRDFITS/MWRFITS</a> <blockquote>These routines provide simple but powerful high-level routines for converting between all types of FITS files and IDL arrays and structures. They do not provide access to the FITS keywords. The FX* library is used internally for that purpose.  MRDFITS supports reading compressed FITS data.</blockquote> <a name=idl_fx></a> <p><br><a href="http://idlastro.gsfc.nasa.gov/fitsio.html">FX* library</a> <blockquote>These routines provide a lower level access to manipulating FITS files within IDL.</blockquote> <a name=idl_readfits></a> <p><br><a href="http://idlastro.gsfc.nasa.gov/fitsio.html">READFITS/WRITEFITS</a> <blockquote>These routines read and write FITS extensions but do not parse tables. These routines provide limited support for non-image data. Other IDL routines are available which can parse the data returned by these routines when they are used to read tables.</blockquote> <a name=idl_fitstab></a> <p><br><a href="http://idlastro.gsfc.nasa.gov/fitsio.html">FITS_* and FTAB_*</a> <blockquote>These IDL routines have been optimized for handling FITS files with many extensions. These routines support the header inheritance convention. </blockquote> <a name=idl_iuedac></a> <p><br><a href="http://archive.stsci.edu/iue/iuedacfits.html">IAUDAC</a> <blockquote>Package of IDL routines developed to read and write IUE (International Ultraviolet Explorer) data. </blockquote> <hr> <h3> Java</h3> <a name=java_tam></a> <a href="https://github.com/nom-tam-fits/nom-tam-fits">nom.tam.fits</a> <blockquote>A full featured and efficient Java FITS library with full support for the FITS 4.0 Standard, including compressed images and tables, and several additional common conventions. Recent releases can also be found on <a href="https://mvnrepository.com/artifact/gov.nasa.gsfc.heasarc/nom-tam-fits">Maven Central.</a> Older releases (up to 1.15.1, released in 2016) are available <a href="https://heasarc.gsfc.nasa.gov/docs/heasarc/fits/java/v1.0">here.</a> </blockquote> <a name=java_eap></a> <a href="http://swift.gsfc.nasa.gov/docs/swift/sdc/software/java/">eap.fits</a> <blockquote> Includes an applet and application for viewing and editing FITS files. Also includes a general purpose package for reading and writing FITS data. It can read PGP encrypted files if the optional PGP jar file is available. </blockquote> <a name=java_grosbol></a> <a href="http://www.hq.eso.org/~pgrosbol/fits_java/jfits.html">jfits</a> <blockquote>The jfits library supports FITS images and ASCII and binary tables. In-line modification of keywords and data is supported. </blockquote> <a name=java_stil></a> <a href="http://www.starlink.ac.uk/stil/">STIL</a> <blockquote> A pure java general purpose table I/O library which can read and write FITS binary tables amongst other table formats. It is efficient and can provide fast sequential or random read access to FITS tables much larger than physical memory. There is no support for FITS images. </blockquote> <hr> <h3> JavaScript</h3> <a name=fitsjs></a> <a href="http://astrojs.github.com/fitsjs/">fitsjs</a> <blockquote>A standalone JavaScript library for reading the FITS astronomical file format. This library is built for modern browsers supporting the DataView object. These include at least Chrome 9, Firefox 15, and Safari 6. This library may be used to read various forms of the FITS format. This implementation is under active development. In its current state it supports the following: reading of multiple header data units, reading of FITS images, reading of data cubes, reading of binary tables, reading of ASCII Tables, and decompressing images using the Rice algorithm. <p> The library is available on <a href="http://github.com/astrojs/fitsjs/">GitHub</a>. </blockquote> <hr> <h3> Julia </h3> <a name="julia_fitsio"></a> <a href="https://juliaastro.github.io/FITSIO.jl/stable/">FITSIO.jl</a> <blockquote> A Julia package for reading and writing Flexible Image Transport System (FITS) files, based on the cfitsio library. The interface is inspired by Erin Sheldon's fitsio Python package. </blockquote> <hr> <h3> TCL</h3> <a name=tcl_fits></a> FitsTCL <blockquote>FitsTcl is based upon a port of the CFITSIO library into TCL. The source is included within the HEASARC's <a href="http://heasarc.gsfc.nasa.gov/docs/software/ftools/">FTOOLS</a> and <a href="http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv.html">fv</a> distributions but the library can be used independently. FitsTcl provides a TCL-style interface to most of CFITSIO's capabilities but does not provide a one-to-one mapping with CFITSIO (<i>a la</i> CFITSIO.pm in Perl).</blockquote> <hr> <h3> Perl</h3> <a name=perl_cfitsio></a> <a href="http://search.cpan.org/~pratzlaff/Astro-FITS-CFITSIO-1.10/">CFITSIO.pm</a> <blockquote>A Perl module incorporating the CFITSIO library has been developed using XS wrappers. Most useful CFITSIO calls have direct Perl counterparts. Users will need the C version of CFITSIO to link to. </blockquote> <a name=perl_pdl></a> <a href="http://www.cpan.org/modules/by-module/PDL">PDL FITS capabilities</a> <blockquote>A FITS reader is provided within the Perl Data Language module. It handle FITS images and binary tables. [PDL is a Perl module providing mechanisms to manipulate arrays of data efficiently.]</blockquote> <hr> <h3> MatLab</h3> <a name=mfitsio></a> <a href="software/mfitsio-1.2.4-src.tar.gz">MFITSIO</a> <blockquote>Damian Eads (at Los Alamos at that time) wrote a MatLab interface to the CFITSIO library using a tool called 'mex'. MFITSIO supports reading and writing FITS images, image subsets, and headers. (UPDATE, June 2013: MFITSIO is no longer available from the Los Alamos web site, however, the last version (1.2.4) of the MFITSIO source code .tar file has been retrieved from the Internet Archive WayBack Machine and made available <a href="software/mfitsio-1.2.4-src.tar.gz">here</a>. The mfitsio interface has not been maintain for many years, and some users have reported problems with installing the software.) </blockquote> <a name=matlab_rydes></a> <a href="https://www.mathworks.com/help/matlab/flexible-image-transport-system.html">MatLab</a> <blockquote>Four high-level functions (fitsdisp, fitsinfo, fitsread, and fitswrite) are built into MatLab. In addition, MATLAB users may interact directly with the low-level CFITSIO functions.</blockquote> <a name=matlab_FITS_static></a> <a href="https://webhome.weizmann.ac.il/home/eofek/matlab/doc/FITS.html">FITS static class</a> <blockquote>A static class of MATLAB routines that support read, write, and manipulation of FITS files. </blockquote> <a name=matlab_nz></a> <a href="http://www.elec.canterbury.ac.nz/">Canterbury</a> <blockquote>A set of Matlab tools at the University of Canterbury includes a simple FITS reader for two-dimensional images called <a href="software/fitsread.m">fitsread.m</a> </blockquote> <hr> <h3>LabVIEW</h3> <a name=LabVIEW></a> <a href="software/gfitsio_v5.2_Apr_2014.zip">GFITSIO v5.2 </a> (April 2014) <blockquote>George Gatling (NRL, email = george.gatling "at" nrl.navy.mil) wrote an interface to the CFITSIO library for LabVIEW 2013 or later under Microsoft Windows . It supports reading and writing FITS images and ASCII and binary tables. <br> A port of previous versions of this library to run on Mac OS-X is available from <a href="http://www.auburn.edu/~ciancmr/">Mark Cianciosa</a> (cianci66 "at" mac.com). </blockquote> <hr> <h3> Mathematica </h3> <a name=Mathematica></a> <a href="http://www.wolfram.com/products/mathematica/index.html"> Mathematica </a> <blockquote> Mathematica is a complete technical environment for scientific research and engineering analysis, including a programming language for complex symbolic calculations and a graphics system. FITS images and ASCII tables can be imported and exported. The FITS header information can also be viewed. FITS binary tables are not supported. </blockquote> <hr> <h3> <a href="http://www.wavemetrics.com/">IGOR Pro</a> </h3> <a name=IgorPro></a> <a href="ftp://ftp.wavemetrics.net/IgorPro/User_Contributions/">FITSload</a> - (Also available in gzipped tar file format: <a href="FITSLoad-104-Mac.tar.gz">FITSLoad-104-Mac.tar.gz</a>) <blockquote> <a href="http://www.wavemetrics.com/">IGOR Pro</a> is a scientific graphing, data analysis, image processing and programming software tool for scientists and engineers, similar to Mathematica. The user-contributed FITSload XOP (external operation) loads FITS files into IGOR for further analysis. FITSload uses the <a href="#c_cfitsio">CFITSIO</a> library to read the FITS file. <br> As of Igor version 6.12, FITS files can be read natively via Data > Load Waves > Packages > Load FITS. </blockquote> <hr> <h3> <a href="http://www.r-project.org/">R language</a> </h3> <a name=Rlang></a> <a href="http://www.astro.umd.edu/~harris/r/">FITSio</a> <blockquote> FITSio is a contributed R package for reading and writing FITS images and reading binary tables within the <a href="http://www.r-project.org/">R software environment.</a> It has no dependencies other than the base R installation. The FITSio contributed package source code is available directly from the <a href="http://cran.r-project.org/">R project web site</a> under the "contributed extension packages" link. </blockquote> <hr> <h3> Adobe Photoshop </h3> <a name=Liberator></a> <a href="http://www.spacetelescope.org/projects/fits_liberator/"> Liberator </a> <blockquote> Liberator is a free plug-in for Adobe Photoshop or Photoshop Elements 2 for manipulating FITS images with those programs. A color composite "Action" file is also available to simplify the process of creating color composite images from 3 separate red, green, and blue images. </blockquote> <a name=FitsPlug></a> <a href="http://astroshed.com/"> FitsPlug </a> <blockquote> FitsPlug is a $30 plug-in for Adobe Photoshop for manipulating FITS images. An older (and unsupported) beta version is available free of charge. </blockquote> <hr> <h3> golang (google go) </h3> <a name=golang></a> <a href="https://github.com/siravan/fits"> golan FITS reader</a> <blockquote> Package fits reads and processes FITS files. It is written in pure golang and is not a wrapper around another library or a direct translation of another library to golang. The main purpose is to provide a native golang solution to reading FITS file and to assess the suitability of golang for scientific and numerical applications. </blockquote> <hr> <h3> go CFITSIO bindings </h3> <a name=gocfitsio></a> <a href="https://github.com/astrogo/cfitsio"> golan wrappers</a> <blockquote> A set of CGo bindings to some of the most commonly used routines in the CFITSIO library (written in C). </blockquote> <hr> <h3> Go FITSIO (google go) </h3> <a name=gofitsio></a> <a href="https://github.com/astrogo/fitsio"> native golan FITS package</a> <blockquote> Go package to read and write FITS files. It is written in pure golang and is not a wrapper around another library. </blockquote> <hr> <h3>Swift</h3> <a name=swift_fitscore> <a href=https://github.com/brampf/fitscore/>FITS Core </a> <blockquote> Max Schroeder has developed a complete implementation of version 4 of the FITS standard in the Swift language. The code is notable for a tight coupling with the text of the standard. </blockquote> <p><hr><p> If you know of other FITS I/O libraries that should be included in this list please contact the FITS Support Office. <HR width=720> <font size="2"> <table bgcolor="#f0f0f0" border="0" cellpadding="0" cellspacing="0" width="720" align="center"> <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_home.html" style="text-decoration:none;">Home</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_verify.html" style="text-decoration:none;">Verifier</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_news.html" style="text-decoration:none;">News</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_documentation.html" style="text-decoration:none;">Docs</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_wcs.html" style="text-decoration:none;">WCS</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_samples.html" style="text-decoration:none;">Samples</a> | <td align="center" width="750"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_libraries.html" style="text-decoration:none;">Libraries</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_viewer.html" style="text-decoration:none;">Viewers</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_utility.html" style="text-decoration:none;">Utilities</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_dictionary.html" style="text-decoration:none;">Keywords</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_conventions.html" style="text-decoration:none;">Conventions</a> | <td align="center" width="720"> <font size=2> <a href="http://fits.gsfc.nasa.gov/fits_resources.html" style="text-decoration:none;">Resources</a> </table> </font> <HR width="720"> <!-- DO NOT DELETE THIS FILE. IF YOU DO, YOU'LL GET AN ERROR ON YOUR WEB PAGES. --> <!-- THE MASTER FILE RESIDES AT /universe/htdocs/universe/downtime.inc --> <!-- THAT FILE SHOULD BE EDITED TO COMMENT OUT THE CONTENT WHEN IT'S NOT NEEDED. --> <!-- <div align="center"> <table style="border: 2px solid black; background-color:white; color: black;padding:5px;width:80%"> <tr><td align="center"> <span style="font-size: 12pt;">There will be a network outage, Wednesday May 2, 2018 from 19:00 EDT - 23:59 EDT. All services, web sites, and systems that require access to the internet will be affected by this work.</span> </td></tr> </table> </div> <br> --> <font size="2"> <ADDRESS> <B>Last revised:</B> Monday, 31-Jul-2023 18:17:39 EDT<br> <B>Contact us:</B> fits @ fits.gsfc.nasa.gov<br> <B>Hosted by:</B> The <A HREF="http://heasarc.gsfc.nasa.gov/">HEASARC</A> (High Energy Astrophysics Science Archive Research Center)<br> <B>Responsible NASA representative:</B> Dr. Tess Jaffe </ADDRESS> <A HREF="http://heasarc.gsfc.nasa.gov/banner.html">Privacy, Security & Accessibility Statements</a>. </blockquote> </body> </html>