IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 25930 for trunk/psModules


Ignore:
Timestamp:
Oct 22, 2009, 4:54:27 PM (17 years ago)
Author:
watersc1
Message:

Updated fringe fitting code.

Corrected Bool->S32 bug for BTOOLAPP header concept.

Location:
trunk/psModules/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/concepts/pmConcepts.c

    r25882 r25930  
    249249CONCEPT_REGISTER_FUNCTION(S32, Enum, -1); // For enums: set default to -1
    250250CONCEPT_REGISTER_FUNCTION(S32, S32, 0); // For values: set default to 0
     251//CONCEPT_REGISTER_FUNCTION(Bool, Bool, NULL); // For values: set default to 0
    251252
    252253static void conceptRegisterTime(const char *name, /* Name of concept */ \
     
    333334        conceptRegisterF32("FPA.TELTEMP.EXTRA", "Telescope Temperatures: extra", p_pmConceptParse_TELTEMPS, NULL, NULL, false, PM_FPA_LEVEL_FPA);
    334335        conceptRegisterF32("FPA.PON.TIME", "Power On Time", NULL, NULL, NULL, false, PM_FPA_LEVEL_FPA);
    335         conceptRegisterS32("FPA.BURNTOOL.APPLIED", "Status of burntool processing", p_pmConceptParse_BTOOLAPP,NULL,NULL,false,PM_FPA_LEVEL_FPA);
     336        conceptRegisterS32("FPA.BURNTOOL.APPLIED", "Status of burntool processing", p_pmConceptParse_BTOOLAPP,p_pmConceptFormat_BTOOLAPP,NULL,false,PM_FPA_LEVEL_FPA);
     337        //      conceptRegisterBool("FPA.BURNTOOL.APPLIED", "Status of burntool processing", NULL, NULL, NULL, false, PM_FPA_LEVEL_FPA);
    336338        conceptRegisterF32("FPA.EXPOSURE", "Exposure time (sec)", NULL, NULL, NULL, false, PM_FPA_LEVEL_FPA);
    337339    }
  • trunk/psModules/src/concepts/pmConceptsRead.c

    r25425 r25930  
    4747    case PS_DATA_F64:
    4848        return psMetadataItemAllocF64(pattern->name, pattern->comment, psMetadataItemParseF64(concept));
     49    case PS_DATA_BOOL:
     50      return psMetadataItemAllocBool(pattern->name, pattern->comment, psMetadataItemParseBool(concept));
    4951    default:
    5052        psWarning("Concept %s (%s) is not of a standard type (%x)\n",
  • trunk/psModules/src/concepts/pmConceptsStandard.c

    r25882 r25930  
    753753    psError(PS_ERR_BAD_PARAMETER_TYPE, true, "Type for %s (%x) is not BOOL\n",
    754754            concept->name, concept->type);
    755     return NULL;
     755    if (concept->type != PS_DATA_S32) {
     756      psError(PS_ERR_BAD_PARAMETER_TYPE, true, "Wasn't the type I'd guessed either.\n");
     757      return NULL;
     758    }
     759    psError(PS_ERR_BAD_PARAMETER_TYPE, true, "Looks like an S32 value? (%d)\n",
     760            concept->data.S32);
     761
     762    if (concept->data.S32 == 0) {
     763      bt_status = 1;
     764    }
     765    else if (concept->data.S32 == 1) {
     766      bt_status = -2;
     767    }
    756768  }
    757769
     
    765777  return psMetadataItemAllocS32(concept->name, concept->comment, bt_status);
    766778
     779psMetadataItem *p_pmConceptFormat_BTOOLAPP(const psMetadataItem *concept,
     780                                           pmConceptSource source,
     781                                           const psMetadata *cameraFormat,
     782                                           const pmFPA *fpa,
     783                                           const pmChip *chip,
     784                                           const pmCell *cell)
     785{
     786  assert(concept);
     787
     788  if (concept->type != PS_DATA_S32) {
     789    return NULL;
     790  }
     791
     792  if (concept->data.S32 == 0) {
     793    return NULL;
     794  }
     795  else if (concept->data.S32 == -2) {
     796    return psMetadataItemAllocBool(concept->name,concept->comment,true);
     797  }
     798  else if (concept->data.S32 == 1) {
     799    return psMetadataItemAllocBool(concept->name,concept->comment,false);
     800  }
     801  else {
     802    return NULL;
     803  }
     804
     805
     806
    767807
    768808// Get the current value of a concept
  • trunk/psModules/src/concepts/pmConceptsStandard.h

    r25882 r25930  
    146146    const pmCell *cell ///< Cell for concept, or NULL
    147147    );
     148psMetadataItem *p_pmConceptFormat_BTOOLAPP(
     149    const psMetadataItem *concept, ///< Concept to format
     150    pmConceptSource source, ///< Source for concept
     151    const psMetadata *cameraFormat, ///< Camera format definition
     152    const pmFPA *fpa, ///< FPA for concept, or NULL
     153    const pmChip *chip, ///< Chip for concept, or NULL
     154    const pmCell *cell ///< Cell for concept, or NULL
     155    );
    148156
    149157
  • trunk/psModules/src/detrend/pmFringeStats.c

    r24912 r25930  
    1111#include "pmFPA.h"
    1212#include "pmFringeStats.h"
     13
     14#include "psPolynomialMD.h"
     15#include "psMinimizePolyFit.h"
     16#include "psVector.h"
     17
    1318
    1419// Future optimisations for speed:
     
    331336        dfPt[i] = 1.0 / medianSd->sampleStdev;
    332337
    333         psTrace("psModules.detrend", 7, "[%d:%d,%d:%d]: %f %f\n", (int)region.x0, (int)region.x1,
    334                 (int)region.y0, (int)region.y1, fPt[i], dfPt[i]);
     338        psTrace("psModules.detrend", 7, "[%d:%d,%d:%d]: %f %f : %s\n", (int)region.x0, (int)region.x1,
     339                (int)region.y0, (int)region.y1, fPt[i], dfPt[i], readout->parent->hdu->extname);
    335340    }
    336341    psFree(sky);
     
    840845            }
    841846        }
    842         B->data.F64[i] = vector;
     847        B->data.F64[i] = vector;
    843848    }
    844849
     
    966971            }
    967972        }
     973       
    968974    }
    969975
     
    988994                psTrace("psModules.detrend", 9, "Masking region %d because not finite in fringe %d.\n", j, i);
    989995            }
    990         }
    991     }
    992 
     996            else if (fabs(fringe->f->data.F32[j]) > 0.1) {
     997              mask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 1;
     998              psTrace("psModules.detrend", 9, "Masking region %d because too large fringe %d.\n", j, i);
     999            }
     1000            // Mask bad points in the science data as well.
     1001            if ((i == 0) && (!isfinite(science->f->data.F32[j]))) {
     1002                mask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 1;
     1003                psTrace("psModules.detrend", 9, "Masking region %d because not finite in science fringe %d.\n", j, i);
     1004            }         
     1005            psTrace("psModules.detrend", 7, "F %f %f %f %d\n",
     1006                    fringe->f->data.F32[j], science->f->data.F32[j],
     1007                    1 / science->df->data.F32[j],(int) mask->data.PS_TYPE_VECTOR_MASK_DATA[j]);
     1008        }
     1009    }
     1010   
     1011/*     // Begin switch from old outlier removal and fitting code. */
     1012
     1013    psPolynomial1D *poly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, 1);
     1014
     1015    pmFringeStats *fringe = fringes->data[0];
     1016    psVector *errors = psVectorAlloc(science->df->n,PS_TYPE_F32);
     1017    for (int j = 0; j < errors->n; j++) {
     1018      errors->data.F32[j] = 1 / science->df->data.F32[j];
     1019    }
     1020    psVectorFitPolynomial1D(poly,mask,0xff,science->f,errors,fringe->f);
     1021
     1022    for (int i = 0; i <= poly->nX; i++) {
     1023      scale->coeff->data.F32[i] = poly->coeff[i];
     1024      psTrace("psModules.detrend",7,"COEFFS: %d %g %g %g\n",i,scale->coeff->data.F32[i],poly->coeff[i],poly->coeffErr[i]);
     1025    }
     1026
     1027    psFree(poly);
     1028    //    psFree(fringe);
     1029    psFree(errors);
     1030
     1031    psFree(median);
     1032    psFree(diff);
     1033    return scale;
     1034    // End switch from old code.
     1035   
     1036
     1037   
    9931038# if (0)
    9941039    // Write fringe data to file for a test
     
    10191064        }
    10201065        scale->coeff->data.F32[0] -= median->sampleMedian;
    1021         scale->coeff->data.F32[i] = 0.0;
     1066        if (i != 0) {
     1067          scale->coeff->data.F32[i] = 0.0;
     1068        }
    10221069    }
    10231070    psFree(median);
     
    10511098
    10521099    return scale;
     1100    //# endif
    10531101}
    10541102
Note: See TracChangeset for help on using the changeset viewer.