IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 3, 2006, 6:18:57 PM (20 years ago)
Author:
jhoblitt
Message:

large database schema change -> add airmass, ra, decl, exp_time, & background to exps
several memory leaks
add some transactions to p0search & p2search
fix p2search -done's handling of p2Done* tables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/pxframes.c

    r8062 r8120  
    66
    77#include "pxtools.h"
     8
     9static rawDetrendExpRow *newToRawDetrendExp(pxConfig *config, newExpRow *exp);
    810
    911#define PX_FRAME_ALLOC(frametype, exptype) \
     
    7779PX_FRAME_PRINT(p2PendingFrame, p2PendingImfile);
    7880
    79 
     81// XXX fix the exposure search so that it doesn't dump the entire table
    8082#define PX_FRAME_SEARCH(frametype, exptype, imfiletype) \
    8183psArray *frametype##Search(pxConfig *config) \
     
    8385    PS_ASSERT_PTR_NON_NULL(config, NULL); \
    8486 \
    85     psArray *exposures = exptype##SelectRowObjects(config->dbh, \
    86         config->where, MAX_ROWS); \
     87    psArray *exposures = exptype##SelectRowObjects(config->dbh, NULL, MAX_ROWS); \
    8788    if (!exposures) { \
    8889        psError(PS_ERR_UNKNOWN, false, "no " #exptype " rows found"); \
     
    131132PX_FRAME_SEARCH(p2PendingFrame, p2PendingExp, p2PendingImfile);
    132133
    133 rawScienceFrame *newToRawScienceFrame(newFrame *newFrame)
    134 {
     134
     135bool rawScienceFrameInsert(pxConfig *config, rawScienceFrame *frame)
     136{
     137    PS_ASSERT_PTR_NON_NULL(config, false);
     138    PS_ASSERT_PTR_NON_NULL(config->dbh, false);
     139    PS_ASSERT_PTR_NON_NULL(frame, false);
     140
     141    psDB *dbh = config->dbh;
     142
     143    if (!rawScienceExpInsertObject(dbh, frame->exposure)) {
     144        psError(PS_ERR_UNKNOWN, false, "dbh access failed");
     145        return false;
     146    }
     147
     148    psArray *images = frame->images;
     149    for (long i = 0; i < psArrayLength(images); i++) {
     150        if (!rawImfileInsertObject(dbh, images->data[i])) {
     151            psError(PS_ERR_UNKNOWN, false, "dbh access failed");
     152            return false;
     153        }
     154    }
     155
     156    return true;
     157}
     158
     159rawDetrendFrame *newToRawDetrendFrame(pxConfig *config, newFrame *newFrame)
     160{
     161    newExpRow       *newExp = NULL;
     162
    135163    PS_ASSERT_PTR_NON_NULL(newFrame, NULL);
    136164
    137     newExpRow *newExp = newFrame->exposure;
    138     rawScienceExpRow *rawScienceExp = rawScienceExpRowAlloc(
    139         newExp->exp_id,
    140         newExp->camera,
    141         newExp->telescope,
    142         newExp->exp_type,
    143 //        newExp->class,
    144         newExp->imfiles,
    145         "my filter",
    146         "my stats"
    147     );
     165    newExp = newFrame->exposure;
     166    rawDetrendExpRow *rawDetrendExp = newToRawDetrendExp(config, newExp);
    148167
    149168    psArray *newImages = newFrame->images;
     
    155174            newImfile->class,
    156175            newImfile->class_id,
    157             newImfile->uri,
    158             "my stats"
     176            newImfile->uri
    159177        );
    160178        psArrayAdd(rawImages, 0, rawImfile);
     
    162180    }
    163181
    164     rawScienceFrame *rawScienceFrame = rawScienceFrameAlloc(rawScienceExp, rawImages);
    165     psFree(rawScienceExp);
     182    rawDetrendFrame *rawDetrendFrame = rawDetrendFrameAlloc(rawDetrendExp, rawImages);
     183    psFree(rawDetrendExp);
    166184    psFree(rawImages);
    167185
    168     return rawScienceFrame;
    169 }
    170 
    171 bool rawScienceFrameInsert(pxConfig *config, rawScienceFrame *frame)
     186    return rawDetrendFrame;
     187}
     188
     189bool rawDetrendFrameInsert(pxConfig *config, rawDetrendFrame *frame)
    172190{
    173191    PS_ASSERT_PTR_NON_NULL(config, false);
     
    177195    psDB *dbh = config->dbh;
    178196
    179     if (!rawScienceExpInsertObject(dbh, frame->exposure)) {
     197    if (!rawDetrendExpInsertObject(dbh, frame->exposure)) {
    180198        psError(PS_ERR_UNKNOWN, false, "dbh access failed");
    181199        return false;
     
    193211}
    194212
    195 rawDetrendFrame *newToRawDetrendFrame(newFrame *newFrame)
    196 {
    197     newExpRow       *newExp = NULL;
    198 
    199     PS_ASSERT_PTR_NON_NULL(newFrame, NULL);
    200 
    201     newExp = newFrame->exposure;
    202     rawDetrendExpRow *rawDetrendExp = rawDetrendExpRowAlloc(
    203         newExp->exp_id,
    204         newExp->camera,
    205         newExp->telescope,
    206         newExp->exp_type,
    207 //        newExp->class,
    208         newExp->imfiles,
    209         "my filter",
    210         "my stats"
     213static rawDetrendExpRow *newToRawDetrendExp(pxConfig *config, newExpRow *exp)
     214{
     215    PS_ASSERT_PTR_NON_NULL(config, NULL);
     216    PS_ASSERT_PTR_NON_NULL(exp, NULL);
     217
     218    bool status = false;
     219    psString filter = psMetadataLookupStr(&status, config->args, "-filter");
     220    if (!status) {
     221        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filter");
     222        return false;
     223    }
     224    if (!filter) {
     225        psError(PS_ERR_UNKNOWN, true, "-filter is required");
     226        return false;
     227    }
     228    psF32 airmass = psMetadataLookupF32(&status, config->args, "-airmass");
     229    if (!status) {
     230        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -airmass");
     231        return false;
     232    }
     233    if (isnan(airmass)) {
     234        psError(PS_ERR_UNKNOWN, true, "-airmass is required");
     235        return false;
     236    }
     237    psF64 ra = psMetadataLookupF64(&status, config->args, "-ra");
     238    if (!status) {
     239        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ra");
     240        return false;
     241    }
     242    if (isnan(ra)) {
     243        psError(PS_ERR_UNKNOWN, true, "-airmass is required");
     244        return false;
     245    }
     246    psF64 decl = psMetadataLookupF64(&status, config->args, "-decl");
     247    if (!status) {
     248        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -decl");
     249        return false;
     250    }
     251    if (isnan(decl)) {
     252        psError(PS_ERR_UNKNOWN, true, "-decl is required");
     253        return false;
     254    }
     255    psF32 exp_time = psMetadataLookupF32(&status, config->args, "-exp_time");
     256    if (isnan(exp_time)) {
     257        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_time");
     258        return false;
     259    }
     260    if (!exp_time) {
     261        psError(PS_ERR_UNKNOWN, true, "-exp_time is required");
     262        return false;
     263    }
     264    psF64 background = psMetadataLookupF64(&status, config->args, "-background");
     265    if (!status) {
     266        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -background");
     267        return false;
     268    }
     269    if (!exp_time) {
     270        psError(PS_ERR_UNKNOWN, true, "-background is required");
     271        return false;
     272    }
     273
     274    return rawDetrendExpRowAlloc(
     275        exp->exp_id,
     276        exp->camera,
     277        exp->telescope,
     278        exp->exp_type,
     279        exp->imfiles,
     280        filter,
     281        airmass,
     282        ra,
     283        decl,
     284        exp_time,
     285        background
    211286    );
    212 
    213     psArray *newImages = newFrame->images;
    214     psArray *rawImages = psArrayAlloc(psArrayLength(newImages));
    215     for (long i = 0; i < psArrayLength(newImages); i++) {
    216         newImfileRow *newImfile = newImages->data[i];
    217         rawImfileRow *rawImfile = rawImfileRowAlloc(
    218             newImfile->exp_id,
    219             newImfile->class,
    220             newImfile->class_id,
    221             newImfile->uri,
    222             "my stats"
    223         );
    224         psArrayAdd(rawImages, 0, rawImfile);
    225         psFree(rawImfile);
    226     }
    227 
    228     rawDetrendFrame *rawDetrendFrame = rawDetrendFrameAlloc(rawDetrendExp, rawImages);
    229     psFree(rawDetrendExp);
    230     psFree(rawImages);
    231 
    232     return rawDetrendFrame;
    233 }
    234 
    235 bool rawDetrendFrameInsert(pxConfig *config, rawDetrendFrame *frame)
    236 {
    237     PS_ASSERT_PTR_NON_NULL(config, false);
    238     PS_ASSERT_PTR_NON_NULL(config->dbh, false);
    239     PS_ASSERT_PTR_NON_NULL(frame, false);
    240 
    241     psDB *dbh = config->dbh;
    242 
    243     if (!rawDetrendExpInsertObject(dbh, frame->exposure)) {
    244         psError(PS_ERR_UNKNOWN, false, "dbh access failed");
    245         return false;
    246     }
    247 
    248     psArray *images = frame->images;
    249     for (long i = 0; i < psArrayLength(images); i++) {
    250         if (!rawImfileInsertObject(dbh, images->data[i])) {
    251             psError(PS_ERR_UNKNOWN, false, "dbh access failed");
    252             return false;
    253         }
    254     }
    255 
    256     return true;
    257 }
     287}
Note: See TracChangeset for help on using the changeset viewer.