IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28100


Ignore:
Timestamp:
May 25, 2010, 3:48:12 PM (16 years ago)
Author:
Paul Price
Message:

Fixing psU16 --> psImageMaskType. Fixed bounds of iteration.

Location:
trunk/psModules/src/detrend
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/detrend/pmMaskStats.c

    r28043 r28100  
    88#include <pslib.h>
    99#include <psmodules.h>
     10
    1011#include "pmHDU.h"
    1112#include "pmFPA.h"
     
    1617
    1718
    18 # define ESCAPE { \
    19     psError(PS_ERR_UNKNOWN, false, "I/O failure in pmMaskStats");       \
    20     psFree (view);                                                      \
    21     return false;                                                       \
    22   }
     19#define ESCAPE { \
     20        psError(psErrorCodeLast(), false, "I/O failure in pmMaskStats"); \
     21        psFree (view);                                                  \
     22        return false;                                                   \
     23    }
    2324
    24  
     25
    2526
    2627
     
    3031
    3132  bool status;
    32  
    33   psU16 staticMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.STATIC");
    34   psU16 magicMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.MAGIC");
    35   psU16 dynamicMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.DYNAMIC");
    36   psU16 advisoryMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.ADVISORY");
     33
     34  psImageMaskType staticMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.STATIC");
     35  psImageMaskType magicMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.MAGIC");
     36  psImageMaskType dynamicMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.DYNAMIC");
     37  psImageMaskType advisoryMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.ADVISORY");
    3738
    3839  psS32 Npix_valid = 0;
     
    5455      if (!cell->process || !cell->file_exists) {continue; }
    5556      while ((readout = pmFPAviewNextReadout(view, fpa, 1)) != NULL) {
    56         if (!readout->data_exists) {continue; }
     57        if (!readout->data_exists) {continue; }
    5758
    58         psImage *mask = readout->mask;
    59         if (!pmSingleImageMaskStats(mask,&Npix_valid,&Npix_static,&Npix_magic,
    60                                     &Npix_dynamic,&Npix_advisory,
    61                                     staticMaskVal,magicMaskVal,
    62                                     dynamicMaskVal,advisoryMaskVal)) {
    63           psError(PS_ERR_UNKNOWN, false, "Unable to calculate masks for readout.");
    64           return(false);
    65         }
    66         psMetadataAddS32(readout->analysis, PS_LIST_TAIL,"MASKFRAC_NPIX", 0,
    67                         "Number of valid pixels", Npix_valid);
    68         psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_STATIC", 0,
    69                         "Fraction of pixels statically masked", (float) Npix_static / Npix_valid);
    70         psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_DYNAMIC", 0,
    71                         "Fraction of pixels dynamically masked", (float) Npix_dynamic / Npix_valid);
    72         psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_MAGIC", 0,
    73                         "Fraction of pixels magically masked", (float) Npix_magic / Npix_valid);
    74         psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_ADVISORY", 0,
    75                         "Fraction of pixels masked as an advisory", (float) Npix_advisory / Npix_valid);
     59        psImage *mask = readout->mask;
     60        if (!pmSingleImageMaskStats(mask,&Npix_valid,&Npix_static,&Npix_magic,
     61                                    &Npix_dynamic,&Npix_advisory,
     62                                    staticMaskVal,magicMaskVal,
     63                                    dynamicMaskVal,advisoryMaskVal)) {
     64          psError(PS_ERR_UNKNOWN, false, "Unable to calculate masks for readout.");
     65          return(false);
     66        }
     67        psMetadataAddS32(readout->analysis, PS_LIST_TAIL,"MASKFRAC_NPIX", 0,
     68                        "Number of valid pixels", Npix_valid);
     69        psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_STATIC", 0,
     70                        "Fraction of pixels statically masked", (float) Npix_static / Npix_valid);
     71        psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_DYNAMIC", 0,
     72                        "Fraction of pixels dynamically masked", (float) Npix_dynamic / Npix_valid);
     73        psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_MAGIC", 0,
     74                        "Fraction of pixels magically masked", (float) Npix_magic / Npix_valid);
     75        psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_ADVISORY", 0,
     76                        "Fraction of pixels masked as an advisory", (float) Npix_advisory / Npix_valid);
    7677      }
    7778    }
     
    8384
    8485bool pmSingleImageMaskStats(psImage *mask,
    85                             psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,
    86                             psS32 *Npix_dynamic, psS32 *Npix_advisory,
    87                             psU16 staticMaskVal, psU16 magicMaskVal,
    88                             psU16 dynamicMaskVal, psU16 advisoryMaskVal) {
     86                            psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,
     87                            psS32 *Npix_dynamic, psS32 *Npix_advisory,
     88                            psImageMaskType staticMaskVal, psImageMaskType magicMaskVal,
     89                            psImageMaskType dynamicMaskVal, psImageMaskType advisoryMaskVal) {
    8990  PS_ASSERT_IMAGE_NON_NULL(mask, false);
    9091  *Npix_valid = 0;
     
    9596
    9697  psImageMaskType **maskData = mask->data.PS_TYPE_IMAGE_MASK_DATA;
    97   psWarning("HERE: %ld %d %d\n",(long) maskData, mask->numRows,mask->numCols);
    98   for (int i = 0; i < mask->numRows - 1; i++) {
    99     for (int j = 0; j < mask->numCols - 1; j++) {
     98  for (int i = 0; i < mask->numRows; i++) {
     99    for (int j = 0; j < mask->numCols; j++) {
    100100      *Npix_valid += 1;
    101101      if (maskData[i][j] & staticMaskVal) {
    102         *Npix_static += 1;
    103         continue;
     102        *Npix_static += 1;
     103        continue;
    104104      }
    105105      if (maskData[i][j] & dynamicMaskVal) {
    106         *Npix_dynamic += 1;
    107         continue;
     106        *Npix_dynamic += 1;
     107        continue;
    108108      }
    109109      if (maskData[i][j] & magicMaskVal) {
    110         *Npix_magic += 1;
    111         continue;
     110        *Npix_magic += 1;
     111        continue;
    112112      }
    113113      if (maskData[i][j] & advisoryMaskVal) {
    114         *Npix_advisory += 1;
    115         continue;
     114        *Npix_advisory += 1;
     115        continue;
    116116      }
    117117    }
  • trunk/psModules/src/detrend/pmMaskStats.h

    r28043 r28100  
    44bool pmFPAMaskStats(pmFPA *fpa, pmConfig *config);
    55bool pmSingleImageMaskStats(psImage *mask,
    6                             psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,
    7                             psS32 *Npix_dynamic, psS32 *Npix_advisory,
    8                             psU16 staticMaskVal, psU16 magicMaskVal,
    9                             psU16 dynamicMaskVal, psU16 advisoryMaskVal);
     6                            psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,
     7                            psS32 *Npix_dynamic, psS32 *Npix_advisory,
     8                            psImageMaskType staticMaskVal, psImageMaskType magicMaskVal,
     9                            psImageMaskType dynamicMaskVal, psImageMaskType advisoryMaskVal);
    1010
    1111
Note: See TracChangeset for help on using the changeset viewer.