Skip to content

Commit 0b5ca93

Browse files
committed
expose check as a debug/test and re-run
1 parent 479227d commit 0b5ca93

File tree

4 files changed

+138
-96
lines changed

4 files changed

+138
-96
lines changed

Count/CTabRunLog.txt

Lines changed: 74 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,75 @@
11
n total target count date cacheSizes tableFinishTimeEst
2-
1 0 0 1 Thu Sep 25 19:25:56 PDT 2014 { } Thu Sep 25 19:26:06 PDT 2014
3-
2 0 0 1 Thu Sep 25 19:25:56 PDT 2014 { } Thu Sep 25 19:26:06 PDT 2014
4-
3 0 1 1 Thu Sep 25 19:25:56 PDT 2014 { } Thu Sep 25 19:26:06 PDT 2014
5-
3 1 1 6 Thu Sep 25 19:25:56 PDT 2014 { [1,1]:0 [1,2]:1 [2,2]:1 } Thu Sep 25 19:26:06 PDT 2014
6-
4 0 3 1 Thu Sep 25 19:25:56 PDT 2014 { } Thu Sep 25 19:26:06 PDT 2014
7-
4 1 3 24 Thu Sep 25 19:25:56 PDT 2014 { [2,2]:1 } Thu Sep 25 19:26:06 PDT 2014
8-
4 2 3 282 Thu Sep 25 19:25:56 PDT 2014 { [2,2]:5 } Thu Sep 25 19:26:06 PDT 2014
9-
4 3 3 2008 Thu Sep 25 19:25:56 PDT 2014 { [2,2]:12 } Thu Sep 25 19:26:06 PDT 2014
10-
5 0 6 1 Thu Sep 25 19:25:56 PDT 2014 { } Thu Sep 25 19:26:06 PDT 2014
11-
5 1 6 120 Thu Sep 25 19:25:56 PDT 2014 { [2,2]:0 [2,3]:1 [3,3]:1 } Thu Sep 25 19:26:06 PDT 2014
12-
5 2 6 6210 Thu Sep 25 19:25:56 PDT 2014 { [2,2]:1 [2,3]:6 [3,3]:7 } Thu Sep 25 19:26:06 PDT 2014
13-
5 3 6 153040 Thu Sep 25 19:25:56 PDT 2014 { [2,2]:3 [2,3]:14 [3,3]:23 } Thu Sep 25 19:26:06 PDT 2014
14-
5 4 6 2224955 Thu Sep 25 19:25:56 PDT 2014 { [2,2]:5 [2,3]:32 [3,3]:57 } Thu Sep 25 19:26:06 PDT 2014
15-
5 5 6 22069251 Thu Sep 25 19:25:56 PDT 2014 { [2,2]:10 [2,3]:56 [3,3]:121 } Thu Sep 25 19:26:06 PDT 2014
16-
5 6 6 164176640 Thu Sep 25 19:25:57 PDT 2014 { [2,2]:12 [2,3]:100 [3,3]:234 } Thu Sep 25 19:26:07 PDT 2014
17-
6 0 10 1 Thu Sep 25 19:25:57 PDT 2014 { } Thu Sep 25 19:26:07 PDT 2014
18-
6 1 10 720 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:1 } Thu Sep 25 19:26:07 PDT 2014
19-
6 2 10 202410 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:9 } Thu Sep 25 19:26:07 PDT 2014
20-
6 3 10 20933840 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:26 } Thu Sep 25 19:26:07 PDT 2014
21-
6 4 10 1047649905 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:63 } Thu Sep 25 19:26:07 PDT 2014
22-
6 5 10 30767936616 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:136 } Thu Sep 25 19:26:07 PDT 2014
23-
6 6 10 602351808741 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:256 } Thu Sep 25 19:26:07 PDT 2014
24-
6 7 10 8575979362560 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:456 } Thu Sep 25 19:26:27 PDT 2014
25-
6 8 10 94459713879600 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:756 } Thu Sep 25 19:26:17 PDT 2014
26-
6 9 10 842286559093240 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:1198 } Thu Sep 25 19:26:07 PDT 2014
27-
6 10 10 6292583664553881 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:1857 } Thu Sep 25 19:25:57 PDT 2014
28-
7 0 15 1 Thu Sep 25 19:25:57 PDT 2014 { } Thu Sep 25 19:26:07 PDT 2014
29-
7 1 15 5040 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:0 [3,4]:1 [4,4]:1 } Thu Sep 25 19:26:07 PDT 2014
30-
7 2 15 9135630 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:3 [3,4]:11 [4,4]:10 } Thu Sep 25 19:26:07 PDT 2014
31-
7 3 15 4662857360 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:6 [3,4]:31 [4,4]:44 } Thu Sep 25 19:26:07 PDT 2014
32-
7 4 15 936670590450 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:19 [3,4]:92 [4,4]:130 } Thu Sep 25 19:26:07 PDT 2014
33-
7 5 15 94161778046406 Thu Sep 25 19:25:57 PDT 2014 { [3,3]:33 [3,4]:193 [4,4]:350 } Thu Sep 25 19:26:07 PDT 2014
34-
7 6 15 5562418293759978 Thu Sep 25 19:25:58 PDT 2014 { [3,3]:62 [3,4]:437 [4,4]:825 } Thu Sep 25 19:26:08 PDT 2014
35-
7 7 15 215717608046511873 Thu Sep 25 19:25:58 PDT 2014 { [3,3]:106 [3,4]:803 [4,4]:1761 } Thu Sep 25 19:27:22 PDT 2014
36-
7 8 15 5945968652327831925 Thu Sep 25 19:25:58 PDT 2014 { [3,3]:168 [3,4]:1508 [4,4]:3507 } Thu Sep 25 19:27:14 PDT 2014
37-
7 9 15 123538613356253145400 Thu Sep 25 19:25:59 PDT 2014 { [3,3]:261 [3,4]:2516 [4,4]:6559 } Thu Sep 25 19:27:05 PDT 2014
38-
7 10 15 2023270039486328373811 Thu Sep 25 19:25:59 PDT 2014 { [3,3]:386 [3,4]:4226 [4,4]:11617 } Thu Sep 25 19:26:53 PDT 2014
39-
7 11 15 27046306550096288483238 Thu Sep 25 19:26:00 PDT 2014 { [3,3]:562 [3,4]:6521 [4,4]:19701 } Thu Sep 25 19:26:44 PDT 2014
40-
7 12 15 303378141987182515342992 Thu Sep 25 19:26:01 PDT 2014 { [3,3]:796 [3,4]:10153 [4,4]:32268 } Thu Sep 25 19:26:35 PDT 2014
41-
7 13 15 2920054336492521720572276 Thu Sep 25 19:26:03 PDT 2014 { [3,3]:1083 [3,4]:14850 [4,4]:51057 } Thu Sep 25 19:26:26 PDT 2014
42-
7 14 15 24563127009195223721952590 Thu Sep 25 19:26:05 PDT 2014 { [3,3]:1493 [3,4]:21820 [4,4]:78625 } Thu Sep 25 19:26:17 PDT 2014
43-
7 15 15 183343273080700916973016745 Thu Sep 25 19:26:08 PDT 2014 { [3,3]:1954 [3,4]:30599 [4,4]:118029 } Thu Sep 25 19:26:08 PDT 2014
44-
8 0 21 1 Thu Sep 25 19:26:08 PDT 2014 { } Thu Sep 25 19:26:18 PDT 2014
45-
8 1 21 40320 Thu Sep 25 19:26:08 PDT 2014 { [4,4]:1 } Thu Sep 25 19:26:18 PDT 2014
46-
8 2 21 545007960 Thu Sep 25 19:26:08 PDT 2014 { [4,4]:14 } Thu Sep 25 19:26:18 PDT 2014
47-
8 3 21 1579060246400 Thu Sep 25 19:26:08 PDT 2014 { [4,4]:52 } Thu Sep 25 19:26:18 PDT 2014
48-
8 4 21 1455918295922650 Thu Sep 25 19:26:08 PDT 2014 { [4,4]:152 } Thu Sep 25 19:26:18 PDT 2014
49-
8 5 21 569304690994400256 Thu Sep 25 19:26:08 PDT 2014 { [4,4]:411 } Thu Sep 25 19:26:18 PDT 2014
50-
8 6 21 114601242382721619224 Thu Sep 25 19:26:08 PDT 2014 { [4,4]:932 } Thu Sep 25 19:26:18 PDT 2014
51-
8 7 21 13590707419428422843904 Thu Sep 25 19:26:08 PDT 2014 { [4,4]:1999 } Thu Sep 25 19:28:31 PDT 2014
52-
8 8 21 1046591482728407939338275 Thu Sep 25 19:26:08 PDT 2014 { [4,4]:3899 } Thu Sep 25 19:28:23 PDT 2014
53-
8 9 21 56272722406349235035916800 Thu Sep 25 19:26:09 PDT 2014 { [4,4]:7252 } Thu Sep 25 19:28:14 PDT 2014
54-
8 10 21 2233160342369825596702148720 Thu Sep 25 19:26:09 PDT 2014 { [4,4]:12707 } Thu Sep 25 19:28:07 PDT 2014
55-
8 11 21 68316292103293669997188919040 Thu Sep 25 19:26:10 PDT 2014 { [4,4]:21462 } Thu Sep 25 19:28:01 PDT 2014
56-
8 12 21 1667932098862773837734823042196 Thu Sep 25 19:26:11 PDT 2014 { [4,4]:34905 } Thu Sep 25 19:27:55 PDT 2014
57-
8 13 21 33427469280977307618866364694400 Thu Sep 25 19:26:14 PDT 2014 { [4,4]:54985 } Thu Sep 25 19:27:51 PDT 2014
58-
8 14 21 562798805673342016752366344185200 Thu Sep 25 19:26:17 PDT 2014 { [4,4]:84370 } Thu Sep 25 19:27:49 PDT 2014
59-
8 15 21 8115208977465404874100226492575360 Thu Sep 25 19:26:22 PDT 2014 { [4,4]:126044 } Thu Sep 25 19:27:49 PDT 2014
2+
1 0 0 1 Thu Sep 25 19:40:13 PDT 2014 { } Thu Sep 25 19:40:23 PDT 2014
3+
2 0 0 1 Thu Sep 25 19:40:13 PDT 2014 { } Thu Sep 25 19:40:23 PDT 2014
4+
3 0 1 1 Thu Sep 25 19:40:13 PDT 2014 { } Thu Sep 25 19:40:23 PDT 2014
5+
3 1 1 6 Thu Sep 25 19:40:14 PDT 2014 { [1,1]:0 [1,2]:1 [2,2]:1 } Thu Sep 25 19:40:24 PDT 2014
6+
4 0 3 1 Thu Sep 25 19:40:14 PDT 2014 { } Thu Sep 25 19:40:24 PDT 2014
7+
4 1 3 24 Thu Sep 25 19:40:14 PDT 2014 { [2,2]:1 } Thu Sep 25 19:40:24 PDT 2014
8+
4 2 3 282 Thu Sep 25 19:40:14 PDT 2014 { [2,2]:5 } Thu Sep 25 19:40:24 PDT 2014
9+
4 3 3 2008 Thu Sep 25 19:40:14 PDT 2014 { [2,2]:12 } Thu Sep 25 19:40:24 PDT 2014
10+
5 0 6 1 Thu Sep 25 19:40:14 PDT 2014 { } Thu Sep 25 19:40:24 PDT 2014
11+
5 1 6 120 Thu Sep 25 19:40:14 PDT 2014 { [2,2]:0 [2,3]:1 [3,3]:1 } Thu Sep 25 19:40:24 PDT 2014
12+
5 2 6 6210 Thu Sep 25 19:40:14 PDT 2014 { [2,2]:1 [2,3]:6 [3,3]:7 } Thu Sep 25 19:40:24 PDT 2014
13+
5 3 6 153040 Thu Sep 25 19:40:14 PDT 2014 { [2,2]:3 [2,3]:14 [3,3]:23 } Thu Sep 25 19:40:24 PDT 2014
14+
5 4 6 2224955 Thu Sep 25 19:40:14 PDT 2014 { [2,2]:5 [2,3]:32 [3,3]:57 } Thu Sep 25 19:40:24 PDT 2014
15+
5 5 6 22069251 Thu Sep 25 19:40:14 PDT 2014 { [2,2]:10 [2,3]:56 [3,3]:121 } Thu Sep 25 19:40:24 PDT 2014
16+
5 6 6 164176640 Thu Sep 25 19:40:14 PDT 2014 { [2,2]:12 [2,3]:100 [3,3]:234 } Thu Sep 25 19:40:24 PDT 2014
17+
6 0 10 1 Thu Sep 25 19:40:14 PDT 2014 { } Thu Sep 25 19:40:24 PDT 2014
18+
6 1 10 720 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:1 } Thu Sep 25 19:40:24 PDT 2014
19+
6 2 10 202410 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:9 } Thu Sep 25 19:40:24 PDT 2014
20+
6 3 10 20933840 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:26 } Thu Sep 25 19:40:24 PDT 2014
21+
6 4 10 1047649905 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:63 } Thu Sep 25 19:40:24 PDT 2014
22+
6 5 10 30767936616 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:136 } Thu Sep 25 19:40:24 PDT 2014
23+
6 6 10 602351808741 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:256 } Thu Sep 25 19:40:24 PDT 2014
24+
6 7 10 8575979362560 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:456 } Thu Sep 25 19:40:44 PDT 2014
25+
6 8 10 94459713879600 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:756 } Thu Sep 25 19:40:34 PDT 2014
26+
6 9 10 842286559093240 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:1198 } Thu Sep 25 19:40:24 PDT 2014
27+
6 10 10 6292583664553881 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:1857 } Thu Sep 25 19:40:14 PDT 2014
28+
7 0 15 1 Thu Sep 25 19:40:14 PDT 2014 { } Thu Sep 25 19:40:24 PDT 2014
29+
7 1 15 5040 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:0 [3,4]:1 [4,4]:1 } Thu Sep 25 19:40:24 PDT 2014
30+
7 2 15 9135630 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:3 [3,4]:11 [4,4]:10 } Thu Sep 25 19:40:24 PDT 2014
31+
7 3 15 4662857360 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:6 [3,4]:31 [4,4]:44 } Thu Sep 25 19:40:24 PDT 2014
32+
7 4 15 936670590450 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:19 [3,4]:92 [4,4]:130 } Thu Sep 25 19:40:24 PDT 2014
33+
7 5 15 94161778046406 Thu Sep 25 19:40:14 PDT 2014 { [3,3]:33 [3,4]:193 [4,4]:350 } Thu Sep 25 19:40:24 PDT 2014
34+
7 6 15 5562418293759978 Thu Sep 25 19:40:15 PDT 2014 { [3,3]:62 [3,4]:437 [4,4]:825 } Thu Sep 25 19:40:25 PDT 2014
35+
7 7 15 215717608046511873 Thu Sep 25 19:40:15 PDT 2014 { [3,3]:106 [3,4]:803 [4,4]:1761 } Thu Sep 25 19:41:39 PDT 2014
36+
7 8 15 5945968652327831925 Thu Sep 25 19:40:15 PDT 2014 { [3,3]:168 [3,4]:1508 [4,4]:3507 } Thu Sep 25 19:41:29 PDT 2014
37+
7 9 15 123538613356253145400 Thu Sep 25 19:40:15 PDT 2014 { [3,3]:261 [3,4]:2516 [4,4]:6559 } Thu Sep 25 19:41:18 PDT 2014
38+
7 10 15 2023270039486328373811 Thu Sep 25 19:40:16 PDT 2014 { [3,3]:386 [3,4]:4226 [4,4]:11617 } Thu Sep 25 19:41:08 PDT 2014
39+
7 11 15 27046306550096288483238 Thu Sep 25 19:40:16 PDT 2014 { [3,3]:562 [3,4]:6521 [4,4]:19701 } Thu Sep 25 19:40:58 PDT 2014
40+
7 12 15 303378141987182515342992 Thu Sep 25 19:40:17 PDT 2014 { [3,3]:796 [3,4]:10153 [4,4]:32268 } Thu Sep 25 19:40:49 PDT 2014
41+
7 13 15 2920054336492521720572276 Thu Sep 25 19:40:19 PDT 2014 { [3,3]:1083 [3,4]:14850 [4,4]:51057 } Thu Sep 25 19:40:41 PDT 2014
42+
7 14 15 24563127009195223721952590 Thu Sep 25 19:40:21 PDT 2014 { [3,3]:1493 [3,4]:21820 [4,4]:78625 } Thu Sep 25 19:40:32 PDT 2014
43+
7 15 15 183343273080700916973016745 Thu Sep 25 19:40:24 PDT 2014 { [3,3]:1954 [3,4]:30599 [4,4]:118029 } Thu Sep 25 19:40:24 PDT 2014
44+
8 0 21 1 Thu Sep 25 19:40:24 PDT 2014 { } Thu Sep 25 19:40:34 PDT 2014
45+
8 1 21 40320 Thu Sep 25 19:40:24 PDT 2014 { [4,4]:1 } Thu Sep 25 19:40:34 PDT 2014
46+
8 2 21 545007960 Thu Sep 25 19:40:24 PDT 2014 { [4,4]:14 } Thu Sep 25 19:40:34 PDT 2014
47+
8 3 21 1579060246400 Thu Sep 25 19:40:24 PDT 2014 { [4,4]:52 } Thu Sep 25 19:40:34 PDT 2014
48+
8 4 21 1455918295922650 Thu Sep 25 19:40:24 PDT 2014 { [4,4]:152 } Thu Sep 25 19:40:34 PDT 2014
49+
8 5 21 569304690994400256 Thu Sep 25 19:40:24 PDT 2014 { [4,4]:411 } Thu Sep 25 19:40:34 PDT 2014
50+
8 6 21 114601242382721619224 Thu Sep 25 19:40:24 PDT 2014 { [4,4]:932 } Thu Sep 25 19:40:34 PDT 2014
51+
8 7 21 13590707419428422843904 Thu Sep 25 19:40:24 PDT 2014 { [4,4]:1999 } Thu Sep 25 19:42:47 PDT 2014
52+
8 8 21 1046591482728407939338275 Thu Sep 25 19:40:24 PDT 2014 { [4,4]:3899 } Thu Sep 25 19:42:38 PDT 2014
53+
8 9 21 56272722406349235035916800 Thu Sep 25 19:40:24 PDT 2014 { [4,4]:7252 } Thu Sep 25 19:42:30 PDT 2014
54+
8 10 21 2233160342369825596702148720 Thu Sep 25 19:40:25 PDT 2014 { [4,4]:12707 } Thu Sep 25 19:42:23 PDT 2014
55+
8 11 21 68316292103293669997188919040 Thu Sep 25 19:40:26 PDT 2014 { [4,4]:21462 } Thu Sep 25 19:42:17 PDT 2014
56+
8 12 21 1667932098862773837734823042196 Thu Sep 25 19:40:27 PDT 2014 { [4,4]:34905 } Thu Sep 25 19:42:11 PDT 2014
57+
8 13 21 33427469280977307618866364694400 Thu Sep 25 19:40:29 PDT 2014 { [4,4]:54985 } Thu Sep 25 19:42:07 PDT 2014
58+
8 14 21 562798805673342016752366344185200 Thu Sep 25 19:40:33 PDT 2014 { [4,4]:84370 } Thu Sep 25 19:42:05 PDT 2014
59+
8 15 21 8115208977465404874100226492575360 Thu Sep 25 19:40:39 PDT 2014 { [4,4]:126044 } Thu Sep 25 19:42:09 PDT 2014
60+
8 16 21 101857066150530294146428615917957029 Thu Sep 25 19:40:48 PDT 2014 { [4,4]:184416 } Thu Sep 25 19:42:13 PDT 2014
61+
8 17 21 1128282526405022554049557329097252992 Thu Sep 25 19:41:03 PDT 2014 { [4,4]:264536 } Thu Sep 25 19:42:23 PDT 2014
62+
8 18 21 11161302946841260178530673680176000200 Thu Sep 25 19:41:31 PDT 2014 { [4,4]:372809 } Thu Sep 25 19:42:45 PDT 2014
63+
8 19 21 99613494890126594335550124219924540800 Thu Sep 25 19:42:10 PDT 2014 { [4,4]:516895 } Thu Sep 25 19:43:12 PDT 2014
64+
8 20 21 809256770610540675454657517194018680846 Thu Sep 25 19:43:01 PDT 2014 { [4,4]:706415 } Thu Sep 25 19:43:38 PDT 2014
65+
8 21 21 6031107989875562751266116901999327710720 Thu Sep 25 19:44:25 PDT 2014 { [4,4]:952858 } Thu Sep 25 19:44:25 PDT 2014
66+
9 0 28 1 Thu Sep 25 19:44:25 PDT 2014 { } Thu Sep 25 19:44:35 PDT 2014
67+
9 1 28 362880 Thu Sep 25 19:44:31 PDT 2014 { [4,4]:0 [4,5]:1 [5,5]:1 } Thu Sep 25 19:44:41 PDT 2014
68+
9 2 28 41514583320 Thu Sep 25 19:44:31 PDT 2014 { [4,4]:5 [4,5]:16 [5,5]:13 } Thu Sep 25 19:44:41 PDT 2014
69+
9 3 28 772200774683520 Thu Sep 25 19:44:31 PDT 2014 { [4,4]:12 [4,5]:55 [5,5]:71 } Thu Sep 25 19:44:41 PDT 2014
70+
9 4 28 3680232136895819610 Thu Sep 25 19:44:31 PDT 2014 { [4,4]:50 [4,5]:210 [5,5]:260 } Thu Sep 25 19:44:41 PDT 2014
71+
9 5 28 6274236760589024662176 Thu Sep 25 19:44:32 PDT 2014 { [4,4]:94 [4,5]:539 [5,5]:855 } Thu Sep 25 19:44:42 PDT 2014
72+
9 6 28 4801114002903931560293544 Thu Sep 25 19:44:34 PDT 2014 { [4,4]:242 [4,5]:1475 [5,5]:2414 } Thu Sep 25 19:44:44 PDT 2014
73+
9 7 28 1933216160887575268614599040 Thu Sep 25 19:44:39 PDT 2014 { [4,4]:450 [4,5]:3199 [5,5]:6034 } Thu Sep 25 20:01:15 PDT 2014
74+
9 8 28 459761347800901006933211075259 Thu Sep 25 19:44:51 PDT 2014 { [4,4]:882 [4,5]:7044 [5,5]:13959 } Thu Sep 25 20:26:24 PDT 2014
75+
9 9 28 70417932475495769964322670258947 Thu Sep 25 19:45:16 PDT 2014 { [4,4]:1554 [4,5]:13645 [5,5]:29957 } Thu Sep 25 21:36:19 PDT 2014

Count/src/com/mzlabs/count/ctab/CTab.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import com.mzlabs.count.zeroone.ZeroOneCounter;
1818
import com.mzlabs.fit.GLMModel;
1919
import com.mzlabs.fit.NewtonFitter;
20-
import com.mzlabs.fit.SquareLossOfExp;
2120

2221

2322
public final class CTab {

Count/src/com/mzlabs/fit/GLMModel.java

Lines changed: 63 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,52 +5,74 @@
55
import com.winvector.linalg.colt.ColtMatrix;
66

77
public class GLMModel implements VectorFnWithGradAndHessian {
8+
public final boolean debug;
89
public final ProbYGivenZ prob;
910
public final Link link;
1011

1112

12-
public GLMModel(final ProbYGivenZ prob, final Link link) {
13+
public GLMModel(final ProbYGivenZ prob, final Link link, final boolean debug) {
1314
this.prob = prob;
1415
this.link = link;
16+
this.debug = debug;
1517
}
1618

1719
@Override
1820
public double evalEst(final double[] beta, final double[] x) {
1921
return link.invLink(Obs.dot(beta,x));
2022
}
2123

24+
public Double checkGradCoef(final Obs obsi, final double[] beta) {
25+
return null;
26+
}
2227

23-
public static GLMModel PoissonLink = new GLMModel(
24-
new ProbYGivenZ() {
25-
@Override
26-
public void eval(final double y, final double z, final double[] res) {
27-
if(y>0) {
28-
final double fyz = Math.exp(y*Math.log(z)-z); // ignoring a gamma(y+1) term here
29-
res[0] = fyz;
30-
res[1] = fyz*(y/z-1);
31-
res[2] = fyz*((y/z-1)*(y/z-1)-y/(z*z));
32-
} else {
33-
final double fyz = Math.exp(-z); // ignoring a gamma(y+1) term here
34-
res[0] = fyz;
35-
res[1] = -fyz;
36-
res[2] = fyz;
37-
}
38-
}
39-
},
40-
new Link() {
41-
@Override
42-
public void invLink(final double z, final double[] res) {
43-
final double ez = Math.exp(z);
44-
res[0] = ez;
45-
res[1] = ez;
46-
res[2] = ez;
47-
}
48-
@Override
49-
public double invLink(final double z) {
50-
return Math.exp(z);
51-
}
28+
public Double checkHessianCoef(final Obs obsi, final double[] beta) {
29+
return null;
30+
}
31+
32+
public static final ProbYGivenZ PoissonProbability = new ProbYGivenZ() {
33+
@Override
34+
public void eval(final double y, final double z, final double[] res) {
35+
if(y>0) {
36+
final double fyz = Math.exp(y*Math.log(z)-z); // ignoring a gamma(y+1) term here
37+
res[0] = fyz;
38+
res[1] = fyz*(y/z-1);
39+
res[2] = fyz*((y/z-1)*(y/z-1)-y/(z*z));
40+
} else {
41+
final double fyz = Math.exp(-z); // ignoring a gamma(y+1) term here
42+
res[0] = fyz;
43+
res[1] = -fyz;
44+
res[2] = fyz;
5245
}
53-
);
46+
}
47+
};
48+
public static final Link LogLink = new Link() {
49+
@Override
50+
public void invLink(final double z, final double[] res) {
51+
final double ez = Math.exp(z);
52+
res[0] = ez;
53+
res[1] = ez;
54+
res[2] = ez;
55+
}
56+
@Override
57+
public double invLink(final double z) {
58+
return Math.exp(z);
59+
}
60+
};
61+
62+
public static GLMModel PoissonLink = new GLMModel(PoissonProbability,LogLink,false);
63+
public static GLMModel PoissonLinkDebug = new GLMModel(PoissonProbability,LogLink,true) {
64+
@Override
65+
public Double checkGradCoef(final Obs obsi, final double[] beta) {
66+
final double bx = obsi.dot(beta);
67+
return obsi.wt*(obsi.y-Math.exp(bx)); // hard coded Poisson gradient component
68+
}
69+
@Override
70+
public Double checkHessianCoef(final Obs obsi, final double[] beta) {
71+
final double bx = obsi.dot(beta);
72+
return obsi.wt*(-Math.exp(bx)); // hard coded Poisson hessian component
73+
}
74+
};
75+
5476

5577
private static double sq(final double z) {
5678
return z*z;
@@ -76,12 +98,17 @@ public double lossAndGradAndHessian(final Iterable<Obs> obs, final double[] beta
7698
prob.eval(obsi.y,z[0],p);
7799
sum += obsi.wt*Math.log(z[0]);
78100
final double gradScale = obsi.wt*z[1]*p[1]/p[0];
79-
//final double gradP = obsi.wt*(obsi.y-Math.exp(bx)); // hard coded Poisson gradient component
80101
final double hessCoef = obsi.wt*(-sq(z[1])*sq(p[1])/sq(p[0]) + sq(z[1])*p[2]/p[0] + z[2]*p[1]/p[0]);
81-
//final double hessP = obsi.wt*(-Math.exp(bx)); // hard coded Poisson hessian component
82-
// if((Math.abs(gradScale-gradP)>=1.0e-6)||(Math.abs(hessCoef-hessP)>1.0e-6)) {
83-
// System.out.println("break");
84-
// }
102+
if(debug) {
103+
final Double gradP = checkGradCoef(obsi,beta);
104+
final Double hessP = checkHessianCoef(obsi,beta);
105+
if((null!=gradP)&&(Math.abs(gradScale-gradP)>=1.0e-6)) {
106+
throw new IllegalStateException("gradient checks didn't match");
107+
}
108+
if((null!=hessP)&&(Math.abs(hessCoef-hessP)>1.0e-6)) {
109+
throw new IllegalStateException("Hessian checks didn't match");
110+
}
111+
}
85112
for(int i=0;i<dim;++i) {
86113
final double xi = i<dim-1?obsi.x[i]:1.0;
87114
grad[i] += gradScale*xi;

Count/tests/com/mzlabs/count/util/TestLogLinFitter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public void testLFit() {
5252

5353
@Test
5454
public void testPFit() {
55-
final NewtonFitter llf = new NewtonFitter(GLMModel.PoissonLink);
55+
final NewtonFitter llf = new NewtonFitter(GLMModel.PoissonLinkDebug);
5656
final ArrayList<Obs> obs = new ArrayList<Obs>();
5757
final Random rand = new Random(343406L);
5858
for(int i=1;i<=5;++i) {

0 commit comments

Comments
 (0)