17 |
ability to emit/track/record variables into dynamically re-sized |
ability to emit/track/record variables into dynamically re-sized |
18 |
runtime output buffer |
runtime output buffer |
19 |
|
|
20 |
tensor fields: convolution on general tensor images (order > 1) |
[GLK:4] tensor fields from tensor images: Initially need at least |
21 |
|
convolution on tensor[2,2] and tensor[3,3] (the same component-wise |
22 |
|
convolution as for vectors). |
23 |
|
|
24 |
======================== |
======================== |
25 |
SHORT-ISH TERM ========= (to make using Diderot less annoying to |
SHORT-ISH TERM ========= (to make using Diderot less annoying to |
33 |
|
|
34 |
[GLK:1] Proper handling of stabilize method |
[GLK:1] Proper handling of stabilize method |
35 |
|
|
36 |
|
Convolution on general tensor images (order > 2) |
37 |
|
|
38 |
allow "*" to represent "modulate": per-component multiplication of |
allow "*" to represent "modulate": per-component multiplication of |
39 |
vectors, and vectors only (not tensors of order 2 or higher). Once |
vectors, and vectors only (not tensors of order 2 or higher). Once |
40 |
sequences are implemented this should be removed: the operation is not |
sequences are implemented this should be removed: the operation is not |
43 |
implicit type promotion of integers to reals where reals are |
implicit type promotion of integers to reals where reals are |
44 |
required (e.g. not exponentiation "^") |
required (e.g. not exponentiation "^") |
45 |
|
|
46 |
[GLK:4] Save Diderot output to nrrd, instead of "mip.txt" |
[Nick working on this] Save Diderot output to nrrd, instead of "mip.txt" |
47 |
For grid of strands, save to similarly-shaped array |
For grid of strands, save to similarly-shaped array |
48 |
For list of strands, save to long 1-D (or 2-D for non-scalar output) list |
For list of strands, save to long 1-D (or 2-D for non-scalar output) list |
49 |
For ragged things (like tractography output), will need to save both |
For ragged things (like tractography output), will need to save both |
50 |
complete list of values, as well as list of start indices and lengths |
complete list of values, as well as list of start indices and lengths |
51 |
to index into complete list |
to index into complete list |
52 |
|
|
53 |
[GLK:5] ability to declare a field so that probe positions are |
[GLK:6] ability to declare a field so that probe positions are |
54 |
*always* "inside"; with various ways of mapping the known image values |
*always* "inside"; with various ways of mapping the known image values |
55 |
to non-existant index locations. One possible syntax emphasizes that |
to non-existant index locations. One possible syntax emphasizes that |
56 |
there is a index mapping function that logically precedes convolution: |
there is a index mapping function that logically precedes convolution: |
81 |
MEDIUM TERM ================== (*needed* for particles) |
MEDIUM TERM ================== (*needed* for particles) |
82 |
============================== |
============================== |
83 |
|
|
84 |
run-time birth of strands |
[Lamont working on this] run-time birth of strands |
85 |
|
|
86 |
"initially" supports lists |
"initially" supports lists |
87 |
|
|
90 |
e.g. using output of iso2d.diderot for one isovalue to seed the input |
e.g. using output of iso2d.diderot for one isovalue to seed the input |
91 |
to another invocation of the same program) |
to another invocation of the same program) |
92 |
|
|
93 |
Communication between strands: they have to be able to learn each |
[Lamont working on this] Communication between strands: they have to |
94 |
other's state (at the previous iteration). Early version of this can |
be able to learn each other's state (at the previous iteration). |
95 |
have the network of neighbors be completely static (for running one |
Early version of this can have the network of neighbors be completely |
96 |
strand/pixel image computations). Later version with strands moving |
static (for running one strand/pixel image computations). Later |
97 |
through the domain will require some spatial data structure to |
version with strands moving through the domain will require some |
98 |
optimize discovery of neighbors. |
spatial data structure to optimize discovery of neighbors. |
99 |
|
|
100 |
============================ |
============================ |
101 |
MEDIUM-ISH TERM ============ (to make Diderot more useful/effective) |
MEDIUM-ISH TERM ============ (to make Diderot more useful/effective) |
102 |
============================ |
============================ |
103 |
|
|
104 |
|
[GLK:5] Want code-generation working for tensors of order three. |
105 |
|
Order three matters for edge detection in scalar fields (to get |
106 |
|
second derivatives of gradient magnitude), second derivatives |
107 |
|
of vector fields (for some feature extraction), and first |
108 |
|
derivatives of diffusion tensor fields. |
109 |
|
|
110 |
Python/ctypes interface to run-time |
Python/ctypes interface to run-time |
111 |
|
|
112 |
support for Python interop and GUI |
support for Python interop and GUI |
138 |
LONG TERM ==================== (make Diderot more interesting/attractive from |
LONG TERM ==================== (make Diderot more interesting/attractive from |
139 |
============================== a research standpoint) |
============================== a research standpoint) |
140 |
|
|
|
[GLK:6] Want code-generation working for tensors of order three. |
|
|
Order three matters for edge detection in scalar fields (to get |
|
|
second derivatives of gradient magnitude), second derivatives |
|
|
of vector fields (for some feature extraction), and first |
|
|
derivatives of diffusion tensor fields. |
|
|
|
|
141 |
IL support for higher-order tensor values (matrices, etc). |
IL support for higher-order tensor values (matrices, etc). |
142 |
tensor construction [DONE] |
tensor construction [DONE] |
143 |
tensor indexing [DONE] |
tensor indexing [DONE] |
208 |
field#0(2)[] F = lambda([x,y], Ft([x,y,42.0])) // restriction to time=42.0 |
field#0(2)[] F = lambda([x,y], Ft([x,y,42.0])) // restriction to time=42.0 |
209 |
vec2 grad = ∇F([x,y]); // 2D gradient |
vec2 grad = ∇F([x,y]); // 2D gradient |
210 |
|
|
|
Tensors of order 3 (e.g. gradients of diffusion tensor fields, or |
|
|
hessians of vector fields) and order 4 (e.g. Hessians of diffusion |
|
|
tensor fields). |
|
|
|
|
211 |
representation of tensor symmetry |
representation of tensor symmetry |
212 |
(have to identify the group of index permutations that are symmetries) |
(have to identify the group of index permutations that are symmetries) |
213 |
|
|