IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 13, 2006, 8:24:10 PM (21 years ago)
Author:
eugene
Message:

substantial work on the aperture residuals

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot/src/psphotOutput.c

    r5837 r5980  
    6565    }
    6666
    67     float RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
     67    float RADIUS = psMetadataLookupF32 (&status, config, "AP_RADIUS");
    6868
    6969    // write sources with models
     
    116116    }
    117117
    118     float RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
     118    float RADIUS = psMetadataLookupF32 (&status, config, "AP_RADIUS");
    119119
    120120    // write sources with models
     
    162162
    163163    // find config information for output header
    164     float RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
     164    float RADIUS = psMetadataLookupF32 (&status, config, "AP_RADIUS");
    165165    float ZERO_POINT = psMetadataLookupF32 (&status, config, "ZERO_POINT");
    166166    if (!status) ZERO_POINT = 25.0;
     
    171171    psMetadataAdd (imdata->header, PS_LIST_TAIL, "ZERO_PT",  PS_DATA_F32 | PS_META_REPLACE, "zero point",          ZERO_POINT);
    172172    psMetadataAdd (imdata->header, PS_LIST_TAIL, "APMIFIT",  PS_DATA_F32 | PS_META_REPLACE, "aperture residual",   psf->ApResid);
    173     psMetadataAdd (imdata->header, PS_LIST_TAIL, "dAPMIFIT", PS_DATA_F32 | PS_META_REPLACE, "ap residual scatter", psf->dApResid);
     173    psMetadataAdd (imdata->header, PS_LIST_TAIL, "DAPMIFIT", PS_DATA_F32 | PS_META_REPLACE, "ap residual scatter", psf->dApResid);
     174    psMetadataAdd (imdata->header, PS_LIST_TAIL, "NAPMIFIT", PS_DATA_S32 | PS_META_REPLACE, "ap residual scatter", psf->nApResid);
     175    psMetadataAdd (imdata->header, PS_LIST_TAIL, "NPSFSTAR", PS_DATA_S32 | PS_META_REPLACE, "ap residual scatter", psf->nPSFstars);
    174176    psMetadataAdd (imdata->header, PS_LIST_TAIL, "SKYBIAS",  PS_DATA_F32 | PS_META_REPLACE, "aperture sky bias",   psf->skyBias);
     177    psMetadataAdd (imdata->header, PS_LIST_TAIL, "SKYSAT",   PS_DATA_F32 | PS_META_REPLACE, "aperture sky bias",   psf->skySat);
    175178    psMetadataAdd (imdata->header, PS_LIST_TAIL, "PHOTCODE", PS_DATA_STRING | PS_META_REPLACE, "photometry code",     PHOTCODE);
    176179    psMetadataAdd (imdata->header, PS_LIST_TAIL, "FWHM_X",   PS_DATA_F32 | PS_META_REPLACE, "PSF FWHM X",          0.0);
     
    250253
    251254    // find config information for output header
    252     float RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
     255    float RADIUS = psMetadataLookupF32 (&status, config, "AP_RADIUS");
    253256    float ZERO_POINT = psMetadataLookupF32 (&status, config, "ZERO_POINT");
    254257    char *PHOTCODE = psMetadataLookupPtr (&status, config, "PHOTCODE");
     
    367370    bool status;
    368371
    369     float RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
     372    float RADIUS = psMetadataLookupF32 (&status, config, "AP_RADIUS");
    370373
    371374    f = fopen (filename, "w");
     
    400403            fprintf (f, "%9.6f ", dPAR[j]);
    401404        }
    402         fprintf (f, ": %2d %#5x %7.3f %7.1f %7.2f %4d %2d\n",
    403                  source[0].type, source[0].mode,
     405        fprintf (f, ": %7.4f %2d %#5x %7.3f %7.1f %7.2f %4d %2d\n",
     406                 source[0].apMag, source[0].type, source[0].mode,
    404407                 log10(model[0].chisq/model[0].nDOF),
    405408                 source[0].moments->SN,
     
    453456            fprintf (f, "%9.6f ", dPAR[j]);
    454457        }
    455         fprintf (f, ": %2d %#5x %7.3f %7.1f %7.2f %4d %2d\n",
     458        fprintf (f, ": %7.4f  %2d %#5x %7.3f %7.1f %7.2f %4d %2d\n",
     459                 source->apMag,
    456460                 source[0].type, source[0].mode,
    457461                 log10(model[0].chisq/model[0].nDOF),
     
    694698}
    695699
     700psPolynomial4D *psPolynomial4DfromMD (psMetadata *folder) {
     701
     702    bool status;
     703    char keyword[80];
     704
     705    // get polynomial orders
     706    // XXX add status failures tests
     707    int nXorder = psMetadataLookupS32 (&status, folder, "NORDER_X");
     708    int nYorder = psMetadataLookupS32 (&status, folder, "NORDER_Y");
     709    int nZorder = psMetadataLookupS32 (&status, folder, "NORDER_Z");
     710    int nTorder = psMetadataLookupS32 (&status, folder, "NORDER_T");
     711
     712    psPolynomial4D *poly = psPolynomial4DAlloc (nXorder, nYorder, nZorder, nTorder, PS_POLYNOMIAL_ORD);
     713
     714    for (int nx = 0; nx < poly->nX + 1; nx++) {
     715        for (int ny = 0; ny < poly->nY + 1; ny++) {
     716            for (int nz = 0; nz < poly->nZ + 1; nz++) {
     717                for (int nt = 0; nt < poly->nT + 1; nt++) {
     718                    sprintf (keyword, "VAL_X%02d_Y%02d_Z%02d_T%02d", nx, ny, nz, nt);
     719                    poly->coeff[nx][ny][nz][nt] = psMetadataLookupF32 (&status, folder, keyword);
     720                    if (!status) poly->mask[nx][ny][nz][nt] = 1;
     721                   
     722                    sprintf (keyword, "ERR_X%02d_Y%02d_Z%02d_T%02d", nx, ny, nz, nt);
     723                    poly->coeffErr[nx][ny][nz][nt] = psMetadataLookupF32 (&status, folder, keyword);
     724                }
     725            }
     726        }
     727    }
     728    return (poly);
     729}
     730
    696731// XXX : these may need F64, or %g format for output
    697732bool psPolynomial2DtoMD (psMetadata *md, psPolynomial2D *poly, char *format, ...) {
     
    774809}
    775810
     811bool psPolynomial4DtoMD (psMetadata *md, psPolynomial4D *poly, char *format, ...) {
     812
     813    int Nbyte;
     814    char tmp;
     815    char *root;
     816    va_list argp; 
     817
     818    va_start (argp, format);
     819    Nbyte = vsnprintf (&tmp, 0, format, argp);
     820    va_end (argp);
     821
     822    if (!Nbyte) return false;
     823
     824    va_start (argp, format);
     825    root = (char *) psAlloc (Nbyte + 1);
     826    memset (root, 0, Nbyte + 1);
     827    vsnprintf (root, Nbyte + 1, format, argp);
     828    va_end (argp);
     829
     830    psMetadata *folder = psMetadataAlloc ();
     831    psMetadataAdd (md, PS_LIST_TAIL, root, PS_DATA_METADATA, "folder for 4D polynomial", folder);
     832    psFree (root);
     833
     834    // specify the polynomial orders
     835    psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_X", PS_DATA_S32, "number of x orders", poly->nX);
     836    psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_Y", PS_DATA_S32, "number of y orders", poly->nY);
     837    psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_Z", PS_DATA_S32, "number of z orders", poly->nZ);
     838    psMetadataAdd (folder, PS_LIST_TAIL, "NORDER_T", PS_DATA_S32, "number of z orders", poly->nT);
     839
     840    // place polynomial entries on folder
     841    for (int nx = 0; nx < poly->nX + 1; nx++) {
     842        for (int ny = 0; ny < poly->nY + 1; ny++) {
     843            for (int nz = 0; nz < poly->nZ + 1; nz++) {
     844                for (int nt = 0; nt < poly->nT + 1; nt++) {
     845                    if (poly->mask[nx][ny][nz][nt]) continue;
     846                    psMetadataAdd (folder, PS_LIST_TAIL, "VAL_X%02d_Y%02d_Z%02d_T%02d", PS_DATA_F32, "polynomial coefficient", poly->coeff[nx][ny][nz][nt], nx, ny, nz, nt);
     847                    psMetadataAdd (folder, PS_LIST_TAIL, "ERR_X%02d_Y%02d_Z%02d_T%02d", PS_DATA_F32, "polynomial coeffficient error", poly->coeffErr[nx][ny][nz][nt], nx, ny, nz, nt);
     848                }
     849            }
     850        }
     851    }
     852    return true;
     853}
     854
    776855bool psphotWritePSF (pmPSF *psf, char *filename) {
    777856
     
    788867        psPolynomial2DtoMD (psfdata, poly, "PSF_PAR%02d", i);
    789868    }
    790     psPolynomial3DtoMD (psfdata, psf->ApTrend, "APTREND");
     869    psPolynomial4DtoMD (psfdata, psf->ApTrend, "APTREND");
    791870
    792871    psMetadataAdd (psfdata, PS_LIST_TAIL, "PSF_AP_RESID", PS_DATA_F32, "aperture residual", psf->ApResid);
     
    828907    sprintf (keyword, "APTREND");
    829908    psMetadata *folder = psMetadataLookupPtr (&status, psfdata, keyword);
    830     psPolynomial3D *poly = psPolynomial3DfromMD (folder);
     909    psPolynomial4D *poly = psPolynomial4DfromMD (folder);
    831910    psFree (psf->ApTrend);
    832911    psf->ApTrend = poly;
Note: See TracChangeset for help on using the changeset viewer.