- Timestamp:
- Mar 17, 2009, 12:08:50 PM (17 years ago)
- Location:
- branches/cnb_branches/cnb_branch_20090301
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ippTools/src/dettool.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/cnb_branches/cnb_branch_20090301
-
Property svn:mergeinfo
set to (toggle deleted branches)
/trunk merged eligible /branches/eam_branches/eam_branch_20090303 23158-23228
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
branches/cnb_branches/cnb_branch_20090301/ippTools/src/dettool.c
r21402 r23352 28 28 static bool inputMode(pxConfig *config); 29 29 static bool rawMode(pxConfig *config); 30 static bool exportrunMode(pxConfig *config); 31 static bool importrunMode(pxConfig *config); 30 32 31 33 // run … … 46 48 } \ 47 49 break; 48 50 /* 51 typedef struct ExportTable { 52 char tableName[80]; 53 char sqlFilename[80]; 54 } ExportTable; 55 */ 49 56 int main(int argc, char **argv) 50 57 { … … 146 153 MODECASE(DETTOOL_MODE_REGISTER_DETREND, register_detrendMode); 147 154 MODECASE(DETTOOL_MODE_REGISTER_DETREND_IMFILE, register_detrend_imfileMode); 155 MODECASE(DETTOOL_MODE_EXPORTRUN, exportrunMode); 156 MODECASE(DETTOOL_MODE_IMPORTRUN, importrunMode); 148 157 default: 149 158 psAbort("invalid option (this should not happen)"); … … 578 587 // generate a random-valued vector, return an index sorted by the random values 579 588 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); 581 594 for (int i = 0; i < randomVector->n; i++) { 582 595 randomVector->data.F32[i] = psRandomUniform(rng); … … 1996 2009 } 1997 2010 2011 bool 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 2103 bool 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 1998 2290 #if 0 1999 2291 // 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.
