triggerflow 0.3.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. trigger_dataset/__init__.py +0 -0
  2. trigger_dataset/core.py +88 -0
  3. trigger_loader/__init__.py +0 -0
  4. trigger_loader/cluster_manager.py +107 -0
  5. trigger_loader/loader.py +154 -0
  6. trigger_loader/processor.py +212 -0
  7. triggerflow/__init__.py +0 -0
  8. triggerflow/cli.py +122 -0
  9. triggerflow/core.py +617 -0
  10. triggerflow/interfaces/__init__.py +0 -0
  11. triggerflow/interfaces/uGT.py +187 -0
  12. triggerflow/mlflow_wrapper.py +270 -0
  13. triggerflow/starter/.gitignore +143 -0
  14. triggerflow/starter/README.md +0 -0
  15. triggerflow/starter/cookiecutter.json +5 -0
  16. triggerflow/starter/prompts.yml +9 -0
  17. triggerflow/starter/{{ cookiecutter.repo_name }}/.dvcignore +3 -0
  18. triggerflow/starter/{{ cookiecutter.repo_name }}/.gitignore +143 -0
  19. triggerflow/starter/{{ cookiecutter.repo_name }}/.gitlab-ci.yml +56 -0
  20. triggerflow/starter/{{ cookiecutter.repo_name }}/README.md +29 -0
  21. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/README.md +26 -0
  22. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/catalog.yml +84 -0
  23. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters.yml +0 -0
  24. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_compile.yml +14 -0
  25. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_data_processing.yml +8 -0
  26. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_load_data.yml +5 -0
  27. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_model_training.yml +9 -0
  28. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_model_validation.yml +5 -0
  29. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/catalog.yml +90 -0
  30. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters.yml +0 -0
  31. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_compile.yml +14 -0
  32. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_data_processing.yml +8 -0
  33. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_load_data.yml +5 -0
  34. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_model_training.yml +9 -0
  35. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_model_validation.yml +5 -0
  36. triggerflow/starter/{{ cookiecutter.repo_name }}/conf/logging.yml +43 -0
  37. triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/.gitkeep +0 -0
  38. triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/condor_config.json +11 -0
  39. triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/cuda_config.json +4 -0
  40. triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/samples.json +24 -0
  41. triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/settings.json +8 -0
  42. triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/test.root +0 -0
  43. triggerflow/starter/{{ cookiecutter.repo_name }}/data/02_loaded/.gitkeep +0 -0
  44. triggerflow/starter/{{ cookiecutter.repo_name }}/data/03_preprocessed/.gitkeep +0 -0
  45. triggerflow/starter/{{ cookiecutter.repo_name }}/data/04_models/.gitkeep +0 -0
  46. triggerflow/starter/{{ cookiecutter.repo_name }}/data/05_validation/.gitkeep +0 -0
  47. triggerflow/starter/{{ cookiecutter.repo_name }}/data/06_compile/.gitkeep +0 -0
  48. triggerflow/starter/{{ cookiecutter.repo_name }}/data/07_reporting/.gitkeep +0 -0
  49. triggerflow/starter/{{ cookiecutter.repo_name }}/dvc.yaml +7 -0
  50. triggerflow/starter/{{ cookiecutter.repo_name }}/environment.yml +23 -0
  51. triggerflow/starter/{{ cookiecutter.repo_name }}/pyproject.toml +50 -0
  52. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/__init__.py +3 -0
  53. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/__main__.py +25 -0
  54. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/any_object.py +20 -0
  55. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/base_dataset.py +137 -0
  56. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/base_loader.py +101 -0
  57. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/meta_dataset.py +49 -0
  58. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/{{ cookiecutter.python_package }}_dataset.py +35 -0
  59. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/{{ cookiecutter.python_package }}_loader.py +32 -0
  60. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/models/__init__.py +0 -0
  61. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/models/base_model.py +155 -0
  62. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/models/{{ cookiecutter.python_package }}_model.py +16 -0
  63. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipeline_registry.py +17 -0
  64. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/compile/__init__.py +10 -0
  65. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/compile/nodes.py +70 -0
  66. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/compile/pipeline.py +20 -0
  67. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/data_processing/__init__.py +10 -0
  68. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/data_processing/nodes.py +41 -0
  69. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/data_processing/pipeline.py +28 -0
  70. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/load_data/__init__.py +10 -0
  71. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/load_data/nodes.py +13 -0
  72. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/load_data/pipeline.py +20 -0
  73. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_training/__init__.py +10 -0
  74. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_training/nodes.py +48 -0
  75. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_training/pipeline.py +24 -0
  76. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_validation/__init__.py +10 -0
  77. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_validation/nodes.py +31 -0
  78. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_validation/pipeline.py +24 -0
  79. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/settings.py +46 -0
  80. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/utils/__init__.py +0 -0
  81. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/utils/metric.py +4 -0
  82. triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/utils/plotting.py +598 -0
  83. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/__init__.py +0 -0
  84. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/__init__.py +0 -0
  85. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/compile/__init__.py +0 -0
  86. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/compile/test_pipeline.py +9 -0
  87. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/data_processing/__init__.py +0 -0
  88. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/data_processing/test_pipeline.py +9 -0
  89. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/load_data/__init__.py +0 -0
  90. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/load_data/test_pipeline.py +9 -0
  91. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/model_training/__init__.py +0 -0
  92. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/model_training/test_pipeline.py +9 -0
  93. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/model_validation/__init__.py +0 -0
  94. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/model_validation/test_pipeline.py +9 -0
  95. triggerflow/starter/{{ cookiecutter.repo_name }}/tests/test_run.py +27 -0
  96. triggerflow/templates/build_ugt.tcl +46 -0
  97. triggerflow/templates/data_types.h +524 -0
  98. triggerflow/templates/makefile +28 -0
  99. triggerflow/templates/makefile_version +15 -0
  100. triggerflow/templates/model-gt.cpp +104 -0
  101. triggerflow/templates/model_template.cpp +63 -0
  102. triggerflow/templates/scales.h +20 -0
  103. triggerflow-0.3.4.dist-info/METADATA +206 -0
  104. triggerflow-0.3.4.dist-info/RECORD +107 -0
  105. triggerflow-0.3.4.dist-info/WHEEL +5 -0
  106. triggerflow-0.3.4.dist-info/entry_points.txt +2 -0
  107. triggerflow-0.3.4.dist-info/top_level.txt +3 -0
@@ -0,0 +1,63 @@
1
+ #include "NN/{{PROJECT_NAME}}.h"
2
+ #include "emulator.h"
3
+ #include "NN/nnet_utils/nnet_common.h"
4
+ #include <any>
5
+ #include "ap_fixed.h"
6
+ #include "ap_int.h"
7
+ #include "scales.h"
8
+
9
+ using namespace {{NAMESPACE}};
10
+
11
+ class {{MODEL_NAME}}_emulator : public hls4mlEmulator::Model {
12
+
13
+ private:
14
+ typedef {{UNSCALED_TYPE}} unscaled_t;
15
+ static const int N_INPUT_SIZE = {{N_INPUTS}};
16
+ static const int N_OUTPUT_SIZE = {{N_OUTPUTS}};
17
+
18
+ unscaled_t _unscaled_input[N_INPUT_SIZE];
19
+ input_t _scaled_input[N_INPUT_SIZE];
20
+ result_t _result[N_OUTPUT_SIZE];
21
+
22
+ virtual void _scaleNNInputs(unscaled_t unscaled[N_INPUT_SIZE],
23
+ input_t scaled[N_INPUT_SIZE])
24
+ {
25
+ for (int i = 0; i < N_INPUT_SIZE; i++) {
26
+ unscaled_t tmp0 = unscaled[i] - ad_offsets[i];
27
+ input_t tmp1 = tmp0 >> ad_shift[i];
28
+ scaled[i] = tmp1;
29
+ }
30
+ }
31
+
32
+ public:
33
+ virtual void prepare_input(std::any input) override {
34
+ unscaled_t* unscaled_input_p = std::any_cast<unscaled_t*>(input);
35
+
36
+ for (int i = 0; i < N_INPUT_SIZE; i++) {
37
+ _unscaled_input[i] = unscaled_input_p[i];
38
+ }
39
+
40
+ _scaleNNInputs(_unscaled_input, _scaled_input);
41
+ }
42
+
43
+ virtual void predict() override {
44
+ {{PROJECT_NAME}}(_scaled_input, _result);
45
+ }
46
+
47
+ virtual void read_result(std::any result) override {
48
+ result_t* result_p =
49
+ std::any_cast<result_t*>(result);
50
+
51
+ for (int i = 0; i < N_OUTPUT_SIZE; i++) {
52
+ result_p[i] = _result[i];
53
+ }
54
+ }
55
+ };
56
+
57
+ extern "C" hls4mlEmulator::Model* create_model() {
58
+ return new {{MODEL_NAME}}_emulator;
59
+ }
60
+
61
+ extern "C" void destroy_model(hls4mlEmulator::Model* m) {
62
+ delete m;
63
+ }
@@ -0,0 +1,20 @@
1
+ #ifndef __ADT_SCALES_H
2
+ #define __ADT_SCALES_H
3
+
4
+ #include "NN/{{MODEL_NAME}}_project.h"
5
+
6
+ namespace hls4ml_{{MODEL_NAME}} {
7
+
8
+ typedef ap_fixed<5,5> ad_shift_t;
9
+ typedef ap_fixed<10,10> ad_offset_t;
10
+
11
+ const ad_shift_t ad_shift[{{N_INPUTS}}] = {
12
+ {{AD_SHIFT}}
13
+ };
14
+
15
+ const ad_offset_t ad_offsets[{{N_INPUTS}}] = {
16
+ {{AD_OFFSETS}}
17
+ };
18
+
19
+ } // namespace hls4ml_{{MODEL_NAME}}
20
+ #endif
@@ -0,0 +1,206 @@
1
+ Metadata-Version: 2.4
2
+ Name: triggerflow
3
+ Version: 0.3.4
4
+ Summary: Utilities for ML models targeting hardware triggers
5
+ Requires-Python: >=3.10
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: cookiecutter>=2.3
8
+ Requires-Dist: PyYAML>=6
9
+ Requires-Dist: Jinja2>=3
10
+ Requires-Dist: kedro==1.0.0
11
+ Requires-Dist: kedro-datasets
12
+ Requires-Dist: kedro-mlflow==2.0.1
13
+ Requires-Dist: awkward<3,>=2.8
14
+ Requires-Dist: dask==2025.3.0
15
+ Requires-Dist: coffea>=2025.12
16
+ Requires-Dist: distributed==2025.3.0
17
+ Provides-Extra: dev
18
+ Requires-Dist: pytest-cov~=3.0; extra == "dev"
19
+ Requires-Dist: pytest-mock<2.0,>=1.7.1; extra == "dev"
20
+ Requires-Dist: pytest~=7.2; extra == "dev"
21
+ Requires-Dist: ruff~=0.1.8; extra == "dev"
22
+ Provides-Extra: qkeras
23
+ Requires-Dist: tensorflow==2.13.0; extra == "qkeras"
24
+ Requires-Dist: QKeras==0.9.0; extra == "qkeras"
25
+ Requires-Dist: keras==2.13.1; extra == "qkeras"
26
+ Requires-Dist: qonnx==0.4.0; extra == "qkeras"
27
+ Requires-Dist: tf_keras; extra == "qkeras"
28
+ Requires-Dist: tf2onnx; extra == "qkeras"
29
+ Requires-Dist: hls4ml; extra == "qkeras"
30
+ Requires-Dist: conifer; extra == "qkeras"
31
+ Requires-Dist: coffea; extra == "qkeras"
32
+ Requires-Dist: dask; extra == "qkeras"
33
+ Requires-Dist: pyarrow==17.0.0; extra == "qkeras"
34
+ Requires-Dist: pandas==2.0.3; extra == "qkeras"
35
+ Requires-Dist: uproot==4.0.0; extra == "qkeras"
36
+ Requires-Dist: hist==2.7.3; extra == "qkeras"
37
+ Requires-Dist: awkward-pandas; extra == "qkeras"
38
+ Requires-Dist: matplotlib; extra == "qkeras"
39
+ Requires-Dist: mplhep; extra == "qkeras"
40
+ Requires-Dist: h5py; extra == "qkeras"
41
+ Requires-Dist: xxhash; extra == "qkeras"
42
+ Requires-Dist: shap; extra == "qkeras"
43
+ Requires-Dist: numpy==1.24.3; extra == "qkeras"
44
+ Provides-Extra: keras3
45
+ Requires-Dist: keras==3.11.0; extra == "keras3"
46
+ Requires-Dist: tensorflow==2.16.1; extra == "keras3"
47
+ Requires-Dist: hgq2; extra == "keras3"
48
+ Requires-Dist: hls4ml; extra == "keras3"
49
+ Requires-Dist: conifer; extra == "keras3"
50
+ Requires-Dist: pyarrow==17.0.0; extra == "keras3"
51
+ Requires-Dist: pandas==2.0.3; extra == "keras3"
52
+ Requires-Dist: uproot==4.0.0; extra == "keras3"
53
+ Requires-Dist: hist==2.7.3; extra == "keras3"
54
+ Requires-Dist: awkward-pandas; extra == "keras3"
55
+ Requires-Dist: matplotlib; extra == "keras3"
56
+ Requires-Dist: mplhep; extra == "keras3"
57
+ Requires-Dist: h5py; extra == "keras3"
58
+ Requires-Dist: xxhash; extra == "keras3"
59
+ Requires-Dist: shap; extra == "keras3"
60
+
61
+ # Machine Learning for Hardware Triggers
62
+
63
+ `triggerflow` provides a set of utilities for Machine Learning models targeting FPGA deployment.
64
+ The `TriggerModel` class consolidates several Machine Learning frontends and compiler backends to construct a "trigger model". MLflow utilities are for logging, versioning, and loading of trigger models.
65
+
66
+ ## Installation
67
+
68
+ ```bash
69
+ pip install triggerflow
70
+ ```
71
+
72
+ ## Usage
73
+
74
+ ```python
75
+
76
+ from triggerflow.core import TriggerModel
77
+
78
+
79
+ scales = {'offsets': np.array([18, 0, 72, 7, 0, 73, 4, 0, 73, 4, 0, 72, 3, 0, 72, 6, -0, 286, 3, -2, 285, 3, -2, 282, 3, -2, 286, 29, 0, 72, 22, 0, 72, 18, 0, 72, 14, 0, 72, 11, 0, 72, 10, 0, 72, 10, 0, 73, 9, 0], dtype='int'),
80
+ 'shifts': np.array([3, 0, 6, 2, 5, 6, 0, 5, 6, 0, 5, 6, -1, 5, 6, 2, 7, 8, 0, 7, 8, 0, 7, 8, 0, 7, 8, 4, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6, 6, 3, 6], dtype='int')}
81
+
82
+
83
+ trigger_model = TriggerModel(
84
+ config="triggermodel_config.yaml",
85
+ native_model=model, #Native XGboost/Keras model
86
+ scales=scales
87
+ )
88
+
89
+ trigger_model() #Vivado requird on $PATH for Firmware build.
90
+
91
+ # then:
92
+ output_software = trigger_model.software_predict(input_data)
93
+ output_firmware = trigger_model.firmware_predict(input_data)
94
+ output_qonnx = trigger_model.qonnx_predict(input_data)
95
+
96
+ # save and load trigger models:
97
+ trigger_model.save("triggerflow.tar.xz")
98
+
99
+ # in a separate session:
100
+ from triggerflow.core import TriggerModel
101
+ triggerflow = TriggerModel.load("triggerflow.tar.xz")
102
+ ```
103
+
104
+ ## The Config file:
105
+
106
+ Use this `.yaml` template and change as needed.
107
+
108
+ ```yaml
109
+ compiler:
110
+ name: "AXO"
111
+ ml_backend: "keras"
112
+ compiler: "hls4ml"
113
+ fpga_part: "xc7vx690t-ffg1927-2"
114
+ clock_period: 25
115
+ n_outputs: 1
116
+ project_name: "AXO_project"
117
+ namespace: "AXO"
118
+ io_type: "io_parallel"
119
+ backend: "Vitis"
120
+ write_weights_txt: false
121
+
122
+ subsystem:
123
+ name: "uGT"
124
+ n_inputs: 50
125
+ offset_type: "ap_fixed<10,10>"
126
+ shift_type: "ap_fixed<10,10>"
127
+
128
+ objects:
129
+ muons:
130
+ size: 4
131
+ features: [pt, eta_extrapolated, phi_extrapolated]
132
+
133
+ jets:
134
+ size: 4
135
+ features: [et, eta, phi]
136
+
137
+ egammas:
138
+ size: 4
139
+ features: [et, eta, phi]
140
+
141
+ taus:
142
+ size: 4
143
+ features: [et, eta, phi]
144
+
145
+ global_features:
146
+ #- et.et
147
+ #- ht.et
148
+ - etmiss.et
149
+ - etmiss.phi
150
+ #- htmiss.et
151
+ #- htmiss.phi
152
+ #- ethfmiss.et
153
+ #- ethfmiss.phi
154
+ #- hthfmiss.et
155
+ #- hthfmiss.phi
156
+
157
+ muon_size: 4
158
+ jet_size: 4
159
+ egamma_size: 4
160
+ tau_size: 4
161
+ ```
162
+
163
+ ## Logging with MLflow
164
+
165
+ ```python
166
+ # logging with MLFlow:
167
+ import mlflow
168
+ from triggerflow.mlflow_wrapper import log_model
169
+
170
+ mlflow.set_tracking_uri("https://ngt.cern.ch/models")
171
+ experiment_id = mlflow.create_experiment("example-experiment")
172
+
173
+ with mlflow.start_run(run_name="trial-v1", experiment_id=experiment_id):
174
+ log_model(triggerflow, registered_model_name="TriggerModel")
175
+ ```
176
+
177
+ ### Note: This package doesn't install dependencies so it won't disrupt specific training environments or custom compilers. For a reference environment, see `environment.yml`.
178
+
179
+
180
+ # Creating a kedro pipeline
181
+
182
+ This repository also comes with a default pipeline for trigger models based on kedro.
183
+ One can create a new pipeline via:
184
+
185
+ NOTE: no "-" and upper cases!
186
+
187
+ ```bash
188
+ # Create a conda environment & activate it
189
+ conda create -n triggerflow python=3.11
190
+ conda activate triggerflow
191
+
192
+ # install triggerflow
193
+ pip install triggerflow
194
+
195
+ # Create a pipeline
196
+ triggerflow new demo_pipeline
197
+
198
+ # NOTE: since we dont install dependency one has to create a
199
+ # conda env based on the environment.yml file of the pipeline
200
+ # this file can be changed to the needs of the indiviual project
201
+ cd demo_pipeline
202
+ conda env update -n triggerflow --file environment.yml
203
+
204
+ # Run Kedro
205
+ kedro run
206
+ ```
@@ -0,0 +1,107 @@
1
+ trigger_dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ trigger_dataset/core.py,sha256=ZX96U6rWxxfCatDQbst6IRZvtlyDj1_2JA7stPydGTQ,2645
3
+ trigger_loader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ trigger_loader/cluster_manager.py,sha256=XgmY1xeW8zrpQDJqssKamWzjn6TQ60NGNzpcdZwL6NE,3617
5
+ trigger_loader/loader.py,sha256=Qe78Lp4i7rqsSSwQOo_Jwop31LQOdw_ruXYs8Zqzl-Y,5335
6
+ trigger_loader/processor.py,sha256=dQnO7OMpy-f6BkedurbBDiDAqVOxc7ZIsDMGg2Di7Zw,7777
7
+ triggerflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ triggerflow/cli.py,sha256=ZNQb3XQN8Ir6Hp6KX_ugec9bm2kqxLNZ0KdVGJmnqFA,4498
9
+ triggerflow/core.py,sha256=cF8IxcwKh2i2L7QvmvPsVfQFto2UoQ0M-m-x0tjTUV0,22701
10
+ triggerflow/mlflow_wrapper.py,sha256=df2KjBVBoH_Qzv0H3jV6oTr4kx-umO2CFz9R-frfev0,10664
11
+ triggerflow/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ triggerflow/interfaces/uGT.py,sha256=HG6zwHnBmYQtqKm764A4Qd-q_QokpcxLtHaLzEi41hw,5781
13
+ triggerflow/starter/.gitignore,sha256=tH2z_M-tPM9MLWC2wPz1Z43Dq-wdVmb_kVYtrLT3tN4,2052
14
+ triggerflow/starter/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ triggerflow/starter/cookiecutter.json,sha256=neplzXvVe3g6OVqYD8M2olfmjRKNr1UKqmflzP3j1UY,259
16
+ triggerflow/starter/prompts.yml,sha256=j-X_5sOsH2nvE1wg9awdNDtkNiZ7QjbvVKs9d9xyMaM,330
17
+ triggerflow/starter/{{ cookiecutter.repo_name }}/.dvcignore,sha256=HYBS6WcsRMYtwnpN9zztNW8gy5wY0ae1qgkkkwlglYM,139
18
+ triggerflow/starter/{{ cookiecutter.repo_name }}/.gitignore,sha256=tH2z_M-tPM9MLWC2wPz1Z43Dq-wdVmb_kVYtrLT3tN4,2052
19
+ triggerflow/starter/{{ cookiecutter.repo_name }}/.gitlab-ci.yml,sha256=lcahT5HExM3JsqXj3u44cNEmrEl-q97JUrGxPMG6jsQ,941
20
+ triggerflow/starter/{{ cookiecutter.repo_name }}/README.md,sha256=4t7erte67zY0Cp6qZco04EkXSXk2lb0uFVXaAx0C154,955
21
+ triggerflow/starter/{{ cookiecutter.repo_name }}/dvc.yaml,sha256=G9TOE23-awIEt3BmMH66OCN7x04aPqFdsJDC8VbApVg,74
22
+ triggerflow/starter/{{ cookiecutter.repo_name }}/environment.yml,sha256=ev-RAx_5hv2M5NiWNsVHI-YWwmWfCAVg5ozHmYNtzNc,322
23
+ triggerflow/starter/{{ cookiecutter.repo_name }}/pyproject.toml,sha256=2maFdFnLln3Q6z8YODT2Wpw-jEi5bKN2yoC-QG3rGVM,1378
24
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/README.md,sha256=0jCfkFBPK5SqR2wJOKd7XTB9e1yvN0gw4D4Zi3nI8aI,1067
25
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/logging.yml,sha256=SaMNpZDTQhhuyCV_x6DaW1Vb8BX3WxxcV3euK98XmGg,1038
26
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/catalog.yml,sha256=_EjIB4CZ0Julf9-qWCxePJcNGOOZFpBWUjPD3dJoojs,2385
27
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_compile.yml,sha256=I88osguJBIfLWyKJcMZg-TOUL-HOVo0sEbro8tTndBI,392
29
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_data_processing.yml,sha256=YYWXiyHDzRnr2kIMytw_umfEpazLqPDYRG7USSPwLUo,273
30
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_load_data.yml,sha256=Jol2shPtxOEtVpju9e8xXsWkiuyuvVrdpLC0LSMezbU,235
31
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_model_training.yml,sha256=l4QPLJ66i73sZ7wT03r6aOFWzhhBIIulsBoMsBVOw-g,335
32
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/base/parameters_model_validation.yml,sha256=6eBMmMoTJRp0dsTo0Tdjr6Mig3BrrBSlIs_ZN98hyPQ,242
33
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/catalog.yml,sha256=pnomjkJfHY49vRigtUdTTTtWUCZQRNs3CaPXKmtInH0,2677
34
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_compile.yml,sha256=yDB39m9OszZaqX67RgcUcwh37EHGWfJAp_WRblwNFI4,397
36
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_data_processing.yml,sha256=ABcV4sNpIAwsSkkbTk27wIcE_5QEDpaGix1t34mMvjk,278
37
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_load_data.yml,sha256=fDn4tpNdgwSl-mC6-nUZP_bykj08eeEAt8XrEfHEuzY,240
38
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_model_training.yml,sha256=l4QPLJ66i73sZ7wT03r6aOFWzhhBIIulsBoMsBVOw-g,335
39
+ triggerflow/starter/{{ cookiecutter.repo_name }}/conf/local/parameters_model_validation.yml,sha256=zroINrWbzGvp1A2TiYdO_bp8LuPav0fIpVa1fbK8dGc,244
40
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/condor_config.json,sha256=Xqv7bGHh3xIIgW0a-JYuIOqrRLIsnZ7beWQhL2w9S2c,219
42
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/cuda_config.json,sha256=sIcpqZElUyPd4toQYoK5KZeWMOlTax_tkVOEMRp5o8k,57
43
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/samples.json,sha256=bkqck2NiKKnwq95vA9Z6sFKRjsacIrhqR-MW24Euht8,617
44
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/settings.json,sha256=bh9TE-FQpLbKqE3yydzl9_r1rMArsJyNptBKk1VdZVs,154
45
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/01_raw/test.root,sha256=xc56ojj7s68mPIL7NLuUwBLUUjZ2iF64mKLPD2rqVaY,11198402
46
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/02_loaded/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/03_preprocessed/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/04_models/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/05_validation/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/06_compile/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
+ triggerflow/starter/{{ cookiecutter.repo_name }}/data/07_reporting/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/__init__.py,sha256=a-MTXhipkVaDsY3XW0DVoRSmAxbE4_NRNQo7lT4IqsM,59
53
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/__main__.py,sha256=YGS0Nx3OcMauvo68ReZhvznjKK_XoEUzLcnTdP1806g,659
54
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipeline_registry.py,sha256=LZHowiYdVJu2N1I0G2u2l7IcTU44FM8a4u_EAXZBpTk,435
55
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/settings.py,sha256=TRMhMNzWwELn7LuO3Xswbrcidxb4uP-0-YhvCSgglFg,1648
56
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/any_object.py,sha256=0y5nOkz17N8rr8b8U053eOQ2DUmPakAhdBfJmvd-npQ,367
57
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/base_dataset.py,sha256=VZityUPdOigfGrqj9TMT5DtyYpMS5jXfoBmlfRGmF5Q,4972
58
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/base_loader.py,sha256=i1c6JP26gUoRqIxBrxpouPmCbe1veU23Uf6HkbzGc2k,3351
59
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/meta_dataset.py,sha256=zZtrYAx3CtlTjh9dGfAmZMYkQ-E2HPh6lFiQXy8VzHo,1666
60
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/{{ cookiecutter.python_package }}_dataset.py,sha256=VLj4E7hsxZwswVKxyPCYrCzJ5ZCunSvNyijCWHzrPUo,936
61
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/datasets/{{ cookiecutter.python_package }}_loader.py,sha256=J-7W2cfvs8F2EbDww_4UFE86Wp4-2L0E3Ca8_OAbTgw,890
62
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/models/base_model.py,sha256=PJ1S_1qIk8UyMvoGEY7UiHE7nilE4xrnwWVY9gPRh_k,4788
64
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/models/{{ cookiecutter.python_package }}_model.py,sha256=VkHps3wrtQcfM-CA_Ic6fsw-VSJv_FZcrSRfIKBJ1Xs,419
65
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/compile/__init__.py,sha256=X2jAlHHzleo1Pb9hKoh4aHOo3L6BqrnlsAxA4AVBfMM,168
66
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/compile/nodes.py,sha256=zMpr808yNtfmBBYw1XkwhjpGX4ncJsMoDIwpxiOqYP0,1825
67
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/compile/pipeline.py,sha256=abfjL5_GT9eS9CItVJIlEiF9-mqAB_COjOhsRpy44x8,560
68
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/data_processing/__init__.py,sha256=Eflz9--0_L6PipS2SW9vmSKR3g0yZBjxbEnNoZ9bjQM,176
69
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/data_processing/nodes.py,sha256=lfZ8eh_T4TTfZvJqi56_XGYSopX8p-AGSZKqab_H4hk,1067
70
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/data_processing/pipeline.py,sha256=PjFIWN0esIMUQ2-b1fz2FZNY7Tbn5tymBW6tF57Tm04,989
71
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/load_data/__init__.py,sha256=M4_hXNbopG9IGnCLazqQLMT5yjMoNdUbyimcmaIFX0U,175
72
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/load_data/nodes.py,sha256=VdpnO9pWrjbHi5OqmiEJ41C8Ry3J0bIDhZda8MClDzU,333
73
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/load_data/pipeline.py,sha256=h2K8_zxK8A0j-K_NYktxLK34jPKmRzSX65jZ7IDQwXY,609
74
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_training/__init__.py,sha256=M4_hXNbopG9IGnCLazqQLMT5yjMoNdUbyimcmaIFX0U,175
75
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_training/nodes.py,sha256=jLc_KTDLjA8BRWN6j8V5w0MsUVxODTDOS1Mzkn625HM,1642
76
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_training/pipeline.py,sha256=Cv8f3PKhfCGdVX3WKn0URoBxetk_d17WWyV836fzZFw,678
77
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_validation/__init__.py,sha256=uHp2bxK1LF7_NXcftYOb1wb4QU41_cGL_VV2-J18lJw,177
78
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_validation/nodes.py,sha256=EIL1kEXkzZnVoCKSKAb4Xvuwtwy0UQKw6XNHPi-kG9M,703
79
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/pipelines/model_validation/pipeline.py,sha256=iUhZhIJ2waEQpCxn6iGEaM28VTtAC47gUww_DkQ-VIo,654
80
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/utils/metric.py,sha256=nS5PCf2VaLlgl44uqAcz-PraQ3GW53coeVbuG9c19R0,82
82
+ triggerflow/starter/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/utils/plotting.py,sha256=YkB8bll9dtRiQ0gIbLDdKR2afG6OYVrFmhLwPP60oJ8,18527
83
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/test_run.py,sha256=aGLSgzTBQGKPcezqsMDmxMj3vNZBV7VTaPwpd4XwIrQ,912
85
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/compile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/compile/test_pipeline.py,sha256=bhbQ8Pteov85kD_4rH6oaJFmxoO--zgE5BWBwv7bYog,290
88
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/data_processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/data_processing/test_pipeline.py,sha256=LhrGZ619rDs3Mr2wsR6iysATVYj9pSBrsBJZrtlhGUg,298
90
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/load_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/load_data/test_pipeline.py,sha256=BlPsVwdspuEuQwvyVcPztAQFN6aSo1Z0Y1WK4BBJbhk,292
92
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/model_training/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/model_training/test_pipeline.py,sha256=0N747l50lEmjAgCy9K8LrNMW436edMUMo1E7tS4MADY,297
94
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/model_validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
+ triggerflow/starter/{{ cookiecutter.repo_name }}/tests/pipelines/model_validation/test_pipeline.py,sha256=2BTupcyuFEXTyMrGLVmF6Yv0CAZcdedc7fxEfmLGmxo,299
96
+ triggerflow/templates/build_ugt.tcl,sha256=P1y42s9Ju6zDyRskCVlD-vSnblAmTafw7Jpzsq4_HWA,1061
97
+ triggerflow/templates/data_types.h,sha256=m7_jLsRixSVjp8auxHZUUNAcSO777C5TTZl__9ENk90,12640
98
+ triggerflow/templates/makefile,sha256=A-aetsLC51Bop0T_-yPY8Z8Hg29ApN4YPvKx_jjPuHw,970
99
+ triggerflow/templates/makefile_version,sha256=6kFc_u2oiM9l2rH7RK_BLzdZu1ZEK8PQTQKGBLRY0v4,328
100
+ triggerflow/templates/model-gt.cpp,sha256=C2TvGeF1YBKI5H3GdbNAVDNjDA_c8awP_g7Zae4kADc,2966
101
+ triggerflow/templates/model_template.cpp,sha256=bQvmoeFWZs3oT6zg2Jpp4Ga-llcAErX-1gwiNsTQTRk,1709
102
+ triggerflow/templates/scales.h,sha256=MFcB5S0DEvfzHuUhyZqILR0O4ktugOG-fLnuCDUUewM,373
103
+ triggerflow-0.3.4.dist-info/METADATA,sha256=CF-6X7AI4cL-puBxw6zSuBSdqJyvd5fd4jb8CbygNck,6027
104
+ triggerflow-0.3.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
105
+ triggerflow-0.3.4.dist-info/entry_points.txt,sha256=5QSV9YDseB_FqgVh9q10BdL4b1I6t68rGwPLXgVL60g,53
106
+ triggerflow-0.3.4.dist-info/top_level.txt,sha256=cX0jkuM9tfxGp002ZBQ1AYgx-6D_NgBtomgPL0WA9bE,43
107
+ triggerflow-0.3.4.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ triggerflow = triggerflow.cli:main
@@ -0,0 +1,3 @@
1
+ trigger_dataset
2
+ trigger_loader
3
+ triggerflow