IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 21, 2006, 11:29:47 AM (20 years ago)
Author:
magnier
Message:

sanitize the guess parameters before submitting to fitter

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/pmSourceFitModel.c

    r6872 r6945  
    66 *  @author GLG, MHPCC
    77 *
    8  *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2006-04-17 18:01:05 $
     8 *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2006-04-21 21:29:47 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    9191
    9292            psVector *coord = psVectorAlloc(2, PS_TYPE_F32);
     93            coord->n = 2;
    9394
    9495            // Convert i/j to image space:
     
    123124    // set parameter mask based on fitting mode
    124125    paramMask = psVectorAlloc (params->n, PS_TYPE_U8);
     126    paramMask->n = params->n;
    125127    psVectorInit (paramMask, 1);
    126128
     
    175177    modelLimits (&constrain->paramDelta, &constrain->paramMin, &constrain->paramMax);
    176178
     179    // force the floating parameters to fall within the contraint ranges
     180    for (int i = 0; i < params->n; i++) {
     181        if (constrain->paramMask->data.U8[i])
     182            continue;
     183        params->data.F32[i] = PS_MIN(constrain->paramMax->data.F32[i], params->data.F32[i]);
     184        params->data.F32[i] = PS_MAX(constrain->paramMin->data.F32[i], params->data.F32[i]);
     185    }
     186
    177187    psImage *covar = psImageAlloc (params->n, params->n, PS_TYPE_F64);
    178188
     
    194204    if (paramMask != NULL) {
    195205        psVector *delta = psVectorAlloc (params->n, PS_TYPE_F64);
     206        delta->n = params->n;
    196207        psMinimizeGaussNewtonDelta(delta, params, NULL, x, y, yErr, modelFunc);
    197208        for (int i = 0; i < dparams->n; i++) {
     
    257268    onePar = psVectorAlloc (nPar, PS_DATA_F32);
    258269    oneDeriv = psVectorAlloc (nPar, PS_DATA_F32);
     270    onePar->n = oneDeriv->n = nPar;
    259271
    260272    return true;
     
    341353    psVector *params = psVectorAlloc (nSrc*nPar + 1, PS_TYPE_F32);
    342354    psVector *dparams = psVectorAlloc (nSrc*nPar + 1, PS_TYPE_F32);
     355    params->n = params->nalloc;
     356    dparams->n = dparams->nalloc;
    343357
    344358    pmModelLimits modelLimits = pmModelLimits_GetFunction (model->type);
     
    355369    constrain->paramMask = psVectorAlloc (nSrc*nPar + 1, PS_TYPE_U8);
    356370    constrain->paramDelta = psVectorAlloc (nSrc*nPar + 1, PS_TYPE_F32);
     371    constrain->paramMin->n = constrain->paramMin->nalloc;
     372    constrain->paramMax->n = constrain->paramMax->nalloc;
     373    constrain->paramMask->n = constrain->paramMask->nalloc;
     374    constrain->paramDelta->n = constrain->paramDelta->nalloc;
    357375
    358376    // set the parameter guesses and constraints for the multiple models
     
    422440    }
    423441
     442    // force the floating parameters to fall within the contraint ranges
     443    for (int i = 0; i < params->n; i++) {
     444        if (constrain->paramMask->data.U8[i])
     445            continue;
     446        params->data.F32[i] = PS_MIN(constrain->paramMax->data.F32[i], params->data.F32[i]);
     447        params->data.F32[i] = PS_MAX(constrain->paramMin->data.F32[i], params->data.F32[i]);
     448    }
     449
    424450    // maximum number of valid pixels
    425451    psS32 nPix = source->pixels->numRows * source->pixels->numCols;
     
    445471            }
    446472            psVector *coord = psVectorAlloc(2, PS_TYPE_F32);
     473            coord->n = 2;
    447474
    448475            // Convert i/j to image space:
     
    498525    if (constrain->paramMask != NULL) {
    499526        psVector *delta = psVectorAlloc (params->n, PS_TYPE_F64);
     527        delta->n = params->n;
    500528        psMinimizeGaussNewtonDelta(delta, params, NULL, x, y, yErr, pmModelFitSet);
    501529        for (int i = 0; i < dparams->n; i++) {
Note: See TracChangeset for help on using the changeset viewer.