Changeset 36085 for trunk/psModules/src/objects/pmPCM_MinimizeChisq.c
- Timestamp:
- Aug 31, 2013, 5:55:16 AM (13 years ago)
- Location:
- trunk/psModules
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
src/objects/pmPCM_MinimizeChisq.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules
- Property svn:mergeinfo changed
/branches/eam_branches/ipp-20130711/psModules (added) merged: 35843,35876,35947-35948,35961-35963,35966-35967,36021,36024,36027,36066-36069,36075
- Property svn:mergeinfo changed
-
trunk/psModules/src/objects/pmPCM_MinimizeChisq.c
r35768 r36085 42 42 #include "pmPCMdata.h" 43 43 44 # define SAVE_IMAGES 0 45 # if (SAVE_IMAGES) 46 int psphotSaveImage (psMetadata *header, psImage *image, char *filename); 47 # endif 48 44 49 # define FACILITY "psModules.objects" 45 50 … … 91 96 psF32 lambda = 0.001; 92 97 psF32 dLinear = 0.0; 93 psF32 nu = 2.0;98 psF32 nu = 3.0; 94 99 95 100 # if (USE_FFT && PRE_CONVOLVE) … … 130 135 } 131 136 137 char key[10]; // used for interactive responses 138 bool testValue = false; 139 132 140 // set a new guess for Alpha, Beta, Params 133 141 if (!psMinLM_GuessABP(Alpha, Beta, Params, alpha, beta, params, paramMask, checkLimits, lambda, &dLinear)) { 142 if (min->isInteractive) { 143 fprintf (stdout, "guess failed (singular matrix or NaN values), continue? [Y,n] "); 144 if (!fgets(key, 8, stdin)) { 145 psWarning("Unable to read option"); 146 } 147 switch (key[0]) { 148 case 'n': 149 case 'N': 150 done = true; 151 break; 152 case 'y': 153 case 'Y': 154 case '\n': 155 lambda *= 10.0; 156 continue; 157 default: 158 lambda *= 10.0; 159 continue; 160 } 161 if (done) break; 162 } 134 163 min->iter ++; 135 164 if (min->iter >= min->maxIter) break; … … 138 167 } 139 168 169 if (min->isInteractive) { 170 p_psVectorPrint(psTraceGetDestination(), Params, "current parameters: "); 171 fprintf (stdout, "last chisq : %f\n", min->value); 172 bool getOptions = true; 173 while (getOptions) { 174 fprintf (stdout, "options: (m)odify, (g)o, (q)uit: "); 175 if (!fgets(key, 8, stdin)) { 176 psWarning("Unable to read option"); 177 } 178 switch (key[0]) { 179 case 'm': 180 case 'M': 181 testValue = TRUE; 182 fprintf (stdout, "enter (Npar) (value): "); 183 int Npar = 0; 184 float value= 0; 185 int Nscan = fscanf (stdin, "%d %f", &Npar, &value); 186 if (Nscan != 2) { 187 fprintf (stderr, "scan failure\n"); 188 } 189 Params->data.F32[Npar] = value; 190 break; 191 case 'g': 192 case 'G': 193 case '\n': 194 getOptions = false; 195 break; 196 default: 197 done = true; 198 break; 199 } 200 fprintf (stderr, "foo\n"); 201 } 202 if (done) break; 203 } 204 140 205 // dump some useful info if trace is defined 141 206 if (psTraceGetLevel(FACILITY) >= 6) { … … 202 267 // XXX : Madsen gives suggestion for better use of rho 203 268 // rho is positive if the new chisq is smaller 204 if ( rho >= -1e-6) {269 if (testValue || (rho >= -1e-6)) { 205 270 min->value = Chisq; 206 271 alpha = psImageCopy(alpha, Alpha, PS_TYPE_F32); … … 215 280 case 0: 216 281 if (rho >= -1e-6) { 217 lambda *= 0. 25;282 lambda *= 0.1; 218 283 } else { 219 284 lambda *= 10.0; … … 234 299 if (rho > 0.0) { 235 300 lambda *= PS_MAX(0.33, (1.0 - pow(2.0*rho - 1.0, 3.0))); 236 nu = 2.0;301 nu = 3.0; 237 302 } else { 238 303 lambda *= nu; 239 nu *= 2.0;304 nu *= 3.0; 240 305 } 241 306 break; … … 474 539 // XXX TEST : SAVE IMAGES 475 540 # if (SAVE_IMAGES) 476 psphotSaveImage (NULL, pcm->psf->image, "psf.fits"); 477 psphotSaveImage (NULL, pcm->modelFlux, "model.fits"); 478 psphotSaveImage (NULL, pcm->modelConvFlux, "modelConv.fits"); 479 psphotSaveImage (NULL, source->pixels, "obj.fits"); 480 psphotSaveImage (NULL, source->maskObj, "mask.fits"); 481 psphotSaveImage (NULL, source->variance, "variance.fits"); 541 static int Npass = 0; 542 char name[128]; 543 snprintf (name, 128, "psf.%03d.fits", Npass); psphotSaveImage (NULL, pcm->psf->image, name); 544 snprintf (name, 128, "mod.%03d.fits", Npass); psphotSaveImage (NULL, pcm->modelFlux, name); 545 snprintf (name, 128, "cnv.%03d.fits", Npass); psphotSaveImage (NULL, pcm->modelConvFlux, name); 546 snprintf (name, 128, "obj.%03d.fits", Npass); psphotSaveImage (NULL, source->pixels, name); 547 snprintf (name, 128, "msk.%03d.fits", Npass); psphotSaveImage (NULL, source->maskObj, name); 548 snprintf (name, 128, "var.%03d.fits", Npass); psphotSaveImage (NULL, source->variance, name); 549 for (int n = 0; n < pcm->dmodelsFlux->n; n++) { 550 psImage *dmodelConv = pcm->dmodelsConvFlux->data[n]; 551 if (!dmodelConv) continue; 552 snprintf (name, 128, "dpar.%01d.%03d.fits", n, Npass); psphotSaveImage (NULL, dmodelConv, name); 553 } 554 Npass ++; 482 555 # endif 483 556
Note:
See TracChangeset
for help on using the changeset viewer.
