[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnuastro-commits] master abe82cb 086/113: Imported recent work in maste
From: |
Mohammad Akhlaghi |
Subject: |
[gnuastro-commits] master abe82cb 086/113: Imported recent work in master, no conflicts |
Date: |
Fri, 16 Apr 2021 10:33:55 -0400 (EDT) |
branch: master
commit abe82cb62e43f97a061e682f7831f836c847865c
Merge: a42ac37 01b2639
Author: Mohammad Akhlaghi <mohammad@akhlaghi.org>
Commit: Mohammad Akhlaghi <mohammad@akhlaghi.org>
Imported recent work in master, no conflicts
There weren't any conflicts in this merge.
---
NEWS | 11 +--
THANKS | 1 +
bin/mkcatalog/ui.c | 8 +-
bin/mknoise/main.h | 4 +-
bin/mknoise/mknoise.c | 7 +-
bin/mknoise/ui.c | 14 +--
bin/mkprof/main.h | 1 +
bin/mkprof/mkprof.c | 8 +-
bin/mkprof/ui.c | 8 +-
bin/noisechisel/detection.c | 2 +-
bootstrap.conf | 1 +
configure.ac | 191 ++++++++++++++++++++++-----------------
doc/announce-acknowledge.txt | 2 +
doc/gnuastro.en.html | 3 +-
doc/gnuastro.fr.html | 2 +-
doc/gnuastro.texi | 90 +++++++++++-------
doc/release-checklist.txt | 22 +++--
lib/checkset.c | 57 +++++++++++-
lib/gnuastro-internal/checkset.h | 10 +-
lib/statistics.c | 17 +++-
20 files changed, 286 insertions(+), 173 deletions(-)
diff --git a/NEWS b/NEWS
index c23d08a..f0761ef 100644
--- a/NEWS
+++ b/NEWS
@@ -13,7 +13,6 @@ GNU Astronomy Utilities NEWS -*-
outline -*-
--onedasimage: write output as an image if it has one dimension, not table.
NoiseChisel:
-
- New outlier identification algorithm for quantile thresholds. This is
very useful when there are extended and bright sources in the
dataset: the tiles containing very faint signal that pass the general
@@ -83,11 +82,11 @@ GNU Astronomy Utilities NEWS -*-
outline -*-
FITS keyword `NAXIS'.
NoiseChisel:
- --meanmedqdiff: new name for `--modmedqdiff'. Until now, the mode's
- quantile was used to identify tiles with no significant signal. But
- from this version, the mean's quantile in each tile is used
- instead. The reason is that the mean is more sensative to outliers
- (signal).
+ - Until now, the mode's quantile was used to identify tiles with no
+ significant signal. But from this version, the mean's quantile in
+ each tile is used instead. The reason is that the mean is more
+ sensitive to outliers (signal). Therefore the old `--modmedqdiff' is
+ now called `--meanmedqdiff' .
Statistics:
--meanmedqdiff: new name for `--modmedqdiff'. Similar to NoiseChisel.
diff --git a/THANKS b/THANKS
index f55b913..6a6ea2a 100644
--- a/THANKS
+++ b/THANKS
@@ -50,6 +50,7 @@ support in Gnuastro. The list is ordered alphabetically (by
family name).
Dmitrii Oparin doparin2@gmail.com
Bertrand Pain bertrand.pain@inserm.fr
William Pence william.pence@nasa.gov
+ Mamta Pommier mamta.pommier@univ-lyon1.fr
Bob Proulx bob@proulx.com
Teymoor Saifollahi teymur.saif@gmail.com
Yahya Sefidbakht y.sefidbakht@gmail.com
diff --git a/bin/mkcatalog/ui.c b/bin/mkcatalog/ui.c
index 6f4a41a..836d32f 100644
--- a/bin/mkcatalog/ui.c
+++ b/bin/mkcatalog/ui.c
@@ -1353,13 +1353,7 @@ ui_preparations_upperlimit(struct mkcatalogparams *p)
"that is reported as the upper-limit");
/* Set the random number generator. */
- gsl_rng_env_setup();
- p->rng=gsl_rng_alloc(gsl_rng_ranlxs1);
- p->seed = ( p->envseed
- ? gsl_rng_default_seed
- : gal_timing_time_based_rng_seed() );
- if(p->envseed) gsl_rng_set(p->rng, p->seed);
- p->rngname=gsl_rng_name(p->rng);
+ p->rng=gal_checkset_gsl_rng(p->envseed, &p->rngname, &p->seed);
/* Keep the minimum and maximum values of the random number generator. */
p->rngmin=gsl_rng_min(p->rng);
diff --git a/bin/mknoise/main.h b/bin/mknoise/main.h
index 25ab114..c443f2c 100644
--- a/bin/mknoise/main.h
+++ b/bin/mknoise/main.h
@@ -54,8 +54,8 @@ struct mknoiseparams
gal_data_t *input; /* Input image data in double precision. */
double background; /* Background in units of brightness. */
gsl_rng *rng; /* Main instance of random number generator.*/
- char *rng_type; /* The type of the Random number gen. */
- int64_t rng_seed; /* Seed of Random number generator. */
+ const char *rng_name; /* The type/name of the Random number gen. */
+ uint64_t rng_seed; /* Seed of Random number generator. */
time_t rawtime; /* Starting time of the program. */
};
diff --git a/bin/mknoise/mknoise.c b/bin/mknoise/mknoise.c
index 9abbfe1..5c9d085 100644
--- a/bin/mknoise/mknoise.c
+++ b/bin/mknoise/mknoise.c
@@ -87,10 +87,11 @@ convertsaveoutput(struct mknoiseparams *p)
}
strcpy(keyname4, "RNGTYPE");
gal_fits_key_list_add_end(&headers, GAL_TYPE_STRING, keyname4, 0,
- p->rng_type, 0, "Random number generator (by "
- "GSL) type.", 0, NULL);
+ (void *)(p->rng_name), 0,
+ "Random number generator (by GSL) type.",
+ 0, NULL);
strcpy(keyname5, "RNGSEED");
- gal_fits_key_list_add_end(&headers, GAL_TYPE_INT64, keyname5, 0,
+ gal_fits_key_list_add_end(&headers, GAL_TYPE_UINT64, keyname5, 0,
&p->rng_seed, 0,
"Random number generator (by GSL) seed.",
0, NULL);
diff --git a/bin/mknoise/ui.c b/bin/mknoise/ui.c
index 2ab9849..54a807d 100644
--- a/bin/mknoise/ui.c
+++ b/bin/mknoise/ui.c
@@ -311,13 +311,7 @@ ui_preparations(struct mknoiseparams *p)
/* Allocate the random number generator: */
- gsl_rng_env_setup();
- p->rng=gsl_rng_alloc(gsl_rng_ranlxs1);
- p->rng_seed = ( p->envseed
- ? gsl_rng_default_seed
- : gal_timing_time_based_rng_seed() );
- gsl_rng_set(p->rng, p->rng_seed);
- gal_checkset_allocate_copy(gsl_rng_name(p->rng), &p->rng_type);
+ p->rng=gal_checkset_gsl_rng(p->envseed, &p->rng_name, &p->rng_seed);
}
@@ -404,10 +398,9 @@ ui_read_check_inputs_setup(int argc, char *argv[], struct
mknoiseparams *p)
{
printf(PROGRAM_NAME" "PACKAGE_VERSION" started on %s",
ctime(&p->rawtime));
- sprintf(message, "Random number generator type: %s",
- gsl_rng_name(p->rng));
+ sprintf(message, "Random number generator type: %s", p->rng_name);
gal_timing_report(NULL, message, 1);
- sprintf(message, "Random number generator seed: %"PRId64, p->rng_seed);
+ sprintf(message, "Random number generator seed: %"PRIu64, p->rng_seed);
gal_timing_report(NULL, message, 1);
}
}
@@ -439,7 +432,6 @@ ui_free_report(struct mknoiseparams *p, struct timeval *t1)
{
/* Free the allocated arrays: */
free(p->cp.hdu);
- free(p->rng_type);
free(p->cp.output);
gal_data_free(p->input);
diff --git a/bin/mkprof/main.h b/bin/mkprof/main.h
index ededc0f..aa908bc 100644
--- a/bin/mkprof/main.h
+++ b/bin/mkprof/main.h
@@ -177,6 +177,7 @@ struct mkprofparams
float *t; /* Truncation distance. */
gsl_rng *rng; /* Main instance of random number generator.*/
const char *rng_name; /* Name of random number generator. */
+ uint64_t rng_seed; /* Fixed seed of random number generator. */
time_t rawtime; /* Starting time of the program. */
double *cat; /* Input catalog. */
gal_data_t *log; /* Log data to be printed. */
diff --git a/bin/mkprof/mkprof.c b/bin/mkprof/mkprof.c
index fba9ce4..2f575b4 100644
--- a/bin/mkprof/mkprof.c
+++ b/bin/mkprof/mkprof.c
@@ -222,12 +222,12 @@ saveindividual(struct mkonthread *mkp)
gal_fits_key_list_add(&keys, GAL_TYPE_FLOAT32, "TRUNCATION", 0,
&p->t[id], 0, "Truncation of profile in catalog",
0, NULL);
- gal_fits_key_list_add(&keys, GAL_TYPE_LONG, "RNGSEED", 0,
- &mkp->rng_seed, 0, "Seed of random number generator",
- 0, NULL);
gal_fits_key_list_add(&keys, GAL_TYPE_STRING, "RNGNAME", 0,
(void *)(p->rng_name), 0,
"Name of random number generator", 0, NULL);
+ gal_fits_key_list_add(&keys, GAL_TYPE_LONG, "RNGSEED", 0,
+ &mkp->rng_seed, 0, "Seed of random number generator",
+ 0, NULL);
gal_fits_key_list_add(&keys, GAL_TYPE_SIZE_T, "NUMRANDOM", 0,
&p->numrandom, 0,
"Number of random points in central pixels", 0, NULL);
@@ -322,7 +322,7 @@ mkprof_build_single(struct mkonthread *mkp, long *fpixel_i,
long *lpixel_i,
/* Set the seed of the random number generator if the
environment is not to be used. */
if(mkp->p->envseed)
- mkp->rng_seed=mkp->p->envseed;
+ mkp->rng_seed=mkp->p->rng_seed;
else
{
mkp->rng_seed=gal_timing_time_based_rng_seed();
diff --git a/bin/mkprof/ui.c b/bin/mkprof/ui.c
index a4801f1..7cc505c 100644
--- a/bin/mkprof/ui.c
+++ b/bin/mkprof/ui.c
@@ -1683,10 +1683,8 @@ ui_preparations(struct mkprofparams *p)
if(p->wcs)
ui_finalize_coordinates(p);
- /* Allocate the random number generator: */
- gsl_rng_env_setup();
- p->rng=gsl_rng_alloc(gsl_rng_ranlxs1);
- p->rng_name=gsl_rng_name(p->rng);
+ /* Prepare the random number generator. */
+ p->rng=gal_checkset_gsl_rng(p->envseed, &p->rng_name, &p->rng_seed);
/* Make the log linked list. */
ui_make_log(p);
@@ -1769,6 +1767,8 @@ ui_print_intro(struct mkprofparams *p)
gal_timing_report(NULL, jobname, 1);
free(jobname);
}
+ else
+ gal_timing_report(NULL, "RNG seed differs for each profile.", 1);
if(p->kernel==NULL)
{
diff --git a/bin/noisechisel/detection.c b/bin/noisechisel/detection.c
index 336d619..016bacc 100644
--- a/bin/noisechisel/detection.c
+++ b/bin/noisechisel/detection.c
@@ -486,7 +486,7 @@ static void
detection_sn_write_to_file(struct noisechiselparams *p, gal_data_t *sn,
gal_data_t *snind, int s0d1D2)
{
- char *str, *extname;
+ char *str, *extname=NULL;
gal_list_str_t *comments=NULL;
/* Comment for extension on further explanation. */
diff --git a/bootstrap.conf b/bootstrap.conf
index 9c6d47b..32118c1 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -227,6 +227,7 @@ gnulib_modules="
mbstok_r
inttypes
system-posix
+ secure_getenv
git-version-gen
"
diff --git a/configure.ac b/configure.ac
index 19c2d1b..f8e9530 100644
--- a/configure.ac
+++ b/configure.ac
@@ -247,13 +247,14 @@ AC_MSG_RESULT( $path_warning )
-# Search for necessary libraries. After each library is found,
-# AC_SEARCH_LIBS adds the -lLIBRARY flag to the LIBS variable which is then
-# given to all the Makefiles. Each new flag is added to the left of the old
-# one so order matters here. Note that the LIBS variable is also used in
-# checking the next libraries, so the linking with their dependent
-# libraries is done automatically with this order, and we don't have to
-# explicitly set the dependency flags.
+# Mandatory dependencies
+#
+# After each library is found, AC_SEARCH_LIBS adds the -lLIBRARY flag to
+# the LIBS variable which is then given to all the Makefiles. Each new flag
+# is added to the left of the old one so order matters here. Note that the
+# LIBS variable is also used in checking the next libraries, so the linking
+# with their dependent libraries is done automatically with this order, and
+# we don't have to explicitly set the dependency flags.
has_gsl=yes
has_cmath=yes
has_wcslib=yes
@@ -279,58 +280,6 @@ AC_SEARCH_LIBS([ffopen], [cfitsio], [],
AC_SEARCH_LIBS([wcspih], [wcs], [],
[missing_mandatory=yes; has_wcslib=no])
-
-
-
-
-# If any necessary dependency is missing inform the user and abort.
-AS_IF([test "x$missing_mandatory" = "xyes"],
- [
- # Introduction.
- AS_ECHO([""])
- AS_ECHO(["The configure script couldn't link with the following
mandatory dependency(s):"])
-
- # List missing packages: print the GSL CBLAS message only if GSL is
- # present. Otherwise, it is just confusing for the users (CBLAS
- # will be installed with GSL). The CBLAS message is only
- # interesting if the GSL test has passed.
- AS_ECHO([""])
- AS_IF([test "x$has_cmath" = "xno"],
- [ AS_ECHO([" - C library (math): This may be the cause of all
other failures."]) ])
- AS_IF([test "x$has_gsl" = "xno"],
- [ AS_ECHO([" - GNU Scientific Library (GSL):
https://www.gnu.org/software/gsl"]) ],
- [ AS_IF([test "x$has_gslcblas" = "xno"],
- [ AS_ECHO([" - The BLAS support of GNU Scientific
Library (GSL). This should have"])
- AS_ECHO([" been installed along with GSL. Try
re-installing GSL."]) ]) ])
- AS_IF([test "x$has_cfitsio" = "xno"],
- [ AS_ECHO([" - CFITSIO: https://heasarc.gsfc.nasa.gov/fitsio"])
])
- AS_IF([test "x$has_wcslib" = "xno"],
- [ AS_ECHO([" - WCSLIB:
http://www.atnf.csiro.au/people/mcalabre/WCS"]) ])
-
- # Suggestions on fixing the problem.
- AS_ECHO([""])
- AS_ECHO(["You can use your package manager for easy and fast
installation of all the"])
- AS_ECHO(["mandatory and optional dependencies in one command. See the
link below:"])
- AS_ECHO(["
https://www.gnu.org/software/gnuastro/manual/html_node/Dependencies-from-package-managers.html"])
- AS_ECHO([""])
- AS_ECHO(["If you have already installed a dependency (for example in
\`/install/path'),"])
- AS_ECHO(["but this script can't link with it, add the path to the
LDFLAGS, CPPFLAGS and"])
- AS_ECHO(["LD_LIBRARY_PATH environment variables before running
configure. For example"])
- AS_ECHO(["with the following commands (just correct the
\`/install/path' part)."])
- AS_ECHO([" $ export LDFLAGS=\"\$LDFLAGS -L/install/path/lib\""])
- AS_ECHO([" $ export CPPFLAGS=\"\$CPPFLAGS -L/install/path/include\""])
- AS_ECHO([" $ export
LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH:/install/path/lib\""])
- AS_ECHO(["[TIP] Put these commands in your startup file (for example
\`~/.bashrc') to"])
- AS_ECHO(["avoid similar problems later. See the link below to learn
more:"])
- AS_ECHO(["
https://www.gnu.org/software/gnuastro/manual/html_node/Installation-directory.html"])
- AS_ECHO([""])
- AC_MSG_ERROR([Mandatory dependency(s) missing, see above.])
- ])
-
-
-
-
-
# These are secondary tests for more fine-grained control in libraries that
# have already been checked. We don't need to add them to the LIBS
# variable, so we are using AC_CHECK_LIB for these tests.
@@ -515,6 +464,77 @@ AM_CONDITIONAL([COND_HASGHOSTSCRIPT], [test
"x$has_ghostscript" = "xyes"])
+# If any necessary dependency is missing inform the user and abort.
+AS_IF([test "x$missing_mandatory" = "xyes"],
+ [
+ # List missing packages: print the GSL CBLAS message only if GSL is
+ # present. Otherwise, it is just confusing for the users (CBLAS
+ # will be installed with GSL). The CBLAS message is only
+ # interesting if the GSL test has passed.
+ AS_ECHO([""])
+ AS_ECHO(["Missing MANDATORY dependencies (necessary to continue):"])
+ AS_IF([test "x$has_cmath" = "xno"],
+ [ AS_ECHO([" - C library (math): This may be the cause of all
other failures."]) ])
+ AS_IF([test "x$has_gsl" = "xno"],
+ [ AS_ECHO([" - GNU Scientific Library (GSL):
https://www.gnu.org/software/gsl"]) ],
+ [ AS_IF([test "x$has_gslcblas" = "xno"],
+ [ AS_ECHO([" - The BLAS support of GNU Scientific
Library (GSL). This should have"])
+ AS_ECHO([" been installed along with GSL. Try
re-installing GSL."]) ]) ])
+ AS_IF([test "x$has_cfitsio" = "xno"],
+ [ AS_ECHO([" - CFITSIO: https://heasarc.gsfc.nasa.gov/fitsio"])
])
+ AS_IF([test "x$has_wcslib" = "xno"],
+ [ AS_ECHO([" - WCSLIB:
http://www.atnf.csiro.au/people/mcalabre/WCS"]) ])
+
+ # Optional dependencies:
+ AS_IF([test "x$anywarnings" = xyes],
+ [
+ AS_ECHO([""])
+ AS_ECHO(["OPTIONAL warnings/dependencies (for improved
functionality):"])
+ AS_IF([test "x$gsl_version_old" = "xyes"],
+ [ AS_ECHO([" - Old GSL version:
https://www.gnu.org/s/gsl"]) ])
+ AS_IF([test "x$has_libjpeg" = "xno"],
+ [ AS_ECHO([" - Missing Libjpeg (JPEG files):
http://ijg.org"]) ])
+ AS_IF([test "x$has_libtiff" = "xno"],
+ [ AS_ECHO([" - Missing Libtiff (TIFF files):
http://libtiff.maptools.org"]) ])
+ AS_IF([test "x$has_libgit2" = "x0"],
+ [ AS_ECHO([" - Missing Libgit2: https://libgit2.org"])
])
+ AS_IF([test "x$usable_libtool" = "xno"],
+ [ AS_ECHO([" - Unusable GNU Libtool:
https://www.gnu.org/s/libtool"])
+ AS_IF([test "x$has_gnulibtool" = "xyes"],
+ [ AS_ECHO([" -- GNU Libtool is present, tested
shells not supported."]) ])
+ AS_IF([test "x$has_libtool" = "xyes"],
+ [ AS_ECHO([" -- A libtool implementation was
found, but it isn't GNU."]) ])
+ ])
+ AS_IF([test "x$has_ghostscript" = "xno"],
+ [ AS_ECHO([" - Missing GPL Ghostscript (v9.10 or later):
https://www.ghostscript.com"])])
+ ])
+
+ # Suggestions on fixing the problem.
+ AS_ECHO([""])
+ AS_ECHO(["You can use your package manager for easy and fast
installation of all"])
+ AS_ECHO(["dependencies in one command. See the link below:"])
+ AS_ECHO(["
https://www.gnu.org/s/gnuastro/manual/html_node/Dependencies-from-package-managers.html"])
+ AS_ECHO([""])
+ AS_ECHO(["If you have already installed a dependency (for example in
\`/install/path'),"])
+ AS_ECHO(["but this script can't link with it, add the path to the
LDFLAGS, CPPFLAGS and"])
+ AS_ECHO(["LD_LIBRARY_PATH environment variables before running
configure. For example"])
+ AS_ECHO(["with the following commands (just correct the
\`/install/path' part)."])
+ AS_ECHO([" $ export LDFLAGS=\"\$LDFLAGS -L/install/path/lib\""])
+ AS_ECHO([" $ export CPPFLAGS=\"\$CPPFLAGS -I/install/path/include\""])
+ AS_ECHO([" $ export
LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH:/install/path/lib\""])
+ AS_ECHO([""])
+ AS_ECHO(["[TIP:] Put these commands in your startup file (for example
\`~/.bashrc') to"])
+ AS_ECHO(["avoid similar problems later. See the link below to learn
more:"])
+ AS_ECHO(["
https://www.gnu.org/s/gnuastro/manual/html_node/Installation-directory.html"])
+ AS_ECHO([""])
+ AS_ECHO([""])
+ AC_MSG_ERROR([Mandatory dependency(s) missing, === SEE MESSAGE ABOVE
===.])
+ ])
+
+
+
+
+
# Gnulib checks:
gl_INIT
@@ -827,40 +847,41 @@ AS_IF([test x$enable_guide_message = xyes],
AS_ECHO([])
AS_IF([test "x$gsl_version_old" = "xyes"],
- [AS_ECHO([" - The version of GNU Scientific Library (GSL) on
this system doesn't"])
- AS_ECHO([" have some features that can be useful in
Gnuastro. This build"])
- AS_ECHO([" won't crash, but Gnuastro will have less
functionality afterwards."])
- AS_ECHO([" We thus recommend building and installing a more
recent version"])
- AS_ECHO([" of GSL (version >= 2.0, released in October
2015)."])
+ [AS_ECHO([" - GNU Scientific Library (GSL:
https://www.gnu.org/s/gsl) version"])
+ AS_ECHO([" on this system doesn't have some features that
can be useful in"])
+ AS_ECHO([" some parts of Gnuastro. This build won't crash,
but Gnuastro will"])
+ AS_ECHO([" have less functionality afterwards. We thus
recommend building"])
+ AS_ECHO([" and installing a more recent version of GSL
(version >= 2.0,"])
+ AS_ECHO([" released in October 2015)."])
AS_ECHO([]) ])
AS_IF([test "x$has_libjpeg" = "xno"],
- [AS_ECHO([" - libjpeg, could not be linked with in your library
search path."])
- AS_ECHO([" If JPEG inputs/outputs are requested, the
respective tool will"])
- AS_ECHO([" inform you and abort with an error."])
+ [AS_ECHO([" - libjpeg (http://ijg.org), could not be linked
with in your library"])
+ AS_ECHO([" search path. If JPEG inputs/outputs are
requested, the respective"])
+ AS_ECHO([" tool will inform you and abort with an error."])
AS_ECHO([]) ])
AS_IF([test "x$has_libtiff" = "xno"],
- [AS_ECHO([" - libtiff, could not be linked with in your library
search path."])
- AS_ECHO([" If TIFF inputs/outputs are requested, the
respective tool will"])
- AS_ECHO([" inform you and abort with an error."])
+ [AS_ECHO([" - libtiff (http://libtiff.maptools.org), could not
be linked with in"])
+ AS_ECHO([" your library search path. If TIFF inputs/outputs
are requested, the"])
+ AS_ECHO([" respective tool will inform you and abort with an
error."])
AS_ECHO([]) ])
AS_IF([test "x$has_libgit2" = "x0"],
- [AS_ECHO([" - libgit2, could not be linked with in your library
search path."])
- AS_ECHO([" When present, Git's describe output will be
stored in the"])
- AS_ECHO([" output files if Gnuastro's programs were called
within a Git"])
- AS_ECHO([" version controlled directory to help in
reproducibility."])
+ [AS_ECHO([" - libgit2 (https://libgit2.org), could not be
linked with in your"])
+ AS_ECHO([" library search path. When present, Git's describe
output will be"])
+ AS_ECHO([" stored in the output files if Gnuastro's programs
were called"])
+ AS_ECHO([" within a Gitversion controlled directory to help
in reproducibility."])
AS_ECHO([]) ])
AS_IF([test "x$usable_libtool" = "xno"],
- [AS_ECHO([" - GNU Libtool can't be used on this system (see
below)."])
- AS_ECHO([" Gnuastro's BuildProgram uses GNU libtool to link
your source code"])
- AS_ECHO([" with the various libraries (Gnuastro's
dependencies). Therefore"])
- AS_ECHO([" BuildProgram will not be built or installed.
Please note that"])
- AS_ECHO([" not having GNU libtool in your search path will
not harm the rest"])
- AS_ECHO([" of Gnuastro's building and installation. Gnuastro
has its own"])
- AS_ECHO([" internal implementation of GNU Libtool to build
its self. This"])
+ [AS_ECHO([" - GNU Libtool (https://www.gnu.org/s/libtool) can't
be used on this"])
+ AS_ECHO([" system (see below). Gnuastro's BuildProgram uses
GNU libtool to"])
+ AS_ECHO([" link your source code with the various libraries
(Gnuastro's"])
+ AS_ECHO([" dependencies). Therefore BuildProgram will not be
built or installed."])
+ AS_ECHO([" Please note that not having GNU libtool in your
search path will not"])
+ AS_ECHO([" harm the rest of Gnuastro's building and
installation. Gnuastro has"])
+ AS_ECHO([" its own internal implementation of GNU Libtool to
build its self. This"])
AS_ECHO([" warning is only to let you know that BuildProgram
will not be"])
AS_ECHO([" part of this build. The executable names searched
were \`libtool'"])
AS_ECHO([" and \`glibtool'. The shells searched were \`sh',
\`bash' and \`zsh'."])
@@ -874,9 +895,9 @@ AS_IF([test x$enable_guide_message = xyes],
])
AS_IF([test "x$has_ghostscript" = "xno"],
- [AS_ECHO([" - GPL GhostScript version 9.10 or later, with the
executable"])
- AS_ECHO([" name \`gs', was not found in your PATH
environment variable."])
- AS_ECHO([" If PDF outputs are desired, the respective tool
it will abort"])
+ [AS_ECHO([" - GPL GhostScript (https://www.ghostscript.com)
version 9.10 or later,"])
+ AS_ECHO([" with the executable name \`gs', was not found in
your PATH environment"])
+ AS_ECHO([" variable. If PDF outputs are desired, the
respective tool it will abort"])
AS_ECHO([" with an EPS output which you can convert to PDF
by other means."])
AS_ECHO([]) ])
@@ -901,7 +922,7 @@ AS_IF([test x$enable_guide_message = xyes],
AS_ECHO([" You can use your package manager for easy and fast
installation of all"])
AS_ECHO([" the mandatory and optional dependencies in one command.
See the link"])
AS_ECHO([" below:"])
- AS_ECHO(["
https://www.gnu.org/software/gnuastro/manual/html_node/Dependencies-from-package-managers.html"])
+ AS_ECHO(["
https://www.gnu.org/s/gnuastro/manual/html_node/Dependencies-from-package-managers.html"])
AS_ECHO([])
# Inform the user on skipped tests.
diff --git a/doc/announce-acknowledge.txt b/doc/announce-acknowledge.txt
index e8e934a..815b582 100644
--- a/doc/announce-acknowledge.txt
+++ b/doc/announce-acknowledge.txt
@@ -2,4 +2,6 @@ Alphabetically ordered list to acknowledge in the next release.
Pierre-Alain Duc
Gaspar Galaz
+Mamta Pommier
Michael Stein
+Ignacio Trujillo
diff --git a/doc/gnuastro.en.html b/doc/gnuastro.en.html
index e6a7b32..300e89f 100644
--- a/doc/gnuastro.en.html
+++ b/doc/gnuastro.en.html
@@ -125,7 +125,8 @@ Scientific
Library</a>, <a href="manual/html_node/CFITSIO.html">CFITSIO</a>, <a
href="manual/html_node/WCSLIB.html">WCSLIB</a>.<br />See <a
href="manual/html_node/Dependencies-from-package-managers.html">Dependencies
from package managers</a> for easy installation of Gnuastro's dependencies
using tools like <code>apt-get</code>, <code>dnf</code>
-(or <code>yum</code>), <code>pacman</code> or <code>brew</code>.</p>
+(or <code>yum</code>), <code>pacman</code>, <code>zypper</code>
+or <code>brew</code>.</p>
<p>For a more detailed description, see
the <a href="manual/html_node/Installation.html">Installation</a> chapter
diff --git a/doc/gnuastro.fr.html b/doc/gnuastro.fr.html
index 7b9904d..04fd936 100644
--- a/doc/gnuastro.fr.html
+++ b/doc/gnuastro.fr.html
@@ -124,7 +124,7 @@ h3 { clear: both; }
installation facile des dépendances de Gnuastro en utilisant des
logiciels comme <code>apt-get</code>, <code>dnf</code>
(ou <code>yum</code>),
- <code>pacman</code> ou <code>brew</code>.</p>
+ <code>pacman</code>, <code>zypper</code> ou <code>brew</code>.</p>
<p>Dans le chapitre <cite><a href="manual/html_node/Installation.html">
Installation</a></cite>, vous trouverez des explications complètes sur
diff --git a/doc/gnuastro.texi b/doc/gnuastro.texi
index 2390288..8014ace 100644
--- a/doc/gnuastro.texi
+++ b/doc/gnuastro.texi
@@ -4261,12 +4261,22 @@ more than 20 times) than the standard deviation (final
extension). So we
can stop configuring NoiseChisel at this point in the tutorial. We leave
further configuration for a more accurate detection to you as an exercise.
-Let's see how deeply/successfully we carved out M51 and NGC 5195's tail
-from the noise. For this measurement, we'll need to estimate the average
-flux on the outer edges of the detection. Fortunately all this can be done
-with a few simple commands (and no higher-level language mini-environments)
-using @ref{Arithmetic} and @ref{MakeCatalog}. First, let's give a separate
-label to all the connected pixels of NoiseChisel's detection map:
+In this shallow image, this extent may seem too far deep into the noise for
+visual confirmation. Therefore, if the statistical argument above, to
+justify the reality of this extented structure, hasn't convinced you, see
+the deep images of this system in @url{https://arxiv.org/abs/1501.04599,
+Watkins et al. [2015]}, or a 12 hour deep image of this system (with a
+12-inch telescope): @url{https://i.redd.it/jfqgpqg0hfk11.jpg}@footnote{The
+image is taken from this Reddit discussion:
+@url{https://www.reddit.com/r/Astronomy/comments/9d6x0q/12_hours_of_exposure_on_the_whirlpool_galaxy/}}.
+
+Now that we know this detection is real, let's measure how deep we carved
+the signal out of noise. For this measurement, we'll need to estimate the
+average flux on the outer edges of the detection. Fortunately all this can
+be done with a few simple commands (and no higher-level language
+mini-environments) using @ref{Arithmetic} and @ref{MakeCatalog}. First,
+let's give a separate label to all the connected pixels of NoiseChisel's
+detection map:
@example
$ astarithmetic r_detected.fits 2 connected-components -hDETECTIONS \
@@ -4347,11 +4357,12 @@ The outer wings where therefore non-parametrically
detected until
@mymath{\rm{S/N}\approx0.05}!
@cindex Surface brightness
-This is very good, but how much is this in standard units of surface
-brightness, or magnitudes per square arcseconds? To find out, we'll first
-need to calculate how many pixels of this image are in one
+This is very good! But the signal-to-noise ratio is a relative measurement.
+Let's also measure the depth of our detection in absolute surface
+brighntess units; or magnitudes per square arcseconds. To find out, we'll
+first need to calculate how many pixels of this image are in one
arcsecond-squared. Fortunately the world coordinate system (or WCS) meta
-data of Gnuastro's output FITS files (and in particular @code{CDELT}
+data of Gnuastro's output FITS files (in particular the @code{CDELT}
keywords) give us this information.
@example
@@ -4959,7 +4970,7 @@ is a large collection of functions that are very useful
in scientific
applications, for example integration, random number generation, and Fast
Fourier Transform among many others. To install GSL from source, you can
run the following commands after you have downloaded
-@url{ftp://ftp.gnu.org/gnu/gsl/gsl-latest.tar.gz,
+@url{http://ftpmirror.gnu.org/gsl/gsl-latest.tar.gz,
@file{gsl-latest.tar.gz}}:
@example
@@ -18565,6 +18576,8 @@ deviation of the final distribution (and thus bias the
upper-limit
measurement).
@item --envseed
+@cindex Seed, Random number generator
+@cindex Random number generator, Seed
Read the random number generator type and seed value from the environment
(see @ref{Generating random numbers}). Random numbers are used in
calculating the random positions of different samples of each object.
@@ -19825,6 +19838,8 @@ distribution. This can be done by setting the
@code{GSL_RNG_TYPE} and
with the @option{--envseed} option. To learn more about the process of
generating random numbers, see @ref{Generating random numbers}.
+@cindex Seed, Random number generator
+@cindex Random number generator, Seed
The seed values are fixed for every profile: with @option{--envseed},
all the profiles have the same seed and without it, each will get a
different seed using the system clock (which is accurate to within one
@@ -20321,6 +20336,8 @@ profile, see @ref{Sampling from a function}.
@item -e
@itemx --envseed
+@cindex Seed, Random number generator
+@cindex Random number generator, Seed
Use the value to the @code{GSL_RNG_SEED} environment variable to
generate the random Monte Carlo sampling distribution, see
@ref{Sampling from a function} and @ref{Generating random
@@ -20982,7 +20999,6 @@ affordable!}!
@cindex Psudo-random numbers
@cindex Numbers, psudo-random
-@cindex Seed, psudo-random numbers
Using only software, we can only produce what is called a psudo-random
sequence of numbers. A true random number generator is a hardware (let's
assume we have made sure it has no systematic biases), for example
@@ -21008,17 +21024,19 @@ them!). Through the two environment variables
@code{GSL_RNG_TYPE} and
@code{GSL_RNG_SEED} you can specify the generator and its seed
respectively.
+@cindex Seed, Random number generator
+@cindex Random number generator, Seed
If you don't specify a value for @code{GSL_RNG_TYPE}, GSL will use its
-default random number generator type. The default type is sufficient
-for most general applications. If no value is given for the
-@code{GSL_RNG_SEED} environment variable and you have asked Gnuastro
-to read the seed from the environment (through the @option{--envseed}
-option), then GSL will use the default value of each generator to give
-identical outputs. If you don't explicitly tell Gnuastro programs to
-read the seed value from the environment variable, then they will use
-the system time (accurate to within a microsecond) to generate
-(apparently random) seeds. In this manner, every time you run the
-program, you will get a different random number distribution.
+default random number generator type. The default type is sufficient for
+most general applications. If no value is given for the @code{GSL_RNG_SEED}
+environment variable and you have asked Gnuastro to read the seed from the
+environment (through the @option{--envseed} option), then GSL will use the
+default value of each generator to give identical outputs. If you don't
+explicitly tell Gnuastro programs to read the seed value from the
+environment variable, then they will use the system time (accurate to
+within a microsecond) to generate (apparently random) seeds. In this
+manner, every time you run the program, you will get a different random
+number distribution.
There are two ways you can specify values for these environment
variables. You can call them on the same command-line for example:
@@ -21063,16 +21081,20 @@ can see the top few lines of the output of
MakeProfiles:
@example
$ export GSL_RNG_TYPE="taus"
$ export GSL_RNG_SEED=345
-$ astmkprof catalog.txt --envseed
+$ astmkprof -s1 --kernel=gaussian,2,5 --envseed
GSL_RNG_TYPE=taus
GSL_RNG_SEED=345
-MakeProfiles started on AAA BBB DD EE:FF:GG HHH
- - 6 profiles read from catalog.txt 0.000236 seconds
- - Random number generator (RNG) type: taus
+MakeProfiles A.B started on DDD MMM DD HH:MM:SS YYYY
+ - Building one gaussian kernel
+ - Random number generator (RNG) type: ranlxs1
- RNG seed for all profiles: 345
+ ---- ./kernel.fits created.
+MakeProfiles finished in 0.111271 seconds
@end example
@noindent
+@cindex Seed, Random number generator
+@cindex Random number generator, Seed
The first two output lines (showing the names of the environment
variables) are printed by GSL before MakeProfiles actually starts
generating random numbers. The Gnuastro programs will report the
@@ -21144,6 +21166,8 @@ noise}.
@item -e
@itemx --envseed
+@cindex Seed, Random number generator
+@cindex Random number generator, Seed
Use the @code{GSL_RNG_SEED} environment variable for the seed used in
the random number generator, see @ref{Generating random numbers}. With
this option, the output image noise is always going to be identical
@@ -27834,10 +27858,10 @@ sort-related bit flags accordingly.
@deftypefun {gal_data_t *} gal_statistics_no_blank_sorted (gal_data_t
@code{*input}, int @code{inplace})
Remove all the blanks and sort the input dataset. If @code{inplace} is
-non-zero this will happen on the input dataset (and the output dataset will
-be the input dataset). However, if @code{inplace} is zero, this function
-will allocate a new copy of the dataset that is sorted and has no blank
-values.
+non-zero this will happen on the input dataset (in the allocated space of
+the input dataset). However, if @code{inplace} is zero, this function will
+allocate a new copy of the dataset and work on that. Therefore if
+@code{inplace==0}, the input dataset will be modified.
This function uses the bit flags of the input, so if you have modified the
dataset, set @code{input->flags=0} before calling this function. Also note
@@ -27849,7 +27873,11 @@ If all the elements were blank, then the returned
dataset's @code{size}
will be zero. This is thus a good parameter to check after calling this
function to see if there actually were any non-blank elements in the input
or not and take the appropriate measure. This can help avoid strange bugs
-in later steps.
+in later steps. The flags of a zero-sized returned dataset will indicate
+that it has no blanks and is sorted in an increasing order. Even if having
+blank values or being sorted is not defined on a zero-element dataset, it
+is up to the caller to choose what they will do with a zero-element
+dataset. The flags have to be set after this function any way.
@end deftypefun
@deftypefun {gal_data_t *} gal_statistics_regular_bins (gal_data_t
@code{*input}, gal_data_t @code{*inrange}, size_t @code{numbins}, double
@code{onebinstart})
diff --git a/doc/release-checklist.txt b/doc/release-checklist.txt
index 5a13694..1ffa2de 100644
--- a/doc/release-checklist.txt
+++ b/doc/release-checklist.txt
@@ -71,16 +71,6 @@ all the commits needed for this release have been completed.
$ git add -u
$ git commit
- - Make sure all the bootstrapping tools are up to date (keep the
- versions in text file to use in the release), then bootstrap and
- rebuild everything:
-
- $ git clean -fxd
- $ ./bootstrap --copy --gnulib-srcdir=/path/to/gnulib
- $ ./developer-build -c -C -d # using `-d' to speed up the build.
- $ cd build
- $ make distcheck -j8
-
- [ALPHA] For alpha, we will only be distributing lzip tarballs. So first
remove the `tar.gz' file that was produced by `make distcheck', then
@@ -199,6 +189,18 @@ Packaging in Debian
Steps necessary to Package Gnuastro for Debian.
+ - Make sure the tarball is built with updated bootstrapped parts:
+
+ $ cd path/to/gnulib
+ $ git pull
+ $ cd path/to/autoconf-archives
+ $ git pull
+ $ cd gnuastro
+ $ git clean -fxd
+ $ ./bootstrap --copy --gnulib-srcdir=/path/to/gnulib
+ $ ./developer-build -p upload-server:folder
+
+
- It would help to use the most recent versions of packages in Debian. To
do that, you can update the `/etc/apt/sources.list' file. You can get
the current releases from this webpage:
diff --git a/lib/checkset.c b/lib/checkset.c
index af5d01c..b58e96f 100644
--- a/lib/checkset.c
+++ b/lib/checkset.c
@@ -30,10 +30,9 @@ along with Gnuastro. If not, see
<http://www.gnu.org/licenses/>.
#include <unistd.h>
#include <sys/stat.h>
-#include <fitsio.h>
-
#include <gnuastro/data.h>
+#include <gnuastro-internal/timing.h>
#include <gnuastro-internal/checkset.h>
@@ -44,6 +43,60 @@ along with Gnuastro. If not, see
<http://www.gnu.org/licenses/>.
+/**************************************************************/
+/********** Environment ************/
+/**************************************************************/
+/* The GSL random number generator (RNG) reads values from the
+ environment. This function is designed to make the job easier for any
+ program using GSL's RNG. If the user doesn't want to set the */
+gsl_rng *
+gal_checkset_gsl_rng(uint8_t envseed_bool, const char **name, uint64_t *seed)
+{
+ gsl_rng *rng;
+
+ /* Let GSL read the environment and convert the type name (as string) to
+ `gsl_rng_type'. After this function, `gsl_rng_default' contains the
+ generator's type and `gsl_rng_default_seed' contains the (possibly)
+ given seed.*/
+ gsl_rng_env_setup();
+
+ /* Allocate the random number generator based on the requested type and
+ save its name. If no `GSL_RNG_TYPE' is set, then use a fixed
+ generator.*/
+ rng=gsl_rng_alloc(secure_getenv("GSL_RNG_TYPE")
+ ? gsl_rng_default
+ : gsl_rng_ranlxs1);
+ *name = gsl_rng_name(rng);
+
+ /* Initialize the random number generator, depending on the
+ `envseed_bool' argument. */
+ *seed = ( envseed_bool
+ ? gsl_rng_default_seed
+ : gal_timing_time_based_rng_seed() );
+ gsl_rng_set(rng, *seed);
+
+ /* Return the GSL RNG structure. */
+ return rng;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/**************************************************************/
/********** My String functions: ************/
diff --git a/lib/gnuastro-internal/checkset.h b/lib/gnuastro-internal/checkset.h
index ee6314a..204c325 100644
--- a/lib/gnuastro-internal/checkset.h
+++ b/lib/gnuastro-internal/checkset.h
@@ -27,6 +27,7 @@ along with Gnuastro. If not, see
<http://www.gnu.org/licenses/>.
must be included before the C++ preparations below */
#include <math.h>
#include <fitsio.h>
+#include <gsl/gsl_rng.h>
#include <gnuastro-internal/options.h>
/* C++ Preparations */
@@ -49,9 +50,12 @@ __BEGIN_C_DECLS /* From C++ preparations */
-
-
-
+/**************************************************************/
+/********** Environment ************/
+/**************************************************************/
+gsl_rng *
+gal_checkset_gsl_rng(uint8_t envseed_bool, const char **name,
+ uint64_t *seed);
diff --git a/lib/statistics.c b/lib/statistics.c
index ea3dee5..981bbec 100644
--- a/lib/statistics.c
+++ b/lib/statistics.c
@@ -1421,10 +1421,23 @@ gal_statistics_no_blank_sorted(gal_data_t *input, int
inplace)
else
sorted=noblank;
}
-
/* When the input's size is zero, just return the actual input. */
else
- sorted=input;
+ sorted = inplace ? input : gal_data_copy(input);
+
+ /* Set the blank and sorted flags if the dataset has zero-elements. Even
+ if having blank values or being sorted is not defined on a
+ zero-element dataset, it is up to different functions to choose what
+ they will do with a zero-element dataset. The flags have to be set
+ after this function any way. */
+ if(sorted->size==0)
+ {
+ sorted->flag |= GAL_DATA_FLAG_SORT_CH;
+ sorted->flag |= GAL_DATA_FLAG_BLANK_CH;
+ sorted->flag |= GAL_DATA_FLAG_SORTED_I;
+ sorted->flag &= ~GAL_DATA_FLAG_HASBLANK;
+ sorted->flag &= ~GAL_DATA_FLAG_SORTED_D;
+ }
/* Return final array. */
- [gnuastro-commits] master b1ea932 054/113: Separate Segment program now available in 3D, (continued)
- [gnuastro-commits] master b1ea932 054/113: Separate Segment program now available in 3D, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master f537368 066/113: Segment's default 3D configuration file in tarball, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 133e277 071/113: Imported recent work from master, conflicts fixed, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master a42ac37 085/113: Fixed MakeProfiles loop in checking radius values, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 1f9d941 090/113: Imported recent work in master, conflicts fixed, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 737a0cd 046/113: Merged recent corrections in master branch, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 486f915 067/113: Imported recent work in master, conflicts fixed, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master d6051a1 074/113: Upperlimit magnitude in 3D, corrected creation of check table, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 5dac3c3 075/113: Recent work in master imported, small conflict in book fixed, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 3882956 077/113: Narrow-band areas from MakeCatalog in 3D datasets, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master abe82cb 086/113: Imported recent work in master, no conflicts,
Mohammad Akhlaghi <=
- [gnuastro-commits] master 924787b 098/113: Updated copyright year in files specific to this branch, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master fbbc2fc 100/113: Imported recent work in master, minor conflict fixed, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 22d0fba 089/113: Imported recent work in master, no conflicts, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 8edc804 092/113: Imported recent work in master, minor conflic fixed, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master b5385f7 093/113: Projected spectra given NaN when no measurement on slice, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master ac2a821 103/113: Imported recent work in master, conflicts fixed, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 3f51e31 108/113: Imported work in master, conflicts fixed, corrections made, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 45bd003 049/113: Imported recent work in master, conflicts fixed, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 6f85919 060/113: Connectivity of 2, for filling pseudo-detection holes in 3D, Mohammad Akhlaghi, 2021/04/16
- [gnuastro-commits] master 442d052 061/113: Imported work in master, no conflicts, Mohammad Akhlaghi, 2021/04/16