IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 17, 2009, 12:08:50 PM (17 years ago)
Author:
beaumont
Message:

merged with head

Location:
branches/cnb_branches/cnb_branch_20090301
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/cnb_branches/cnb_branch_20090301

  • branches/cnb_branches/cnb_branch_20090301/ippTools/src/dettool.c

    r21402 r23352  
    2828static bool inputMode(pxConfig *config);
    2929static bool rawMode(pxConfig *config);
     30static bool exportrunMode(pxConfig *config);
     31static bool importrunMode(pxConfig *config);
    3032
    3133// run
     
    4648    } \
    4749    break;
    48 
     50/*
     51typedef struct ExportTable {
     52    char tableName[80];
     53    char sqlFilename[80];
     54} ExportTable;
     55*/
    4956int main(int argc, char **argv)
    5057{
     
    146153        MODECASE(DETTOOL_MODE_REGISTER_DETREND, register_detrendMode);
    147154        MODECASE(DETTOOL_MODE_REGISTER_DETREND_IMFILE, register_detrend_imfileMode);
     155        MODECASE(DETTOOL_MODE_EXPORTRUN,               exportrunMode);
     156        MODECASE(DETTOOL_MODE_IMPORTRUN,               importrunMode);
    148157        default:
    149158            psAbort("invalid option (this should not happen)");
     
    578587      // generate a random-valued vector, return an index sorted by the random values
    579588      psVector *randomVector = psVectorAlloc(detrendExps->n, PS_TYPE_F32); // random values
    580       psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0);
     589      /*
     590       * change due to PAP work on random number generator?
     591       * psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0);
     592       */
     593      psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS);
    581594      for (int i = 0; i < randomVector->n; i++) {
    582595        randomVector->data.F32[i] = psRandomUniform(rng);
     
    19962009}
    19972010
     2011bool exportrunMode(pxConfig *config)
     2012{
     2013  typedef struct ExportTable {
     2014    char tableName[80];
     2015    char sqlFilename[80];
     2016  } ExportTable;
     2017 
     2018  int numExportTables = 12;
     2019
     2020  PS_ASSERT_PTR_NON_NULL(config, NULL);
     2021
     2022  PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true,  false);
     2023  PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true,  false);
     2024  PXOPT_LOOKUP_U64(limit,   config->args, "-limit",   false, false);
     2025
     2026  FILE *f = fopen (outfile, "w");
     2027  if (f == NULL) {
     2028    psError(PS_ERR_UNKNOWN, false, "failed to open output file");
     2029    return false;
     2030  }
     2031
     2032  psMetadata *where = psMetadataAlloc();
     2033  PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "==");
     2034
     2035  ExportTable tables [] = {
     2036    {"detInputExp", "dettool_export_input_exp.sql"},
     2037    {"detNormalizedExp", "dettool_export_normalized_exp.sql"},
     2038    {"detNormalizedImfile", "dettool_export_normalized_imfile.sql"},
     2039    {"detNormalizedStatImfile", "dettool_export_normalized_stat_imfile.sql"},
     2040    {"detProcessedExp", "dettool_export_processed_exp.sql"},
     2041    {"detProcessedImfile", "dettool_export_processed_imfile.sql"},
     2042    {"detRegisteredImfile", "dettool_export_registered_imfile.sql"},
     2043    {"detResidExp", "dettool_export_resid_exp.sql"},
     2044    {"detResidImfile", "dettool_export_resid_imfile.sql"},
     2045    {"detRun", "dettool_export_run.sql"},
     2046    {"detRunSummary", "dettool_export_run_summary.sql"},
     2047    {"detStackedImfile", "dettool_export_stacked_imfile.sql"},
     2048  };
     2049
     2050  for (int i=0; i < numExportTables; i++) {
     2051    psString query = pxDataGet(tables[i].sqlFilename);
     2052    if (!query) {
     2053      psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     2054      return false;
     2055    }
     2056
     2057    if (where && psListLength(where->list)) {
     2058      psString whereClause = psDBGenerateWhereSQL(where, NULL);
     2059      psStringAppend(&query, " %s", whereClause);
     2060      psFree(whereClause);
     2061    }
     2062
     2063    // treat limit == 0 as "no limit"
     2064    if (limit) {
     2065      psString limitString = psDBGenerateLimitSQL(limit);
     2066      psStringAppend(&query, " %s", limitString);
     2067      psFree(limitString);
     2068    }
     2069
     2070    if (!p_psDBRunQuery(config->dbh, query)) {
     2071      psError(PS_ERR_UNKNOWN, false, "database error");
     2072      psFree(query);
     2073      return false;
     2074    }
     2075    psFree(query);
     2076
     2077    psArray *output = p_psDBFetchResult(config->dbh);
     2078    if (!output) {
     2079      psError(PS_ERR_UNKNOWN, false, "database error");
     2080      return false;
     2081    }
     2082    if (!psArrayLength(output)) {
     2083      psTrace("chiptool", PS_LOG_INFO, "no rows found");
     2084      psFree(output);
     2085      return true;
     2086    }
     2087
     2088    // we must write the export table in non-simple (true) format
     2089    if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) {
     2090      psError(PS_ERR_UNKNOWN, false, "failed to print array");
     2091      psFree(output);
     2092      return false;
     2093    }
     2094    psFree(output);
     2095 
     2096  }
     2097
     2098  fclose (f);
     2099
     2100  return true;
     2101}
     2102
     2103bool importrunMode(pxConfig *config)
     2104{
     2105  unsigned int nFail;
     2106 
     2107  int numImportTables = 11;
     2108 
     2109  char tables[11] [80] = {"detInputExp", "detNormalizedExp",
     2110    "detNormalizedStatImfile", "detProcessedExp", "detProcessedImfile",
     2111    "detRegisteredImfile", "detResidExp", "detResidImfile",
     2112    "detNormalizedImfile", "detRunSummary", "detStackedImfile"};
     2113
     2114  PS_ASSERT_PTR_NON_NULL(config, NULL);
     2115 
     2116  PXOPT_LOOKUP_STR(infile, config->args, "-infile", true,  false);
     2117
     2118  psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false);
     2119
     2120  fprintf (stdout, "---- input ----\n");
     2121  psMetadataPrint (stderr, input, 1);
     2122 
     2123  psMetadataItem *item = psMetadataLookup (input, "detRun");
     2124  psAssert (item, "entry not in input?");
     2125  psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?");
     2126
     2127  psMetadataItem *entry = psListGet (item->data.list, 0);
     2128  assert (entry);
     2129  assert (entry->type == PS_DATA_METADATA);
     2130  detRunRow *detRun = detRunObjectFromMetadata (entry->data.md);
     2131  detRunInsertObject (config->dbh, detRun);
     2132 
     2133  // fprintf (stdout, "---- det run ----\n");
     2134  // psMetadataPrint (stderr, entry->data.md, 1);
     2135
     2136  for (int i = 0; i < numImportTables; i++) {
     2137    item = psMetadataLookup (input, tables[i]);
     2138    psAssert (item, "entry not in input?");
     2139    psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?");
     2140 
     2141    switch (i) {
     2142      case 0:
     2143        for (int i = 0; i < item->data.list->n; i++) {
     2144          entry = psListGet (item->data.list, i);
     2145          assert (entry);
     2146          assert (entry->type == PS_DATA_METADATA);
     2147          detInputExpRow *detInputExp = detInputExpObjectFromMetadata (entry->data.md);
     2148          detInputExpInsertObject (config->dbh, detInputExp);
     2149
     2150          // fprintf (stdout, "---- row %d ----\n", i);
     2151          // psMetadataPrint (stderr, entry->data.md, 1);
     2152        }
     2153        break;
     2154 
     2155      case 1:
     2156        for (int i = 0; i < item->data.list->n; i++) {
     2157          entry = psListGet (item->data.list, i);
     2158          assert (entry);
     2159          assert (entry->type == PS_DATA_METADATA);
     2160          detNormalizedExpRow *detNormalizedExp = detNormalizedExpObjectFromMetadata (entry->data.md);
     2161          detNormalizedExpInsertObject (config->dbh, detNormalizedExp);
     2162
     2163          // fprintf (stdout, "---- row %d ----\n", i);
     2164          // psMetadataPrint (stderr, entry->data.md, 1);
     2165        }
     2166        break;
     2167       
     2168      case 2:
     2169        for (int i = 0; i < item->data.list->n; i++) {
     2170          entry = psListGet (item->data.list, i);
     2171          assert (entry);
     2172          assert (entry->type == PS_DATA_METADATA);
     2173          detNormalizedStatImfileRow *detNormalizedStatImfile = detNormalizedStatImfileObjectFromMetadata (entry->data.md);
     2174          detNormalizedStatImfileInsertObject (config->dbh, detNormalizedStatImfile);
     2175
     2176          // fprintf (stdout, "---- row %d ----\n", i);
     2177          // psMetadataPrint (stderr, entry->data.md, 1);
     2178        }
     2179        break;
     2180 
     2181      case 3:
     2182        for (int i = 0; i < item->data.list->n; i++) {
     2183          entry = psListGet (item->data.list, i);
     2184          assert (entry);
     2185          assert (entry->type == PS_DATA_METADATA);
     2186          detProcessedExpRow *detProcessedExp =  detProcessedExpObjectFromMetadata (entry->data.md);
     2187          detProcessedExpInsertObject (config->dbh, detProcessedExp);
     2188
     2189          // fprintf (stdout, "---- row %d ----\n", i);
     2190          // psMetadataPrint (stderr, entry->data.md, 1);
     2191        }
     2192        break;
     2193       
     2194      case 4:
     2195        for (int i = 0; i < item->data.list->n; i++) {
     2196          entry = psListGet (item->data.list, i);
     2197          assert (entry);
     2198          assert (entry->type == PS_DATA_METADATA);
     2199          detProcessedImfileRow *detProcessedImfile =  detProcessedImfileObjectFromMetadata (entry->data.md);
     2200          detProcessedImfileInsertObject (config->dbh, detProcessedImfile);
     2201
     2202          // fprintf (stdout, "---- row %d ----\n", i);
     2203          // psMetadataPrint (stderr, entry->data.md, 1);
     2204        }
     2205        break;
     2206       
     2207      case 5:
     2208        for (int i = 0; i < item->data.list->n; i++) {
     2209          entry = psListGet (item->data.list, i);
     2210          assert (entry);
     2211          assert (entry->type == PS_DATA_METADATA);
     2212          detRegisteredImfileRow *detRegisteredImfile = detRegisteredImfileObjectFromMetadata (entry->data.md);
     2213          detRegisteredImfileInsertObject (config->dbh, detRegisteredImfile);
     2214
     2215          // fprintf (stdout, "---- row %d ----\n", i);
     2216          // psMetadataPrint (stderr, entry->data.md, 1);
     2217        }
     2218        break;
     2219       
     2220      case 6:
     2221        for (int i = 0; i < item->data.list->n; i++) {
     2222          entry = psListGet (item->data.list, i);
     2223          assert (entry);
     2224          assert (entry->type == PS_DATA_METADATA);
     2225          detResidExpRow *detResidExp = detResidExpObjectFromMetadata (entry->data.md);
     2226          detResidExpInsertObject (config->dbh, detResidExp);
     2227
     2228          // fprintf (stdout, "---- row %d ----\n", i);
     2229          // psMetadataPrint (stderr, entry->data.md, 1);
     2230        }
     2231        break;
     2232       
     2233      case 7:
     2234        for (int i = 0; i < item->data.list->n; i++) {
     2235          entry = psListGet (item->data.list, i);
     2236          assert (entry);
     2237          assert (entry->type == PS_DATA_METADATA);
     2238          detResidImfileRow *detResidImfile = detResidImfileObjectFromMetadata (entry->data.md);
     2239          detResidImfileInsertObject (config->dbh, detResidImfile);
     2240
     2241          // fprintf (stdout, "---- row %d ----\n", i);
     2242          // psMetadataPrint (stderr, entry->data.md, 1);
     2243        }
     2244        break;
     2245       
     2246      case 8:
     2247        for (int i = 0; i < item->data.list->n; i++) {
     2248          entry = psListGet (item->data.list, i);
     2249          assert (entry);
     2250          assert (entry->type == PS_DATA_METADATA);
     2251          detNormalizedImfileRow *detNormalizedImfile = detNormalizedImfileObjectFromMetadata (entry->data.md);
     2252          detNormalizedImfileInsertObject (config->dbh, detNormalizedImfile);
     2253
     2254          // fprintf (stdout, "---- row %d ----\n", i);
     2255          // psMetadataPrint (stderr, entry->data.md, 1);
     2256        }
     2257        break;
     2258       
     2259      case 9:
     2260        for (int i = 0; i < item->data.list->n; i++) {
     2261          entry = psListGet (item->data.list, i);
     2262          assert (entry);
     2263          assert (entry->type == PS_DATA_METADATA);
     2264          detRunSummaryRow *detRunSummary = detRunSummaryObjectFromMetadata (entry->data.md);
     2265          detRunSummaryInsertObject (config->dbh, detRunSummary);
     2266
     2267          // fprintf (stdout, "---- row %d ----\n", i);
     2268          // psMetadataPrint (stderr, entry->data.md, 1);
     2269        }
     2270        break;
     2271       
     2272      case 10:
     2273        for (int i = 0; i < item->data.list->n; i++) {
     2274          entry = psListGet (item->data.list, i);
     2275          assert (entry);
     2276          assert (entry->type == PS_DATA_METADATA);
     2277          detStackedImfileRow *detStackedImfile = detStackedImfileObjectFromMetadata (entry->data.md);
     2278          detStackedImfileInsertObject (config->dbh, detStackedImfile);
     2279
     2280          // fprintf (stdout, "---- row %d ----\n", i);
     2281          // psMetadataPrint (stderr, entry->data.md, 1);
     2282        }
     2283        break;
     2284    }
     2285  }
     2286
     2287  return true;
     2288}
     2289
    19982290#if 0
    19992291// XXX this function was left in commented as this method may be useful in the
Note: See TracChangeset for help on using the changeset viewer.