
From:  A. Emery Watkins 
Subject:  Re: Gnuastro 0.15 released 
Date:  Wed, 23 Jun 2021 13:48:14 +0100 
Dear all,
I am happy to announce the 15th official release of GNU Astronomy
Utilities (Gnuastro).
Gnuastro is an official GNU package, consisting of various
commandline programs and library functions for the manipulation and
analysis of (astronomical) data. All the programs share the same basic
commandline user interface (modeled on GNU Coreutils). For the full
list of Gnuastro's library, programs, and a comprehensive general
tutorial (recommended place to start using Gnuastro), please see the
links below respectively:
https://www.gnu.org/s/gnuastro/manual/html_node/Gnuastrolibrary.html
https://www.gnu.org/s/gnuastro/manual/html_node/Gnuastroprogramslist.html
https://www.gnu.org/s/gnuastro/manual/html_node/Generalprogramusagetutorial.html
Many new features have been added in this release and many bugs have
been fixed. For example, two new installed scripts now allow 1)
creation of radial profiles (written and maintained by Raúl
InfanteSainz) and 2) making SAO DS9 "region" files from a catalog to
visualize objects in SAO DS9 (written with the help of Samane
Raji). The Table program now has more very useful options (for example
to randomly select rows from a large table) and the Query program can
now access Galactic extinctions from the NASA/IPAC Extragalactic
Database (NED). For a very complete review of the new features, please
see [1] below.
Here is the compressed source and the GPG detached signature for this
release. To uncompress Lzip tarballs, see [2]. To check the validity
of the tarballs using the GPG detached signature (*.sig) see [3]:
https://ftp.gnu.org/gnu/gnuastro/gnuastro0.15.tar.lz (3.6MB)
https://ftp.gnu.org/gnu/gnuastro/gnuastro0.15.tar.gz (5.8MB)
https://ftp.gnu.org/gnu/gnuastro/gnuastro0.15.tar.lz.sig (833B)
https://ftp.gnu.org/gnu/gnuastro/gnuastro0.15.tar.gz.sig (833B)
Here are the MD5 and SHA1 checksums (other ways to check if the
tarball you download is what we distributed):
40edf2537bdbefd795d1b87bcdbec461 gnuastro0.15.tar.gz
849cbb80ac0ccd165f723576fc71f212 gnuastro0.15.tar.lz
541b04d8d3c03da96c20ca79c703deadef811e7e gnuastro0.15.tar.gz
3ed75e80babbb4e1cc7568243d980c53af217a8a gnuastro0.15.tar.lz
For this release Pedram Ashofteh Ardakani, Natáli D. Anzanello, Raul
InfanteSainz, Carlos MoralesSocorro, François Ochsenbein, Samane
Raji and Zahra Sharbaf directly contributed to the source of Gnuastro.
I am also very grateful to Mark Calabretta, Sepideh Eskandarlou, Raul
InfanteSainz, Clotilde Laigle, Alberto Madrigal, Juan Miro, Carlos
MoralesSocorro, Sylvain Mottet, Francois Ochsenbein, Samane Raji,
Zahra Sharbaf, Leigh Smith, Alfred M. Szmidt, Ignacio Trujillo and
Richard Wilbur for their very useful comments, suggestions and bug
fixes that have now been implemented in Gnuastro.
If any of Gnuastro's programs or libraries are useful in your work,
please cite _and_ acknowledge them. For citation and acknowledgment
guidelines, run the relevant programs with a `cite' option (it can
be different for different programs, so run it for all the programs
you use). Citations _and_ acknowledgments are vital for the continued
work on Gnuastro, so please don't forget to support us by doing so.
This tarball was bootstrapped (created) with the tools below. Note
that you don't need these to build Gnuastro from the tarball, these
are the tools that were used to make the tarball itself. They are only
mentioned here to be able to reproduce/recreate this tarball later.
Texinfo 6.7
Autoconf 2.71
Automake 1.16.3
Help2man 1.48.3
ImageMagick 7.0.1113
Gnulib v0.14650gc45faf7f4
Autoconf archives v2021.02.191ge68e8f6
The dependencies to build Gnuastro from this tarball on your system
are described here:
https://www.gnu.org/s/gnuastro/manual/html_node/Dependencies.html
Best wishes,
Mohammad

Postdoctoral research fellow,
Instituto de Astrofísica de Canarias (IAC),
Calle Vía Láctea, s/n, E38205,
San Cristóbal de La Laguna, Tenerife, Spain.
[1] Noteworthy changes in Gnuastro 0.15, also visible here:
https://git.savannah.gnu.org/cgit/gnuastro.git/plain/NEWS?id=gnuastro_v0.15
** New features
New programs:
 astscriptds9region: Given a table (either as a file or from
standard input), create an SAO DS9 region file from the requested
positional columns (WCS or image coordinates). For example with the
command below you can select certain rows of a given table, and show
them over an image:
asttable table.fits range=MAGNITUDE,18:20 column=RA,DEC \
 astscriptds9region column=1,2 radius=0.5 \
command="ds9 image.fits"
This script was written with the help of Samane Raji.
 astscriptradialprofile: Measure the radial profile of an object on
an image. The profile can be centered anywhere in the image and any
circular, or elliptical distance can be defined. The output is a table
with the profile's value in one column and any requested measure in
the other columns (any MakeCatalog measurement is possible). This
script was written and is maintained by Raúl Infante Sainz. Zahra
Sharbaf and Carlos MoralesSocorro also contributed.
All programs:
 FITS files that don't have a recognized FITS suffix (e.g., '.fits',
'.fit', '.fits.gz', etc) will also be recognized. Generally, it is
good practice to keep a suffix to be more human and computer friendly
(checking three or four characters is much faster than opening the
file and checking the contents to conform with the FITS standard), but
when you are given such a file (by someone else), this new feature can
be handy. Suggested by Clotilde Laigle and Leigh Smith.
wcslinearmatrix: new option in all programs that lets you select the
output WCS linear matrix format. It takes one of two values: 'pc' (for
the 'PCi_j' formalism) and 'cd' (for 'CDi_j'). Until now, the outputs
were always stored in the 'PCi_j' formalism (which is still the
recommended format).
Book:
 New "Image surface brightness limit" section added to the third
tutorial (on "Detecting large extended targets"). It describes the
different ways to measure a dataset's surface brightness limit and
upperlimit surface brightness, while discussing their
differences. This tutorial was written with the help of Ignacio
Trujillo and Raúl Infante Sainz.
Arithmetic:
 New operators (all also available in Table's column
arithmetic).
 sin: Trigonometric sine (input in degrees).
 cos: Trigonometric cosine (input in degrees).
 tan: Trigonometric tangent (input in degrees).
 asin: Inverse of trigonometric sine (output in degrees).
 acos: Inverse of trigonometric cosine (output in degrees).
 atab: Inverse of trigonometric tangent (output in degrees).
 sinh: Hyperbolic sine.
 cosh: Hyperbolic cosine.
 tanh: Hyperbolic tangent.
 asinh: Inverse of hyperbolic sine.
 acosh: Inverse of hyperbolic cosine.
 atanh: Inverse of hyperbolic tangent.
 mknoisesigma: Add Gaussian noise with the fixed sigma.
 mknoisepoisson: Add Poisson noise with the given background.
 mknoiseuniform: Add uniform noise around existing value.
 countstomag: Convert counts to magnitudes with given zero point.
 magtocounts: Convert magnitudes to counts with given zero point.
 countstojy: Convert counts to Janskys through a zero point based
on AB magnitudes.
Trigonometric operators proposed by Zahra Sharbaf and Samane Raji.
envseed: new option to get random number generator settings for the
new 'mknoisesigma' and 'mknoisepoisson' operators from the
environment for reproducibility (see "Generating random numbers"
section in manual).
ConvertType:
globalhdu: Use a single HDU identifier for all the input files
files. Its operation is identical to the similarly named option in
Arithmetic. Until now it was necessary to call 'hdu' three times if
you had three input FITS files with input in the same HDU.
Crop:
polygon: now also accepts an SAO DS9 region file as input (as well as
coordinates). This enables you to draw your polygon over the image
through the GUI interface of SAO DS9, save your polygon as a "region"
file, and feed the region file into Crop directly. Until now, the only
way to define the polygon was to give all the polygon vertice
coordinates, onebyone to the 'polygon' option (which was tedious
and buggy), but is still possible. This was implemented by Natáli
Anzanello.
Fits:
hastablehdu: print 1 if at least one table HDU exists in file.
hasimagehdu: print 1 if at least one image HDU exists in file.
listallhdus: print all HDU names (or numbers when no name exists).
listtablehdus: print table HDU names (or numbers when no name exists).
listimagehdus: print image HDU names (or numbers when no name exists).
printkeynames: Print all keyword names in current HDU.
wcscoordsys: convert the WCS coordinate system of the input into any
recognized coordinate system. It currently supports: equatorial
(J2000, B1950), ecliptic (J2000, B1950), Galactic and
Supergalactic. For example if 'image.fits' is in galactic coordinates,
you can use this command to convert its WCS to equatorial (J2000):
astfits image.fits wcscoordsys=eqj2000
This option only works with WCSLIB 7.5 and above (released in March
2021), otherwise it will abort with an informative warning. This was
done with the help of Mark Calabretta.
keyvalue: Print only the values of the FITS keywords given to this
option in separate columns. This option can take multiple keyword
names and many FITS files. Thus generating a table of keyword values
(with one row per file where the first column is the file name). Its
output can thus be written as a Table file or be piped to the Table
program for selecting a certain subset of your FITS files based on
key values, or sorting them for example. This was added after a
discussion with Alberto Madrigal.
MakeCatalog:
 Newly added measurement columns:
upperlimitsb: upperlimit surface brightness for the given label
(object or clump). This is useful for measuring a dataset's
realistic surface brightness level for each labeled region by random
positioning of its footprint over undetected regions (not
extrapolated from the singlepixel noise level like the "surface
brightness limit").
NoiseChisel:
 Can now work on 3D datacubes. Since the configuration parameters are
different from images, it is recommended to manually set the 3D
configuration (the '...' can be the input image and options):
astnoisechisel config=/usr/local/etc/astnoisechisel3d.conf ...
Alternatively, you can set an 'astnoisechisel3d' alias like below and
always easily run 'astnoisechisel3d' on cubes.
alias astnoisechisel3d="astnoisechisel
config=/usr/local/etc/astnoisechisel3d.conf"
Segment:
 Can now work on 3D datacubes. Similar to NoiseChisel, it requires a
separate set of default configurations, so please see the note under
NoiseChisel above.
Table:
 When given a value of '_all', the 'noblank' option (that will remove
all rows with a blank value in the given columns) will check all
columns of the final output table. This is handy when you want a
"clean" (no NaN values in any column) table, but the table has many
columns. Until now, 'noblank' needed the name/number of each column
to "clean".
rowlimit: new option to specify the positional interval of rows to
show. Until now, the 'head' or 'tail' options would just allow
seeing the first or last few rows. You can use this new option to view
a contiguous set of rows in the middle of the table.
rowrandom: Make a random selection of the rows. This option is useful
when you have a large table and just want to see a random subset of
the rows. It takes an integer, selects that many rows from the input
randomly.
polygon: Similar to same option in Crop (mentioned above).
 New column arithmetic operators:
 'setAAA' operator (which allows storing the popped operand into a
named variable for easy usage in complex operations) is also usable
in Table's column arithmetic. Until now this operator was only
available in the Arithmetic program (for operation on images).
 'datetosec' Convert FITS date format ('YYYYMMDDThh:mm:ss') into
seconds from the Unix epoch (19700101,00:00:00 UTC). This can be
very useful in combination with the new 'keyvalue' option of the
Fits program to operate on FITS dates (for example sort your FITS
images based on observation time).
Query:
 The Galactic extinction calculator of the NASA/IPAC Extragalactic
Database (NED) is now available for any coordinate with a command like
below. For more, see the manual (the description of the 'extinction'
dataset of NED in the "Available datasets" section).
astquery ned dataset=extinction center=49.9507,41.5116
This feature was suggested by Ignacio Trujillo and implemented with
the help of Joseph Mazzarella.
Library:
 New arithmetic operator macros (for the 'gal_arithmetic' function):
 GAL_ARITHMETIC_OP_SIN: sine (input in deg).
 GAL_ARITHMETIC_OP_COS: cosine (input in deg).
 GAL_ARITHMETIC_OP_TAN: tangent (input in deg).
 GAL_ARITHMETIC_OP_ASIN: Inverse sine (output in deg).
 GAL_ARITHMETIC_OP_ACOS: Inverse cosine (output in deg).
 GAL_ARITHMETIC_OP_ATAN: Inverse tangent (output in deg)
 GAL_ARITHMETIC_OP_ATAN2: Inverse tangent (with two inputs, out deg).
 GAL_ARITHMETIC_OP_SINH: Hyperbolic sine.
 GAL_ARITHMETIC_OP_COSH: Hyperbolic cosine.
 GAL_ARITHMETIC_OP_TANH: Hyperbolic tangent.
 GAL_ARITHMETIC_OP_ASINH: Inverse hyperbolic sine.
 GAL_ARITHMETIC_OP_ACOSH: Inverse hyperbolic cosine.
 GAL_ARITHMETIC_OP_ATANH: Inverse hyperbolic tangent.
 GAL_ARITHMETIC_OP_MKNOISE_SIGMA: Add fixedsigma noise.
 GAL_ARITHMETIC_OP_MKNOISE_POISSON: Add Poisson noise.
 GAL_ARITHMETIC_OP_COUNTS_TO_JY: Convert counts to Janskys.
 New arithmetic flag macros:
 GAL_ARITHMETIC_FLAG_ENVSEED: read random number generator seed
from env.
 GAL_ARITHMETIC_FLAG_QUIET: don't print any warnings by some
operators.
 WCS coordinate system macros:
 GAL_WCS_COORDSYS_EQB1950: 1950.0 (Besselianyear) equatorial coords.
 GAL_WCS_COORDSYS_EQJ2000: 2000.0 (Julianyear) equatorial coords.
 GAL_WCS_COORDSYS_ECB1950: 1950.0 (Besselianyear) ecliptic coords.
 GAL_WCS_COORDSYS_ECJ2000: 2000.0 (Julianyear) ecliptic coords.
 GAL_WCS_COORDSYS_GALACTIC: Galactic coordinates.
 GAL_WCS_COORDSYS_SUPERGALACTIC: Supergalactic coordinates.
 gal_array_file_recognized: For FITS images, check contents also.
 gal_ds9_reg_read_polygon: Parse the polygon from an SAO DS9 region
file.
 gal_fits_file_recognized: Check the file contents when suffix
isn't FITS.
 gal_units_counts_to_mag: Convert counts to magnitudes.
 gal_units_mag_to_counts: Convert magnitudes to counts.
 gal_units_counts_to_jy: Convert counts to Janskys.
 gal_wcs_coordsys_from_string: WCS coordinate system from string.
 gal_wcs_coordsys_identify: Parse WCS struct to find coordinate
system.
 gal_wcs_coordsys_convert: Convert the coordinate system of the WCS.
** Removed features
Nothing has been removed in this release.
** Changed features
astscriptsortbynight:
 Thanks to the new features in the Fits and Table programs (described
above), the efficiency of this script has improved dramatically (from
19 seconds to 0.42 seconds for about 650 FITS files used in the
test!).
 The default end to a "night" is set to 11:00a.m. Until now it was
9:00a.m. But in some cases, calibration images may be taken after
that. So to be safer in general it was incremented by 2 hours.
MakeCatalog:
 Surface brightness limit (SBL) calculations are now written as
standard FITS keywords in the output catalog/table. Until now, they
were simply stored as 'COMMENT' keywords with no name so it was hard
to parse them automatically. From this version, the following keywords
are also written into the output table(s), see the "MakeCatalog
output" section of the book for more: 'SBLSTD', 'SBLNSIG', 'SBLMAGPX',
'SBLAREA', 'SBLMAG'.
 Upperlimit (UP) settings are also written into the output tables as
keywords (like surface brightness limit numbers above): 'UPNSIGMA',
'UPNUMBER', 'UPRNGNAM', 'UPRNGSEE', 'UPSCMLTP', 'UPSCTOL'.
Library:
 GAL_ARITHMETIC_FLAG_FREE new name for GAL_ARITHMETIC_FREE.
 GAL_ARITHMETIC_FLAG_NUMOK new name for GAL_ARITHMETIC_NUMOK.
 GAL_ARITHMETIC_FLAG_INPLACE new name for GAL_ARITHMETIC_INPLACE.
 GAL_ARITHMETIC_FLAGS_BASIC new name for GAL_ARITHMETIC_FLAGS_ALL.
 gal_fits_key_write_wcsstr: also takes WCS structure as argument.
 gal_fits_key_read_from_ptr: providing a numerical datatype for the
desired keyword's value is no longer mandatory. When not given, the
smallest numeric datatype that can keep the value will be found and
used.
 gal_wcs_read: allows specifying the linear matrix of the WCS.
 gal_wcs_read_fitsptr: allows specifying the linear matrix of the WCS.
** Bugs fixed
bug #60082: Arithmetic library crash for integer operators like modulo
bug #60121: Arithmetic segfault when multioperand output given to set
bug #60368: CosmicCalculator fails setdirconf when redshift isn't
given,
reported by Sepideh Eskandarlou
bug #60483: No warning when file given to 'config' doesn't exist,
reported by Sepideh Eskandarlou
bug #60484: Match crashes when called with coord and ccol2 (together)
bug #60603: Table crashes with an empty input and range,
reported by Sepideh Eskandarlou.
bug #60619: Crop crashes with differing image and WCS dimension
bug #60634: Crop's 'hstartwcs' and 'hendwcs' wrong with comment keys
bug #60644: MakeCatalog's Brightness error overestimated in images with
noise STD less than 1. This was not an issue for S/N or
Magnitude error on the same image (already corrected there).
[2] Lzip has better compression ratio and archival features compared
to the `.gz' or `.xz' formats. Therefore Gnuastro's alpha/test
releases are only in this format, but for historical reasons we also
include `.gz' tarballs in the official releases. If you don't have
Lzip (you can check with `lzip version' command), download and
install it from its webpage:
https://www.nongnu.org/lzip/lzip.html
If Lzip is present and you use GNU Tar, then the single command below
should uncompress and unpack the tarball:
$ tar xf gnuastro0.15.tar.lz
If the command above doesn't work, you have to uncompress and unpack
it with two separate commands (or use a pipe to feed the output of the
first into the second: `lzip cd gnuastro0.15.tar.lz  tar xf '):
$ lzip d gnuastro0.15.tar.lz
$ tar xf gnuastro0.15.tar
[3] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact. First, be sure to download both the .sig file
and the corresponding tarball. Then, run a command like this:
gpg verify gnuastro0.15.tar.gz.sig
If that command fails because you don't have the required public key,
then run this command to import it:
gpg keyserver keys.gnupg.net recvkeys 71E899012D174B66
and rerun the 'gpg verify' command.
[Prev in Thread]  Current Thread  [Next in Thread] 