APAflow Architecture

APAflow was created in Java and Python. It uses :
-Eclipse and the Eclipse Modelling Framework (EMF) for GUI development
-Python and many Python Libraries for Data Science and Machine Learning tasks (i.e. Pandas, NumPy, Scikit-learn, PyCaret, H2O, Pandas Profiling, etc)

APAflow architecture has 7 main components:


GUI: Manages the visual interface. (i.e drag and drop operators, operator setup, connections)
Execution Engine: Controls flow execution (i.e. execute one operator, execute flow, stop execution, start and stop Python Kernels or H2O server)
Code Generation Engine: Transforms operator (icons) into Python code. It relies on the operators definitions created with APAflow Plugin Builder
Python Bridge: Controls communication between the GUI and the Python Kernel
Python Kernel: Executes Python Code and return results to the Python Bridge. The Python Kernel is executed in a Miniconda environment (apaflow_env) that contains Python and the required Python Libraries
Export Engine: Manages flow export to Python, Jupyter notebook, and to MS Word (automatic documentation)
Plugin Builder: Manages creation, edition, and installation of plugins (Plugins define the operators)

Typically, an execution of an operator (icon) works like this:

  1. A User defines the operator (icon) properties and click OK
  2. The Code Generation Engine generates the Python code associated to the operator
  3. The User executes the operator using the Run or Run Flow option
  4. If there is no Python Kernel running, the Execution Engine starts a Python kernel and passes the generated code to the Python Bridge
  5. The Python Bridge sends the Python code to the Python Kernel for execution
  6. The Python Kernel executes the Python code and return results to the Python Bridge
  7. The Python Bridge sends the results to the GUI that displays them in the Results window. Note that the Python execution results are shown in the Results window. APAflow does not format the cell results, it just shows the results.
  8. The whole flow can be exported to Python, Jupyter notebook, or MS Word using the Export Engine