You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Define interaction between core framework and IO backends #54
The interactions between the core framework and IO system (FORM) and its backends will evolve over time. The purpose of this issue is to create a list of characteristics such interactions should cover.
A user-defined data product of a specific type T will be owned by an object phlex::product<T>, which inherits from an abstract base class phlex::product_base. To preserve a data product, the core Phlex framework will pass to FORM (along a graph edge) an object whose type is the equivalent of std::shared_ptr<phlex::product_base>. To provide a data product, FORM will create an object of type std::shared_ptr<phlex::product_base> to give to the core framework.
For algorithms that return multiple data products per invocation, it may be most efficient to pass a single set of std::shared_ptr<phlex::product_base> objects from the core framework to FORM.
Data-product provenance will be accessible through objects of the type phlex::provenance, whose API and layout have yet to be determined.
The following file-level entities do not have an obvious data-exchange API between the core framework and FORM:
Job configuration
Data-layer hierarchy
List of data products (and their associated data cells/layers)
We are marking this issue as complete for the F1 milestone. The interaction between the core framework and IO backends will continue to be refined as part of the F2 milestone.
Activity
knoepfel commentedon Aug 25, 2025
Terminology
The Phlex type includes:
The Phlex type does not contain the data-cell index, but only the data layer(s) to which the data product belongs.
Note
A data product is unambiguously identified by its data-product identifier, which is its data-cell index and its Phlex-type instance.
Preserving data
form::writecall in a (e.g.) transform node.FORM must store:
Providing data
FORM must be able to provide:
knoepfel commentedon Aug 25, 2025
API for data exchange
A user-defined data product of a specific type
Twill be owned by an objectphlex::product<T>, which inherits from an abstract base classphlex::product_base. To preserve a data product, the core Phlex framework will pass to FORM (along a graph edge) an object whose type is the equivalent ofstd::shared_ptr<phlex::product_base>. To provide a data product, FORM will create an object of typestd::shared_ptr<phlex::product_base>to give to the core framework.std::shared_ptr<phlex::product_base>objects from the core framework to FORM.Data-product provenance will be accessible through objects of the type
phlex::provenance, whose API and layout have yet to be determined.The following file-level entities do not have an obvious data-exchange API between the core framework and FORM:
Such an API will likely be developed later.
knoepfel commentedon Sep 16, 2025
We are marking this issue as complete for the F1 milestone. The interaction between the core framework and IO backends will continue to be refined as part of the F2 milestone.