Extract-Metadata - extraction de métadonnées à partir d’une base de données tabulaire et d'imagerie au format DICOM.

Gitlab

Lien vers le repo : Gitlab

Objectifs de l’algorithme

Autre

Extract-Metadata permet l'extraction des métadonnées d'une base tabulaire et d'images au format DICOM.

Auteur(s)

Autre
Victor Léandre-Chevalier (Health Data Hub)

Développement sous la direction de Nadia Hegarat de l'Institut Curie dans le cadre du projet Precision Predict.

Domaine médical

Autre

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

Python

Données utilisées

Données d'application

Données d’imagerie
Données tabulaires

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

Validé

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

Régulière

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 ?

  1. Clonez le dépôt du projet :

git clone <repository_url>

 

  1. Installez les dépendances (si nécessaire) :

pip install -r requirements.txt

 

Comment utiliser l’algorithme ?

  1. 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.
  2. 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.
  3. 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.