Open georgeslabreche opened 3 years ago
I like @TanguySoto's idea of ditching the need for point 4 by making all that logic part of the plugin that would be provided by experimenters (point 5).
@TanguySoto check this, instead of using an anonymous class for a received aggregation listener like in exp167: https://gitlab.esa.int/OPS-SAT/sepp/exp167/-/blob/39173c40c5776d8acf62ffd0a5c70e125f445102/src/main/java/esa/mo/nmf/apps/Exp167DataHandler.java#L168-180
We can implement file writing logic within the listener, in a dedicated class. Like in exp171: https://github.com/georgeslabreche/opssat-datapool-param-dispatcher/blob/6e7bcb9f1dd8f5329c86c0d61b900ea6cf60b818/src/main/java/esa/mo/nmf/apps/AggregationWriter.java#L102-L157
This eliminates the need for a locking mechanism as well as the need to poll for data. The listener function will take care of all the writing when it is automatically triggered. I am referring to this type of polling in exp167: https://gitlab.esa.int/OPS-SAT/sepp/exp167/-/blob/39173c40c5776d8acf62ffd0a5c70e125f445102/src/main/java/esa/mo/nmf/apps/Exp167SamplingHandler.java#L457
Overview
Generalize the OrbitAI app so that experimenters can:
Proposed Configuration
Here's an example of configuring OrbitAI to train with AROW and NHERD in the 5D input space with 2 data pool parameters and 3 transformation functions.
Notes on the proposed features
1. Select which training methods to use.
2. Configure the hyperparameters of the selected training methods.
This is pretty self-explanatory.
3. List which data pool parameters to fetch as training inputs.
The list can include both data pool parameter names as well as unique keys that link to custom transformation expressions e.g., EXP0, EXP1, EXP2...
~~### 4. Evaluate custom transformation functions. Use this super duper awesome Java library: https://www.baeldung.com/java-evaluate-math-expression-string~~
5. Define how the target output is calculated.
This is a bit tricky because it can involve conditional logic. Could use a plugin architecture with pf4j: https://github.com/pf4j/pf4j