Changeset 10095
- Timestamp:
- Nov 19, 2006, 7:24:46 PM (20 years ago)
- Location:
- trunk/psModules/test/objects
- Files:
-
- 3 edited
-
. (modified) (1 prop)
-
.cvsignore (modified) (1 diff)
-
tap_pmSourceFitModel.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/test/objects
- Property svn:ignore
-
old new 4 4 Makefile.in 5 5 temp 6 tst_pmObjects01 7 tap_pmGrowthCurve 8 tap_pmSourcePhotometry 6 tap_*
-
- Property svn:ignore
-
trunk/psModules/test/objects/.cvsignore
r9922 r10095 4 4 Makefile.in 5 5 temp 6 tst_pmObjects01 7 tap_pmGrowthCurve 8 tap_pmSourcePhotometry 6 tap_* -
trunk/psModules/test/objects/tap_pmSourceFitModel.c
r10079 r10095 7 7 #include "pstap.h" 8 8 9 bool fitModels (psRandom *seed, float flux, float radius); 9 10 bool fitModelFlux (psRandom *seed, float flux, float radius); 10 11 … … 12 13 { 13 14 pmModelGroupInit (); 15 pmSourceFitModelInit (15, 0.01, 1.0, true); 16 14 17 // psTraceSetLevel ("psLib.math.psMinimizeLMChi2", 6); 15 18 … … 27 30 fitModelFlux (seed, 100.0); 28 31 fitModelFlux (seed, 30.0); 29 # endif30 31 32 fitModelFlux (seed, 30.0, 4.0); 32 33 fitModelFlux (seed, 30.0, 5.0); … … 37 38 fitModelFlux (seed, 30.0, 25.0); 38 39 fitModelFlux (seed, 30.0, 35.0); 40 # endif 41 42 fitModels (seed, 100.0, 7.0); 43 fitModels (seed, 80.0, 7.0); 44 fitModels (seed, 60.0, 7.0); 45 fitModels (seed, 40.0, 7.0); 46 fitModels (seed, 20.0, 7.0); 47 48 fitModels (seed, 30.0, 5.0); 49 fitModels (seed, 30.0, 10.0); 50 fitModels (seed, 30.0, 15.0); 39 51 40 52 return exit_status(); 41 53 } 42 54 43 bool fitModelFlux (psRandom *seed, float flux, float radius) 55 static psVector *par1 = NULL; 56 static psVector *par2 = NULL; 57 static psVector *par3 = NULL; 58 static psVector *par4 = NULL; 59 static psVector *par5 = NULL; 60 61 bool fitModels (psRandom *seed, float flux, float radius) 44 62 { 45 63 46 64 psMemId id = psMemGetId(); 65 47 66 diag("test model fit"); 67 68 par1 = psVectorAllocEmpty (100, PS_TYPE_F32); 69 par2 = psVectorAllocEmpty (100, PS_TYPE_F32); 70 par3 = psVectorAllocEmpty (100, PS_TYPE_F32); 71 par4 = psVectorAllocEmpty (100, PS_TYPE_F32); 72 par5 = psVectorAllocEmpty (100, PS_TYPE_F32); 73 74 for (int i = 0; i < 100; i++) { 75 fitModelFlux (seed, flux, radius); 76 } 77 78 psStats *stats = psStatsAlloc (PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); 79 psVectorStats (stats, par1, NULL, NULL, 0); 80 fprintf (stderr, "Io: %f +/- %f\n", stats->sampleMean, stats->sampleStdev); 81 // ok_float_tol (stats->sampleStdev, 0.0, 0.0, "Io ref/fit stdev: %f", stats->sampleStdev); 82 psVectorStats (stats, par2, NULL, NULL, 0); 83 fprintf (stderr, "Xo: %f +/- %f\n", stats->sampleMean, stats->sampleStdev); 84 // ok_float_tol (stats->sampleStdev, 0.0, 0.0, "Xo ref-fit stdev: %f", stats->sampleStdev); 85 psVectorStats (stats, par3, NULL, NULL, 0); 86 fprintf (stderr, "Yo: %f +/- %f\n", stats->sampleMean, stats->sampleStdev); 87 // ok_float_tol (stats->sampleStdev, 0.0, 0.0, "Yo ref-fit stdev: %f", stats->sampleStdev); 88 psVectorStats (stats, par4, NULL, NULL, 0); 89 fprintf (stderr, "Sx: %f +/- %f\n", stats->sampleMean, stats->sampleStdev); 90 // ok_float_tol (stats->sampleStdev, 0.0, 0.0, "Sx ref/fit stdev: %f", stats->sampleStdev); 91 psVectorStats (stats, par5, NULL, NULL, 0); 92 fprintf (stderr, "Sy: %f +/- %f\n", stats->sampleMean, stats->sampleStdev); 93 // ok_float_tol (stats->sampleStdev, 0.0, 0.0, "Sy ref/fit stdev: %f", stats->sampleStdev); 94 95 psFree (par1); 96 psFree (par2); 97 psFree (par3); 98 psFree (par4); 99 psFree (par5); 100 101 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 102 return true; 103 } 104 105 bool fitModelFlux (psRandom *seed, float flux, float radius) 106 { 48 107 49 108 psVector *rnd = psVectorAlloc (1000, PS_TYPE_F32); … … 56 115 source->moments = pmMomentsAlloc (); 57 116 58 pmModelGroupInit ();59 117 pmModelType type = pmModelSetType ("PS_MODEL_GAUSS"); 60 118 source->modelEXT = pmModelAlloc (type); … … 90 148 } 91 149 92 psFits *fits = psFitsOpen ("test.fits", "w");93 psFitsWriteImage (fits, NULL, source->pixels, 0, NULL);94 psFitsClose (fits);150 // psFits *fits = psFitsOpen ("test.fits", "w"); 151 // psFitsWriteImage (fits, NULL, source->pixels, 0, NULL); 152 // psFitsClose (fits); 95 153 96 154 // save the original model, modify params … … 102 160 guess->params->data.F32[5] *= 0.9; 103 161 104 pmSourceFitModelInit (15, 0.1, 100, true);105 106 162 psImageKeepCircle (source->mask, 50, 50, radius, "OR", PM_MASK_MARK); 107 163 pmSourceFitModel (source, guess, PM_SOURCE_FIT_EXT); 108 164 psImageKeepCircle (source->mask, 50, 50, radius, "AND", PS_NOT_U8(PM_MASK_MARK)); 109 165 110 ok_float_tol (guess->params->data.F32[1], source->modelEXT->params->data.F32[1], 100, "Io fitted: %f vs %f", guess->params->data.F32[1], source->modelEXT->params->data.F32[1]);111 ok_float_tol (guess->params->data.F32[2], source->modelEXT->params->data.F32[2], 0.01, "Xo fitted: %f vs %f", guess->params->data.F32[2], source->modelEXT->params->data.F32[2]);112 ok_float_tol (guess->params->data.F32[3], source->modelEXT->params->data.F32[3], 0.01, "Yo fitted: %f vs %f", guess->params->data.F32[3], source->modelEXT->params->data.F32[3]);113 ok_float_tol (guess->params->data.F32[4], source->modelEXT->params->data.F32[4], 0.01, "Sx fitted: %f vs %f", guess->params->data.F32[4], source->modelEXT->params->data.F32[4]);114 ok_float_tol (guess->params->data.F32[5], source->modelEXT->params->data.F32[5], 0.01, "Sy fitted: %f vs %f", guess->params->data.F32[5], source->modelEXT->params->data.F32[5]);166 par1->data.F32[par1->n] = (source->modelEXT->params->data.F32[1]/guess->params->data.F32[1]); 167 par2->data.F32[par2->n] = (source->modelEXT->params->data.F32[2] - guess->params->data.F32[2]); 168 par3->data.F32[par3->n] = (source->modelEXT->params->data.F32[3] - guess->params->data.F32[3]); 169 par4->data.F32[par4->n] = (source->modelEXT->params->data.F32[4]/guess->params->data.F32[4]); 170 par5->data.F32[par5->n] = (source->modelEXT->params->data.F32[5]/guess->params->data.F32[5]); 115 171 116 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 172 psVectorExtend (par1, 100, 1); 173 psVectorExtend (par2, 100, 1); 174 psVectorExtend (par3, 100, 1); 175 psVectorExtend (par4, 100, 1); 176 psVectorExtend (par5, 100, 1); 177 117 178 return true; 118 179 }
Note:
See TracChangeset
for help on using the changeset viewer.
