Changeset 41671
- Timestamp:
- Jun 29, 2021, 11:01:38 AM (5 years ago)
- Location:
- trunk/Ohana/src/relphot
- Files:
-
- 5 edited
-
include/relphot.h (modified) (3 diffs)
-
src/args.c (modified) (2 diffs)
-
src/liststats.c (modified) (9 diffs)
-
src/reload_catalogs.c (modified) (1 diff)
-
src/setMrelCatalog.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/relphot/include/relphot.h
r41662 r41671 163 163 164 164 typedef enum { 165 STATS_NONE, 166 STATS_MEAN, 167 STATS_MEDIAN, 168 STATS_WT_MEAN, 169 STATS_INNER_MEAN, 170 STATS_INNER_WTMEAN, 171 STATS_CHI_INNER_MEAN, 172 STATS_CHI_INNER_WTMEAN 165 // these modes are primary and mutually exclusive: 166 STATS_NONE = 0x0000, 167 STATS_MEAN = 0x0001, 168 STATS_MEDIAN = 0x0002, 169 STATS_WT_MEAN = 0x0003, 170 STATS_INNER_MEAN = 0x0004, 171 STATS_INNER_WTMEAN = 0x0005, 172 STATS_CHI_INNER_MEAN = 0x0006, 173 STATS_CHI_INNER_WTMEAN = 0x0007, 174 // these modes are additional options 175 STATS_PRIMARY = 0x0007, // use this to mask out the optional bits 176 STATS_VARSTATS = 0x0010, 173 177 } ListStatsMode; 174 178 … … 185 189 double Lower20; 186 190 double Lower10; 191 double Upper90Nsig; 192 double Upper80Nsig; 193 double Lower20Nsig; 194 double Lower10Nsig; 187 195 double total; 188 196 int Nmeas; … … 419 427 double IMFIT_SYS_SIGMA_LIM; 420 428 double CLOUD_TOLERANCE; 429 int VARIABILITY_STATS; 421 430 422 431 int PARALLEL; -
trunk/Ohana/src/relphot/src/args.c
r41648 r41671 434 434 remove_argument (N, &argc, argv); 435 435 KEEP_UBERCAL = FALSE; 436 } 437 438 VARIABILITY_STATS = FALSE; 439 if ((N = get_argument (argc, argv, "-varstats"))) { 440 remove_argument (N, &argc, argv); 441 VARIABILITY_STATS = TRUE; 436 442 } 437 443 … … 865 871 866 872 873 VARIABILITY_STATS = FALSE; 874 if ((N = get_argument (argc, argv, "-varstats"))) { 875 remove_argument (N, &argc, argv); 876 VARIABILITY_STATS = TRUE; 877 } 878 867 879 MIN_ERROR = 0.001; 868 880 if ((N = get_argument (argc, argv, "-minerror"))) { -
trunk/Ohana/src/relphot/src/liststats.c
r41670 r41671 3 3 void liststats_setmode (StatType *stats, char *strmode) { 4 4 5 stats->statmode = -1;5 stats->statmode = STATS_NONE; 6 6 if (!strcmp (strmode, "MEAN")) { stats->statmode = STATS_MEAN; return; } 7 7 if (!strcmp (strmode, "MEDIAN")) { stats->statmode = STATS_MEDIAN; return; } … … 17 17 18 18 int liststats_init (StatType *stats) { 19 stats->median = NAN; 20 stats->mean = NAN; 21 stats->sigma = NAN; 22 stats->error = NAN; 23 stats->chisq = NAN; 24 stats->min = NAN; 25 stats->max = NAN; 26 stats->Upper80 = NAN; 27 stats->Lower20 = NAN; 28 stats->Upper90 = NAN; 29 stats->Lower10 = NAN; 30 stats->total = NAN; 31 stats->Nmeas = 0; 19 stats->median = NAN; 20 stats->mean = NAN; 21 stats->sigma = NAN; 22 stats->error = NAN; 23 stats->chisq = NAN; 24 stats->min = NAN; 25 stats->max = NAN; 26 stats->Upper80 = NAN; 27 stats->Lower20 = NAN; 28 stats->Upper90 = NAN; 29 stats->Lower10 = NAN; 30 stats->Upper80Nsig = NAN; 31 stats->Lower20Nsig = NAN; 32 stats->Upper90Nsig = NAN; 33 stats->Lower10Nsig = NAN; 34 stats->total = NAN; 35 stats->Nmeas = 0; 32 36 return TRUE; 33 37 } … … 39 43 40 44 myAssert (stats->statmode != STATS_NONE, "programming error, liststats mode not set"); 45 ListStatsMode myMode = stats->statmode & STATS_PRIMARY; // exclude the option bits 41 46 42 47 liststats_init (stats); … … 75 80 stats[0].Lower10 = value[N10]; 76 81 77 switch ( stats->statmode) {82 switch (myMode) { 78 83 case STATS_MEDIAN: 79 84 ks = 0; … … 100 105 break; 101 106 case STATS_NONE: 107 default: 102 108 myAbort ("undefined stats"); 103 109 } … … 105 111 // for these two modes, I need a vector of the chi-square contribution 106 112 // I'm actually just using chisq to get the correct sorting order 107 if (( stats->statmode == STATS_CHI_INNER_MEAN) || (stats->statmode == STATS_CHI_INNER_WTMEAN)) {113 if ((myMode == STATS_CHI_INNER_MEAN) || (myMode == STATS_CHI_INNER_WTMEAN)) { 108 114 ALLOCATE (chi, double, N); 109 115 for (i = 0; i < N; i++) { … … 119 125 120 126 int WeightedMean = FALSE; 121 WeightedMean |= ( stats->statmode == STATS_WT_MEAN);122 WeightedMean |= ( stats->statmode == STATS_INNER_WTMEAN);123 WeightedMean |= ( stats->statmode == STATS_CHI_INNER_WTMEAN);127 WeightedMean |= (myMode == STATS_WT_MEAN); 128 WeightedMean |= (myMode == STATS_INNER_WTMEAN); 129 WeightedMean |= (myMode == STATS_CHI_INNER_WTMEAN); 124 130 if (!dvalue) WeightedMean = FALSE; // warn the user? 125 131 … … 310 316 311 317 // calculate the weight thresholds to mask the bad points: 312 // double Sum_W = 0.0;313 318 for (int i = 0; i < Npoints; i++) { 314 319 dataset->wtvals[i] = weight_cauchy ((dataset->flxlist[i] - value) / dataset->errlist[i]); 315 320 dataset->wtlist[i] = dataset->wtvals[i]; 316 // Sum_W += dataset->wtvals[i];317 321 } 318 322 dsort (dataset->wtlist, Npoints); 319 323 double WtMedian = (Npoints % 2) ? dataset->wtlist[midpt] : 0.5*(dataset->wtlist[midpt] + dataset->wtlist[midpt-1]); 320 // double WtThreshold = WEIGHT_THRESHOLD * Sum_W / (1.0 * Npoints);321 324 double WtThreshold = WEIGHT_THRESHOLD * WtMedian; 322 325 … … 348 351 stats->sigma = sqrt (dSig / (Nkeep - 1)); 349 352 353 // if percentile ranges are desired, calculate them 354 if (stats->statmode & STATS_VARSTATS) { 355 // save ykeep values in a vector to be sorted 356 for (int i = 0; i < Nkeep; i++) { 357 dataset->wtvals[i] = dataset->ykeep[i]; 358 } 359 dsort (dataset->wtvals, Nkeep); 360 361 int N90 = MIN (Nkeep-1, 0.9*Nkeep); 362 int N80 = MIN (Nkeep-1, 0.8*Nkeep); 363 int N20 = MAX (0, 0.2*Nkeep); 364 int N10 = MAX (0, 0.1*Nkeep); 365 366 stats->Upper90 = dataset->wtvals[N90]; 367 stats->Upper80 = dataset->wtvals[N80]; 368 stats->Lower20 = dataset->wtvals[N20]; 369 stats->Lower10 = dataset->wtvals[N10]; 370 371 int NkeepMid = 0.5 * Nkeep; 372 double ClipMedian = (Nkeep % 2) ? dataset->wtlist[NkeepMid] : 0.5*(dataset->wtlist[NkeepMid] + dataset->wtlist[NkeepMid-1]); 373 374 // save ykeep values in a vector to be sorted 375 for (int i = 0; i < Nkeep; i++) { 376 dataset->wtvals[i] = (dataset->ykeep[i] - ClipMedian) / dataset->dykeep[i]; 377 } 378 dsort (dataset->wtvals, Nkeep); 379 380 stats->Upper90Nsig = dataset->wtvals[N90]; 381 stats->Upper80Nsig = dataset->wtvals[N80]; 382 stats->Lower20Nsig = dataset->wtvals[N20]; 383 stats->Lower10Nsig = dataset->wtvals[N10]; 384 } 385 350 386 int Nboot = 0; 351 387 for (int iboot = 0; iboot < NBOOTSTRAP; iboot++) { -
trunk/Ohana/src/relphot/src/reload_catalogs.c
r41647 r41671 237 237 if (USE_BASIC_CHECK) { strextend (&command, "-basic-image-search"); } 238 238 // if (USE_ALL_IMAGES) { strextend (&command, "-use-all-images"); } 239 if (VARIABILITY_STATS) { strextend (&command, "-varstats"); } 239 240 if (USE_MCAL_PSF_FOR_STACK_APER) { strextend (&command, "-use-mcal-psf-for-stack-aper"); } 240 241 -
trunk/Ohana/src/relphot/src/setMrelCatalog.c
r41647 r41671 1 1 # include "relphot.h" 2 3 # define UPPER90_VAL MpsfStk 4 # define UPPER80_VAL FpsfStk 5 # define LOWER20_VAL MkronStk 6 # define LOWER10_VAL FkronStk 7 # define UPPER90_SIG MpsfWrp 8 # define UPPER80_SIG FpsfWrp 9 # define LOWER20_SIG MkronWrp 10 # define LOWER10_SIG FkronWrp 11 2 12 3 13 # if (0) … … 435 445 StatType *psfstats = &results->psfstats; 436 446 447 // if isSetMrelFinal and varstats are requested, request percentile ranges 448 if (isSetMrelFinal && VARIABILITY_STATS) psfstats->statmode |= STATS_VARSTATS; 449 437 450 int NrankingPSF = useOLS ? magStatsByRanking (&results->psfData[Nsec], psfstats) : magStatsByRankingIRLS (&results->psfData[Nsec], psfstats); 438 451 if (NrankingPSF < Nminmeas) { … … 469 482 secfilt[Nsec].Mmax = psfstats->max; 470 483 secfilt[Nsec].Mmin = psfstats->min; 484 } 485 if (VARIABILITY_STATS) { 486 // XXX NOTE: these are overloaded on warp and stack mags and fluxes 487 secfilt[Nsec].UPPER90_VAL = psfstats->Upper90; 488 secfilt[Nsec].UPPER80_VAL = psfstats->Upper80; 489 secfilt[Nsec].LOWER20_VAL = psfstats->Lower20; 490 secfilt[Nsec].LOWER10_VAL = psfstats->Lower10; 491 secfilt[Nsec].UPPER90_SIG = psfstats->Upper90Nsig; 492 secfilt[Nsec].UPPER80_SIG = psfstats->Upper80Nsig; 493 secfilt[Nsec].LOWER20_SIG = psfstats->Lower20Nsig; 494 secfilt[Nsec].LOWER10_SIG = psfstats->Lower10Nsig; 471 495 } 472 496 secfilt[Nsec].psfQfMax = results->psfQfMax[Nsec];
Note:
See TracChangeset
for help on using the changeset viewer.
