Changeset 10263 for trunk/psModules/test/objects/tap_pmSourceFitModel.c
- Timestamp:
- Nov 28, 2006, 4:55:51 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/test/objects/tap_pmSourceFitModel.c
r10194 r10263 21 21 pmSourceFitModelInit (15, 0.01, 1.0, true); 22 22 23 // psTraceSetLevel ("psModules.objects.pmSourceFitModel", 10); 24 // psTraceSetLevel ("psLib.math.psMinimizeLMChi2", 10); 25 23 26 plan_tests(240); 24 27 … … 30 33 static float flux[] = {10000.0, 3000.0, 1000.0, 300.0, 100.0, 30.0, 10.0}; 31 34 35 // drop-dead simple: should always work 36 bool status = fitModels (seed, 10000.0, 10.0, 2.0); 37 skip_start (!status, 240, "*** BASIC MODEL FITTING FAILS! *** : skipping related tests"); 38 32 39 for (int i = 0; i < sizeof(sigma)/sizeof(float); i++) { 33 40 for (int j = 0; j < sizeof(radius)/sizeof(float); j++) { … … 38 45 } 39 46 47 skip_end(); 40 48 return exit_status(); 41 49 } … … 47 55 static psVector *par5 = NULL; 48 56 57 # define NMODELS 200 49 58 bool fitModels (psRandom *seed, float flux, float radius, float sigma) 50 59 { … … 54 63 diag("test model fit - flux: %f, radius: %f, sigma: %f", flux, radius, sigma); 55 64 56 par1 = psVectorAllocEmpty ( 200, PS_TYPE_F32);57 par2 = psVectorAllocEmpty ( 200, PS_TYPE_F32);58 par3 = psVectorAllocEmpty ( 200, PS_TYPE_F32);59 par4 = psVectorAllocEmpty ( 200, PS_TYPE_F32);60 par5 = psVectorAllocEmpty ( 200, PS_TYPE_F32);65 par1 = psVectorAllocEmpty (NMODELS, PS_TYPE_F32); 66 par2 = psVectorAllocEmpty (NMODELS, PS_TYPE_F32); 67 par3 = psVectorAllocEmpty (NMODELS, PS_TYPE_F32); 68 par4 = psVectorAllocEmpty (NMODELS, PS_TYPE_F32); 69 par5 = psVectorAllocEmpty (NMODELS, PS_TYPE_F32); 61 70 62 for (int i = 0; i < 200; i++) {71 for (int i = 0; i < NMODELS; i++) { 63 72 fitModelFlux (seed, flux, radius, sigma); 64 73 } … … 70 79 diag ("signal: %f, noise: %f, dMag: %f, dPos: %f", signal, noise, dMag, dPos); 71 80 81 bool status = (par1->n == NMODELS); 82 ok (status, "all %d tests passed", NMODELS); 83 72 84 psStats *stats = psStatsAlloc (PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); 73 85 psVectorStats (stats, par1, NULL, NULL, 0); 74 ok ((stats->sampleStdev/dMag < 2.0), "Io ref/fit stdev: % f : %fsigma", stats->sampleStdev, stats->sampleStdev/dMag);86 ok ((stats->sampleStdev/dMag < 2.0), "Io ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dMag); 75 87 psVectorStats (stats, par2, NULL, NULL, 0); 76 ok ((stats->sampleStdev/dPos < 2.0), "Xo ref/fit stdev: % f : %fsigma", stats->sampleStdev, stats->sampleStdev/dPos);88 ok ((stats->sampleStdev/dPos < 2.0), "Xo ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dPos); 77 89 psVectorStats (stats, par3, NULL, NULL, 0); 78 ok ((stats->sampleStdev/dPos < 2.0), "Yo ref/fit stdev: % f : %fsigma", stats->sampleStdev, stats->sampleStdev/dPos);90 ok ((stats->sampleStdev/dPos < 2.0), "Yo ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dPos); 79 91 psVectorStats (stats, par4, NULL, NULL, 0); 80 ok ((stats->sampleStdev/dMag < 2.0), "Sx ref/fit stdev: % f : %fsigma", stats->sampleStdev, stats->sampleStdev/dMag);92 ok ((stats->sampleStdev/dMag < 2.0), "Sx ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dMag); 81 93 psVectorStats (stats, par5, NULL, NULL, 0); 82 ok ((stats->sampleStdev/dMag < 2.0), "Sy ref/fit stdev: % f : %fsigma", stats->sampleStdev, stats->sampleStdev/dMag);94 ok ((stats->sampleStdev/dMag < 2.0), "Sy ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dMag); 83 95 84 96 psFree (par1); … … 89 101 psFree (stats); 90 102 91 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");92 return true;103 ok(!psMemCheckLeaks (id, NULL, stderr, false), "no memory leaks"); 104 return status; 93 105 } 94 106 … … 151 163 152 164 psImageKeepCircle (source->mask, 50, 50, radius, "OR", PM_MASK_MARK); 153 pmSourceFitModel (source, guess, PM_SOURCE_FIT_EXT); 165 bool status = pmSourceFitModel (source, guess, PM_SOURCE_FIT_EXT); 166 if (!status) { 167 psFree (rnd); 168 psFree (source); 169 psFree (guess); 170 return false; 171 } 154 172 psImageKeepCircle (source->mask, 50, 50, radius, "AND", PS_NOT_U8(PM_MASK_MARK)); 155 173 156 par1->data.F32[par1->n] = (source->modelEXT->params->data.F32[1] /guess->params->data.F32[1]);174 par1->data.F32[par1->n] = (source->modelEXT->params->data.F32[1] / guess->params->data.F32[1]); 157 175 par2->data.F32[par2->n] = (source->modelEXT->params->data.F32[2] - guess->params->data.F32[2]); 158 176 par3->data.F32[par3->n] = (source->modelEXT->params->data.F32[3] - guess->params->data.F32[3]); 159 par4->data.F32[par4->n] = (source->modelEXT->params->data.F32[4] /guess->params->data.F32[4]);160 par5->data.F32[par5->n] = (source->modelEXT->params->data.F32[5] /guess->params->data.F32[5]);177 par4->data.F32[par4->n] = (source->modelEXT->params->data.F32[4] / guess->params->data.F32[4]); 178 par5->data.F32[par5->n] = (source->modelEXT->params->data.F32[5] / guess->params->data.F32[5]); 161 179 162 180 psVectorExtend (par1, 100, 1);
Note:
See TracChangeset
for help on using the changeset viewer.
