IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 28, 2006, 4:55:51 PM (19 years ago)
Author:
magnier
Message:

updates to test if model works at all

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/test/objects/tap_pmSourceFitModel.c

    r10194 r10263  
    2121    pmSourceFitModelInit (15, 0.01, 1.0, true);
    2222
     23    // psTraceSetLevel ("psModules.objects.pmSourceFitModel", 10);
     24    // psTraceSetLevel ("psLib.math.psMinimizeLMChi2", 10);
     25
    2326    plan_tests(240);
    2427
     
    3033    static float flux[] = {10000.0, 3000.0, 1000.0, 300.0, 100.0, 30.0, 10.0};
    3134
     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
    3239    for (int i = 0; i < sizeof(sigma)/sizeof(float); i++) {
    3340        for (int j = 0; j < sizeof(radius)/sizeof(float); j++) {
     
    3845    }
    3946
     47    skip_end();
    4048    return exit_status();
    4149}
     
    4755static psVector *par5 = NULL;
    4856
     57# define NMODELS 200
    4958bool fitModels (psRandom *seed, float flux, float radius, float sigma)
    5059{
     
    5463    diag("test model fit - flux: %f, radius: %f, sigma: %f", flux, radius, sigma);
    5564
    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);
    6170
    62     for (int i = 0; i < 200; i++) {
     71    for (int i = 0; i < NMODELS; i++) {
    6372        fitModelFlux (seed, flux, radius, sigma);
    6473    }
     
    7079    diag ("signal: %f, noise: %f, dMag: %f, dPos: %f", signal, noise, dMag, dPos);
    7180
     81    bool status = (par1->n == NMODELS);
     82    ok (status, "all %d tests passed", NMODELS);
     83
    7284    psStats *stats = psStatsAlloc (PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV);
    7385    psVectorStats (stats, par1, NULL, NULL, 0);
    74     ok ((stats->sampleStdev/dMag < 2.0), "Io ref/fit stdev: %f : %f sigma", stats->sampleStdev, stats->sampleStdev/dMag);
     86    ok ((stats->sampleStdev/dMag < 2.0), "Io ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dMag);
    7587    psVectorStats (stats, par2, NULL, NULL, 0);
    76     ok ((stats->sampleStdev/dPos < 2.0), "Xo ref/fit stdev: %f : %f sigma", stats->sampleStdev, stats->sampleStdev/dPos);
     88    ok ((stats->sampleStdev/dPos < 2.0), "Xo ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dPos);
    7789    psVectorStats (stats, par3, NULL, NULL, 0);
    78     ok ((stats->sampleStdev/dPos < 2.0), "Yo ref/fit stdev: %f : %f sigma", stats->sampleStdev, stats->sampleStdev/dPos);
     90    ok ((stats->sampleStdev/dPos < 2.0), "Yo ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dPos);
    7991    psVectorStats (stats, par4, NULL, NULL, 0);
    80     ok ((stats->sampleStdev/dMag < 2.0), "Sx ref/fit stdev: %f : %f sigma", stats->sampleStdev, stats->sampleStdev/dMag);
     92    ok ((stats->sampleStdev/dMag < 2.0), "Sx ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dMag);
    8193    psVectorStats (stats, par5, NULL, NULL, 0);
    82     ok ((stats->sampleStdev/dMag < 2.0), "Sy ref/fit stdev: %f : %f sigma", stats->sampleStdev, stats->sampleStdev/dMag);
     94    ok ((stats->sampleStdev/dMag < 2.0), "Sy ref/fit stdev: %e : %e sigma", stats->sampleStdev, stats->sampleStdev/dMag);
    8395
    8496    psFree (par1);
     
    89101    psFree (stats);
    90102
    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;
    93105}
    94106
     
    151163
    152164    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    }
    154172    psImageKeepCircle (source->mask, 50, 50, radius, "AND", PS_NOT_U8(PM_MASK_MARK));
    155173
    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]);
    157175    par2->data.F32[par2->n] = (source->modelEXT->params->data.F32[2] - guess->params->data.F32[2]);
    158176    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]);
    161179
    162180    psVectorExtend (par1, 100, 1);
Note: See TracChangeset for help on using the changeset viewer.