Changeset 8608 for trunk/ippTools/src/dettool.c
- Timestamp:
- Aug 25, 2006, 1:28:40 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/dettool.c (modified) (73 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/dettool.c
r8606 r8608 138 138 psFree(query); 139 139 return false; 140 } 140 } 141 141 psFree(query); 142 142 … … 187 187 return false; 188 188 } 189 189 190 190 // we have to support multipe exp_ids 191 191 psMetadataItem *item = psMetadataLookup(config->args, "-exp_id"); … … 340 340 341 341 static bool mapPositionToDetRun(psArray *mds) 342 { 342 { 343 343 PS_ASSERT_PTR_NON_NULL(mds, false); 344 344 … … 734 734 " JOIN rawDetrendExp" 735 735 " USING(exp_id)" 736 ); 736 ); 737 737 738 738 if (config->where) { … … 746 746 psFree(query); 747 747 return false; 748 } 748 } 749 749 psFree(query); 750 750 … … 806 806 " AND detProcessedImfile.exp_id IS NULL" 807 807 " AND detProcessedImfile.class_id IS NULL" 808 ); 808 ); 809 809 810 810 if (config->where) { … … 818 818 psFree(query); 819 819 return false; 820 } 820 } 821 821 psFree(query); 822 822 … … 861 861 // select exp_ids from detInputExp matching det_idp 862 862 // where query should be pre-generated 863 psArray *detInputExp = 863 psArray *detInputExp = 864 864 detInputExpSelectRowObjects(config->dbh, where, 0); 865 865 if (!detInputExp) { … … 1005 1005 bg_stdev, 1006 1006 bg_mean_stdev 1007 ); 1007 ); 1008 1008 psFree(rawImfiles); 1009 1009 … … 1012 1012 psError(PS_ERR_UNKNOWN, false, "database error"); 1013 1013 psFree(detRow); 1014 return false; 1014 return false; 1015 1015 } 1016 1016 … … 1033 1033 // compare to detProcessedImfiles by det_id/exp_id 1034 1034 // found how many imfile there are in each class_id 1035 // and: 1035 // and: 1036 1036 // det_id is not in detStackedImfile; 1037 1037 // iteration is not in detStackedImfile; … … 1068 1068 " HAVING" 1069 1069 " COUNT(detProcessedImfile.class_id) = COUNT(rawImfile.class_id)" 1070 ); 1070 ); 1071 1071 1072 1072 // XXX does it make sens to accept any search params? … … 1083 1083 psFree(query); 1084 1084 return false; 1085 } 1085 } 1086 1086 psFree(query); 1087 1087 … … 1140 1140 " JOIN detRun" 1141 1141 " ON detProcessedImfile.det_id = detRun.position" 1142 ); 1142 ); 1143 1143 } else { 1144 1144 // select detRun.det_type … … 1173 1173 " AND detInputExp.include = 1" 1174 1174 " ) as detProcessedImfile" 1175 ); 1175 ); 1176 1176 } 1177 1177 … … 1186 1186 psFree(query); 1187 1187 return false; 1188 } 1188 } 1189 1189 psFree(query); 1190 1190 … … 1214 1214 1215 1215 psFree(output); 1216 1216 1217 1217 return true; 1218 1218 } … … 1235 1235 } 1236 1236 } 1237 processedImfiles = 1237 processedImfiles = 1238 1238 detProcessedImfileSelectRowObjects(config->dbh, prunedWhere, 0); 1239 1239 psFree(prunedWhere); 1240 1240 } else { 1241 processedImfiles = 1241 processedImfiles = 1242 1242 detProcessedImfileSelectRowObjects(config->dbh, NULL, 0); 1243 1243 } … … 1367 1367 1368 1368 psFree(rawImfiles); 1369 1369 1370 1370 #if 0 1371 1371 { … … 1428 1428 psError(PS_ERR_UNKNOWN, false, 1429 1429 "class_id %s count mismatch - processed: %u raw: %u ", 1430 key, *pcount, *rcount 1430 key, *pcount, *rcount 1431 1431 ); 1432 1432 // iterate through processedImfiles and remove *ALL* enteries … … 1581 1581 } 1582 1582 psFree(rawImfiles); 1583 } 1584 1583 } 1584 1585 1585 if (!valid_class_id) { 1586 psError(PS_ERR_UNKNOWN, true, 1586 psError(PS_ERR_UNKNOWN, true, 1587 1587 "class_id can not be correlated with the input exposures"); 1588 1588 return false; … … 1600 1600 bg_mean_stdev, 1601 1601 normalize 1602 ); 1602 ); 1603 1603 1604 1604 // insert the new row into the detProcessedImfile table … … 1606 1606 psError(PS_ERR_UNKNOWN, false, "database error"); 1607 1607 psFree(stackedImfile); 1608 return false; 1608 return false; 1609 1609 } 1610 1610 … … 1623 1623 1624 1624 psString query = psStringCopy( 1625 "SELECT" 1625 "SELECT" 1626 1626 " detStackedImfile.*" 1627 1627 " FROM detStackedImfile" … … 1629 1629 " USING(det_id, iteration, class_id)" 1630 1630 " WHERE" 1631 " detNormalizedImfile.det_id IS NULL" 1632 " AND detNormalizedImfile.iteration IS NULL" 1633 " AND detNormalizedImfile.class_id IS NULL" 1634 ); 1631 " detNormalizedImfile.det_id IS NULL" 1632 " AND detNormalizedImfile.iteration IS NULL" 1633 " AND detNormalizedImfile.class_id IS NULL" 1634 ); 1635 1635 1636 1636 if (config->where) { … … 1644 1644 psFree(query); 1645 1645 return false; 1646 } 1646 } 1647 1647 psFree(query); 1648 1648 … … 1705 1705 if (!valid_class_ids) { 1706 1706 psError(PS_ERR_UNKNOWN, false, "no detInputExp imfile class_ids found"); 1707 return false; 1708 } 1709 1707 return false; 1708 } 1709 1710 1710 // check class_ids for validity 1711 1711 for (long i = 0; i < psArrayLength(stackedImfiles); i++) { … … 1764 1764 1765 1765 psFree(stackedImfiles); 1766 1766 1767 1767 return true; 1768 1768 } … … 1779 1779 // sort to detInputExp.imfiles to find the largest value per det_id/iter 1780 1780 // compare imfiles to the number of detStackedImfiles by class_id 1781 // and: 1781 // and: 1782 1782 // ??? 1783 1783 // det_id is not in detStackedImfile; … … 1803 1803 " rawDetrendExp.exp_id" 1804 1804 " HAVING MAX(rawDetrendExp.imfiles) = COUNT(detStackedImfile.class_id)" 1805 ); 1805 ); 1806 1806 1807 1807 // XXX does it make sens to accept any search params? … … 1818 1818 psFree(query); 1819 1819 return false; 1820 } 1820 } 1821 1821 psFree(query); 1822 1822 … … 1864 1864 " USING(det_id, iteration, class_id)" 1865 1865 " WHERE" 1866 " detNormalizedStatImfile.det_id IS NULL" 1867 " AND detNormalizedStatImfile.iteration IS NULL" 1868 " AND detNormalizedStatImfile.class_id IS NULL" 1866 " detNormalizedStatImfile.det_id IS NULL" 1867 " AND detNormalizedStatImfile.iteration IS NULL" 1868 " AND detNormalizedStatImfile.class_id IS NULL" 1869 1869 ); 1870 1870 … … 1879 1879 psFree(query); 1880 1880 return false; 1881 } 1881 } 1882 1882 psFree(query); 1883 1883 … … 1933 1933 } 1934 1934 1935 static detNormalizedStatImfileRow *detStackedToDetNormalizedStatImfile(pxConfig *config, detStackedImfileRow *stackedImfile) 1935 static detNormalizedStatImfileRow *detStackedToDetNormalizedStatImfile(pxConfig *config, detStackedImfileRow *stackedImfile) 1936 1936 { 1937 1937 PS_ASSERT_PTR_NON_NULL(config, NULL); … … 1966 1966 1967 1967 psString query = psStringCopy( 1968 "SELECT" 1968 "SELECT" 1969 1969 " detNormalizedStatImfile.*" 1970 1970 " FROM detNormalizedStatImfile" … … 1972 1972 " USING(det_id, iteration, class_id)" 1973 1973 " WHERE" 1974 " detNormalizedImfile.det_id IS NULL" 1975 " AND detNormalizedImfile.iteration IS NULL" 1976 " AND detNormalizedImfile.class_id IS NULL" 1977 ); 1974 " detNormalizedImfile.det_id IS NULL" 1975 " AND detNormalizedImfile.iteration IS NULL" 1976 " AND detNormalizedImfile.class_id IS NULL" 1977 ); 1978 1978 1979 1979 // XXX does it make sens to accept any search params? … … 1990 1990 psFree(query); 1991 1991 return false; 1992 } 1992 } 1993 1993 psFree(query); 1994 1994 … … 2051 2051 ); 2052 2052 } 2053 valid_class_ids = psHashToArray(hash); 2053 valid_class_ids = psHashToArray(hash); 2054 2054 psFree(hash); 2055 2055 } … … 2113 2113 { 2114 2114 PS_ASSERT_PTR_NON_NULL(config, false); 2115 2115 2116 2116 // make sure that there is a respondoing entry in detNormalizedStatImfile 2117 2117 // select * from detNormalizedStatImfile … … 2125 2125 " USING(det_id, iteration, class_id)" 2126 2126 " WHERE" 2127 " detNormalizedImfile.det_id IS NULL" 2128 " AND detNormalizedImfile.iteration IS NULL" 2129 " AND detNormalizedImfile.class_id IS NULL" 2127 " detNormalizedImfile.det_id IS NULL" 2128 " AND detNormalizedImfile.iteration IS NULL" 2129 " AND detNormalizedImfile.class_id IS NULL" 2130 2130 ); 2131 2131 … … 2192 2192 psFree(query); 2193 2193 return false; 2194 } 2194 } 2195 2195 psFree(query); 2196 2196 … … 2283 2283 2284 2284 psString query = psStringCopy( 2285 "SELECT" 2285 "SELECT" 2286 2286 " detRun.iteration," 2287 2287 " detRun.det_type," … … 2305 2305 " AND detProcessedImfile.class_id = detResidImfile.class_id" 2306 2306 " WHERE" 2307 " detResidImfile.det_id IS NULL" 2308 " AND detResidImfile.iteration IS NULL" 2309 " AND detResidImfile.exp_id IS NULL" 2310 " AND detResidImfile.class_id IS NULL" 2307 " detResidImfile.det_id IS NULL" 2308 " AND detResidImfile.iteration IS NULL" 2309 " AND detResidImfile.exp_id IS NULL" 2310 " AND detResidImfile.class_id IS NULL" 2311 2311 " UNION" 2312 " SELECT" 2312 " SELECT" 2313 2313 " detRun.iteration," 2314 2314 " detRun.det_type," … … 2332 2332 " AND detStackedImfile.class_id = detResidImfile.class_id" 2333 2333 " WHERE" 2334 " detResidImfile.det_id IS NULL" 2335 " AND detResidImfile.iteration IS NULL" 2336 " AND detResidImfile.exp_id IS NULL" 2337 " AND detResidImfile.class_id IS NULL" 2334 " detResidImfile.det_id IS NULL" 2335 " AND detResidImfile.iteration IS NULL" 2336 " AND detResidImfile.exp_id IS NULL" 2337 " AND detResidImfile.class_id IS NULL" 2338 2338 " AND detStackedImfile.normalize = 0" 2339 ); 2339 ); 2340 2340 2341 2341 // XXX does it make sens to accept any search params? … … 2352 2352 psFree(query); 2353 2353 return false; 2354 } 2354 } 2355 2355 psFree(query); 2356 2356 … … 2388 2388 { 2389 2389 PS_ASSERT_PTR_NON_NULL(config, false); 2390 2390 2391 2391 // det_id is required 2392 2392 // psString det_id is unused in the first query... it is checked for to … … 2468 2468 { 2469 2469 PS_ASSERT_PTR_NON_NULL(config, false); 2470 2470 2471 2471 // XXX det_id is requried as a simplification 2472 2472 bool status = false; … … 2493 2493 if (!valid_class_ids) { 2494 2494 psError(PS_ERR_UNKNOWN, false, "no detInputExp imfile class_ids found"); 2495 return false; 2496 } 2497 2495 return false; 2496 } 2497 2498 2498 // check class_ids for validity 2499 2499 for (long i = 0; i < psArrayLength(masterImfiles); i++) { … … 2573 2573 " AND detNormalizedImfile.class_id = detResidImfile.class_id" 2574 2574 " WHERE" 2575 " detResidImfile.det_id IS NULL" 2576 " AND detResidImfile.iteration IS NULL" 2577 " AND detResidImfile.exp_id IS NULL" 2578 " AND detResidImfile.class_id IS NULL" 2579 " AND detInputExp.exp_id = '%s'" 2575 " detResidImfile.det_id IS NULL" 2576 " AND detResidImfile.iteration IS NULL" 2577 " AND detResidImfile.exp_id IS NULL" 2578 " AND detResidImfile.class_id IS NULL" 2579 " AND detInputExp.exp_id = '%s'" 2580 2580 " UNION" 2581 " SELECT" 2581 " SELECT" 2582 2582 " detStackedImfile.det_id," 2583 2583 " detStackedImfile.iteration," … … 2593 2593 " AND detStackedImfile.class_id = detResidImfile.class_id" 2594 2594 " WHERE" 2595 " detResidImfile.det_id IS NULL" 2596 " AND detResidImfile.iteration IS NULL" 2597 " AND detResidImfile.exp_id IS NULL" 2598 " AND detResidImfile.class_id IS NULL" 2599 " AND detInputExp.exp_id = '%s'" 2595 " detResidImfile.det_id IS NULL" 2596 " AND detResidImfile.iteration IS NULL" 2597 " AND detResidImfile.exp_id IS NULL" 2598 " AND detResidImfile.class_id IS NULL" 2599 " AND detInputExp.exp_id = '%s'" 2600 2600 " AND detStackedImfile.normalize = 0" 2601 2601 " ) as detNormStackedImfile" … … 2675 2675 } 2676 2676 2677 if (!p_psDBRunQuery(config->dbh, query, exp_id )) {2677 if (!p_psDBRunQuery(config->dbh, query, exp_id, exp_id)) { 2678 2678 psError(PS_ERR_UNKNOWN, false, "database error"); 2679 2679 psFree(query); 2680 2680 return false; 2681 } 2681 } 2682 2682 psFree(query); 2683 2683 … … 2830 2830 2831 2831 psString query = psStringCopy( 2832 "SELECT" 2832 "SELECT" 2833 2833 " detResidImfile.*" 2834 2834 " FROM detResidImfile" … … 2836 2836 " USING(det_id, iteration, exp_id)" 2837 2837 " WHERE" 2838 " detResidExp.det_id IS NULL" 2839 " AND detResidExp.iteration IS NULL" 2840 " AnD detResidExp.exp_id IS NULL" 2841 ); 2838 " detResidExp.det_id IS NULL" 2839 " AND detResidExp.iteration IS NULL" 2840 " AnD detResidExp.exp_id IS NULL" 2841 ); 2842 2842 2843 2843 if (config->where) { … … 2851 2851 psFree(query); 2852 2852 return false; 2853 } 2853 } 2854 2854 psFree(query); 2855 2855 … … 2905 2905 // find all exp_ids in the current det_id/iteration from detInputExp 2906 2906 // compare to detInputExp.imfiles to derResidImfile by class_id 2907 // and: 2907 // and: 2908 2908 // detResidImfile.{det_id, iteration, exp_id} is not in detResidExp 2909 2909 … … 2946 2946 " rawDetrendExp.imfiles = COUNT(detResidImfile.class_id)" 2947 2947 " ) AS toresidexp" 2948 ); 2948 ); 2949 2949 2950 2950 // XXX does it make sens to accept any search params? … … 2961 2961 psFree(query); 2962 2962 return false; 2963 } 2963 } 2964 2964 psFree(query); 2965 2965 … … 3014 3014 // find all exp_ids in the current det_id/iteration from detInputExp 3015 3015 // compare to detInputExp.imfiles to derResidImfile by class_id 3016 // and: 3016 // and: 3017 3017 // detResidImfile.{det_id, iteration, exp_id} is not in detResidExp 3018 3018 … … 3054 3054 " rawDetrendExp.imfiles = COUNT(detResidImfile.class_id)" 3055 3055 " ) AS toresidexp" 3056 ); 3056 ); 3057 3057 3058 3058 { … … 3118 3118 psFree(query); 3119 3119 return false; 3120 } 3120 } 3121 3121 psFree(query); 3122 3122 … … 3279 3279 { 3280 3280 PS_ASSERT_PTR_NON_NULL(config, false); 3281 3281 3282 3282 // no options are required... use the default where statement 3283 3283 psArray *residExps = detResidExpSelectRowObjects(config->dbh, … … 3319 3319 * detrend type) which have completed all residexps. 3320 3320 */ 3321 3321 3322 3322 // select detRun.position 3323 3323 // select detRun.iteration … … 3356 3356 " COUNT(detResidExp.exp_id) = COUNT(detInputExp.exp_id)" 3357 3357 " ) AS residdetrun" 3358 ); 3358 ); 3359 3359 3360 3360 // XXX does it make sens to accept any search params? … … 3371 3371 psFree(query); 3372 3372 return false; 3373 } 3373 } 3374 3374 psFree(query); 3375 3375 … … 3612 3612 " COUNT(detResidExp.exp_id) = COUNT(detInputExp.exp_id)" 3613 3613 " ) AS residdetrun" 3614 ); 3614 ); 3615 3615 3616 3616 { … … 3661 3661 psFree(query); 3662 3662 return false; 3663 } 3663 } 3664 3664 psFree(query); 3665 3665 … … 3818 3818 // else 3819 3819 // -again 3820 3820 3821 3821 // select detRun.position 3822 3822 // select detRun.iteration … … 3852 3852 " HAVING" 3853 3853 " COUNT(detResidExp.exp_id) = COUNT(detInputExp.exp_id)" 3854 ); 3854 ); 3855 3855 3856 3856 if (!p_psDBRunQuery(config->dbh, query)) { … … 3858 3858 psFree(query); 3859 3859 return false; 3860 } 3860 } 3861 3861 psFree(query); 3862 3862 … … 3912 3912 return false; 3913 3913 } 3914 3914 3915 3915 // detResidExp.include is used to set detInputExp.include 3916 3916 if (!detInputExpInsert( … … 4067 4067 { 4068 4068 PS_ASSERT_PTR_NON_NULL(config, false); 4069 4069 4070 4070 // det_id is required 4071 4071 bool status = false; … … 4106 4106 } 4107 4107 4108 if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 4108 if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 4109 4109 PS_META_DUPLICATE_OK, "==", exp_id)) { 4110 4110 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); … … 4180 4180 while ((mItem = psListGetAndIncrement(iter))) { 4181 4181 detInputExpRow *inputExp = psHashLookup(valid_exp_ids, 4182 (char *)mItem->data.V); 4182 (char *)mItem->data.V); 4183 4183 if (!inputExp) { 4184 4184 // rollback
Note:
See TracChangeset
for help on using the changeset viewer.
