IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28449 for trunk/psModules


Ignore:
Timestamp:
Jun 24, 2010, 10:16:19 AM (16 years ago)
Author:
Paul Price
Message:

Well, it seems that we don't always have both a readout and chip for a PSF, the notable instance being at the stack stage (we calculate the PSF envelope and only carry around the PSF; we do not calculate the PSF clump parameters, and we don't have a readout being passed about that might carry them). Allow the readout analysis metadata to be unset, in which case the clump parameters won't be written.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/pmPSF_IO.c

    r28420 r28449  
    182182    pmReadout *ro = pmFPAviewThisReadout(roView, chip->parent); // Readout with analysis data
    183183    psFree(roView);
    184     PM_ASSERT_READOUT_NON_NULL(ro, false);
    185 
    186     if (!pmPSFmodelWrite(chip->analysis, ro->analysis, view, file, config)) {
     184
     185    if (!pmPSFmodelWrite(chip->analysis, ro ? ro->analysis : NULL, view, file, config)) {
    187186        psError(psErrorCodeLast(), false, "Failed to write PSF for chip");
    188187        return false;
     
    213212    }
    214213    if (!roAnalysis) {
    215         psError(PM_ERR_PROG, true, "No analysis metadata for readout.");
    216         return false;
     214        psWarning("No analysis metadata for PSF, clump parameters cannot be saved.");
    217215    }
    218216
     
    360358
    361359        // we now save clump parameters for each region : need to save all of those
    362         int nRegions = psMetadataLookupS32 (&status, roAnalysis, "PSF.CLUMP.NREGIONS");
    363         psMetadataAddS32 (header, PS_LIST_TAIL, "PSF_CLN", PS_META_REPLACE, "number of psf clump regions", nRegions);
    364         for (int i = 0; i < nRegions; i++) {
    365             char regionName[64];
    366             snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i);
    367             psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName);
    368 
    369             psfClump.X  = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.X");   assert (status);
    370             psfClump.Y  = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.Y");   assert (status);
    371             psfClump.dX = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DX");  assert (status);
    372             psfClump.dY = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DY");  assert (status);
    373 
    374             char key[16];
    375             snprintf (key, 9, "CLX_%03d", i);
    376             psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.X);
    377             snprintf (key, 9, "CLY_%03d", i);
    378             psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.Y);
    379             snprintf (key, 9, "CLDX_%03d", i);
    380             psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dX);
    381             snprintf (key, 9, "CLDY_%03d", i);
    382             psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dY);
     360        if (roAnalysis) {
     361            int nRegions = psMetadataLookupS32 (&status, roAnalysis, "PSF.CLUMP.NREGIONS");
     362            psMetadataAddS32 (header, PS_LIST_TAIL, "PSF_CLN", PS_META_REPLACE, "number of psf clump regions", nRegions);
     363            for (int i = 0; i < nRegions; i++) {
     364                char regionName[64];
     365                snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i);
     366                psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName);
     367
     368                psfClump.X  = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.X");   assert (status);
     369                psfClump.Y  = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.Y");   assert (status);
     370                psfClump.dX = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DX");  assert (status);
     371                psfClump.dY = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DY");  assert (status);
     372
     373                char key[16];
     374                snprintf (key, 9, "CLX_%03d", i);
     375                psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.X);
     376                snprintf (key, 9, "CLY_%03d", i);
     377                psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.Y);
     378                snprintf (key, 9, "CLDX_%03d", i);
     379                psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dX);
     380                snprintf (key, 9, "CLDY_%03d", i);
     381                psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dY);
     382            }
    383383        }
    384384
     
    778778{
    779779    PS_ASSERT_METADATA_NON_NULL(chipAnalysis, false);
    780     PS_ASSERT_METADATA_NON_NULL(roAnalysis, false);
    781780    PS_ASSERT_PTR_NON_NULL(view, false);
    782781    PS_ASSERT_PTR_NON_NULL(file, false);
     
    843842
    844843    // read the psf clump data for each region
    845     int nRegions = psMetadataLookupS32 (&status, header, "PSF_CLN");
    846     if (!status) {
    847         // read old-style psf clump data
    848 
    849         char regionName[64];
    850         snprintf (regionName, 64, "PSF.CLUMP.REGION.000");
    851         psMetadataAddS32 (roAnalysis, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS",  PS_META_REPLACE, "psf clump regions", 1);
    852 
    853         psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName);
    854         if (!regionMD) {
    855             regionMD = psMetadataAlloc();
    856             psMetadataAddMetadata (roAnalysis, PS_LIST_TAIL, regionName, PS_META_REPLACE, "psf clump region", regionMD);
    857             psFree (regionMD);
    858         }
    859 
    860         // psf clump data
    861         pmPSFClump psfClump;
    862 
    863         psfClump.X  = psMetadataLookupF32 (&status, header, "PSF_CLX" );  assert(status);
    864         psfClump.Y  = psMetadataLookupF32 (&status, header, "PSF_CLY" );  assert(status);
    865         psfClump.dX = psMetadataLookupF32 (&status, header, "PSF_CLDX");  assert(status);
    866         psfClump.dY = psMetadataLookupF32 (&status, header, "PSF_CLDY");  assert(status);
    867 
    868         psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.X",  PS_META_REPLACE, "psf clump center", psfClump.X);
    869         psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.Y",  PS_META_REPLACE, "psf clump center", psfClump.Y);
    870         psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DX", PS_META_REPLACE, "psf clump center", psfClump.dX);
    871         psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DY", PS_META_REPLACE, "psf clump center", psfClump.dY);
    872     } else {
    873         psMetadataAddS32 (roAnalysis, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS",  PS_META_REPLACE, "psf clump regions", nRegions);
    874 
    875         for (int i = 0; i < nRegions; i++) {
    876             char key[10];
     844    if (roAnalysis) {
     845        int nRegions = psMetadataLookupS32 (&status, header, "PSF_CLN");
     846        if (!status) {
     847            // read old-style psf clump data
     848
    877849            char regionName[64];
    878             snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i);
     850            snprintf (regionName, 64, "PSF.CLUMP.REGION.000");
     851            psMetadataAddS32 (roAnalysis, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS",  PS_META_REPLACE, "psf clump regions", 1);
    879852
    880853            psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName);
     
    888861            pmPSFClump psfClump;
    889862
    890             snprintf (key, 9, "CLX_%03d", i);
    891             psfClump.X  = psMetadataLookupF32 (&status, header, key);  assert(status);
    892             snprintf (key, 9, "CLY_%03d", i);
    893             psfClump.Y  = psMetadataLookupF32 (&status, header, key);  assert(status);
    894             snprintf (key, 9, "CLDX_%03d", i);
    895             psfClump.dX = psMetadataLookupF32 (&status, header, key);  assert(status);
    896             snprintf (key, 9, "CLDY_%03d", i);
    897             psfClump.dY = psMetadataLookupF32 (&status, header, key);  assert(status);
     863            psfClump.X  = psMetadataLookupF32 (&status, header, "PSF_CLX" );  assert(status);
     864            psfClump.Y  = psMetadataLookupF32 (&status, header, "PSF_CLY" );  assert(status);
     865            psfClump.dX = psMetadataLookupF32 (&status, header, "PSF_CLDX");  assert(status);
     866            psfClump.dY = psMetadataLookupF32 (&status, header, "PSF_CLDY");  assert(status);
    898867
    899868            psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.X",  PS_META_REPLACE, "psf clump center", psfClump.X);
     
    901870            psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DX", PS_META_REPLACE, "psf clump center", psfClump.dX);
    902871            psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DY", PS_META_REPLACE, "psf clump center", psfClump.dY);
     872        } else {
     873            psMetadataAddS32 (roAnalysis, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS",  PS_META_REPLACE, "psf clump regions", nRegions);
     874
     875            for (int i = 0; i < nRegions; i++) {
     876                char key[10];
     877                char regionName[64];
     878                snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i);
     879
     880                psMetadata *regionMD = psMetadataLookupPtr (&status, roAnalysis, regionName);
     881                if (!regionMD) {
     882                    regionMD = psMetadataAlloc();
     883                    psMetadataAddMetadata (roAnalysis, PS_LIST_TAIL, regionName, PS_META_REPLACE, "psf clump region", regionMD);
     884                    psFree (regionMD);
     885                }
     886
     887                // psf clump data
     888                pmPSFClump psfClump;
     889
     890                snprintf (key, 9, "CLX_%03d", i);
     891                psfClump.X  = psMetadataLookupF32 (&status, header, key);  assert(status);
     892                snprintf (key, 9, "CLY_%03d", i);
     893                psfClump.Y  = psMetadataLookupF32 (&status, header, key);  assert(status);
     894                snprintf (key, 9, "CLDX_%03d", i);
     895                psfClump.dX = psMetadataLookupF32 (&status, header, key);  assert(status);
     896                snprintf (key, 9, "CLDY_%03d", i);
     897                psfClump.dY = psMetadataLookupF32 (&status, header, key);  assert(status);
     898
     899                psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.X",  PS_META_REPLACE, "psf clump center", psfClump.X);
     900                psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.Y",  PS_META_REPLACE, "psf clump center", psfClump.Y);
     901                psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DX", PS_META_REPLACE, "psf clump center", psfClump.dX);
     902                psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DY", PS_META_REPLACE, "psf clump center", psfClump.dY);
     903            }
    903904        }
    904905    }
Note: See TracChangeset for help on using the changeset viewer.