-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow user to store non-openPMD information #115
Comments
Absolutely, they can store it everywhere as long as it does not collide with reserved attributes. The standard is not exclusive and only defines a minimal required markup :)
That is also the way how new extensions (might) develop: from best practices of existing additional attributes & records.
Regarding other data sets (records): if they are stored in the base path + particle/mesh path they need to fulfill the requirements of those locations. Else just add them to an other non-reserved location inside the base path and it will be fine since we don't search outside for standardized formatting.
|
Make absolutely sense and good point and we should make this more clear in the standard. |
Ok, great! I'll do a corresponding PR in the next few days. |
An other and additional/orthogonal approach to allow non-openPMD information inside
(since additional attributes do not harm the parsers), we could also provide a prefix that is ignored by the parsers. Lets say their names must start with "+". Would allow to experiment with new additional information, e.g., irregular mesh geometries, inside Currently, only |
Close #115: Allow user to store non-openPMD information
implemented in 1.0.1 |
I would propose that that it should be allowed for groups and data sets to be freely added. I can imagine situations where, for example, a person wants to add per-particle data and the restriction that this has to be put outside of the group that holds the particle data makes things very messy. Certainly we could mandate that such added groups or data sets be marked as extra. For example using a "+" prefix as you suggested. I think this is a fairly clean solution. |
Alternative (and maybe more radical) suggestion:
The fundamental idea would be that an openPMD dataset cannot only (1) be augmented by custom hierarchies (i.e. have the classical openPMD hierarchy, and other stuff around it that the API ignores), but instead that (2) an openPMD is a custom hierarchy with the classical openPMD structure embedded into it at any place. Example:
Codes such as for example PIConGPU can put their internal datasets (e.g. Ideally, if done correctly, this would mean that a single dataset can use several standards at the same time, such as mixing Nexus with openPMD. Downside: No huge change for the standard, but a rather large change for implementations. Readers would need to be updated to find openPMD structures throughout the datasets. |
That sounds useful and would be equivalent to relaxing meshes path from values like I am not sure if we will not need an "exclude this from parsing" nonetheless via an attribute on custom groups/variables - without it we would keep things definitely fully separate besides sharing an iteration/snapshot id (if that works then that is fine). |
For the HELPMI project, I drew up some visualizations of the proposed addition.
Using a regex is one of the options, yes. Another (more restricted) option would be a list of paths.
Using exclude patterns is a common enough pattern in a lot of software (rsync, git ignore, backup software, …), so, I'm fine with using that. |
Sounds great. Designing as lists of patterns/paths is a good idea. The last comment was simply: yes, I think we need an exclude pattern, too (as in rsync, git ignore, backup software, ...). |
Real-life WIP example from PIConGPU: Checkpointing information is stored under
|
Today I had a request from a prospective user of openPMD: can the user store other datasets in the HDF5-openPMD files, which are not meant to be read by the openPMD parser / viewer ? (for instance because they don't fall either in the category mesh or or in the category particle)
From my point of view, the best way to do this is to store this data outside of the
basePath
(in this case the parser will not try to read it).@ax3l : Does that make sense ? If yes, I think it would be good to add it as a side-remark in the standard.
The text was updated successfully, but these errors were encountered: