IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 6, 2008, 3:05:13 AM (18 years ago)
Author:
eugene
Message:

upgrades to calculate the PSF clump for subregions on an image; the PSF I/O file now writes the region-based psf clump data, but will read the old format as well

File:
1 edited

Legend:

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

    r18601 r19906  
    66 *  @author EAM, IfA
    77 *
    8  *  @version $Revision: 1.34 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2008-07-17 22:38:15 $
     8 *  @version $Revision: 1.35 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2008-10-06 13:05:13 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    319319        pmPSFClump psfClump;
    320320
    321         psfClump.X  = psMetadataLookupF32 (&status, recipe, "PSF.CLUMP.X");   assert (status);
    322         psfClump.Y  = psMetadataLookupF32 (&status, recipe, "PSF.CLUMP.Y");   assert (status);
    323         psfClump.dX = psMetadataLookupF32 (&status, recipe, "PSF.CLUMP.DX");  assert (status);
    324         psfClump.dY = psMetadataLookupF32 (&status, recipe, "PSF.CLUMP.DY");  assert (status);
    325 
    326         psMetadataAddF32 (header, PS_LIST_TAIL, "PSF_CLX", 0, "psf clump center", psfClump.X);
    327         psMetadataAddF32 (header, PS_LIST_TAIL, "PSF_CLY", 0, "psf clump center", psfClump.Y);
    328         psMetadataAddF32 (header, PS_LIST_TAIL, "PSF_CLDX", 0, "psf clump size", psfClump.dX);
    329         psMetadataAddF32 (header, PS_LIST_TAIL, "PSF_CLDY", 0, "psf clump size", psfClump.dY);
     321        // we now save clump parameters for each region : need to save all of those
     322        int nRegions = psMetadataLookupS32 (&status, recipe, "PSF.CLUMP.NREGIONS");
     323        psMetadataAddS32 (header, PS_LIST_TAIL, "PSF_CLN", PS_META_REPLACE, "number of psf clump regions", nRegions);
     324        for (int i = 0; i < nRegions; i++) {
     325            char regionName[64];
     326            snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i);
     327            psMetadata *regionMD = psMetadataLookupPtr (&status, recipe, regionName);
     328
     329            psfClump.X  = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.X");   assert (status);
     330            psfClump.Y  = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.Y");   assert (status);
     331            psfClump.dX = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DX");  assert (status);
     332            psfClump.dY = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DY");  assert (status);
     333
     334            char key[16];
     335            snprintf (key, 9, "CLX_%03d", i);
     336            psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.X);
     337            snprintf (key, 9, "CLY_%03d", i);
     338            psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump center", psfClump.Y);
     339            snprintf (key, 9, "CLDX_%03d", i);
     340            psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dX);
     341            snprintf (key, 9, "CLDY_%03d", i);
     342            psMetadataAddF32 (header, PS_LIST_TAIL, key, PS_META_REPLACE, "psf clump size", psfClump.dY);
     343        }
    330344
    331345        // save the dimensions of each parameter
     
    648662    }
    649663
    650     // psf clump data
    651     pmPSFClump psfClump;
    652 
    653     psfClump.X  = psMetadataLookupF32 (&status, header, "PSF_CLX" );  assert(status);
    654     psfClump.Y  = psMetadataLookupF32 (&status, header, "PSF_CLY" );  assert(status);
    655     psfClump.dX = psMetadataLookupF32 (&status, header, "PSF_CLDX");  assert(status);
    656     psfClump.dY = psMetadataLookupF32 (&status, header, "PSF_CLDY");  assert(status);
    657 
    658     psMetadataAddF32 (recipe, PS_LIST_TAIL, "PSF.CLUMP.X" , PS_META_REPLACE, "psf clump center", psfClump.X);
    659     psMetadataAddF32 (recipe, PS_LIST_TAIL, "PSF.CLUMP.Y" , PS_META_REPLACE, "psf clump center", psfClump.Y);
    660     psMetadataAddF32 (recipe, PS_LIST_TAIL, "PSF.CLUMP.DX", PS_META_REPLACE, "psf clump size",   psfClump.dX);
    661     psMetadataAddF32 (recipe, PS_LIST_TAIL, "PSF.CLUMP.DY", PS_META_REPLACE, "psf clump size",   psfClump.dY);
     664    // read the psf clump data for each region
     665    int nRegions = psMetadataLookupS32 (&status, header, "PSF_CLN");
     666    if (!status) {
     667        // read old-style psf clump data
     668
     669        char regionName[64];
     670        snprintf (regionName, 64, "PSF.CLUMP.REGION.000");
     671        psMetadataAddS32 (recipe, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS",  PS_META_REPLACE, "psf clump regions", 1);
     672
     673        psMetadata *regionMD = psMetadataLookupPtr (&status, recipe, regionName);
     674        if (!regionMD) {
     675            regionMD = psMetadataAlloc();
     676            psMetadataAddMetadata (recipe, PS_LIST_TAIL, regionName, PS_META_REPLACE, "psf clump region", regionMD);
     677            psFree (regionMD);
     678        }
     679
     680        // psf clump data
     681        pmPSFClump psfClump;
     682
     683        psfClump.X  = psMetadataLookupF32 (&status, header, "PSF_CLX" );  assert(status);
     684        psfClump.Y  = psMetadataLookupF32 (&status, header, "PSF_CLY" );  assert(status);
     685        psfClump.dX = psMetadataLookupF32 (&status, header, "PSF_CLDX");  assert(status);
     686        psfClump.dY = psMetadataLookupF32 (&status, header, "PSF_CLDY");  assert(status);
     687
     688        psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.X",  PS_META_REPLACE, "psf clump center", psfClump.X);
     689        psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.Y",  PS_META_REPLACE, "psf clump center", psfClump.Y);
     690        psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DX", PS_META_REPLACE, "psf clump center", psfClump.dX);
     691        psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DY", PS_META_REPLACE, "psf clump center", psfClump.dY);
     692    } else {
     693        psMetadataAddS32 (recipe, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS",  PS_META_REPLACE, "psf clump regions", nRegions);
     694
     695        for (int i = 0; i < nRegions; i++) {
     696            char key[10];
     697            char regionName[64];
     698            snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", i);
     699
     700            psMetadata *regionMD = psMetadataLookupPtr (&status, recipe, regionName);
     701            if (!regionMD) {
     702                regionMD = psMetadataAlloc();
     703                psMetadataAddMetadata (recipe, PS_LIST_TAIL, regionName, PS_META_REPLACE, "psf clump region", regionMD);
     704                psFree (regionMD);
     705            }
     706
     707            // psf clump data
     708            pmPSFClump psfClump;
     709
     710            snprintf (key, 9, "CLX_%03d", i);
     711            psfClump.X  = psMetadataLookupF32 (&status, header, key);  assert(status);
     712            snprintf (key, 9, "CLY_%03d", i);
     713            psfClump.Y  = psMetadataLookupF32 (&status, header, key);  assert(status);
     714            snprintf (key, 9, "CLDX_%03d", i);
     715            psfClump.dX = psMetadataLookupF32 (&status, header, key);  assert(status);
     716            snprintf (key, 9, "CLDY_%03d", i);
     717            psfClump.dY = psMetadataLookupF32 (&status, header, key);  assert(status);
     718
     719            psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.X",  PS_META_REPLACE, "psf clump center", psfClump.X);
     720            psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.Y",  PS_META_REPLACE, "psf clump center", psfClump.Y);
     721            psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DX", PS_META_REPLACE, "psf clump center", psfClump.dX);
     722            psMetadataAddF32 (regionMD, PS_LIST_TAIL, "PSF.CLUMP.DY", PS_META_REPLACE, "psf clump center", psfClump.dY);
     723        }
     724    }
    662725
    663726    options->poissonErrorsPhotLMM = psMetadataLookupBool (&status, header, "ERR_LMM");
Note: See TracChangeset for help on using the changeset viewer.