Changeset 13803
- Timestamp:
- Jun 13, 2007, 1:41:51 PM (19 years ago)
- Location:
- trunk/psModules/src/objects
- Files:
-
- 9 edited
-
models/pmModel_GAUSS.c (modified) (4 diffs)
-
models/pmModel_PGAUSS.c (modified) (4 diffs)
-
models/pmModel_QGAUSS.c (modified) (4 diffs)
-
pmModel.c (modified) (3 diffs)
-
pmModel.h (modified) (3 diffs)
-
pmPSF.c (modified) (2 diffs)
-
pmPSFtry.c (modified) (2 diffs)
-
pmPSFtry.h (modified) (2 diffs)
-
pmSourceFitModel.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/models/pmModel_GAUSS.c
r13424 r13803 104 104 if (fabs(beta[nParam]) > fabs(beta_lim)) { 105 105 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); 106 108 return false; 107 109 } … … 135 137 if (params[nParam] < params_min) { 136 138 params[nParam] = params_min; 139 psTrace ("psModules.objects", 5, "params[nParam==%d] < params_min; %g v. %g", 140 nParam, params[nParam], params_min); 137 141 return false; 138 142 } … … 166 170 if (params[nParam] > params_max) { 167 171 params[nParam] = params_max; 172 psTrace ("psModules.objects", 5, "params[nParam==%d] > params_max; %g v. %g", 173 nParam, params[nParam], params_max); 168 174 return false; 169 175 } … … 285 291 if (psf->params_NEW->data[i] == NULL) 286 292 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 } 289 302 } 290 303 return(true); -
trunk/psModules/src/objects/models/pmModel_PGAUSS.c
r13424 r13803 106 106 if (fabs(beta[nParam]) > fabs(beta_lim)) { 107 107 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); 108 110 return false; 109 111 } … … 137 139 if (params[nParam] < params_min) { 138 140 params[nParam] = params_min; 141 psTrace ("psModules.objects", 5, "params[nParam==%d] < params_min; %g v. %g", 142 nParam, params[nParam], params_min); 139 143 return false; 140 144 } … … 168 172 if (params[nParam] > params_max) { 169 173 params[nParam] = params_max; 174 psTrace ("psModules.objects", 5, "params[nParam==%d] > params_max; %g v. %g", 175 nParam, params[nParam], params_max); 170 176 return false; 171 177 } … … 305 311 if (psf->params_NEW->data[i] == NULL) 306 312 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 } 309 322 } 310 323 return(true); -
trunk/psModules/src/objects/models/pmModel_QGAUSS.c
r13567 r13803 127 127 if (fabs(beta[nParam]) > fabs(beta_lim)) { 128 128 beta[nParam] = (beta[nParam] > 0) ? fabs(beta_lim) : -fabs(beta_lim); 129 ps Error(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); 131 131 return false; 132 132 } … … 163 163 if (params[nParam] < params_min) { 164 164 params[nParam] = params_min; 165 ps Error(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); 167 167 return false; 168 168 } … … 199 199 if (params[nParam] > params_max) { 200 200 params[nParam] = params_max; 201 ps Error(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); 203 203 return false; 204 204 } … … 372 372 continue; 373 373 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; 379 381 } 380 382 } 381 383 382 return (true);384 return true; 383 385 } 384 386 -
trunk/psModules/src/objects/pmModel.c
r13038 r13803 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.1 1$ $Name: not supported by cvs2svn $9 * @date $Date: 2007-0 4-26 01:45:35$8 * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-06-13 23:41:51 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 59 59 tmp->nIter = 0; 60 60 tmp->radiusFit = 0; 61 tmp-> status = PM_MODEL_UNTRIED;61 tmp->flags = PM_MODEL_STATUS_NONE; 62 62 tmp->residuals = NULL; // XXX should the model own this memory? 63 63 … … 86 86 pmModel *new = pmModelAlloc (model->type); 87 87 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; 92 92 new->radiusFit = model->radiusFit; 93 93 -
trunk/psModules/src/objects/pmModel.h
r13335 r13803 5 5 * @author EAM, IfA 6 6 * 7 * @version $Revision: 1. 9$ $Name: not supported by cvs2svn $8 * @date $Date: 2007-0 5-10 19:48:35$7 * @version $Revision: 1.10 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2007-06-13 23:41:51 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 21 21 22 22 typedef 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 28 29 } pmModelStatus; 29 30 … … 58 59 int nDOF; ///< number of degrees of freedom 59 60 int nIter; ///< number of iterations to reach min 60 pmModelStatus status; ///< fit status61 pmModelStatus flags; ///< model status flags 61 62 float radiusFit; ///< fit radius actually used 62 63 pmResiduals *residuals; ///< normalized PSF residuals -
trunk/psModules/src/objects/pmPSF.c
r13426 r13803 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.2 3$ $Name: not supported by cvs2svn $9 * @date $Date: 2007-0 5-18 14:08:34$8 * @version $Revision: 1.24 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-06-13 23:41:51 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 180 180 // set model parameters for this source based on PSF information 181 181 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"); 183 183 psFree(modelPSF); 184 184 return NULL; -
trunk/psModules/src/objects/pmPSFtry.c
r13514 r13803 5 5 * @author EAM, IfA 6 6 * 7 * @version $Revision: 1.4 1$ $Name: not supported by cvs2svn $8 * @date $Date: 2007-0 5-25 00:16:03$7 * @version $Revision: 1.42 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2007-06-13 23:41:51 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 155 155 source->modelPSF = pmModelFromPSF (source->modelEXT, psfTry->psf); 156 156 if (source->modelPSF == NULL) { 157 psfTry->mask->data.U8[i] = PSFTRY_MASK_BAD_MODEL; 158 abort(); 157 159 continue; 158 160 } -
trunk/psModules/src/objects/pmPSFtry.h
r11253 r13803 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.1 1$ $Name: not supported by cvs2svn $9 * @date $Date: 2007-0 1-24 02:54:15$8 * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-06-13 23:41:51 $ 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 11 11 */ … … 68 68 PSFTRY_MASK_PSF_FAIL = 0x04, ///< 3: psf model failed to converge 69 69 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. 71 72 } pmPSFtryMaskValues; 72 73 -
trunk/psModules/src/objects/pmSourceFitModel.c
r13034 r13803 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.2 1$ $Name: not supported by cvs2svn $9 * @date $Date: 2007-0 4-26 01:20:29$8 * @version $Revision: 1.22 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-06-13 23:41:51 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 157 157 if (nPix < nParams + 1) { 158 158 psTrace ("psModules.objects", 4, "insufficient valid pixels\n"); 159 model-> status = PM_MODEL_BADARGS;159 model->flags |= PM_MODEL_STATUS_BADARGS; 160 160 psFree (x); 161 161 psFree (y); … … 184 184 model->nIter = myMin->iter; 185 185 model->nDOF = y->n - nParams; 186 model->flags |= PM_MODEL_STATUS_FITTED; 187 if (!fitStatus) model->flags |= PM_MODEL_STATUS_NONCONVERGE; 186 188 187 189 // get the Gauss-Newton distance for fixed model parameters … … 207 209 } 208 210 209 // set the model success or failure status210 if (!fitStatus) {211 model->status = PM_MODEL_NONCONVERGE;212 } else {213 model->status = PM_MODEL_SUCCESS;214 }215 216 211 // models can go insane: reject these 217 212 onPic &= (params->data.F32[PM_PAR_XPOS] >= source->pixels->col0); … … 220 215 onPic &= (params->data.F32[PM_PAR_YPOS] < source->pixels->row0 + source->pixels->numRows); 221 216 if (!onPic) { 222 model-> status = PM_MODEL_OFFIMAGE;217 model->flags |= PM_MODEL_STATUS_OFFIMAGE; 223 218 } 224 219 … … 461 456 psTrace (__func__, 4, "insufficient valid pixels\n"); 462 457 psTrace("psModules.objects", 3, "---- %s() end : fail pixels ----\n", __func__); 463 model-> status = PM_MODEL_BADARGS;458 model->flags |= PM_MODEL_STATUS_BADARGS; 464 459 psFree (x); 465 460 psFree (y); … … 529 524 530 525 // 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; 532 528 533 529 // models can go insane: reject these … … 536 532 onPic &= (model->params->data.F32[PM_PAR_XPOS] >= source->pixels->row0); 537 533 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; 541 535 } 542 536 psTrace ("psModules.objects", 4, "niter: %d, chisq: %f", myMin->iter, myMin->value);
Note:
See TracChangeset
for help on using the changeset viewer.
