Skip to content

Releases: Framework-R-D/phlex

Phlex v0.1.0

22 Dec 20:09

Choose a tag to compare

Important

This is a prototype release. It is known to have incomplete functionality with respect to the Phlex conceptual design; backwards compatibility of API is not guaranteed. The following API is intended for use:

  • PHLEX_REGISTER_ALGORITHMS(...) opener for registering physics algorithms
  • PHLEX_REGISTER_PROVIDERS(...) opener for registering data-product providers
  • Anything in the top-level phlex namespace

Any interface (namespaces, functions, classes, etc.) that contains the strings experimental, internal, or detail should not be directly used.


Phlex v0.1.0 is the first prototype release of the Phlex framework. The purpose of the v0.1.0 release is to allow early adopters of Phlex to exercise its basic functionalities, which include:

  • Specifying C++ algorithms as operators to the transform, observe, fold, and unfold higher-order functions
  • Specifying Python algorithms as operators to the transform and observe higher-order functions
  • Executing phlex programs using Jsonnet/JSON runtime configurations that load compiled plugins
  • Configuring a Phlex-provided driver to produce a user-defined hierarchy (a tree) of data layers
  • Writing data products with basic types to Phlex output files through FORM
  • Accessing data-cell information through phlex::handle<T> objects for data products being used by algorithms

Instructions for building code that uses Phlex and running simple Phlex jobs can be found in the phlex-examples repository.

Specific Features

Phlex v0.1.0 provides the following capabilities:

  1. API to register algorithms for C++ and Python
  2. Phlex executable
  3. Configuration 
    1. Supported language is Jsonnet
    2. Ability to configure which modules are loaded (includes ability to configure which algorithms specified in the module are registered)
    3. Ability to configure a Phlex-provided driver regarding which layers should be emitted
  4. Product specification
    1. C++ language type
    2. Global product "name"
    3. Data layer
  5. Higher-order functions
    1. Transform (C++, Python)
    2. Observer (C++, Python)
    3. Fold (C++)
    4. Unfold (C++)
  6. Access to product information (including data-cell ID) through handles
  7. Algorithms that can access multiple data products from the same data layer
  8. Python algorithm that can consume a data product produced by a C++ algorithm
  9. C++ algorithm that can consume a data product produced by a Python algorithm
  10. C++ providers that can emit C++ data products

Included Pull Requests

Read more