[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Gnuastro 0.22 released [stable]

From: Mohammad Akhlaghi
Subject: Gnuastro 0.22 released [stable]
Date: Sat, 3 Feb 2024 21:32:48 +0100
User-agent: Mozilla Thunderbird

Dear all,

I am happy to share the 22nd stable release of GNU Astronomy Utilities (Gnuastro).

There have been 97 commits by 7 people in the 15 weeks since 0.21, see [1] below for the full list. For all the new features, as well as changes and bug fixes, see the NEWS file entry for this version; shown in [2] below.

If you are using Gnuastro in your projects, take a few minutes to read [2] below.

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 Gnuastro web page, hands-on tutorials (recommended place to start using Gnuastro), list of Gnuastro's library and its programs, please see the links below respectively:

Here is the compressed source and the GPG detached signature for this release. To uncompress Lzip tarballs, see [3]. To check the validity of the tarballs using the GPG detached signature (*.sig) see [4]. See [5] for the list of software used to bootstrap this tarball.    (4.6MB)    (7.4MB) (833B) (833B)

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 [6] on how to generate it).

  0171c1547fff343bed905662df50a76ef899dfc5  gnuastro-0.22.tar.gz
  f9fxaga95VrtliggkM2SITW+6pAjaeWvgUOJ6rnMcwg=  gnuastro-0.22.tar.gz
  bfb22c3d74400f8a3beacc22010e8394363736cf  gnuastro-0.22.tar.lz
  H7uEkvVx3VDJkMUlJ+tmBoH9kj/y4hOi3b6lXkOXNJc=  gnuastro-0.22.tar.lz

If any of Gnuastro's programs or libraries are useful in your work, please don't forget to 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.

Best wishes,

Dr. Mohammad Akhlaghi
Staff Researcher
Centro de Estudios de Física del Cosmos de Aragón (CEFCA),
Plaza San Juan 1, Planta 2, Teruel 44001, Spain

[1] Thanks to everyone who has contributed!

The following people contributed changes to this release (the number in parenthesis is the number of Git commits).

  Boud Roukema (2)
  Elham Saremi (1)
  Faezeh Bidjarchian (9)
  Mohammad Akhlaghi (53)
  Raul Infante-Sainz (24)
  Sepideh Eskandarlou (5)
  Thorsten Alteholz (3)

The following people provided comments, suggestions or found bugs:

  Alberto Moreno Signes
  Boud Roukema
  Helena Domínguez Sánchez
  Ignacio Ruiz Cejudo
  Rahna Payyasseri Thanduparackal
  Raul Infante-Sainz
  Sepideh Eskandarlou
  Teet Kuutma
  Thorsten Alteholz

[2] Noteworthy changes in release 0.22

** New publications
- by Eskandarlou et al. on Gnuastro's zero point measurement script for calibration of astronomical images ('astscript-zeropoint'). - by Infante-Sainz & Akhlaghi on Gnuastro's script to visualize the full dynamic range of astronomical images ('astscript-color-faint-gray'). - by Infante-Sainz et al. on Gnuastro's script to measure the radial profile of a given source ('astscript-radial-profile').

** New features
*** New program
- 'astscript-color-faint-gray': a new installed script to maximize the visualization of the contents within your astronomical images. It does this by showing the brighter parts of the image as color, intermediate regions as black and the noisy/faint regions as gray/white.

*** All programs
- The following options are now available in all programs to allow customization of which metadata is printed in the 0-th HDU of the FITS output of all Gnuastro programs. Also see the "Changed features" list for an important change in this regard to all Gnuastro output FITS files. --outfitsnoconfig: do not print any metadata in the 0-th HDU (including the used options and their values, the date, the versions and git commit of running directory).
    --outfitsnodate: do not write the 'DATE' keyword.
--outfitsnoversions: do not write the versions of Gnuastro and mandatory dependencies.
    --outfitsnocommit: do not write the Git commit.

*** Arithmetic
--arguments: takes the name of plain-text file that contains the list of arguments to the program. This option is critical if you have very long (thousands) of operands and operators (which happen in large pipelines where the arguments are constructed automatically). Without this option, the shell is going to abort with an "Argument list too long" error message.

  - New operators:
- rotate-coord: given a 2D point's coordinates, return the coordinates after it has been rotated by your requested angle around your requested center (see documentation for example).
    - mad: Median Absolute Deviation (MAD) stacking.
    - madclip-mad: MAD after MAD-clipping stacking.
    - madclip-std: Standard deviation after MAD-clipping stacking.
    - madclip-mean: Mean after MAD-clipping stacking.
    - madclip-median: Median after MAD-clipping stacking.
    - madclip-number: Number of elements after MAD-clipping stacking.
- madclip-fill-mad: MAD after filled MAD-clipping stacking: this involves a two-phase clipping: after the first clipping, Arithmetic will "fill" the unclipped holes in each input and masks them for a second round. This is critical for clipping more diffuse outliers: where a pixel may not be clipped individually and will produce biased results, but due to proximity with many nearby clipped pixels, it can be discarded and thus its effect on the final stack be removed. - madclip-fill-std: Standard deviation after filled MAD-clipping stacking.
    - madclip-fill-mean: Mean after filled MAD-clipping stacking.
    - madclip-fill-median: Median after filled MAD-clipping stacking.
- madclip-fill-number: Num. of elements after filled MAD-clipping stacking.
    - sigclip-fill-mad: MAD after filled MAD-clipping stacking.
- sigclip-fill-std: Standard deviation after filled MAD-clipping stacking.
    - sigclip-fill-mean: Mean after filled MAD-clipping stacking.
    - sigclip-fill-median: Median after filled MAD-clipping stacking.
- sigclip-fill-number: Num. of elements after filled MAD-clipping stacking.
    - sigclip-mad: MAD after sigma-clipping stacking.
    - collapse-madclip-mad: Collapse dim. by MAD-clipped MAD.
    - collapse-madclip-std: Collapse dim. by MAD-clipped STD.
    - collapse-madclip-mean: Collapse dim. by MAD-clipped mean.
    - collapse-madclip-median: Collapse dim. by MAD-clipped median.
    - collapse-madclip-number: Collapse dim. by MAD-clipped number.
    - collapse-madclip-fill-mad: Collapse dim. by filled MAD-clipped MAD.
    - collapse-madclip-fill-std: Collapse dim. by filled MAD-clipped STD.
    - collapse-madclip-fill-mean: Collapse dim. by filled MAD-clipped mean.
- collapse-madclip-fill-median: Collapse dim. by filled MAD-clipped median. - collapse-madclip-fill-number: Collapse dim. by filled MAD-clipped num.
    - collapse-sigclip-mad: Collapse dim. by sigma-clipped MAD.
    - collapse-sigclip-fill-mad: Collapse dim. by filled sigma-clipped MAD.
    - collapse-sigclip-fill-std: Collapse dim. by filled sigma-clipped STD.
- collapse-sigclip-fill-mean: Collapse dim. by filled sigma-clipped mean. - collapse-sigclip-fill-median: Collapse dim. by filled sigma-clip. median. - collapse-sigclip-fill-number: Collapse dim. by filled sigma-clipped num.

*** Fits
--arguments: takes the name of plain-text file that contains the list of arguments to the program. Currently this only works with '--keyvalue' and is necessary when you want to get the keywords of a very long list of files (~thousands!). Without this option, the shell is going to abort with an "Argument list too long" error message. --datasum-encoded: new option that will return an ASCII encoded 16-character string for the value of the 'DATASUM' concept in FITS data verification.

*** Statistics
--checkskynointerp: similar to '--checksky', but stop as soon as the good tiles are found (do not continue to interpolation and smoothing of the tiles which can be time consuming if not needed).
  --mad: Median Absolute Deviation (MAD) of input dataset.
  --madclip: MAD-clipping, showing intermediate results.
  --sigclip-mad: MAD of input after sigma-clipping.
  --madclip-number: Number of input elements after MAD-clipping.
  --madclip-median: Median of input elements after MAD-clipping.
  --madclip-mean: Mean of input elements after MAD-clipping.
  --madclip-std: Standard deviation of input elements after MAD-clipping.
  --madclip-mad: MAD of input elements after MAD-clipping.
--mclipparams: Parameters of MAD-clipping, similar to sigma-clipping. Note that in a Gaussian distribution, MAD = 0.67 sigma, so if you want something similar to 3-sigma (the default), you should set the MAD multiple to 5 (the default).

*** Makefile extension
  - 'ast-text-to-upper': convert input string to upper-case.
  - 'ast-text-to-lower': convert input string to lower-case.

*** Library
**** Functions
  - gal_dimension_collapse_mclip_mad: MAD-clipped MAD.
  - gal_dimension_collapse_mclip_fill_mad: filled MAD-clipped MAD.
  - gal_dimension_collapse_mclip_std: MAD-clipped STD.
  - gal_dimension_collapse_mclip_fill_std: filled MAD-clipped STD.
  - gal_dimension_collapse_mclip_mean: MAD-clipped mean.
  - gal_dimension_collapse_mclip_fill_mean: filled MAD-clipped mean
  - gal_dimension_collapse_mclip_median: MAD-clipped median.
  - gal_dimension_collapse_mclip_fill_median: filled MAD-clipped median.
  - gal_dimension_collapse_mclip_number: MAD-clipped number.
  - gal_dimension_collapse_mclip_fill_number: filled MAD-clipped number.
  - gal_dimension_collapse_sclip_mad: sigma-clipped MAD
  - gal_dimension_collapse_sclip_fill_mad: filled sigma-clipped MAD.
  - gal_dimension_collapse_sclip_fill_std: filled sigma-clipped STD.
  - gal_dimension_collapse_sclip_fill_mean: filled sigma-clipped mean
  - gal_dimension_collapse_sclip_fill_median: filled sigma-clipped median.
  - gal_dimension_collapse_sclip_fill_number: filled sigma-clipped number.
  - gal_fits_hdu_datasum_encoded: the 16-character encoded sting datasum.
  - gal_fits_key_list_add_date: add 'DATE' to current list of keywords.
- gal_fits_key_list_add_git_commit: add the Git commit information of the running directory to the input list of keywords (if built with libgit2). - gal_fits_key_list_add_software_versions: add versions of Gnustro and its mandatory dependencies to the input list of keywords.
  - gal_statistics_clip_mad: MAD clipping of given input.
  - gal_statistics_mad: return median absolute deviation (MAD).
  - gal_statistics_median_mad: return median and MAD.
- gal_txt_read_to_list: read all the space-separated words of the input plain-text file as a separate node in a linked list of strings.

**** Macros
  - Used by 'gal_arithmetic':
    - GAL_ARITHMETIC_OP_SIGCLIP_FILL_NUMBER: MAD-clipped num. of arrays.
    - GAL_ARITHMETIC_OP_SIGCLIP_FILL_MEAN: MAD-clipped mean of arrays.
    - GAL_ARITHMETIC_OP_SIGCLIP_FILL_MEDIAN: MAD-clipped median of arrays.
    - GAL_ARITHMETIC_OP_MADCLIP_NUMBER: MAD-clipped number of mult. arrays.
    - GAL_ARITHMETIC_OP_MADCLIP_MEAN: MAD-clipped mean of multiple arrays.
    - GAL_ARITHMETIC_OP_MADCLIP_MEDIAN: MAD-clipped median of mult. arrays.
    - GAL_ARITHMETIC_OP_MADCLIP_STD: MAD-clipped STD of multiple arrays.
    - GAL_ARITHMETIC_OP_MADCLIP_MAD: MAD-clipped STD of multiple arrays.
    - GAL_ARITHMETIC_OP_MADCLIP_FILL_NUMBER: MAD-clipped num. of arrays.
    - GAL_ARITHMETIC_OP_MADCLIP_FILL_MEAN: MAD-clipped mean of arrays.
    - GAL_ARITHMETIC_OP_MADCLIP_FILL_MEDIAN: MAD-clipped median of arrays.
  - Used by 'gal_statistics_clip_sigma' and 'gal_statistics_clip_mad':
- GAL_STATISTICS_CLIP_OUTCOL_NUMBER_USED: index of final number in output.
    - GAL_STATISTICS_CLIP_OUTCOL_MEAN: index of clipped mean in output.
    - GAL_STATISTICS_CLIP_OUTCOL_STD: index of clipped STD in output.
    - GAL_STATISTICS_CLIP_OUTCOL_MEDIAN: index of clipped median in output.
    - GAL_STATISTICS_CLIP_OUTCOL_MAD: index of clipped MAD in output.
- GAL_STATISTICS_CLIP_OUTCOL_NUMBER_CLIPS: index of clipped number in output. - GAL_STATISTICS_CLIP_OUTCOL_OPTIONAL_MEAN: bit flag for measuring mean.
    - GAL_STATISTICS_CLIP_OUTCOL_OPTIONAL_STD: bit flag for measuring STD.
    - GAL_STATISTICS_CLIP_OUTCOL_OPTIONAL_MAD: bit flag for measuring MAD.

** Removed features
*** Library
- gal_fits_key_write_version: redundant with the new 'gal_fits_key_list_add_software_versions'.
  - gal_fits_key_write_version_in_ptr: as in gal_fits_key_write_version.
- gal_fits_key_write_config: redundant since all configuration (options) are stored as generic keys.

** Changed features
*** All programs
- Date and versions FITS keywords are only written in the 0-th HDU of output FITS files (along with the options names and values), not the HDU(s) containing data. Until now, the data and versions metadata were written in the data HDU. However, ultimately, these are also metadata and are better suited for the 0-th HDU. For example when everything else is identical, you expect an exactly reproducible HDU (to verify with the FITS 'CHECKSUM' for example), but every time you run, 'DATE' will be different! Similarly for the versions of the software or Git commit (they may change, while your dataset doesn't). To disable these in the 0-th HDU also, see the newly added '--outfitsno*' options in the new features.

*** Arithmetic
- Binary operators (like '+' or 'x') that are given two integers will crash with an error if the input operands have the same width but different signs. Until now, they would just report a warning and print the output. However, in large scripts, users could miss the warning and not be aware of a possibly wrong result. Therefore it is more robust to crash with an error rather than print a warning. This was suggested by Sepideh Eskandarlou and implemented by Faezeh Bidjarchian after a poll on Gnuastro's Matrix chat channel (

*** CosmicCalculator
- In a non-FLRW model (when the sum of the densities is not 1.0), CosmicCalculator no longer crashes with an error since calculations like the radial comoving distance ('--properdistance') are still valid in a curved cosmology. Instead a warning is printed informing the user that with Gnuastro's current implementation angular diameter based calculations will be wrong. This was implemented by Boud Roukema. --angulardiamdist is the new name for the old '--angulardimdist' option. This was necessary to avoid confusion of 'dim' in the old name with "dimension"; 'diam' makes it clear that this is a "diameter", not 'dimension'. This was suggested by Boud Roukema.

*** Crop
- The 'ICF*' keywords are now written in the 0-th HDU of Crop's outputs (the extension with no data, only metadata). Therefore, the WCS is now the only metadata in the HDU containing data.

*** astscript-psf-stamp
- When no name is given to the temporary directory, the default name will contain the center coordinates as a suffix (to avoid being confused with other calls for other centers), and the contents of the temporary directy will have the same filename. Until now, the temporary directory name would be the same for different calls, and the coordinates suffix would be in the temporary file names. This could cause confusions and bugs (for example one call to this script could delete the temporary directory that was being used by a later call).

*** Library
  - gal_cosmology_age: a 'quiet' argument is added to disable warnings.
  - gal_cosmology_proper_distance: similar 'gal_cosmology_age'.
  - gal_cosmology_comoving_volume: similar 'gal_cosmology_age'.
  - gal_cosmology_critical_density: similar 'gal_cosmology_age'.
  - gal_cosmology_angular_distance: similar 'gal_cosmology_age'.
  - gal_cosmology_luminosity_distance: similar 'gal_cosmology_age'.
  - gal_cosmology_distance_modulus: similar 'gal_cosmology_age'.
  - gal_cosmology_to_absolute_mag: similar 'gal_cosmology_age'.
- gal_fits_key_write: to generalize, the "title" argument has been removed (because it is a keyword). It can also create the file if it doesn't exist and can optionally free the list of keywords (until now, it would always free them).
  - gal_fits_key_write_in_ptr: similar to 'gal_fits_key_write'.
- gal_fits_img_write: no more 'program_name'; it is a keyword title; added 'freekeys' argument to optionally free the input keyword list.
  - gal_fits_img_write_to_type: as in 'gal_fits_img_write'.
  - gal_fits_img_write_corr_wcs_str: as in 'gal_fits_img_write'.
  - gal_fits_tab_write: as in 'gal_fits_img_write'.
- GAL_STATISTICS_CLIP_MAX_CONVERGE: new name for the old 'GAL_STATISTICS_SIG_CLIP_MAX_CONVERGE'. Since we now also have MAD-clipping.
  - gal_statistics_clip_sigma: new name for 'gal_statistics_sigma_clip'.
  - gal_table_write: as in 'gal_fits_img_write'.
  - gal_tile_full_values_write: as in 'gal_fits_img_write'.
  - gal_wcs_write: as in 'gal_fits_img_write'.

** Bugs fixed
- bug #46225: Programs don't depend on libs in Makefiles; reported by Mosè Giordano and fixed by Thorsten Alteholz. - bug #52295: Cosmology library integrals crash for high z; fixed by Thorsten Alteholz. - bug #52674: Correcting Clang warnings on macOS during compilation; fixed with help of Thorsten Alteholz and Raul Infante-Sainz. - bug #61476: astscript-ds9-region: output created when input file does not exist; reported by Sepideh Eskandarlou, fixed by Thorsten Alteholz. - bug #64825: astscript-fits-view only takes the last HDU provided; reported by Teet Kuumta and fixed by Raul Infante-Sainz. - bug #64852: astscript-zeropoint: crash when input is in 0-th HDU; reported in; fixed by Sepideh Eskandarlou. - bug #64915: Segment's SKY_STD output HDU does not have WCS; reported by Sepideh Eskandarlou. - bug #64952: Table error message for incorrect column name was not complete; reported by Sepideh Eskandarlou. - bug #65005: astscript-psf-unit not accounting for --innerhdu; reported by Ignacio Ruiz Cejudo. - bug #65050: Use --libtool option in the TEMPLATE usage; found and fixed by Faezeh Bidjarchian. - bug #65055: Columns of empty FITS tables (with no rows) read in reverse. - bug #65084: Fits program's --skycoverage prints connected numbers for cubes; found with help of Rahna Payyasseri Thanduparackal. - bug #65106: Necessity of --oversample with astscript-radial-profile when a 2D profile is to be created with '--customtable' of MakeProfile; reported by Sepideh Eskandarlou. - bug #65141: MakeCatalog crash when labled image is all blank; reported by Sepideh Eskandarlou. - bug #65149: MakeCatalog '--frac-max*-*' measurements done without '--frac-max'; reported by Helena Domínguez Sánchez. - bug #65194: --quiet does not disable the warning for un-given minmapsize; reported by Boud Roukema. - bug #65195: CosmicCalculator prevents non-flat FLRW models and angular diameter distance only correct in flat models. Found and fixed by Boud Roukema.

[3] 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:

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.22.tar.lz

If the command above doesn't work, you have to un-compress and un-pack it with two separate commands (or use a pipe to feed the output of the first into the second: `lzip -cd gnuastro-0.22.tar.lz | tar -xf -'):

  $ lzip -d gnuastro-0.22.tar.lz
  $ tar xf gnuastro-0.22.tar

[4] 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.22.tar.gz.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 <>

If that command fails because you don't have the required public key, or that public key has expired, try the following commands to retrieve or refresh it, 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
  gpg --keyring gnu-keyring.gpg --verify gnuastro-0.22.tar.gz.sig

[5] 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 7.1
  Autoconf 2.72
  Automake 1.16.5
  Help2man 1.49.3
  ImageMagick 7.1.1-27
  Gnulib v0.1-7045-g7bc53cd0bc
  Autoconf archives v2023.02.20-50-geb940c6

The dependencies to build Gnuastro from this tarball on your system are described here:

[6] To get the base64 SHA256 checksum, you can use the command below (assuming you already have the 'openssl' command-line program).

  cat gnuastro-0.22.tar.lz \
      | openssl dgst -binary -sha256 | openssl base64 -A

reply via email to

[Prev in Thread] Current Thread [Next in Thread]