The package to retrieve data from ETL-built databases. Part of the BETTER project.
Project description
I-ETL
The ETL algorithm creates interoperable databases for the BETTER project. It relies on MongoDB to store the data and reads a .env file for the configuration. The code is written in Python and encapsulated in a Docker.
1. Requirements
- Docker Desktop is installed on the host machine.
- All input files are in the same folder on your machine, and they have the exact same name as specified in the metadata.
- Specifically for VCF data:
- You can group them in a sub-folder (or not).
- If you grouped them in a folder, e.g., named
vcf-folder, please providevcf-folder/*.vcffor the data files in the.envfile. - If you did not group them, please provide
*.vcffor the data files in the.envfile. - The VCF files should be named with the patient ID (exactly and only the patient ID used the other data).
- Specifically for VCF data:
- In your data files: variables are columns, patients are rows and patient have identifiers (which will be further anonymized by I-ETL).
- The column name for the patient ID, respectively the sample ID, is the same for all the files used to build the database.
2. Use I-ETL to create an interoperable database with your data
- Get the image of the I-ETL:
- Either download the TAR image available in the repository (recommended)
- Go to the deployment artifacts page: https://git.rwth-aachen.de/padme-development/external/better/data-cataloging/etl/-/artifacts
- Click on the "folder" icon of the latest valid build (the most recent one with a green ☑)
- Download the TAR archive named
the-ietl-image.tar(be sure to download a.tar, not a.zip)
- Or build it from the repository (not recommended, see section "For developers")
- Download the
comose.yamlfile, available in the repository (https://git.rwth-aachen.de/padme-development/external/better/data-cataloging/etl/-/blob/main/compose.yaml?ref_type=heads) - Download the settings file
.envfile, available in the repository (https://git.rwth-aachen.de/padme-development/external/better/data-cataloging/etl/-/blob/main/.env?ref_type=heads) - Download your metadata file in the Better Drive: https://drive.google.com/drive/u/1/folders/1J-3C2g06WbC1gUE_3KaDp3_v1uKHXxFV
ES-HSJD-variables.xlsxfor SJD hospitalIT-BUZZI-variables.xlsxfor BUZZI hospital in use-case 1RS-IMGGE-variables.xlsxfor IMGGE hospitalUC2-variables.xlsxfor LAFE and HMC hospitalsUC3-variables-02-04-2025.xlsxfor TERRASSA, UKK and BUZZI hospitals
- Create a folder, e.g., named
better, with:
- The I-ETL Docker (TAR) image
- The
.envfile template - The
compose.yamlfile - The metadata file
- In that folder, load the TAR image within the Docker:
docker load < the-ietl-image.tar - In that folder, fill the
.envfile with your own settings (see Section 3) - In that folder, launch I-ETL by running the following commands:
export CONTEXT_MODE=DEVexport ETL_ENV_FILE_NAME=.envexport ABSOLUTE_PATH_ENV_FILE=XwhereXis the absolute path to your.envfiledocker compose --env-file ${ABSOLUTE_PATH_ENV_FILE} up -d(-dstands for--daemon, meaning that I-ETL will run as a background process).
- To check whether I-ETL has finished, you can run
docker ps: ifthe-etldoes not show in the list, this means that it is done. - To check the logs of the ETL, you have two options:
- If you have specified the parameter
SERVER_FOLDER_LOG_ETLin your.env, you can look at the log files produced in the folder you specified in that parameter; - Otherwise, use
docker logs the-etl.
3. Parameters in the .env file
The .env file is a file to specify several parameters that I-ETL needs to run properly.
This includes parameters about the database, the files to use, the language, etc.
The provided .env file is a template: you have to fill each parameter with your own value.
About input data (synthetic or real) given to the ETL
| Parameter name | Description | Values | Example |
|---|---|---|---|
SERVER_FOLDER_METADATA |
The absolute path to the folder containing the metadata file. | A folder path | /home/better/data |
METADATA |
The metadata filename. | A filename | ES-HSJD-variables.xlsx |
SERVER_FOLDER_DATA |
The absolute path to the folder containing the datasets. | A folder path | /home/better/data |
DATA_FILES |
The list of comma-separated filenames. | Filename(s) | Baseline_Clinical_Table.xlsx,Genomic_Table.xlsx,vcf-folder/*.vcf |
About the database
| Parameter name | Description | Values | Example |
|---|---|---|---|
HOSPITAL_NAME |
The hospital name. | it_buzzi_uc1, rs_imgge, es_hsjd, it_buzzi_uc3, es_terrassa, de_ukk, es_lafe, il_hmc |
any value in the list |
DB_NAME |
The database name. | better_database or any string without special character except _ (underscore). Please use better_database for any database created for the Better project. |
better_database |
DB_DROP |
Whether to drop the database. WARNING: if True, this deletes the database before creating a new one: this action is NOT reversible! | False, True |
|
SERVER_FOLDER_MONGODB |
The absolute path to the folder in which MongoDB will store its databases. | A folder path | /home/mongodb-data |
About the ETL
| Parameter name | Description | Values | Example |
|---|---|---|---|
SERVER_FOLDER_LOG_ETL |
The absolute path to the folder in which I-ETL will write its log files. | A folder path | /home/better/logs |
USE_LOCALE |
The locale to be used for reading numerics and dates. | en_GB, en_US, es_ES, it_IT, sr_RS. |
en_GB |
COLUMNS_TO_REMOVE |
The list of columns that are too sensitive, thus NOT included in the database. | [] (empty list), or a list with strings being the column names |
[patient_address, date_of_birth] |
RECORD_CARRIER_PATIENTS |
For Buzzi hospital in use-case 1 only: whether to records carrier and diseased patients or only diseased ones. | False, True |
|
PATIENT_ID |
The name of the column in the data containing patient IDs | Any column name | Patient ID |
SAMPLE_ID |
The name of the column in the data containing sample IDs | (empty) if you do not have sample data, else a column name |
sample_id |
4. For developers
Build the Docker image
To be used when working with the I-ETL repository
- Install Docker Desktop and open it
- From the root of the project, run
docker build . --tag ietl - If an error saying
ERROR: Cannot connect to the Docker daemon at XXX. Is the docker daemon running?occurs, Docker Desktop has not started. - If an error saying
error getting credentialsoccurs while building, go to your Docker config file (probably~/.docker/config.json) and remove the linecredsStore. Then, save the file and build again the image.
Steps to deploy the Docker image within a center
To be used when deploying I-ETL within a center
- Locally, build the Docker image: see above section
- Locally, create a TAR image of I-ETL (only with the ETL, not with the mongo):
docker save ietl > the-ietl-image.tar - Send that TAR image to the host machine, e.g., using
scp the-ietl-image.tar "username@A.B.C.D:/somewhere/in/host/machine" - Send the env file to the host machine in the same folder as the TAR image, e.g., using
scp .env "username@A.B.C.D:/somewhere/in/host/machine" - Send the compose file to the host machine in the same folder as the TAR image, e.g., using
scp compose.yaml "username@A.B.C.D:/somewhere/in/host/machine - In the host machine, move to
/somewhere/in/host/machine/usingcd /somewhere/in/host/machine - In the host machine, load the TAR image within the Docker of the host machine:
docker load < the-ietl-image.tar - In the host machine, follow any above scenario, i.e., tune the .env file and run I-ETL
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file data_retriever-1.3.tar.gz.
File metadata
- Download URL: data_retriever-1.3.tar.gz
- Upload date:
- Size: 95.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df25ddb7db39e5acec6d3c17dc132796aca723f7e33da924933fce7b9f756dec
|
|
| MD5 |
280cf5005fedd84b31759d40f9d6557d
|
|
| BLAKE2b-256 |
2bbb4b2c7b0065995a346f888133f71c98941aeed7c9b475c3c001173c36dfa3
|
File details
Details for the file data_retriever-1.3-py3-none-any.whl.
File metadata
- Download URL: data_retriever-1.3-py3-none-any.whl
- Upload date:
- Size: 97.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46467011cbff58a9b2ce10f0c2abe5306c26ec04174243d48237cf4b07e638be
|
|
| MD5 |
cb58616fa11418fa72b67b1c47f83ee0
|
|
| BLAKE2b-256 |
4c66eae001f0a8a9c9b981a3f2f029789419d050a0d26f301b3ca14593766f6a
|