Follow up of #105
UI:
Further:
Plan
Let's break all these over multiple PR:
Recipe
- establish recipe format
- self contained instruction to compute a part
- do not repeat global information (like
Configs and Debug) since they are always accessible for the full operator
- with dedicated in-memory struct
- provide recipe computer (from runcard-like input)
Parts
- start splitting
operator.grid instructions to compute parts from recipes
- provide a part struct
- benchmark with FFNS
Operators
- compute full operators as well (merging separate parts)
- move operator struct
- benchmark with VFNS
Runner replacement
- replace default runner, with a runner using recipes-parts-operators
- benchmark new runner against old one, over a wide range of conditions
- drop
operator.grid
Move to Ekobox
Since at this point the runner won't be our default way to compute an EKO, and Ekobox is sufficiently good, we can move the one-line runner to Ekobox (it will actually be there for user convenience, so makes sense to be part of the UI-oriented package).
In particular, we can also include as part of the EKO CLI, i.e.:
eko run thcard.yaml ocard.yaml [output-file]
Layout
Following, the proposed layout backing the new mode:
runner.py
output/
|-- legacy.py
|-- struct.py
|-- rotation.py
|-- recipe.py
|-- part.py
|-- operator.py
runner.py: it will eventually contain a runner performing the same task of the current one, but based on recipe-part-operator rather than operator.grid
legacy.py: contains methods to load and dump old style EKO files (dump methods are going to be deprecated as soon as it is possible to compute a new one, load later on)
struct.py: contains the EKO class and simplest methods
- for some time will also host
Debug and Config
Config has also to be renamed, too generic
rotation.py: contains the Rotation class and rotation functions (xgrid, flavor, and to evolution wrapper)
recipe.py: contains the Recipe class and functions to compute it from runcard-like info
part.py: contains the Part class and functions to compute part from recipe
operator.py: contains the Operator class, and functions to compute operator from parts
Follow up of #105
runcardssubfolder and move there runcards (0.theory.yaml,0.operator.yaml)recipessubfolder and dump instructionspartssubfolderUI:
ekorun through CLI commands (runsubcommand)Further:
eko.runcards) and use them ineko.output.struct.EKOoutputsubpackage in something more appropriate (likecomputeororchestration)Q0andQrefare NumPy scalars in both theory and operators cardq2should always act on existing element retrieved with a given precision (parameter of the object): if multiple object are found in the range, raise__getitem____setitem____contains__output/manipulate.pytooutput/rotation.pyRotationfromoutput/struct.pytooutput/rotation.pyOperatorfromoutput/struct.pytooutput/operator.pyDictLikefromoutput/struct.pytooutput/utils.pyPlan
Let's break all these over multiple PR:
Recipe
ConfigsandDebug) since they are always accessible for the full operatorParts
operator.gridinstructions to compute parts from recipesOperators
Runner replacement
operator.gridMove to Ekobox
Since at this point the runner won't be our default way to compute an EKO, and Ekobox is sufficiently good, we can move the one-line runner to Ekobox (it will actually be there for user convenience, so makes sense to be part of the UI-oriented package).
In particular, we can also include as part of the EKO CLI, i.e.:
Layout
Following, the proposed layout backing the new mode:
runner.py: it will eventually contain a runner performing the same task of the current one, but based on recipe-part-operator rather thanoperator.gridlegacy.py: contains methods to load and dump old style EKO files (dump methods are going to be deprecated as soon as it is possible to compute a new one, load later on)struct.py: contains theEKOclass and simplest methodsDebugandConfigConfighas also to be renamed, too genericrotation.py: contains theRotationclass and rotation functions (xgrid, flavor, and to evolution wrapper)recipe.py: contains theRecipeclass and functions to compute it from runcard-like infopart.py: contains thePartclass and functions to compute part from recipeoperator.py: contains theOperatorclass, and functions to compute operator from parts