IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 13803


Ignore:
Timestamp:
Jun 13, 2007, 1:41:51 PM (19 years ago)
Author:
magnier
Message:

replaced pmModel.status with pmModel.flags; using bit values instead of ints; names are now of the form PM_MODEL_STATUS_XXX; no error on limit saturation for model parameters

Location:
trunk/psModules/src/objects
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/models/pmModel_GAUSS.c

    r13424 r13803  
    104104        if (fabs(beta[nParam]) > fabs(beta_lim)) {
    105105            beta[nParam] = (beta[nParam] > 0) ? fabs(beta_lim) : -fabs(beta_lim);
     106            psTrace ("psModules.objects", 5, "|beta[nParam==%d]| > |beta_lim|; %g v. %g",
     107                     nParam, beta[nParam], beta_lim);
    106108            return false;
    107109        }
     
    135137        if (params[nParam] < params_min) {
    136138            params[nParam] = params_min;
     139            psTrace ("psModules.objects", 5, "params[nParam==%d] < params_min; %g v. %g",
     140                     nParam, params[nParam], params_min);
    137141            return false;
    138142        }
     
    166170        if (params[nParam] > params_max) {
    167171            params[nParam] = params_max;
     172            psTrace ("psModules.objects", 5, "params[nParam==%d] > params_max; %g v. %g",
     173                     nParam, params[nParam], params_max);
    168174            return false;
    169175        }
     
    285291        if (psf->params_NEW->data[i] == NULL)
    286292            continue;
    287         PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MIN, i, out, NULL);
    288         PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MAX, i, out, NULL);
     293
     294        bool status = true;
     295        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MIN, i, out, NULL);
     296        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MAX, i, out, NULL);
     297        if (!status) {
     298            psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)",
     299                     in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
     300            modelPSF->flags |= PM_MODEL_STATUS_LIMITS;
     301        }
    289302    }
    290303    return(true);
  • trunk/psModules/src/objects/models/pmModel_PGAUSS.c

    r13424 r13803  
    106106        if (fabs(beta[nParam]) > fabs(beta_lim)) {
    107107            beta[nParam] = (beta[nParam] > 0) ? fabs(beta_lim) : -fabs(beta_lim);
     108            psTrace ("psModules.objects", 5, "|beta[nParam==%d]| > |beta_lim|; %g v. %g",
     109                     nParam, beta[nParam], beta_lim);
    108110            return false;
    109111        }
     
    137139        if (params[nParam] < params_min) {
    138140            params[nParam] = params_min;
     141            psTrace ("psModules.objects", 5, "params[nParam==%d] < params_min; %g v. %g",
     142                     nParam, params[nParam], params_min);
    139143            return false;
    140144        }
     
    168172        if (params[nParam] > params_max) {
    169173            params[nParam] = params_max;
     174            psTrace ("psModules.objects", 5, "params[nParam==%d] > params_max; %g v. %g",
     175                     nParam, params[nParam], params_max);
    170176            return false;
    171177        }
     
    305311        if (psf->params_NEW->data[i] == NULL)
    306312            continue;
    307         PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MIN, i, out, NULL);
    308         PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MAX, i, out, NULL);
     313
     314        bool status = true;
     315        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MIN, i, out, NULL);
     316        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MAX, i, out, NULL);
     317        if (!status) {
     318            psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)",
     319                     in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
     320            modelPSF->flags |= PM_MODEL_STATUS_LIMITS;
     321        }
    309322    }
    310323    return(true);
  • trunk/psModules/src/objects/models/pmModel_QGAUSS.c

    r13567 r13803  
    127127        if (fabs(beta[nParam]) > fabs(beta_lim)) {
    128128            beta[nParam] = (beta[nParam] > 0) ? fabs(beta_lim) : -fabs(beta_lim);
    129             psError(PM_ERR_PSF, true, "|beta[nParam==%d]| > |beta_lim|; %g v. %g",
    130                     nParam, beta[nParam], beta_lim);
     129            psTrace ("psModules.objects", 5, "|beta[nParam==%d]| > |beta_lim|; %g v. %g",
     130                     nParam, beta[nParam], beta_lim);
    131131            return false;
    132132        }
     
    163163        if (params[nParam] < params_min) {
    164164            params[nParam] = params_min;
    165             psError(PM_ERR_PSF, true, "params[nParam==%d] < params_min; %g v. %g",
    166                     nParam, params[nParam], params_min);
     165            psTrace ("psModules.objects", 5, "params[nParam==%d] < params_min; %g v. %g",
     166                     nParam, params[nParam], params_min);
    167167            return false;
    168168        }
     
    199199        if (params[nParam] > params_max) {
    200200            params[nParam] = params_max;
    201             psError(PM_ERR_PSF, true, "params[nParam==%d] > params_max; %g v. %g",
    202                     nParam, params[nParam], params_max);
     201            psTrace ("psModules.objects", 5, "params[nParam==%d] > params_max; %g v. %g",
     202                     nParam, params[nParam], params_max);
    203203            return false;
    204204        }
     
    372372            continue;
    373373
    374         if (!PM_MODEL_LIMITS(PS_MINIMIZE_PARAM_MIN, i, out, NULL) ||
    375             !PM_MODEL_LIMITS(PS_MINIMIZE_PARAM_MAX, i, out, NULL)) {
    376             psError(PM_ERR_PSF, false, "Setting limits at (r,c) = (%.1f, %.1f)",
    377                     in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
    378             return false;
     374        bool status = true;
     375        status &= PM_MODEL_LIMITS(PS_MINIMIZE_PARAM_MIN, i, out, NULL);
     376        status &= PM_MODEL_LIMITS(PS_MINIMIZE_PARAM_MAX, i, out, NULL);
     377        if (!status) {
     378            psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)",
     379                     in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
     380            modelPSF->flags |= PM_MODEL_STATUS_LIMITS;
    379381        }
    380382    }
    381383
    382     return(true);
     384    return true;
    383385}
    384386
  • trunk/psModules/src/objects/pmModel.c

    r13038 r13803  
    66 *  @author EAM, IfA
    77 *
    8  *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2007-04-26 01:45:35 $
     8 *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2007-06-13 23:41:51 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    5959    tmp->nIter = 0;
    6060    tmp->radiusFit = 0;
    61     tmp->status = PM_MODEL_UNTRIED;
     61    tmp->flags = PM_MODEL_STATUS_NONE;
    6262    tmp->residuals = NULL;              // XXX should the model own this memory?
    6363
     
    8686    pmModel *new = pmModelAlloc (model->type);
    8787
    88     new->chisq  = model->chisq;
    89     new->nDOF   = model->nDOF;
    90     new->nIter  = model->nIter;
    91     new->status = model->status;
     88    new->chisq     = model->chisq;
     89    new->nDOF      = model->nDOF;
     90    new->nIter     = model->nIter;
     91    new->flags     = model->flags;
    9292    new->radiusFit = model->radiusFit;
    9393
  • trunk/psModules/src/objects/pmModel.h

    r13335 r13803  
    55 * @author EAM, IfA
    66 *
    7  * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
    8  * @date $Date: 2007-05-10 19:48:35 $
     7 * @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
     8 * @date $Date: 2007-06-13 23:41:51 $
    99 *
    1010 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    2121
    2222typedef enum {
    23     PM_MODEL_UNTRIED,   ///< model fit not yet attempted
    24     PM_MODEL_SUCCESS,   ///< model fit succeeded
    25     PM_MODEL_NONCONVERGE,  ///< model fit did not converge
    26     PM_MODEL_OFFIMAGE,   ///< model fit drove out of range
    27     PM_MODEL_BADARGS   ///< model fit called with invalid args
     23    PM_MODEL_STATUS_NONE         = 0x00, ///< model fit not yet attempted, no other info
     24    PM_MODEL_STATUS_FITTED       = 0x01, ///< model fit completed
     25    PM_MODEL_STATUS_NONCONVERGE  = 0x02, ///< model fit did not converge
     26    PM_MODEL_STATUS_OFFIMAGE     = 0x04, ///< model fit drove out of range
     27    PM_MODEL_STATUS_BADARGS      = 0x08, ///< model fit called with invalid args
     28    PM_MODEL_STATUS_LIMITS       = 0x10  ///< model parameters hit limits
    2829} pmModelStatus;
    2930
     
    5859    int nDOF;                           ///< number of degrees of freedom
    5960    int nIter;                          ///< number of iterations to reach min
    60     pmModelStatus status;               ///< fit status
     61    pmModelStatus flags;                ///< model status flags
    6162    float radiusFit;                    ///< fit radius actually used
    6263    pmResiduals *residuals;             ///< normalized PSF residuals
  • trunk/psModules/src/objects/pmPSF.c

    r13426 r13803  
    66 *  @author EAM, IfA
    77 *
    8  *  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2007-05-18 14:08:34 $
     8 *  @version $Revision: 1.24 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2007-06-13 23:41:51 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    180180    // set model parameters for this source based on PSF information
    181181    if (!modelFromPSFFunc (modelPSF, modelEXT, psf)) {
    182         psError(PM_ERR_PSF, true, "Failed to set model params from PSF");
     182        psError(PM_ERR_PSF, false, "Failed to set model params from PSF");
    183183        psFree(modelPSF);
    184184        return NULL;
  • trunk/psModules/src/objects/pmPSFtry.c

    r13514 r13803  
    55 *  @author EAM, IfA
    66 *
    7  *  @version $Revision: 1.41 $ $Name: not supported by cvs2svn $
    8  *  @date $Date: 2007-05-25 00:16:03 $
     7 *  @version $Revision: 1.42 $ $Name: not supported by cvs2svn $
     8 *  @date $Date: 2007-06-13 23:41:51 $
    99 *
    1010 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    155155        source->modelPSF = pmModelFromPSF (source->modelEXT, psfTry->psf);
    156156        if (source->modelPSF == NULL) {
     157            psfTry->mask->data.U8[i] = PSFTRY_MASK_BAD_MODEL;
     158            abort();
    157159            continue;
    158160        }
  • trunk/psModules/src/objects/pmPSFtry.h

    r11253 r13803  
    66 * @author EAM, IfA
    77 *
    8  * @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
    9  * @date $Date: 2007-01-24 02:54:15 $
     8 * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
     9 * @date $Date: 2007-06-13 23:41:51 $
    1010 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
    1111 */
     
    6868    PSFTRY_MASK_PSF_FAIL = 0x04,        ///< 3: psf model failed to converge
    6969    PSFTRY_MASK_BAD_PHOT = 0x08,        ///< 4: invalid source photometry
    70     PSFTRY_MASK_ALL      = 0x0f,        ///< Add comment.
     70    PSFTRY_MASK_BAD_MODEL= 0x10,        ///< 5: could not build PSF from EXT (!??)
     71    PSFTRY_MASK_ALL      = 0x1f,        ///< Add comment.
    7172} pmPSFtryMaskValues;
    7273
  • trunk/psModules/src/objects/pmSourceFitModel.c

    r13034 r13803  
    66 *  @author GLG, MHPCC
    77 *
    8  *  @version $Revision: 1.21 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2007-04-26 01:20:29 $
     8 *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2007-06-13 23:41:51 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    157157    if (nPix <  nParams + 1) {
    158158        psTrace ("psModules.objects", 4, "insufficient valid pixels\n");
    159         model->status = PM_MODEL_BADARGS;
     159        model->flags |= PM_MODEL_STATUS_BADARGS;
    160160        psFree (x);
    161161        psFree (y);
     
    184184    model->nIter = myMin->iter;
    185185    model->nDOF  = y->n - nParams;
     186    model->flags |= PM_MODEL_STATUS_FITTED;
     187    if (!fitStatus) model->flags |= PM_MODEL_STATUS_NONCONVERGE;
    186188
    187189    // get the Gauss-Newton distance for fixed model parameters
     
    207209    }
    208210
    209     // set the model success or failure status
    210     if (!fitStatus) {
    211         model->status = PM_MODEL_NONCONVERGE;
    212     } else {
    213         model->status = PM_MODEL_SUCCESS;
    214     }
    215 
    216211    // models can go insane: reject these
    217212    onPic &= (params->data.F32[PM_PAR_XPOS] >= source->pixels->col0);
     
    220215    onPic &= (params->data.F32[PM_PAR_YPOS] <  source->pixels->row0 + source->pixels->numRows);
    221216    if (!onPic) {
    222         model->status = PM_MODEL_OFFIMAGE;
     217        model->flags |= PM_MODEL_STATUS_OFFIMAGE;
    223218    }
    224219
     
    461456        psTrace (__func__, 4, "insufficient valid pixels\n");
    462457        psTrace("psModules.objects", 3, "---- %s() end : fail pixels ----\n", __func__);
    463         model->status = PM_MODEL_BADARGS;
     458        model->flags |= PM_MODEL_STATUS_BADARGS;
    464459        psFree (x);
    465460        psFree (y);
     
    529524
    530525        // set the model success or failure status
    531         model->status = fitStatus ? PM_MODEL_SUCCESS : PM_MODEL_NONCONVERGE;
     526        model->flags |= PM_MODEL_STATUS_FITTED;
     527        if (!fitStatus) model->flags |= PM_MODEL_STATUS_NONCONVERGE;
    532528
    533529        // models can go insane: reject these
     
    536532        onPic &= (model->params->data.F32[PM_PAR_XPOS] >= source->pixels->row0);
    537533        onPic &= (model->params->data.F32[PM_PAR_XPOS] <  source->pixels->row0 + source->pixels->numRows);
    538         if (!onPic) {
    539             model->status = PM_MODEL_OFFIMAGE;
    540         }
     534        if (!onPic) model->flags |= PM_MODEL_STATUS_OFFIMAGE;
    541535    }
    542536    psTrace ("psModules.objects", 4, "niter: %d, chisq: %f", myMin->iter, myMin->value);
Note: See TracChangeset for help on using the changeset viewer.