Configuration
ExtremeXP uses a central configuration file eexp_config.py
to manage all system settings. This file controls experiment execution, data management, logging, and integration with external services.
Configuration File Structure
The configuration file should be placed in your project root directory and named eexp_config.py
. Below is a complete example configuration:
# eexp_config.py
# Main Directories
EXPERIMENT_LIBRARY_PATH = 'relative_path/to/experiments_directory'
TASK_LIBRARY_PATH = 'relative_path/to/tasks_directory'
PYTHON_DEPENDENCIES_RELATIVE_PATH = 'relative_path/to/dependencies_directory'
DATASET_LIBRARY_RELATIVE_PATH = 'relative_path/to/datasets_directory'
# Helper Modules
PYTHON_CONDITIONS = '<relative_path_to_experiment_conditions_directory>.<name_of_the_python_file_to_use>' # 'library-tasks,experiment_conditions'
PYTHON_CONFIGURATIONS = '<relative_path_to_experiment_configurations_directory>.<name_of_the_python_file_to_use>' # 'library-tasks.experiment_configurations'
# Execution Configuration
MAX_WORKFLOWS_IN_PARALLEL_PER_NODE = 3
EXECUTIONWARE = "PROACTIVE"
PROACTIVE_URL = "https://your-proactive-server.com"
PROACTIVE_USERNAME = "your_username"
PROACTIVE_PASSWORD = "your_password"
PROACTIVE_PYTHON_VERSIONS = {
"3.8": "/usr/bin/python3.8",
"3.9": "/usr/bin/python3.9"
}
# Data Management
DATA_ABSTRACTION_BASE_URL = "https://your-dal-server.com/api"
DATA_ABSTRACTION_ACCESS_TOKEN = 'your_DAL_token'
DATASET_MANAGEMENT = "DDM"
DDM_URL = "https://your-ddm-server.com/api"
PORTAL_USERNAME = "your_portal_username"
PORTAL_PASSWORD = "your_portal_password"
# Logging Configuration
LOGGING_CONFIG = {
'version': 1,
'loggers': {
'eexp_engine': {'level': 'DEBUG'},
'eexp_engine.functions': {'level': 'DEBUG'},
'eexp_engine.functions.parsing': {'level': 'INFO'},
'eexp_engine.functions.execution': {'level': 'DEBUG'},
'eexp_engine.data_abstraction_layer': {'level': 'DEBUG'},
'eexp_engine.models': {'level': 'DEBUG'},
'eexp_engine.models.experiment': {'level': 'DEBUG'},
'eexp_engine.proactive_executionware': {'level': 'DEBUG'}
}
}
Configuration Sections
Main Directories
These settings define the core directory structure for your ExtremeXP project:
Field | Description | Example |
---|---|---|
EXPERIMENT_LIBRARY_PATH |
Path to experiment specs (.xxp files). Can be absolute or relative. |
'experiments' |
TASK_LIBRARY_PATH |
Path to tasks referenced by specs. Each task is a folder with .xxp file. |
'tasks' |
PYTHON_DEPENDENCIES_RELATIVE_PATH |
Path to additional Python dependencies, relative to runner script. | 'dependencies' |
DATASET_LIBRARY_RELATIVE_PATH |
Path for input/output dataset files (LOCAL dataset management). | 'datasets' |
Directory Structure
Ensure these directories exist in your project structure:
your_project/
├── experiments/ # .xxp experiment files
├── tasks/ # task implementations
├── dependencies/ # Python modules
└── datasets/ # input/output data files
Helper Modules
These settings specify Python modules that provide custom functions for experiments:
Field | Description | Example |
---|---|---|
PYTHON_CONDITIONS |
Python module for condition functions used in experiments. | 'library-tasks.experiment_conditions' |
PYTHON_CONFIGURATIONS |
Python module for config filtering/generation for spaces. | 'library-tasks.experiment_configurations' |
Custom Functions
These modules should contain Python functions that can be referenced in your experiment DSL for conditions, filters, and generators.
Execution Configuration
Controls how experiments are executed:
Field | Description | Options | Default |
---|---|---|---|
MAX_WORKFLOWS_IN_PARALLEL_PER_NODE |
Max parallel workflows per node. | Any positive integer | 1 |
EXECUTIONWARE |
Execution engine selection. | "PROACTIVE" or "LOCAL" |
"LOCAL" |
PROACTIVE_URL |
Proactive endpoint URL (required if using PROACTIVE). | Valid URL | - |
PROACTIVE_USERNAME |
Username for Proactive authentication. | String | - |
PROACTIVE_PASSWORD |
Password for Proactive authentication. | String | - |
PROACTIVE_PYTHON_VERSIONS |
Dict mapping Python versions to executables on server. | {"3.8": "/usr/bin/python3.8"} |
- |
Execution Mode Examples
Local Execution:
EXECUTIONWARE = "LOCAL"
MAX_WORKFLOWS_IN_PARALLEL_PER_NODE = 1
Proactive Execution:
EXECUTIONWARE = "PROACTIVE"
PROACTIVE_URL = "https://your-proactive-server.com"
PROACTIVE_USERNAME = "your_username"
PROACTIVE_PASSWORD = "your_password"
PROACTIVE_PYTHON_VERSIONS = {
"3.8": "/usr/bin/python3.8",
"3.9": "/usr/bin/python3.9"
}
Data Management
Configures how data is handled and accessed:
Field | Description | Options | Required |
---|---|---|---|
DATA_ABSTRACTION_BASE_URL |
URL of the Data Abstraction Layer. | Valid URL | If using DAL |
DATA_ABSTRACTION_ACCESS_TOKEN |
Access token for DAL authentication. | String | If using DAL |
DATASET_MANAGEMENT |
Data management strategy. | "LOCAL" or "DDM" |
Yes |
DDM_URL |
Endpoint for DDM (used if DDM selected). |
Valid URL | If using DDM |
PORTAL_USERNAME |
credentials you use to login to the portal deployed in ICOM | String | If using DDM |
PORTAL_PASSWORD |
credentials you use to login to the portal deployed in ICOM | String | If using DDM |
Data Management Options
Local Data Management:
DATASET_MANAGEMENT = "LOCAL"
DATASET_LIBRARY_RELATIVE_PATH = 'datasets'
Decentralized Data Management (DDM):
DATASET_MANAGEMENT = "DDM"
DDM_URL = "http://your-ddm-server.com/api"
PORTAL_USERNAME = "your_portal_username"
PORTAL_PASSWORD = "your_portal_password"
Logging Configuration
Controls logging levels and output for different components:
Field | Description |
---|---|
LOGGING_CONFIG |
Python logging dict to control log levels. See Python Logging Config DictSchema. |
Logging Levels
The logging configuration uses standard Python logging levels:
DEBUG
: Detailed information, typically of interest only when diagnosing problemsINFO
: General information about program executionWARNING
: Something unexpected happened, but the program is still workingERROR
: A serious problem occurred, the program couldn't perform a functionCRITICAL
: A very serious error occurred, the program may not be able to continue
Example Logging Configurations
Development (Verbose):
LOGGING_CONFIG = {
'version': 1,
'loggers': {
'eexp_engine': {'level': 'DEBUG'},
'eexp_engine.functions': {'level': 'DEBUG'},
'eexp_engine.functions.parsing': {'level': 'DEBUG'},
'eexp_engine.functions.execution': {'level': 'DEBUG'},
}
}
Production (Minimal):
LOGGING_CONFIG = {
'version': 1,
'loggers': {
'eexp_engine': {'level': 'INFO'},
'eexp_engine.functions': {'level': 'WARNING'},
'eexp_engine.functions.parsing': {'level': 'WARNING'},
'eexp_engine.functions.execution': {'level': 'INFO'},
}
}