IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 16613


Ignore:
Timestamp:
Feb 22, 2008, 10:23:58 AM (18 years ago)
Author:
eugene
Message:

added -unmasked mode to chiptool; added various restrictions to dettool -runs

Location:
trunk/ippTools
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/share/Makefile.am

    r16364 r16613  
    1212        chiptool_processedimfile.sql \
    1313        chiptool_revertprocessedimfile.sql \
     14        chiptool_unmasked.sql \
    1415        detselect_search.sql \
    1516        detselect_select.sql \
     
    2021        dettool_normalizedstat.sql \
    2122        dettool_raw.sql \
     23        dettool_runs.sql \
    2224        dettool_revertdetrunsummary.sql \
    2325        dettool_revertnormalizedexp.sql \
  • trunk/ippTools/src/chiptool.c

    r16556 r16613  
    4242static bool blockMode(pxConfig *config);
    4343static bool maskedMode(pxConfig *config);
     44static bool unmaskedMode(pxConfig *config);
    4445static bool unblockMode(pxConfig *config);
    4546
     
    7172        MODECASE(CHIPTOOL_MODE_BLOCK,                   blockMode);
    7273        MODECASE(CHIPTOOL_MODE_MASKED,                  maskedMode);
     74        MODECASE(CHIPTOOL_MODE_UNMASKED,                unmaskedMode);
    7375        MODECASE(CHIPTOOL_MODE_UNBLOCK,                 unblockMode);
    7476        default:
     
    504506
    505507    if (psDBAffectedRows(config->dbh) < 1) {
    506         psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");
     508        psError(PS_ERR_UNKNOWN, false, "should have affected at least 1 row");
    507509        return false;
    508510    }
     
    545547    PS_ASSERT_PTR_NON_NULL(config, false);
    546548
     549    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     550
     551    psMetadata *where = psMetadataAlloc();
     552
     553    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
     554
     555    if (where->list->n < 1) {
     556        psFree(where);
     557        where = NULL;
     558    }
     559
    547560    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    548561
    549562    psString query = psStringCopy("SELECT * FROM chipMask");
     563
     564    if (where) {
     565        psString whereClause = psDBGenerateWhereSQL(where, NULL);
     566        psFree(where);
     567        psStringAppend(&query, " %s", whereClause);
     568        psFree(whereClause);
     569    }
     570
     571    // treat limit == 0 as "no limit"
     572    if (limit) {
     573        psString limitString = psDBGenerateLimitSQL(limit);
     574        psStringAppend(&query, " %s", limitString);
     575        psFree(limitString);
     576    }
    550577
    551578    if (!p_psDBRunQuery(config->dbh, query)) {
     
    575602    // negative simple so the default is true
    576603    if (!ippdbPrintMetadatas(stdout, output, "chipMask", !simple)) {
     604        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     605        psFree(output);
     606        return false;
     607    }
     608
     609    psFree(output);
     610
     611    return true;
     612}
     613
     614// return the list of labels which are NOT blocked
     615static bool unmaskedMode(pxConfig *config)
     616{
     617    PS_ASSERT_PTR_NON_NULL(config, false);
     618
     619    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     620    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     621
     622    psMetadata *where = psMetadataAlloc();
     623
     624    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
     625
     626    if (where->list->n < 1) {
     627        psFree(where);
     628        where = NULL;
     629    }
     630
     631    psString query = pxDataGet("chiptool_unmasked.sql");
     632    if (!query) {
     633        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     634        return false;
     635    }
     636   
     637    if (where) {
     638        psString whereClause = psDBGenerateWhereSQL(where, "chipUnmask");
     639        psFree(where);
     640        psStringAppend(&query, " %s", whereClause);
     641        psFree(whereClause);
     642    }
     643
     644    // treat limit == 0 as "no limit"
     645    if (limit) {
     646        psString limitString = psDBGenerateLimitSQL(limit);
     647        psStringAppend(&query, " %s", limitString);
     648        psFree(limitString);
     649    }
     650
     651    if (!p_psDBRunQuery(config->dbh, query)) {
     652        psError(PS_ERR_UNKNOWN, false, "database error");
     653        psFree(query);
     654        return false;
     655    }
     656    psFree(query);
     657
     658    psArray *output = p_psDBFetchResult(config->dbh);
     659    if (!output) {
     660        psError(PS_ERR_UNKNOWN, false, "database error");
     661        return false;
     662    }
     663    if (!psArrayLength(output)) {
     664        psTrace("chiptool", PS_LOG_INFO, "no rows found");
     665        psFree(output);
     666        return true;
     667    }
     668
     669    if (!convertIdToStr(output)) {
     670        psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
     671        psFree(output);
     672        return false;
     673    }
     674
     675    // negative simple so the default is true
     676    if (!ippdbPrintMetadatas(stdout, output, "chipUnmask", !simple)) {
    577677        psError(PS_ERR_UNKNOWN, false, "failed to print array");
    578678        psFree(output);
  • trunk/ippTools/src/chiptool.h

    r14099 r16613  
    3333    CHIPTOOL_MODE_BLOCK,
    3434    CHIPTOOL_MODE_MASKED,
     35    CHIPTOOL_MODE_UNMASKED,
    3536    CHIPTOOL_MODE_UNBLOCK,
    3637    CHIPTOOL_MODE_RETRYPROCESSEDIMFILE
  • trunk/ippTools/src/chiptoolConfig.c

    r16557 r16613  
    272272    // -masked
    273273    psMetadata *maskedArgs = psMetadataAlloc();
     274    psMetadataAddStr(maskedArgs, PS_LIST_TAIL, "-label",  0,
     275            "list blocks for specified label", NULL);
    274276    psMetadataAddBool(maskedArgs, PS_LIST_TAIL, "-simple",  0,
    275277            "use the simple output format", false);
     278    psMetadataAddU64(maskedArgs, PS_LIST_TAIL, "-limit",  0,
     279            "limit result set to N items", 0);
     280
     281    // -unmasked
     282    psMetadata *unmaskedArgs = psMetadataAlloc();
     283    psMetadataAddStr(unmaskedArgs, PS_LIST_TAIL, "-label",  0,
     284            "restrict to specified label", NULL);
     285    psMetadataAddBool(unmaskedArgs, PS_LIST_TAIL, "-simple",  0,
     286            "use the simple output format", false);
     287    psMetadataAddU64(unmaskedArgs, PS_LIST_TAIL, "-limit",  0,
     288            "limit result set to N items", 0);
    276289
    277290    // -unblock
     
    283296    psMetadata *modes = psMetadataAlloc();
    284297
    285     PXOPT_ADD_MODE("-queue",               "", CHIPTOOL_MODE_QUEUE,          queueArgs);
    286     PXOPT_ADD_MODE("-pendingimfile",       "", CHIPTOOL_MODE_PENDINGIMFILE,  pendingimfileArgs);
    287     PXOPT_ADD_MODE("-addprocessedimfile",  "", CHIPTOOL_MODE_ADDPROCESSEDIMFILE,addprocessedimfileArgs);
    288     PXOPT_ADD_MODE("-processedimfile",     "", CHIPTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs);
     298    PXOPT_ADD_MODE("-queue",                 "", CHIPTOOL_MODE_QUEUE,          queueArgs);
     299    PXOPT_ADD_MODE("-pendingimfile",         "", CHIPTOOL_MODE_PENDINGIMFILE,  pendingimfileArgs);
     300    PXOPT_ADD_MODE("-addprocessedimfile",    "", CHIPTOOL_MODE_ADDPROCESSEDIMFILE,addprocessedimfileArgs);
     301    PXOPT_ADD_MODE("-processedimfile",       "", CHIPTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs);
    289302    PXOPT_ADD_MODE("-updateprocessedimfile", "", CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,    updateprocessedimfileArgs);
    290303    PXOPT_ADD_MODE("-revertprocessedimfile", "", CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,    revertprocessedimfileArgs);
    291     PXOPT_ADD_MODE("-block",               "", CHIPTOOL_MODE_BLOCK,          blockArgs);
    292     PXOPT_ADD_MODE("-masked",              "", CHIPTOOL_MODE_MASKED,         maskedArgs);
    293     PXOPT_ADD_MODE("-unblock",             "",  CHIPTOOL_MODE_UNBLOCK,        unblockArgs);
     304    PXOPT_ADD_MODE("-block",                 "", CHIPTOOL_MODE_BLOCK,          blockArgs);
     305    PXOPT_ADD_MODE("-masked",                "", CHIPTOOL_MODE_MASKED,         maskedArgs);
     306    PXOPT_ADD_MODE("-unmasked",              "", CHIPTOOL_MODE_UNMASKED,       unmaskedArgs);
     307    PXOPT_ADD_MODE("-unblock",               "", CHIPTOOL_MODE_UNBLOCK,        unblockArgs);
    294308
    295309    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
  • trunk/ippTools/src/dettool.c

    r16504 r16613  
    10111011
    10121012    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    1013 
     1013    PXOPT_LOOKUP_BOOL(active, config->args, "-active", false);
     1014    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1015
     1016    PXOPT_COPY_STR(config->args, config->where, "-inst", "camera", "==");
     1017    PXOPT_COPY_STR(config->args, config->where, "-telescope", "telescope", "==");
     1018    PXOPT_COPY_STR(config->args, config->where, "-filter", "filter", "==");
     1019
     1020    // airmass_min  < airmass  < airmass_max
     1021    PXOPT_COPY_F32(config->args, config->where, "-airmass", "airmass_min", "<=");
     1022    PXOPT_COPY_F32(config->args, config->where, "-airmass", "airmass_max", ">=");
     1023
     1024    // exp_time_min < exp_time < exp_time_max
     1025    PXOPT_COPY_F32(config->args, config->where, "-exp_time", "exp_time_min", "<=");
     1026    PXOPT_COPY_F32(config->args, config->where, "-exp_time", "exp_time_max", ">=");
     1027
     1028    // ccd_temp_min < ccd_temp < ccd_temp_max
     1029    PXOPT_COPY_F32(config->args, config->where, "-ccd_temp", "ccd_temp_min", "<=");
     1030    PXOPT_COPY_F32(config->args, config->where, "-ccd_temp", "ccd_temp_max", ">=");
     1031
     1032    PXOPT_COPY_F64(config->args, config->where, "-posang", "posang_min", "<=");
     1033    PXOPT_COPY_F64(config->args, config->where, "-posang", "posang_max", ">=");
     1034
     1035    psString query = pxDataGet("dettool_runs.sql");
     1036    if (!query) {
     1037        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1038        return false;
     1039    }
     1040   
     1041    if (config->where && active) {
     1042        psString whereClause = psDBGenerateWhereSQL(config->where, "detRun");
     1043        psStringAppend(&query, " %s AND (detRun.state = 'run' OR detRun.state = 'stop' OR detRun.state = 'register')", whereClause);
     1044        psFree(whereClause);
     1045    }
     1046    if (config->where && !active) {
     1047        psString whereClause = psDBGenerateWhereSQL(config->where, "detRun");
     1048        psStringAppend(&query, " %s", whereClause);
     1049        psFree(whereClause);
     1050    }
     1051    if (!config->where && active) {
     1052        psStringAppend(&query, " WHERE (detRun.state = 'run' OR detRun.state = 'stop' OR detRun.state = 'register')");
     1053    }
     1054
     1055    // treat limit == 0 as "no limit"
     1056    if (limit) {
     1057        psString limitString = psDBGenerateLimitSQL(limit);
     1058        psStringAppend(&query, " %s", limitString);
     1059        psFree(limitString);
     1060    }
     1061
     1062    if (!p_psDBRunQuery(config->dbh, query)) {
     1063        psError(PS_ERR_UNKNOWN, false, "database error");
     1064        psFree(query);
     1065        return false;
     1066    }
     1067    psFree(query);
     1068
     1069    psArray *runs = p_psDBFetchResult(config->dbh);
     1070    if (!runs) {
     1071        psError(PS_ERR_UNKNOWN, false, "database error");
     1072        return false;
     1073    }
     1074
     1075// XXX old version
     1076# if 0
    10141077    // XXX fix the hard coding of the table name
    10151078    psArray *runs = psDBSelectRows(config->dbh, "detRun", config->where, 0);
     
    10181081        return false;
    10191082    }
     1083# endif
    10201084
    10211085    if (!psArrayLength(runs)) {
  • trunk/ippTools/src/dettoolConfig.c

    r16170 r16613  
    324324    psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-simple",  0,
    325325            "use the simple output format", false);
     326    psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-active",  0,
     327            "only return active detRuns", false);
     328    psMetadataAddU64(runsArgs, PS_LIST_TAIL, "-limit",  0,
     329            "limit result set to N items", 0);
    326330    psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-det_id", 0,
    327331            "search for detrend ID", NULL);
     332
     333    psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-inst", 0,
     334            "search for camera (instrument)", NULL);
     335    psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-telescope", 0,
     336            "search for telescope", NULL);
     337    psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-filter", 0,
     338            "search for filter", NULL);
     339
     340    psMetadataAddF32(runsArgs, PS_LIST_TAIL, "-airmass", 0,
     341            "match airmass", NAN);
     342    psMetadataAddF32(runsArgs, PS_LIST_TAIL, "-exp_time", 0,
     343            "match exp time", NAN);
     344    psMetadataAddF32(runsArgs, PS_LIST_TAIL, "-ccd_temp", 0,
     345            "match ccd temp", NAN);
     346    psMetadataAddF64(runsArgs, PS_LIST_TAIL, "-posang", 0,
     347            "match posang", NAN);
    328348
    329349    // -childlessrun
Note: See TracChangeset for help on using the changeset viewer.