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

SCM Repository

[diderot] Annotation of /branches/pure-cfg/TODO
ViewVC logotype

Annotation of /branches/pure-cfg/TODO

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1046 - (view) (download)

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

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