Extract-Metadata - extraction de métadonnées à partir d’une base de données tabulaire et d'imagerie au format DICOM.
Objectifs de l’algorithme
Extract-Metadata permet l'extraction des métadonnées d'une base tabulaire et d'images au format DICOM.
Auteur(s)
Domaine médical
Méthodologie
Méthodologie :
Ce projet permet l'extraction des métadonnées à partir d'une base de données composée de deux types de fichiers :
- Données tabulaires stockées sous forme de fichiers .csv
- Images DICOM stockées sous forme de fichiers .dcm
L'objectif est de récupérer les métadonnées de ces fichiers et de les stocker au format JSON. Ces métadonnées servent d'avoir une vue globale des données de la base de Precision Predict.
Cette méthode d'extraction pourra être réutilisée et adaptée pour extraires les métadonnées d'autres bases de données.
Résultats :
- Pour les données tabulaires : un seul fichier JSON (md_tables_extract.json) contenant les métadonnées de tous les fichiers .csv concaténés.
- Pour les images DICOM : chaque fichier DICOM dispose de son propre fichier JSON de métadonnées, nommé metadata_{filename}.json.
Le projet propose un environnement de test avec des données synthétiques - e.g., file_1.csv, file_2.csv, synthetic.dcm, synthetic2.dcm se trouvant dans le dossier examples_test, ainsi qu'un environnement de production avec les données réelles disponibles sur la plateforme du HDH.
Les résultats des tests sont observables dans le dernier bloc du notebook metadata_nb_4_test.ipynb.
Langage de programmation
Données utilisées
Données d'application
Les données utilisées sont :
- Des fichiers tabulaires au format .csv
- Des images médicales au format DICOM (.dcm)
Un mode test est fourni avec des fichiers synthétiques pour valider l'algorithme.
Validation
L'algorithme a été validé avec un ensemble de données synthétiques et approuvé en environnement de production avec les données du projet. Les résultats des tests sont observables dans le dernier bloc du notebook metadata_nb_4_test.ipynb.
Date de dernière mise à jour
23 Septembre 2024
Maintenance
Des mises à jour régulières sont prévues pour améliorer les performances de l'algorithme et garantir sa compatibilité avec les futures versions des technologies de la plateforme HDH.
Comment installer l’algorithme ?
- Clonez le dépôt du projet :
git clone <repository_url>
- Installez les dépendances (si nécessaire) :
pip install -r requirements.txt
Comment utiliser l’algorithme ?
- Configurer les chemins : Assurez-vous que les chemins dans le fichier de configuration (config.yaml ou config_test.yaml) sont corrects. Cela inclut les chemins des fichiers de données tabulaires, des images DICOM, et des fichiers de sortie JSON.
- Exécuter le notebook : Ouvrez et exécutez le notebook Jupyter metadata_nb.ipynb (ou metadata_nb_4_test.ipynb pour le test) cellule par cellule pour lancer l'extraction des métadonnées.
- Résultats : Les fichiers JSON générés contenant les métadonnées seront stockés dans les dossiers de sortie définis dans le fichier de configuration.
Exemple de configuration (config.yaml):
tables:
input_documentation : path to the documentation of the tabular database, ex: "wasbs://data@pprt29userdata.blob.core.windows.net/documentation.csv"
output_file : path to the metadata json file as output, ex: "/storage_workspace/data/metadata_test/metadata/md_tables_extract.json"
images:
input_folder : folder where are located the DICOM images - Here .dcm and .DCM are taken into account, ex: "/storage_workspace/data/metadata_test"
output_folder : folder where we want to store the metadata json files as output, ex: "/storage_workspace/data/metadata_test/metadata"
spark:
spark_conf: path of the file where is the Spark configuration, ex: "/usr/local/spark/conf/spark-defaults.conf"
spark_name: name of the spark session. This name has no consequence on the code run, ex: "spark_session_name"
storage:
container_name: name of the Azure storage container, ex: 'data'
account_name: name of the Azure storage account_name, ex: "pprt29userdata"
dir_path_PP: path to the directory where are located the unzipped csv file of the project database, ex: '/storage_workspace/data/unzipped_pre/'
Nb: the spark config should not be modified. All the paths and storage informations need to be adapted regarding the project and platform space allocated. Please note that all the files used in this project and the output files are in the Azure Storage.
Example for test with synthetic data (file_1.csv, file_2.csv, synthetic.csm and synthetic2.dcm) USE THIS IN config_test.yaml:
tables:
input_documentation: "wasbs://data@pprt29userdata.blob.core.windows.net/documentation_test.csv"
output_file: "/storage_workspace/data/metadata_test/metadata/md_tables_extract_test.json"
images:
input_folder: "/storage_workspace/data/metadata_test"
output_folder: "/storage_workspace/data/metadata_test/metadata"
spark:
spark_conf: "/usr/local/spark/conf/spark-defaults.conf"
spark_name: "spark_session_name"
storage:
container_name: "data"
account_name: "pprt29userdata"
dir_path_base_test: "/storage_workspace/data/metadata_test/input_file/"
Support
Contributions
Les contributions à ce projet sont les bienvenues ! Veuillez soumettre une pull request avec vos modifications ou suggestions d'amélioration.
Crédits
Merci à toute l'équipe de Precision-Predict ainsi qu'à tous les contributeurs et testeurs.
Licence et conditions d’utilisation
Ce projet est sous licence Apache 2.0. Les détails de la licence se trouvent dans le fichier LICENSE.