[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Gnuastro 0.20 released
Gnuastro 0.20 released
Sat, 29 Apr 2023 23:51:40 +0200
Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1
I am happy to announce the 20th stable version of Gnuastro: version 0.20.
Gnuastro is an official GNU package, consisting of various command-line
programs, C/C++ library functions and Makefile extensions for the
manipulation and analysis of (astronomical) data. All the programs share
the same basic command-line user interface (modeled on GNU Coreutils).
For the full list of Gnuastro's library, programs, and several
comprehensive tutorials (recommended place to start using Gnuastro),
please see the links below respectively:
In the 27 weeks since 0.19, there have been 122 commits by 12 people
with 15265 lines of code and documentation inserted and 5779 deleted.
See  for the list of people who contributed for all the exciting new
features that have been added (thanks a lot everyone!). For the full
list of added and changed features, as well as the fixed bugs, please
Here is the compressed source and the GPG detached signature for this
release. To uncompress Lzip tarballs, see . To check the validity of
the tarballs using the GPG detached signature (*.sig) see . See 
for the list of software used to bootstrap this tarball.
Here are the SHA1 and SHA256 checksums (other ways to check if the
tarball you download is what we distributed). Just note that the SHA256
checksum is base64 encoded, instead of the hexadecimal encoding that
most checksum tools default to (see  on how to generate it).
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.
Dr. Mohammad Akhlaghi
Centro de Estudios de Física del Cosmos de Aragón (CEFCA),
Plaza San Juan 1, Planta 2, Teruel 44001, Spain
 Thanks to everyone who has contributed!
The following people contributed changes to this release (the number in
parenthesis is the number of Git commits).
Bharat Bhandari (1)
Elham Saremi (16)
Faezeh Bidjarchian (9)
Giulia Golini (1)
Labeeb Asari (1)
Mohammad Akhlaghi (59)
Pedram Ashofteh-Ardakani (1)
Raul Infante-Sainz (6)
Samane Raji (1)
Sepideh Eskandarlou (24)
Zahra Sharbaf (1)
Zohreh Ghaffari (2)
The following people provided comments, suggestions or found bugs:
Alejandro Serrano Borlaff
 Noteworthy updates since version 0.19:
** New features
- astscript-zeropoint: this script is used for calibrating the pixel
values in one image (finding its "zero point") based on a reference
catalog or (any number of) reference image(s). The script allows for
checking many apertures in the same command to let you choose the
best; and will operate in parallel where necessary. The documentation
of this script contains two tutorials on how to optimally use it and
interpret its results; please read and run them once before using it.
This script was written as a team effort lead by Sepideh Eskandarlou
and including (in alphabetical order): Elham Saremi, Giulia Golini,
Raul Infante-Sainz, Samane Raji, Zahra Sharbaf, Zohreh Ghaffari.
- New tutorial on detection and spectrum extraction from 3D data has
been added in the "Tutorials" chapter. It uses a MUSE cube and
demonstrates how to subtract the continuum, run NoiseChisel, Segment
and MakeCatalog for obtaining spectra and creating pseudo narrow-band
images of emission-lines.
- New "Shell tips" sub-section added (under the "Command-line" section
of the "Common program behavior" chapter). This sub-section contains
useful shell tips and tricks that can be useful when using Gnuastro's
--writeall: Write all datasets on the stack as separate HDUs in the
output; this is useful in debugging incomplete Arithmetic commands.
- New operators (also available in Table).
- isnotblank: same as 'isblank not', but slightly more efficient.
This was suggested by Sepideh Eskandarlou.
- swap: swap the top two datasets on the stack of operands.
- index: return dataset of same size, with pixel values that are
integers starting from 0 and incrementing one by one. This operator
doesn't pop the top dataset from the stack, it only adds one (to
avoid extra RAM usage in most usage scenarios).
- counter: similar to 'index', but integers start with 1.
- indexonly: similar to 'index', but pops the top stack dataset.
- counteronly: similar to 'counter', but pops the top stack dataset.
- constant: replace all elements of input image or column with the
given constant value (for example to set all pixels in an image to
NaN or zero), or to give identifiers to each source catalog when
adding rows from different catalogs, see the documentation for
- counts-to-nanomaggy: convert counts to Nanomaggy (with fixed
zeropoint of 22.5, used as the pixel units of many surveys like
SDSS). This was suggested by Giulia Golini.
- nanomaggy-to-counts: convert nanomaggy to counts. This was suggested
by Giulia Golini.
- box-vertices-on-sphere: calculate the RA,Dec of vertices of the four
vertices of a rectangle from its center and width along RA and
Dec. This takes into account the curved nature of the coordinate
system. Added after discussion with Martin Kuemmel.
- number-neighbors: Return the number of non-zero neighbors of each
non-zero pixel in a binary image.
- New operators (only in the Arithmetic program):
- interpolate-meanngb: interpolate blank values with mean of the
requested number of nearest neighbors.
- Alternative (shorter) names for existing operators, added after
discussion with Samane Raji.
- u8: same as 'uint8' (to convert to unsigned 8-bit integers).
- i8: same as 'int8' (to convert to signed 8-bit integers).
- u16: same as 'uint16' (to convert to unsigned 16-bit integers).
- i16: same as 'int16' (to convert to signed 16-bit integers).
- u32: same as 'uint32' (to convert to unsigned 32-bit integers).
- i32: same as 'int32' (to convert to signed 32-bit integers).
- u64: same as 'uint64' (to convert to unsigned 64-bit integers).
- i64: same as 'int64' (to convert to signed 64-bit integers).
- f32: same as 'float32' (to convert to 32-bit floating point).
- f64: same as 'float64' (to convert to 64-bit floating point).
- Spectral line database has been increased to 235 spectral lines in the
UV and optical (previously only had 41 lines!) from:
To see the full list, run 'astcosmiccal --listlines'.
--lineunit: allows you to specify the units of the displayed spectral
line wavelengths. Currently, it take four units: 'm', 'micron', 'nm'
and 'angstrom'. We can add any other unit easily, just let us know.
--append: if the output file already exists, append the cropped image
HDU to the already existing HDUs of the file. Without this option, any
existing HDUs in the output file will be removed (default behavior).
--metaname: Specify the name of the cropped output HDU (value to the
'EXTNAME' keyword in FITS).
- Book: with the increasing number of possible measurements the
"MakeCatalog measurements" section of the Gnuastro book has been
broken into separate sub-section and contextually similar measurements
are grouped separately there.
--sigclip-mean-sb: surface brightness (over one pixel's area in
arcsec^2) of the sigma-clipped mean of the values. This is useful in
scenarios where you want to compare surface brightness values
independent of the object's area, and by removing outliers (for
example in a radial profile). See the description of this option in
the book for more. This was added after a discussion by Ignacio
Trujillo and Zahra Sharbaf.
--sigclip-mean-sb-err: the error in '--sigclip-mean-sb' but using the
sigma-clipped standard deviation of the values as the error, not the
standard deviation image.
--sigclip-std-sb: the surface brightness (over one pixel's area in
arcsec^2) of the sigma-clipped standard deviation of the values. This
can be used to find the reliable surface brightness of a radial
profile for example.
--sum-in-slice: [3D in; vector out] Sum of values in each slice.
--sum-err-in-slice: [3D in; vector out] Error in '--suminslice'.
--area-in-slice: [3D input; vector out] Number of labeled in each slice.
--sum-proj-in-slice: [3D input; vector out] Sum of projected area
in each slice.
--area-proj-in-slice: [3D in; vector out] Number of voxels that are used
--sum-proj-err-in-slice: [3D in; vector out] Error of
--area-other-in-slice: [3D in; vector out] Area of other label in
projected area on each slice.
--sum-other-in-slice: [3D in; vector out] Sum of other label in
projected area on each slice.
--sum-other-err-in-slice: [3D in; vector out] Area in
--outliernumngb: the number of neighboring tiles to reject those that
have passed (the mean-median quantile difference criteria) because of
being on the wings of bright stars/galaxies. Until now, this number
was the same as the number given to '--interpnumngb', but it is
confusing and can cause problems (because interpolation is done after
outlier rejection). From this version, '--interpnumngb' is only in
charge of the number of neighboring tiles for interpolation outliers
are defined based on the number of tiles given to this
option. Therefore, if you are not detecting the wings of large
galaxies, THE BEST solution is most-probably to increase
'--outliernumngb'. This was done after a discussion with Elham Saremi.
--outliernumngb: see description of same option in NoiseChisel.
- Vector columns with multiple values per column are now supported. The
following features have been added to help working on vector columns:
- Book: a new "Vector columns" section has been added under the Table
program which describes the core concepts and usage examples of the
--information: also identifies vector columns (a column with more than
one value), by placing an '(N)' after the type. Where 'N' is the
number of elements within the vector.
--tovector: merge multiple single-valued columns into a new vector
--fromvector: extract identified elements/tokens of a vector column to
separate single-valued columns.
--keepvectfin: do not delete the input columns to '--tovector' and
--rowfirst: do row-based operations before column-based operations (by
default column-based operations are done first).
--transpose: column-based operator to transpose vector columns into a
new table that has the inverse number of rows and columns.
--txteasy: (or '-Y') when output is a plain-text file or just gets
printed on standard output (terminal), all floating point columns are
printed in fixed point notation (as in '123.456') instead of the
default exponential notation (as in '1.23456e+02'). For 32-bit
floating points, use a precision of 3 digits and for 64-bit floating
points use a precision of 6 digits. This can be useful for human
readability, but be careful with some scenarios (for example
'1.23e-120', which will show only as '0.0'!). For more, see the
changes in Table in this version.
- New column arithmetic operator:
- sorted-to-interval: return two columns from a single (sorted) input,
containing the minimum and maximum values of an interval. The
intervals are defined such that the intervals of every row fully
cover the full range of values in the given column. This can be
useful in scenarios where you need to build the inputs of the
'--customtable' feature in MakeProfiles (to build a 2D image a
--precision: sample the radial profile at precision less than one
pixel. This is useful when you need to sample the profile within the
central few pixels more accurately than integer pixels. See the
documentation of this option in the book for a complete explanation
- GAL_ARITHMETIC_OP_SWAP: swap the top two operands.
- GAL_ARITHMETIC_OP_INDEX: An index (counting from 0) for every element.
- GAL_ARITHMETIC_OP_INDEXONLY: Similar to 'GAL_ARITHMETIC_OP_INDEX'.
- GAL_ARITHMETIC_OP_COUNTER: A counter (counting from 1) for every
- GAL_ARITHMETIC_OP_COUNTERONLY: Similar to 'GAL_ARITHMETIC_OP_COUNTER'.
- GAL_ARITHMETIC_OP_COUNTS_TO_NANOMAGGY: convert counts to nanomaggy.
- GAL_ARITHMETIC_OP_NANOMAGGY_TO_COUNTS: convert nanomaggy to counts.
- GAL_ARITHMETIC_OP_BOX_VERTICES_ON_SPHERE: calculate the coordinates of
vertices of a rectangle on a sphere from its center and width/height.
- gal_binary_number_neighbors: num. non-zero neighbors of non-zero
- gal_blank_flag_not: binary dataset with 1 for those input pixels that
- gal_data_alloc_empty: Allocate an empty dataset with a given number of
- gal_list_f64_to_data: convert list of float64s to a 'gal_data_t'
dataset with the requested type.
- gal_list_data_remove: Remove the given dataset from the given list.
- gal_list_data_select_by_id: find/select a dataset from a list of
datasets using an identification string (either counter or name).
- gal_permutation_apply_onlydim0: When we have a 2D input, apply
permutation for all the elements of each row (along dimension-0 in C).
- gal_statistics_has_negative: see if input has a negative value.
- gal_table_col_vector_extract: extract the given elements of a vector
column into separate columns.
- gal_table_cols_to_vector: merge multiple columns into a vector column.
- gal_units_counts_to_nanomaggy: Convert counts to nanomaggy.
- gal_units_nanomaggy_to_counts: Convert nanomaggy to counts.
- gal_wcs_box_vertices_from_center: calculate the coordinates of
vertices of a rectangle on a sphere from its center and width/height.
** Removed features
- Removed the short option format for the following measurements
(columns). This was done because the short options affect the sorting
in the output of '--help', making it hard to find the options
visually. Because most measurements do not have a short format, we have
seen that the short format is rarely used. Only the most commonly used
measurements keep their short format, and only when they don't affect
the alphabetic sorting of the output of '--help':
--area (short option was 'a')
--axis-ratio (short option was 'Q')
--magnitude-error (short option was 'G')
--num-clumps (short option was 'c')
--position-angle (short option was 'p')
--semi-major (short option was 'A')
--semi-minor (short option was 'B')
--sn (short option was 'n')
--sum (short option was 'b')
--upperlimit-mag (short option was 'u')
** Changed features
--with-python: this has replaced the old '--without-python' option. The
Python extension features in the Gnuastro library are no longer built
by default. To have them, you need to explicitly configure Gnuastro
with this option. This was necessary because Python has many
peculiarities that were causing problems for users that don't need it
in Gnuastro. These features are only necessary for those who compile
pyGnuastro from source, most future users of pyGnuastro will be
installing pre-built binaries it through services like PyPI, so they
won't be needing it either.
- Given the major increase of the spectral line database, the old line
names have been changed to accommodate the full database. For example
'H-alpha' has replaced 'halpha'. Please run 'astcosmiccal --listlines'
to see the new names for the previous lines.
- "Sum" used instead of "brightness"
--sum: new name for the old '--brightness' column. "Brightness" has a
specific meaning in astronomy/physics and has units of
energy/time. However, astronomical images aren't in this unit, they
are usually in counts, or can have an arbitrary units (like
nanomaggy). The new name is derived from what this column does (sum
of pixel values) to avoid confusions.
--sum-error: new name for '--brightnesserr'.
--clumps-sum: new name for '--clumpbrightness'.
--sum-no-river: new name for '--brightnessnoriver'.
--checkuplim: now returns the center of each label's tile, not the first
pixel (the bottom-left pixel position of the tile). The old behavior to
return the first pixel was un-intuitive, would require several manual
steps (to measure the minimum and maximum positions of each tile,
measure the width along each dimension and add it), and could lead to
confusing results when ignored. See the updated documentation of this
option for more on custom usage in special situations.
- Using a hyphen to help in readability and usability:
Old name New name
--bgnotmag: new name for the old '--bgisbrightness' option. See the
description of changed '--sum' in MakeCatalog (above) for more.
--mcolissum: new name for the old '--mcolisbrightness' option. See the
description of changed '--sum' in MakeCatalog (above) for more.
- Units of the output FITS image (value to 'BUNIT' keyword) is now
"counts", until now, it was "brightness". See the description of
changed '--sum' in MakeCatalog (above) for more.
- Given the newly added vector columns, the precedence on operations has
been updated. Please read the "Operation precedence in Table" section
of the book.
- To avoid potential loss of information in floating point columns, when
printing the columns to standard output (in the terminal) or saving in
a plain-text file, the default floating point formats are now printed
in exponential (scientific) notation (e.g., 1.234e-5). Until now the
default notation was fixed-point notation (e.g., 0.00001234). A new
sub-section called "Printing floating point numbers" has been added to
the book (under the "Table" section) to clarify this important point.
-A: new short format for --txtf64format. The '-d' short format was
conflicting with the short option name for '--descending'.
- Now uses the Gaia DR3 dataset by default (until now it was using eDR3).
--axis-ratio: new name for old '--axisratio'
--position-angle: new name for old '--positionangle'
- gal_blank_remove_rows: new 'onlydim0' argument to ignore vector columns
when checking for blanks.
- gal_list_str_cat: new 'delimiter' argument to specify the character for
printing between the separate string nodes in the single output string.
- gal_txt_write: new 'tab0_img1' argument. Until now, this function would
distinguish between images and tables using the dimensions of the
input. But with the addition of vector columns in tables (that have 2
dimensions) this argument becomes necessary.
** Bugs fixed
bug #63266: Table ignores a value of 0 given to '--txtf32precision' or
'--txtf32precision=0' (happens when floating point columns
need to be rounded to integers). Reported by Sepideh
bug #63270: Table aborts when called with '--descending' with complaint
on '--txtf64format' (that was added in Gnuastro
0.19). Reported by Giulia Golini.
bug #63285: Table not printing anything in rows of integer columns with
value of zero.
bug #63340: Statistics printing zero for values smaller than 1e-6 and
1e-14 for 32-bit or 64-bit floats respectively. Reported by
bug #63345: WCS coordinate change not accounting for new equinox (only
relevant for equatorial outputs). Reported by Alejandro
bug #63399: Table's '--noblank' or '--noblankend' crashing when input
has no rows. Reported by Elham Saremi.
bug #63485: Oversampling in radial profile has incorrect center. Reported
by Nafiseh Sedighi.
bug #63543: Programs delete input when it has same name as output.
Reported by Faezeh Bidjarchian.
bug #63969: make distcheck error due to temporary files of
astscript-psf-select-stars. Reported by Siyang He.
bug #64076: MakeCatalog prints --upnum warning even with
--quiet. Reported by Teet Kuutma.
 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
official releases. If you don't have Lzip (you can check with `lzip
command), download and install it from its webpage:
If Lzip is present and you use GNU Tar, then the single command below should
uncompress and un-pack the tarball:
$ tar xf gnuastro-0.20.tar.lz
If the command above doesn't work, you have to un-compress and un-pack
two separate commands (or use a pipe to feed the output of the first
second: `lzip -cd gnuastro-0.20.tar.lz | tar -xf -'):
$ lzip -d gnuastro-0.20.tar.lz
$ tar xf gnuastro-0.20.tar
 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 gnuastro-0.20.tar.lz.sig
The signature should match the fingerprint of the following key:
pub rsa4096 2018-12-08 [SC]
52B0 4484 D806 C90D CB52 7249 71E8 9901 2D17 4B66
uid [ unknown] Mohammad Akhlaghi <email@example.com>
If that command fails because you don't have the required public key, or
public key has expired, try the following commands to retrieve or
and then rerun the 'gpg --verify' command.
gpg --recv-keys 71E899012D174B66
As a last resort to find the key, you can try the official GNU keyring:
wget -q https://ftp.gnu.org/gnu/gnu-keyring.gpg
gpg --keyring gnu-keyring.gpg --verify gnuastro-0.20.tar.lz.sig
 This tarball was bootstrapped (created) with the tools below. Note
don't need these to build Gnuastro from the tarball, these are the tools
were used to make the tarball itself. They are only mentioned here to be
reproduce/recreate this tarball later.
Autoconf archives v2023.02.20-11-ged466f7
The dependencies to build Gnuastro from this tarball on your system are
 To get the base64 SHA256 checksum, you can use the command below
you already have the 'openssl' command-line program).
cat gnuastro-0.20.tar.lz \
| openssl dgst -binary -sha256 | openssl base64 -A
|[Prev in Thread]
||[Next in Thread]|
- Gnuastro 0.20 released,
Mohammad Akhlaghi <=