Commit dd49b374 authored by Emmanuel Bertin's avatar Emmanuel Bertin
Browse files

Improved the quality of model resampling for subsampled objects.

Implemented a more consistent model size and flux scaling scheme for subsampled objects.
Fixed Sersic model generation bug.
Pushed version number to 2.9.6.
parent 753719ab
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.63 for sextractor 2.9.5.
# Generated by GNU Autoconf 2.63 for sextractor 2.9.6.
#
# Report bugs to <bertin@iap.fr>.
#
@@ -750,8 +750,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='sextractor'
PACKAGE_TARNAME='sextractor'
PACKAGE_VERSION='2.9.5'
PACKAGE_STRING='sextractor 2.9.5'
PACKAGE_VERSION='2.9.6'
PACKAGE_STRING='sextractor 2.9.6'
PACKAGE_BUGREPORT='bertin@iap.fr'
ac_unique_file="src/makeit.c"
@@ -1505,7 +1505,7 @@ if test "$ac_init_help" = "long"; then
  # Omit some internal or obsolete options to make the list less imposing.
  # This message is too long to be a string in the A/UX 3.1 sh.
  cat <<_ACEOF
\`configure' configures sextractor 2.9.5 to adapt to many kinds of systems.
\`configure' configures sextractor 2.9.6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1575,7 +1575,7 @@ fi
if test -n "$ac_init_help"; then
  case $ac_init_help in
     short | recursive ) echo "Configuration of sextractor 2.9.5:";;
     short | recursive ) echo "Configuration of sextractor 2.9.6:";;
   esac
  cat <<\_ACEOF
@@ -1706,7 +1706,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
  cat <<\_ACEOF
sextractor configure 2.9.5
sextractor configure 2.9.6
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1720,7 +1720,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by sextractor $as_me 2.9.5, which was
It was created by sextractor $as_me 2.9.6, which was
generated by GNU Autoconf 2.63.  Invocation command line was
  $ $0 $@
@@ -2423,7 +2423,7 @@ fi
# Define the identity of the package.
 PACKAGE='sextractor'
 VERSION='2.9.5'
 VERSION='2.9.6'
cat >>confdefs.h <<_ACEOF
@@ -28291,7 +28291,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by sextractor $as_me 2.9.5, which was
This file was extended by sextractor $as_me 2.9.6, which was
generated by GNU Autoconf 2.63.  Invocation command line was
  CONFIG_FILES    = $CONFIG_FILES
@@ -28354,7 +28354,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
sextractor config.status 2.9.5
sextractor config.status 2.9.6
configured by $0, generated by GNU Autoconf 2.63,
  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ define([AC_CACHE_LOAD],)
define([AC_CACHE_SAVE],)

# This is your standard Bertin source code...
AC_INIT(sextractor, 2.9.5, [bertin@iap.fr])
AC_INIT(sextractor, 2.9.6, [bertin@iap.fr])
AC_CONFIG_SRCDIR(src/makeit.c)
AC_CONFIG_AUX_DIR(autoconf)
AM_CONFIG_HEADER(config.h)
+1 −1
Original line number Diff line number Diff line
.TH SEXTRACTOR "1" "October 2009" "SWarp 2.9.5" "User Commands"
.TH SEXTRACTOR "1" "October 2009" "SWarp 2.9.6" "User Commands"
.SH NAME
sex \- extract a source catalog from an astronomical FITS image
.SH SYNOPSIS
+55 −27
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
*
*	Contents:	Fit an arbitrary profile combination to a detection.
*
*	Last modify:	06/10/2009
*	Last modify:	09/10/2009
*
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
@@ -173,7 +173,7 @@ OUTPUT Pointer to an allocated fit structure (containing details about the
	fit).
NOTES	It is a modified version of the lm_minimize() of lmfit.
AUTHOR	E. Bertin (IAP)
VERSION	06/10/2009
VERSION	09/10/2009
 ***/
void	profit_fit(profitstruct *profit,
		picstruct *field, picstruct *wfield,
@@ -217,13 +217,14 @@ void profit_fit(profitstruct *profit,
    profit->objnaxisn[0] = profit->objnaxisn[1];
  if (profit->objnaxisn[0]>PROFIT_MAXOBJSIZE)
    {
    profit->nsubsamp = ceil((float)profit->objnaxisn[0]/PROFIT_MAXOBJSIZE);
    profit->objnaxisn[1] = (profit->objnaxisn[0] /= (int)profit->nsubsamp);
    profit->pixstep *= profit->nsubsamp;
    profit->subsamp = ceil((float)profit->objnaxisn[0]/PROFIT_MAXOBJSIZE);
//    profit->fluxfac *= profit->subsamp*profit->subsamp;
    profit->objnaxisn[1] = (profit->objnaxisn[0] /= (int)profit->subsamp);
//    profit->pixstep *= profit->subsamp;
    obj2->prof_flag |= PROFLAG_OBJSUB;
    }
  else
    profit->nsubsamp = 1.0;
    profit->subsamp = 1.0;

/* Use (dirty) global variables to interface with lmfit */
  the_field = field;
@@ -257,9 +258,11 @@ void profit_fit(profitstruct *profit,

/* Create pixmap at PSF resolution */
  profit->modnaxisn[0] =
	((int)(profit->objnaxisn[0]/profit->pixstep +0.4999)/2+1)*2; 
	((int)(profit->objnaxisn[0]*profit->subsamp/profit->pixstep
		+0.4999)/2+1)*2; 
  profit->modnaxisn[1] =
	((int)(profit->objnaxisn[1]/profit->pixstep +0.4999)/2+1)*2; 
	((int)(profit->objnaxisn[1]*profit->subsamp/profit->pixstep
		+0.4999)/2+1)*2; 
  if (profit->modnaxisn[1] < profit->modnaxisn[0])
    profit->modnaxisn[1] = profit->modnaxisn[0];
  else
@@ -1101,7 +1104,7 @@ INPUT Profile-fitting structure.
OUTPUT	-.
NOTES	-.
AUTHOR	E. Bertin (IAP)
VERSION	07/09/2009
VERSION	09/10/2009
 ***/
void	profit_resample(profitstruct *profit, float *inpix, PIXTYPE *outpix,
	float factor)
@@ -1109,8 +1112,8 @@ void profit_resample(profitstruct *profit, float *inpix, PIXTYPE *outpix,
   double	flux;
   float	posin[2], posout[2], dnaxisn[2],
		*dx,*dy,
		xcout,ycout, xcin,ycin, invpixstep;
   int		d,i;
		xcout,ycout, xcin,ycin, invpixstep, pix, off,step;
   int		d,i, ix,iy,ns;

  xcout = (float)(profit->objnaxisn[0]/2) + 1.0;	/* FITS convention */
  if ((dx=(profit->paramlist[PARAM_X])))
@@ -1120,7 +1123,7 @@ void profit_resample(profitstruct *profit, float *inpix, PIXTYPE *outpix,
    ycout += *dy;
  xcin = (profit->modnaxisn[0]/2) + 1.0;		/* FITS convention */
  ycin = (profit->modnaxisn[1]/2) + 1.0;		/* FITS convention */
  invpixstep = 1.0/profit->pixstep;
  invpixstep = profit->subsamp/profit->pixstep;

/* Initialize multi-dimensional counters */
  for (d=0; d<2; d++)
@@ -1129,8 +1132,33 @@ void profit_resample(profitstruct *profit, float *inpix, PIXTYPE *outpix,
    dnaxisn[d] = profit->objnaxisn[d]+0.5;
    }

/* Remap each pixel */
/* Remap each pixel (and rebin if necessary) */
  flux = 0.0;
  ns=(int)profit->subsamp;
  if (ns>1)
    {
    step = 1.0/profit->subsamp;
    off = 0.5*(step - 1.0);
    xcin += off;
    ycin += off;
    for (i=profit->objnaxisn[0]*profit->objnaxisn[1]; i--;)
      {
      posin[0] = (posout[0] - xcout)*invpixstep + xcin;
      posin[1] = (posout[1] - ycout)*invpixstep + ycin;
      pix = 0.0;
      for (iy=ns; iy--; posin[1] += step)
        for (ix=ns; ix--; posin[0] += step)
          pix += (PIXTYPE)(factor*interpolate_pix(posin, inpix,
		profit->modnaxisn, INTERP_LANCZOS3));
      flux += (*(outpix++) = pix);
      for (d=0; d<2; d++)
        if ((posout[d]+=1.0) < dnaxisn[d])
          break;
        else
          posout[d] = 1.0;
      }
    }
  else
    for (i=profit->objnaxisn[0]*profit->objnaxisn[1]; i--;)
      {
      posin[0] = (posout[0] - xcout)*invpixstep + xcin;
@@ -1320,7 +1348,7 @@ int profit_copyobjpix(profitstruct *profit, picstruct *field,
    return 0;

  backnoise2 = field->backsig*field->backsig;
  sn = (int)profit->nsubsamp;
  sn = (int)profit->subsamp;
  sflag = (sn>1);
  w = profit->objnaxisn[0]*sn;
  h = profit->objnaxisn[1]*sn;
@@ -2399,7 +2427,7 @@ INPUT Profile structure,
OUTPUT	Corrected flux contribution.
NOTES	-.
AUTHOR	E. Bertin (IAP)
VERSION	08/10/2009
VERSION	09/10/2009
 ***/
float	prof_add(profstruct *prof, profitstruct *profit)
  {
@@ -2518,7 +2546,7 @@ float prof_add(profstruct *prof, profitstruct *profit)
/*---- Copy the symmetric part */
      if ((npix2=(profit->modnaxisn[1]-nx2)*profit->modnaxisn[0]) > 0)
        {
        pixin2 = pixin - profit->modnaxisn[0] - 1;
        pixin2 = pixin - profit->modnaxisn[0];
        for (i=npix2; i--;)
          *(pixin++) = *(pixin2--);
        }
+3 −3
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
*
*	Contents:	Include file for profit.c.
*
*	Last modify:	07/10/2009
*	Last modify:	09/10/2009
*
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
@@ -36,7 +36,7 @@
#define	PROFIT_HIDEFRES	201	/* Resolution of the high def. model raster */
#define	PROFIT_REFFFAC	6.0	/* Factor in r_eff for measurement radius*/
#define	PROFIT_DYNPARAM	10.0	/* Dynamic compression param. in sigma units */
#define	PROFIT_MAXMODSIZE  1024	/* Maximum size allowed for the model raster */
#define	PROFIT_MAXMODSIZE  512	/* Maximum size allowed for the model raster */
#define	PROFIT_MAXOBJSIZE  512	/* Maximum size allowed for the object raster */
#define	PROFIT_BARXFADE	0.1	/* Fract. of bar length crossfaded with arms */
#define	PROFIT_MAXEXTRA	2	/* Max. nb of extra free params of profiles */
@@ -125,7 +125,7 @@ typedef struct
  struct psf	*psf;		/* PSF */
  float		pixstep;	/* Model/PSF sampling step */
  float		fluxfac;	/* Model flux scaling factor */
  float		nsubsamp;	/* Subsampling factor */
  float		subsamp;	/* Subsampling factor */
  float		*psfdft;	/* Compressed Fourier Transform of the PSF */
  float		*psfpix;	/* Full res. pixmap of the PSF */
  float		*modpix;	/* Full res. pixmap of the complete model */