BES File Out NetCDF: Difference between revisions
PatrickWest (talk | contribs) (New page: General questions: * Should I traverse the data structure to see if there are any sequences? Structures * Flatten * prepend name of structure with an underscore followed by the variable n...) |
No edit summary |
||
Line 1: | Line 1: | ||
General questions | == How to flatten hierarchical types == | ||
For a structure such as | |||
Structure { | |||
Int x; | |||
Int y; | |||
} Point; | |||
represent that as | |||
Point.x | |||
Point.y | |||
Explicitly including the dot seems ugly and like a kludge and so on, but it means that the new variable name can be feed back into the server to get the data. | |||
Because this is hardly a lossless, we should also add an attribute that contains the original real name of the variable - information that this is the result of a flattening operation, that the parent variable was a Structure, Sequence or Grid and its name was ''xyz''. Given that, it should be easy to sort out how to make a future request for the data in the translated variable. | |||
This in some way obviates the need for the dot, but I think we should use that regardless. | |||
== General questions == | |||
* Should I traverse the data structure to see if there are any sequences? | * Should I traverse the data structure to see if there are any sequences? | ||
[[User:Jimg|jimg]] 17:53, 18 December 2008 (PST) Yes. An initial version should note their presence and add an attribute noting that they have been elided. To translate a Sequence, there are several cases to consider: | |||
# A Sequence of simple types only (which means a one-level sequence): translate to a set of arrays using a name-prefix flattening scheme. | |||
# A nested sequence (otherwise with only simple types) should first be flattened to a one level sequence and then that should be flattened. | |||
# A Sequence with a Structure or Grid should be flattened by recursively applying the flattening logic to the components. | |||
Structures | Structures | ||
* Flatten | * Flatten | ||
* prepend name of structure with an underscore followed by the variable name. Keep track as there might be embedded structures, grids, etc... | * prepend name of structure with an underscore followed by the variable name. Keep track as there might be embedded structures, grids, etc... | ||
[[User:Jimg|jimg]] 17:53, 18 December 2008 (PST) Use the procedure described above in ''How to flatten hierarchical types''. | |||
[[User:Jimg|jimg]] 17:53, 18 December 2008 (PST) I would use a dot even though I know that dots in variable names are, in general, a bad idea. If we use underscores then it maybe hard for clients to form a name that can be used to access values from a server based on the information in the file. | |||
Grid | Grid | ||
Line 13: | Line 39: | ||
Array | Array | ||
* write_array appears to be working just fine. | * write_array appears to be working just fine. | ||
* If array of complex types? | * If array of complex types? | ||
Sequences | Sequences |
Revision as of 01:53, 19 December 2008
How to flatten hierarchical types
For a structure such as
Structure { Int x; Int y; } Point;
represent that as
Point.x Point.y
Explicitly including the dot seems ugly and like a kludge and so on, but it means that the new variable name can be feed back into the server to get the data.
Because this is hardly a lossless, we should also add an attribute that contains the original real name of the variable - information that this is the result of a flattening operation, that the parent variable was a Structure, Sequence or Grid and its name was xyz. Given that, it should be easy to sort out how to make a future request for the data in the translated variable.
This in some way obviates the need for the dot, but I think we should use that regardless.
General questions
- Should I traverse the data structure to see if there are any sequences?
jimg 17:53, 18 December 2008 (PST) Yes. An initial version should note their presence and add an attribute noting that they have been elided. To translate a Sequence, there are several cases to consider:
- A Sequence of simple types only (which means a one-level sequence): translate to a set of arrays using a name-prefix flattening scheme.
- A nested sequence (otherwise with only simple types) should first be flattened to a one level sequence and then that should be flattened.
- A Sequence with a Structure or Grid should be flattened by recursively applying the flattening logic to the components.
Structures
- Flatten
- prepend name of structure with an underscore followed by the variable name. Keep track as there might be embedded structures, grids, etc...
jimg 17:53, 18 December 2008 (PST) Use the procedure described above in How to flatten hierarchical types.
jimg 17:53, 18 December 2008 (PST) I would use a dot even though I know that dots in variable names are, in general, a bad idea. If we use underscores then it maybe hard for clients to form a name that can be used to access values from a server based on the information in the file.
Grid
- Flatten.
- Use the name of the grid for the array of values
- prepend the name of the grid plus an underscore to the names of each of the map vectors.
Array
- write_array appears to be working just fine.
- If array of complex types?
Sequences
- For now throw an exception
Attributes
- Global Attributes?
- Include global attribute to include URL that generated that new file
- Variable Attributes
- What about attributes for structures? Should these attributes be created for each of the variables in the structure? So, if there is a structure a with variables v1 and v2 then the attributes for a will be attributes for a_v1 and a_v2? Or are there attributes for each of the variables in the structure? Or both.
- For multi-dimensional datasets there will be a structure for each container, and each of these containers will have global attributes.