[x] L179: needs to say something about dependent / independent variables?
3.1
[x] Fiber bundles are a structure not a format
3.1.1 v 3.1.2
[x] Be clearer about differentiating "the structure of the components" and "the
structure on the components".
[x] The translation example is very confusing. You label them as degree with no
unit which made me think you had changed this example from wind and not removed
the units.
[x] This reads like there are exactly 2 translations (+1 and +2) which is not
closed. Using specific numbers says "these numbers are special!". I suggest
using generic examples rather than trying to use climate data as the climate
data / units / terminology adds complexity that you do not need and never
actually use.
[x]I am not sure that this is the correct meaning of "partial ordering"
3.1.4
[x] the notation on the \taus goes from subscript to super script
[x] I would not call this a "common interface" but "common description", "common
formalism", "common model", "common interpretation". "interface" caries the
connotations of specific implementation details.
L329-L337, L338-L344, L345-353:
[ ] I think I see what you are tying to do here (say we can apply this model as an
interpretive layer on top of dense / efficient data layouts), but it is
sufficiently confusing I can not tell if it in wrong or not.
[x] I think these 3 paragraph should be pulled out into a new sub-section titled
"applications to practical data structures", examples", "applications" or some
such.
[x] The 2D image should point out that the position information is encoded in the
array index.
I think the examples you should hit are
[x] monochrome image + extents: (R, R, R) but K in continuous
] 2D table + labels: (R, R, R) but K in discrete
[ ] 2D array + labels: (Rxnumcols) where K is 1D and continuous and labels are fiber
[] data frame : same as above
[] xarray : same as above, but cooler
confused cause I do most of these?
3.3
[x] Technically we pass the renderer to the Artist (which is notably why an openGL
backend is hard).
3.3.2
[x] Remind us what \varphi is
eq26, 27:
[x] I know what this means because we spent several hours talking about it, but I
do not think this will be understanding to someone coming at this fresh. This
needs more explanatory / motivating words.
3.3.3
[x] L448: Be careful about using section when I think you mean region
3.3.4
[x] eq 36 |n| is the magnitude of the slope, not the thickness-
[x] eq 37/38 missing the thickness still?
[x] x = xpos(\xi(\alpha)) + thickness \beta \hat(n)_1(\xi(\alpha))
4
[x] Also exploiting the Matplotlib transfrom stack to do data -> screen space transfrom for x/y ?
4.1
[x ] Matplotlib is capitalized
[x] L570: Do not think this is a glyph as you implement Point with one call to assemble,
but each rendered mark is a glyph by eq 32. You also note this exact point on
L584.
[x] L603: Same required P as what?
[x] EdgeSimplex does not have FB
L681:
[x] the F in the FB on DataFrame is completely different than what you defined above .
[x] Figure 24b: is busted
[ ] L710: argue that draw which is the function that actually maps most close to-
A from eq (1) is functional and all of the object stuff is book keeping to
manage the zillion inputs that function needs.
[x] L739 stands -> standard
[x] L751: add comment about exporting mpl Artists to other formats. This is hinted
at in the "the assemble method produces a serializable version".
Fix later
1
Opening sentence is convoluted, flip order?
L92-94: use "stucuture" to mean different things in subsequent sentences.
Change the second sentance to be "We reuse this formalism..."
2.
2.1
Final sentence is a bit contradictory about being both structure independent
and providing a common API. "stucture" may be too overloaded in this text.
2.2
"discrete and continuous data" is confusing because it is not clear to me if
you are talking about connectivity of the base space or the fiber types in this
sentence.
L174: "collection" rather than "vector"? vector to me implies the order is
meaningful, but because we only ever refer to members of the record by name we
never rely on their being an order.
L177: if I have a fiber with 2 images, is there one "image" component
consisting of both image fields or 2 components? Not clear why temperature (a
scalar with a unit), a color (a unitless visual property), and an image (a 2D
grided array of 1-4 values per pixel) are the 3 examples here. This is making
me think way too much about things I do not think you want me to be thinking
about.
L200: "differentiable" is a dangerous word to use around math types. I spent
half a beat trying to figure out what I would take a derivative of a glyph
against!
That said, looking at derivatives of the output as a function of the section
would probably be interesting and give you some measure of the sensitivity of
a visualization....
3.1
3.1.1
[ ] L265: decouple -> decompose . We still want them coupled together
[ ] eq (9). Wind is the infinite disk, which I guess is R^2 (well, I think wind is
actually capped at the speed of sound, but)? I am not sure that this notation
is doing more good than harm. I think that these would be clearer using
generic variable names.
[ ] L267: this sentence should be a paragraph.
3.1.2
[ ] using horizontal, vertical, and diagonal here is confusing to me.
[ ] The monoid section needs a better explanation of how monoids are the basis of
identifying the in variance.
3.1.3
[ ] L306 assumed -> implicit
3.2.2
[ ] I do not understand why flipping an image is in \xi and not \nu
3.3
[ ] connect eq 21 to eq 1?
[ ] need to motivate introducing sheafs and jets better.
4.1
[ ] L566: getting too prescriptive about implementation details. Automatic
fallback on missing data is only one way to handle this (which I think is too
magical at this layer of the design (which is also getting too prescriptive at
this stage)).
[] Do multiple inheritance on Point and Line to mix in the abstract artist?
[x] Too much logic in the Bar.draw related to if the name is in the data or not.
[x] L611: Disagree that this is simpler than higher-order functions
4.2
[x] This cuts against the argument you made above about how this design separates
V-type input from Q-type input. Why not handle constant data by adding fields
to V? That is simpler both conceptually and implementation wise.
4.3
[x] can probably cut the number of points down to 100, say something about "use
axes to pick good number of points"?
4.4
[x] Do not mutate state if you do not have to (group['floor'] = floor is mutating a dict in
self.mtransforms)
[x] You can do bar = Bar(.., {**group, 'floor'=floor}, ...) which has the same
effect but no side effects. We are going to have to address the issue that in StackedBar we call view N+1
times which brings race conditions back.
Fix now
abstract
3.1.1 v 3.1.2
[x] Be clearer about differentiating "the structure of the components" and "the structure on the components".
[x] The translation example is very confusing. You label them as degree with no unit which made me think you had changed this example from wind and not removed the units.
[x] This reads like there are exactly 2 translations (+1 and +2) which is not closed. Using specific numbers says "these numbers are special!". I suggest using generic examples rather than trying to use climate data as the climate data / units / terminology adds complexity that you do not need and never actually use.
[x]I am not sure that this is the correct meaning of "partial ordering"
3.1.4
L329-L337, L338-L344, L345-353:
[ ] I think I see what you are tying to do here (say we can apply this model as an interpretive layer on top of dense / efficient data layouts), but it is sufficiently confusing I can not tell if it in wrong or not.
[x] I think these 3 paragraph should be pulled out into a new sub-section titled "applications to practical data structures", examples", "applications" or some such.
[x] The 2D image should point out that the position information is encoded in the array index.
I think the examples you should hit are
3.3
3.3.2
eq26, 27:
3.3.3
3.3.4
[x] eq 36 |n| is the magnitude of the slope, not the thickness-
[x] eq 37/38 missing the thickness still?
[x] x = xpos(\xi(\alpha)) + thickness \beta \hat(n)_1(\xi(\alpha))
4
4.1
[x ] Matplotlib is capitalized
[x] L570: Do not think this is a glyph as you implement Point with one call to assemble, but each rendered mark is a glyph by eq 32. You also note this exact point on L584.
[x] L603: Same required P as what?
[x] EdgeSimplex does not have FB
L681:
[x] the F in the FB on DataFrame is completely different than what you defined above .
[x] Figure 24b: is busted
[ ] L710: argue that
draw
which is the function that actually maps most close to- A from eq (1) is functional and all of the object stuff is book keeping to manage the zillion inputs that function needs.[x] L739 stands -> standard
[x] L751: add comment about exporting mpl Artists to other formats. This is hinted at in the "the assemble method produces a serializable version".
Fix later
1
Opening sentence is convoluted, flip order?
L92-94: use "stucuture" to mean different things in subsequent sentences. Change the second sentance to be "We reuse this formalism..."
2.
2.1
Final sentence is a bit contradictory about being both structure independent and providing a common API. "stucture" may be too overloaded in this text.
2.2
"discrete and continuous data" is confusing because it is not clear to me if you are talking about connectivity of the base space or the fiber types in this sentence.
L174: "collection" rather than "vector"? vector to me implies the order is meaningful, but because we only ever refer to members of the record by name we never rely on their being an order.
L177: if I have a fiber with 2 images, is there one "image" component consisting of both image fields or 2 components? Not clear why temperature (a scalar with a unit), a color (a unitless visual property), and an image (a 2D grided array of 1-4 values per pixel) are the 3 examples here. This is making me think way too much about things I do not think you want me to be thinking about.
L200: "differentiable" is a dangerous word to use around math types. I spent half a beat trying to figure out what I would take a derivative of a glyph against!
That said, looking at derivatives of the output as a function of the section would probably be interesting and give you some measure of the sensitivity of a visualization....
3.1
3.1.1
[ ] L265: decouple -> decompose . We still want them coupled together
[ ] eq (9). Wind is the infinite disk, which I guess is R^2 (well, I think wind is actually capped at the speed of sound, but)? I am not sure that this notation is doing more good than harm. I think that these would be clearer using generic variable names.
[ ] L267: this sentence should be a paragraph.
3.1.2
[ ] using horizontal, vertical, and diagonal here is confusing to me.
[ ] The monoid section needs a better explanation of how monoids are the basis of identifying the in variance.
3.1.3
3.2.2
3.3
[ ] connect eq 21 to eq 1?
[ ] need to motivate introducing sheafs and jets better.
4.1
[ ] L566: getting too prescriptive about implementation details. Automatic fallback on missing data is only one way to handle this (which I think is too magical at this layer of the design (which is also getting too prescriptive at this stage)).
[] Do multiple inheritance on Point and Line to mix in the abstract artist?
[x] Too much logic in the Bar.draw related to if the name is in the data or not.
[x] L611: Disagree that this is simpler than higher-order functions
4.2
4.3
4.4
[x] Do not mutate state if you do not have to (group['floor'] = floor is mutating a dict in self.mtransforms)
[x] You can do
bar = Bar(.., {**group, 'floor'=floor}, ...)
which has the same effect but no side effects. We are going to have to address the issue that in StackedBar we call view N+1 times which brings race conditions back.