IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14362


Ignore:
Timestamp:
Jul 20, 2007, 6:50:05 PM (19 years ago)
Author:
Paul Price
Message:

Adding support for RINGS kernel

Location:
trunk/ppSub/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppSub/src/ppSubArguments.c

    r14309 r14362  
    185185    psMetadataAddStr(arguments, PS_LIST_TAIL, "-isis-widths", 0, "ISIS Gaussian widths (comma-separated)", NULL);
    186186    psMetadataAddStr(arguments, PS_LIST_TAIL, "-isis-orders", 0, "ISIS polynomial orders (comma-separated)", NULL);
     187    psMetadataAddS32(arguments, PS_LIST_TAIL, "-rings-order", 0, "RINGS polynomial order", -1);
    187188    psMetadataAddS32(arguments, PS_LIST_TAIL, "-inner", 0, "SPAM and FRIES inner radius", -1);
    188189    psMetadataAddS32(arguments, PS_LIST_TAIL, "-spam-binning", 0, "SPAM kernel binning", 2);
     
    234235    VALUE_ARG_RECIPE_INT("-order",        "SPATIAL.ORDER",   S32, -1);
    235236    VALUE_ARG_RECIPE_FLOAT("-spacing",    "STAMP.SPACING",   F32);
     237    VALUE_ARG_RECIPE_INT("-rings-order",  "RINGS.ORDER",     S32, -1);
    236238    VALUE_ARG_RECIPE_INT("-inner",        "INNER",           S32, -1);
    237239    VALUE_ARG_RECIPE_INT("-spam-binning", "SPAM.BINNING",    S32, 0);
  • trunk/ppSub/src/ppSubReadout.c

    r14328 r14362  
    1212#define TESTING
    1313#define WCS_TOLERANCE 0.001             // Tolerance for WCS
     14
     15#include <unistd.h>
     16static void memCheck(const char *where)
     17{
     18    return;
     19    psMemBlock **leaks = NULL;
     20    int numLeaks = psMemCheckLeaks(0, &leaks, NULL, true);
     21    size_t largestSize = 0;
     22    psMemId largest = 0;
     23    size_t totalSize = 0;
     24    for (int i = 0; i < numLeaks; i++) {
     25        psMemBlock *mb = leaks[i];
     26        totalSize += mb->userMemorySize;
     27        if (mb->userMemorySize > largestSize) {
     28            largestSize = mb->userMemorySize;
     29            largest = mb->id;
     30        }
     31    }
     32    psFree(leaks);
     33    fprintf(stderr, "%s:\n", where);
     34    fprintf(stderr, "    Memory in use: %zd\n", totalSize);
     35    fprintf(stderr, "    Largest block: %ld\n", largest);
     36    fprintf(stderr, "    sbrk(): %zd\n", (unsigned long)sbrk(0));
     37    return;
     38}
    1439
    1540bool ppSubReadout(pmConfig *config, const pmFPAview *view)
     
    3863    psVector *orders = psMetadataLookupPtr(NULL, config->arguments, "ISIS.ORDERS"); // ISIS Polynomial orders
    3964    int inner = psMetadataLookupS32(NULL, config->arguments, "INNER"); // Inner radius
     65    int ringsOrder = psMetadataLookupS32(NULL, config->arguments, "RINGS.ORDER"); // RINGS polynomial order
    4066    int binning = psMetadataLookupS32(NULL, config->arguments, "SPAM.BINNING"); // Binning for SPAM kernel
    4167    psMaskType maskBad = pmConfigMask(psMetadataLookupStr(NULL, config->arguments, "MASK.BAD"),
     
    6288    }
    6389
     90    memCheck("start");
     91
    6492    // Mask for subtraction
    6593    psImage *subMask = pmSubtractionMask(inRO->mask, refRO->mask, maskBad, size, footprint);
     94
     95    memCheck("mask");
    6696
    6797#if 0
     
    81111#endif
    82112
     113    // Kernel basis functions
    83114    pmSubtractionKernels *kernels = pmSubtractionKernelsGenerate(type, size, order, widths, orders,
    84                                                                  inner, binning); // Kernel basis functions
     115                                                                 inner, binning, ringsOrder);
    85116    psArray *stamps = NULL;             // Stamps for matching PSF
    86117    psVector *solution = NULL;          // Solution to match PSF
     118
     119    memCheck("kernels");
    87120
    88121    int numRejected = -1;               // Number of rejected stamps in each iteration
     
    94127        }
    95128
     129        memCheck("  find stamps");
     130
    96131        if (!pmSubtractionCalculateEquation(stamps, refRO->image, inRO->image, inRO->weight,
    97132                                            kernels, footprint)) {
     
    100135         }
    101136
     137        memCheck("  calculate equation");
     138
    102139        solution = pmSubtractionSolveEquation(solution, stamps);
    103140        if (!solution) {
     
    105142            goto ERROR;
    106143        }
     144
     145        memCheck("  solve equation");
    107146
    108147        numRejected = pmSubtractionRejectStamps(stamps, refRO->image, inRO->image, subMask,
     
    113152        }
    114153        psLogMsg("ppSub", PS_LOG_INFO, "%d stamps rejected on iteration %d.", numRejected, i);
     154
     155        memCheck("  reject stamps");
    115156    }
    116157
     
    124165    psFree(stamps);
    125166    stamps = NULL;
     167
     168    memCheck("solution");
    126169
    127170#ifdef TESTING
     
    179222#endif
    180223
     224    memCheck("diag outputs");
     225
    181226    psImage *convImage = NULL, *convWeight = NULL, *convMask = NULL; // Convolved images
    182227    if (!pmSubtractionConvolve(&convImage, &convWeight, &convMask, refRO->image, refRO->weight, subMask,
     
    191236    psFree(solution);
    192237
     238    memCheck("convolution");
     239
    193240    // Do the subtraction
    194241    if (reverse) {
     
    202249    }
    203250
     251    memCheck("subtraction");
     252
    204253    psFree(convImage);
    205254    psFree(convMask);
    206255    psFree(convWeight);
     256
     257    memCheck("subtraction freed");
    207258
    208259    outRO->data_exists = true;
     
    257308    }
    258309
     310    memCheck("header");
     311
    259312    psFree(outRO);
    260313
Note: See TracChangeset for help on using the changeset viewer.