Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /branches/vis12/TODO
ViewVC logotype

Annotation of /branches/vis12/TODO

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1115 - (view) (download)
Original Path: trunk/TODO

1 : jhr 1115 NOTE: GLK's approximate ranking of 5 most important tagged with
2 :     [GLK:1], [GLK:2], ...
3 :    
4 :     ==============================
5 :     other SHORT TERM ============= (including needed for LIC)
6 :     ==============================
7 :    
8 :     [GLK:1] Add sequence types (needed for evals & evecs)
9 :     syntax
10 :     types: ty '{' INT '}'
11 :     value construction: '{' e1 ',' … ',' en '}'
12 :     indexing: e '{' e '}'
13 :    
14 :     IL support for higher-order tensor values (matrices, etc).
15 :     tensor construction [DONE]
16 :     tensor indexing [DONE]
17 :     tensor slicing
18 :     verify that hessians work correctly [DONE]
19 :    
20 :     Use ∇⊗ etc. syntax
21 :     syntax [DONE]
22 :     typechecking
23 :     IL and codegen
24 :    
25 :     test/uninit.diderot:
26 :     documents need for better compiler error messages when output variables
27 :     are not initialized; the current messages are very cryptic
28 :    
29 :     determinant ("det") for tensor[3,3]
30 :    
31 :     expand trace in mid to low translation
32 :    
33 :     value-numbering optimization
34 :    
35 :     Add type aliases for color types
36 :     rgb = real{3}
37 :     rgba = real{4}
38 :    
39 :     ==============================
40 :     MEDIUM TERM ================== (including needed for streamlines & tractography)
41 :     ==============================
42 :    
43 :     [GLK:1] evals & evecs for symmetric tensor[3,3] (requires sequences)
44 :    
45 :     [GLK:2] Save Diderot output to nrrd, instead of "mip.txt"
46 :     For grid of strands, save to similarly-shaped array
47 :     For list of strands, save to long 1-D (or 2-D for non-scalar output) list
48 :     For ragged things (like tractography output), will need to save both
49 :     complete list of values, as well as list of start indices and lengths
50 :     to index into complete list
51 :    
52 :     [GLK:3] Use of Teem's "hest" command-line parser for getting
53 :     any input variables that are not defined in the source file
54 :    
55 :     [GLK:4] ability to declare a field in such a way so that probe
56 :     positions are *always* clamped to the support of "inside";
57 :     there are many cases where this is the sensible behavior.
58 :     (could also have "repeat" declaration, to mimic GL_REPEAT texturing)
59 :    
60 :     extend norm (|exp|) to all tensor types [DONE for vectors and matrices]
61 :    
62 :     ability to emit/track/record variables into dynamically re-sized
63 :     runtime buffer
64 :    
65 :     Want: allow X *= Y, X /= Y, X += Y, X -= Y to mean what they do in C,
66 :     provided that X*Y, X/Y, X+Y, X-Y are already supported.
67 :     Nearly every Diderot program would be simplified by this.
68 :    
69 :     Want: non-trivial field expressions & functions:
70 :     image(2)[2] Vimg = load(...);
71 :     field#0(2)[] Vlen = |Vimg ⊛ bspln3|;
72 :     to get a scalar field of vector length, or
73 :     field#2(2)[] F = Fimg ⊛ bspln3;
74 :     field#0(2)[] Gmag = |∇F|;
75 :     to get a scalar field of gradient magnitude, or
76 :     field#2(2)[] F = Fimg ⊛ bspln3;
77 :     field#0(2)[] Gmsq = ∇F•∇F;
78 :     to get a scalar field of squared gradient magnitude, which is simpler
79 :     to differentiate. However, there is value in having these, even if
80 :     the differentiation of them is not supported (hence the indication
81 :     of "field#0" for these above)
82 :    
83 :     Want: ability to apply "normalize" to a field itself, e.g.
84 :     field#0(2)[2] V = normalize(Vimg ⊛ ctmr);
85 :     so that V(x) = normalize((Vimg ⊛ ctmr)(x)).
86 :     Having this would simplify expression of standard LIC method, and
87 :     would also help express other vector field expressions that arise
88 :     in vector field feature exraction.
89 :    
90 :     tensor fields: convolution on general tensor images
91 :    
92 :     ==============================
93 :     other MEDIUM TERM ============ (needed for particles)
94 :     ==============================
95 :    
96 :     [GLK:5] run-time death of strands; test/iso2d.diderot provides
97 :     great initial test for "die" command.
98 :    
99 :     run-time birth of strands
100 :    
101 :     "initially" supports lists
102 :    
103 :     "initially" supports lists of positions output from
104 :     different initalization Diderot program
105 :    
106 :     spatial data structure that permits strands' queries of neighbors
107 :    
108 :     proper handling of stabilize method
109 :    
110 :     test/vr-kcomp2.diderot: Add support for code like
111 :    
112 :     (F1 if x else F2)@pos
113 :    
114 :     This will require duplication of the continuation of the conditional
115 :     (but we should only duplicate over the live-range of the result of the
116 :     conditional.
117 :    
118 :     add ":" for tensor dot product (contracts out two indices
119 :     instead of one like •), valid for all pairs of tensors with
120 :     at least two indices
121 :    
122 :     ==============================
123 :     other MEDIUM TERM ============
124 :     ==============================
125 :    
126 :     want: warnings when "D" (reserved for differentiation) is declared as
127 :     a variable name (get confusing error messages now)
128 :    
129 :     support for Python interop and GUI
130 :    
131 :     Python/ctypes interface to run-time
132 :    
133 :     ==============================
134 :     LONG TERM ====================
135 :     ==============================
136 :    
137 :     Better handling of variables that determines the scope of a variable
138 :     based on its actual use, instead of where the user defined it. So,
139 :     for example, we should lift strand-invariant variables to global
140 :     scope. Also prune out useless variables, which should include field
141 :     variables after the translation to mid-il.
142 :    
143 :     co- vs contra- index distinction
144 :    
145 :     some indication of tensor symmetry
146 :     (have to identify the group of index permutations that are symmetries)
147 :    
148 :     dot works on all tensors
149 :    
150 :     outer works on all tensors
151 :    
152 :     Einstein summation notation
153 :    
154 :     "tensor comprehension" (like list comprehension)
155 :    
156 :     ======================
157 :     BUGS =================
158 :     ======================
159 :    
160 :     test/bug-usevar.diderot:
161 :     looks like varialble scoping bug is still present in some cases?
162 :    
163 :     test/bug-matrix.diderot:
164 :     3x3 matrix subtraction is broken
165 :     (and then fix test/vr-curv-quad.diderot)
166 :    
167 :     test/read2vecs.diderot:
168 :     // HEY (BUG?) shouldn't it be a type error to load this 2-D array of
169 :     // 2-vectors into a 2-D *scalar* field? Instead, get:
170 :     // uncaught exception Fail [Fail: Error in compiling lic.diderot]
171 :     // raised at driver/main.sml:31.39-31.76
172 :     image(2)[] Vimg = load("../data/vorttest.nrrd");
173 :    
174 :     test/zslice2.diderot:
175 :     // HEY (bug) bspln5 leads to problems ...
176 :     // uncaught exception Size [size]
177 :     // raised at c-target/c-target.sml:47.15-47.19
178 :     //field#4(3)[] F = img ⊛ bspln5;

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0