-
Install python3.8
-
Install poetry It is important to install
poetry
in isolation, so follow the recommended installation method.
-
Install dependencies
poetry install
-
Activate virtual environment
poetry shell
-
Optional To install tab completion for
invoke
run (replacingbash
with your shell)source <(poetry run inv --print-completion-script bash)
-
Optional
pre-commit
is included in development dependencies. To install hookspre-commit install
-
Create a deployment configuration file
.deployment.toml
using the following templateip = "172.17.0.1" federation = "dementia" log_level = "DEBUG" framework_log_level ="INFO" monetdb_image = "madgik/exareme2_db:dev" rabbitmq_image = "madgik/exareme2_rabbitmq:dev" monetdb_nclients = 128 monetdb_memory_limit = 2048 # MB exareme2_algorithm_folders = "./exareme2/algorithms/exareme2,./tests/algorithms/exareme2" flower_algorithm_folders = "./exareme2/algorithms/flower,./tests/algorithms/flower" worker_landscape_aggregator_update_interval = 30 flower_execution_timeout = 30 celery_tasks_timeout = 20 celery_cleanup_task_timeout=2 celery_run_udf_task_timeout = 120 [controller] port = 5000 [privacy] minimum_row_count = 10 protect_local_data = false [cleanup] workers_cleanup_interval=10 contextid_release_timelimit=3600 #an hour [smpc] enabled=false optional=false get_result_interval = 10 get_result_max_retries = 100 smpc_image="gpikra/coordinator:v7.0.7.4" db_image="mongo:5.0.8" queue_image="redis:alpine3.15" [smpc.dp] enabled = false # sensitivity = 1 # privacy_budget = 0.1 [[workers]] id = "globalworker" role = "GLOBALWORKER" rabbitmq_port=5670 monetdb_port=50000 monetdb_password="executor" local_monetdb_username="executor" local_monetdb_password="executor" public_monetdb_username="guest" public_monetdb_password="guest" [[workers]] id = "localworker1" role = "LOCALWORKER" rabbitmq_port=5671 monetdb_port=50001 local_monetdb_username="executor" local_monetdb_password="executor" public_monetdb_username="guest" public_monetdb_password="guest" smpc_client_port=9001 [[workers]] id = "localworker2" role = "LOCALWORKER" rabbitmq_port=5672 monetdb_port=50002 local_monetdb_username="executor" local_monetdb_password="executor" public_monetdb_username="guest" public_monetdb_password="guest" smpc_client_port=9002
and then run the following command to create the config files that the worker services will use
inv create-configs
-
Install dependencies, start the containers and then the services with
inv deploy
-
Optional Load the data into the db with (It is compulsory if you want to run an algorithm)
inv load-data
-
Attach to some service's stdout/stderr with
inv attach --controller
or
inv attach --worker <WORKER-NAME>
-
Restart all the worker/controller services and keep the same containers with
inv start-worker --all && inv start-controller --detached
-
Create the worker configuration files inside the
./configs/workers/
directory following the./exareme2/worker/config.toml
template. -
Install dependencies, start the containers and then the services with
inv deploy --monetdb-image madgik/exareme2_db:dev1.2 --celery-log-level info
-
Start Flower monitoring tool
by choosing a specific worker to monitor
inv start-flower --worker <WORKER-NAME>
or start a separate flower instance for all of the workers with
inv start-flower --all
Then go to the respective address on your browser to start monitoring the workers.
-
Kill all flower instances at any point with
inv kill-flower
- Examples
./run_algorithm -a pca -y leftamygdala lefthippocampus -d ppmi0 -m dementia:0.1
./run_algorithm -a pearson -y leftamygdala lefthippocampus -d ppmi0 -m dementia:0.1 -p alpha 0.95
This project/research received funding from the European Union’s Horizon 2020 Framework Programme for Research and Innovation under the Framework Partnership Agreement No. 650003 (HBP FPA).