JHistint.jl - Julia Histopathology Interface

Interfaccia Julia per implementazione delle REST API disponibili sul portale CDSA (Cancer Slide Digital Archive) per il download di immagini istologiche reperibili nel TCGA (The Cancer Genome Atlas). Il Cancer Slide Digital Archive (CDSA) è una piattaforma web per il supporto, la condivisione e l'analisi di dati patologici digitali. Attualmente ospita oltre 23.000 immagini associate ai dati disponibili nel «The Cancer Genome Atlas» Data Portal.

Link GitHub repository: JHistint.jl

Link d'accesso al CDSA: Clicca qui

Link repository contenente i dati mappati nel portale: Clicca qui

Link guida all'utilizzo delle API: Clicca qui

Struttura del Package

  • Le folder case e collection memorizzano in formato .json i metadati relativi ai singoli casi e alle collezioni disponibili nel TCGA Data Portal. La folder collection è composta come segue:
    • collectionlist.jsn = Memorizza i dati d'accesso (metadati) delle collezioni (Project in TCGA).
    • colletion_name.jsn = Memorizza i dati d'accesso (metadati) relativi alla singola collezione. Il file .json viene generato in base alla collezione scelta dall'utente.
  • La folder case è composta come segue:
    • collection_name.jsn = Memorizza tutti i metadati relativi ai casi associati alla collezione selezionata dall'utente.
  • La folder slides memorizza le immagini istologiche relative ai singoli casi. Le immagini sono organizzate in base al formato (.svs), alla collezione (TCGA-chol, TCGA-esca, etc.) e al singolo caso da analizzare (TCGA-2H-A9GF, TCGA-2H-A9GG, etc.). All'interno di ogni folder relativa al caso sono memorizzate le slide compresse in file .zip. Il formato delle singole slide è .svs. La denominazione delle folder inerenti ai casi coincide con i valori del campo Case ID riportato nel TCGA Data Portal. La denominazione dei file .zip situati in ogni folder fa riferimento all'attributo Sample ID associato al paziente. La denominazione della slide è data dalla concatenazione degli attributi Slide ID e Slide UUID consultabili nella sezione inferiore della pagina web dedicata al caso generico TCGA-XX-YYYY.
Esempio: TCGA-02-0001-01C-01-TS1.zip  
  - 02 = si riferisce al TSS (Tissue Source Site).  
  - 0001 = si riferisce al codice associato al Participant, stringa alfanumerica.  
  - 01 = si riferisce al Sample Type. I valori associati ai campioni aventi tumori sono nell'intervallo 01 - 09. 10 - 19 indica l'intervallo dedicato a campioni normali non malati. 20 - 29 indica campioni attualmente sotto controllo.  
  - C = si riferisce al campo Vial relativo all'ordinamento del campione nella sequenza di campioni. I valori variano tra A - Z.  
  - 01 = si riferisce al campo Portion relativo all'ordinamento delle porzioni analizzate associate ad un campione. Assume valori nell'intervallo 01-99.  
  - TS1 = si riferisce al campo Slide relativo al tipo di immagine. I valori assumbili sono TS (Top Slide), BS (Bottom Slide) e MS (Middle Slide). Il valore alfanumerico indica l'ordinamento della slide.

Collezioni JHistint

Le collezioni disponibili sono:

  • TCGA-BRCA = Breast Invasive Carcinoma (Breast)
  • TCGA-OV = Ovarian Serous Cystadenocarcinoma (Ovary)
  • TCGA-LUAD = Lung Adenocarcinoma (Bronchus and Lung)
  • TCGA-UCEC = Uterine Corpus Endometrial Carcinoma (Corpus uteri)
  • TCGA-GBM = Glioblastoma Multiforme (Brain)
  • TCGA-HSNC = Head and Neck Squamous Cell Carcinoma (Larynx, Lip, Tonsil, Gum, Other and unspecified parths of mouth)
  • TCGA-KIRC = Kidney Renal Clear Cell Carcinoma (Kidney)
  • TCGA-LGG = Brain Lower Grade Glioma (Brain)
  • TCGA-LUSC = Lung Squamous Cell Carcinoma (Bronchus and lung)
  • TCGA-TCHA = Thyroid Carcinoma (Thyroid gland)
  • TCGA-PRAD = Prostate Adenocarcinoma (Prostate gland)
  • TCGA-SKCM = Skin Cutaneous Melanoma (Skin)
  • TCGA-COAD = Colon Adenocarcinoma (Colon)
  • TCGA-STAD = Stomach Adenocarcinoma (Stomach)
  • TCGA-BLCA = Bladder Urothelial Carcinoma (Bladder)
  • TCGA-LIHC = Liver Hepatocellular Carcinoma (Liver and intrahepatic bile ducts)
  • TCGA-CESC = Cervical Squamous Cell Carcinoma and Endocervical Adenocarcinoma (Cervix uteri)
  • TCGA-KIRP = Kidney Renal Papillary Cell Carcinoma (Kidney)
  • TCGA-SARC = Sarcoma (Various)
  • TCGA-ESCA = Esophageal Carcinoma (Esophagus)
  • TCGA-PAAD = Pancreatic Adenocarcinoma (Pancreas)
  • TCGA-READ = Rectum Adenocarcinoma (Rectum)
  • TCGA-PCPG = Pheochromocytoma and Paraganglioma (Adrenal gland)
  • TCGA-TGCT = Testicular Germ Cell Tumors (Testis)
  • TCGA-THYM = Thymoma (Thymus)
  • TCGA-ACC = Adrenocortical Carcinoma -Adenomas and Adenocarcinomas (Adrenal gland)
  • TCGA-MESO = Mesothelioma (Heart, mediastinum and pleura)
  • TCGA-UVM = Uveal Melanoma (Eye and adnexa)
  • TCGA-KICH = Kidney Chromophobe (Kidney)
  • TCGA-UCS = Uterine Carcinosarcoma (Uterus, NOS)
  • TCGA-CHOL = Cholangiocarcinoma (Liver and intrahepatic bile ducts, Other and unspecified part of biliary track)
  • TCGA-DLBC = Lymphoid Neoplasm Diffuse Large B-cell Lymphoma (Various)

Per il download di una collezione specifica è sufficiente indicare il nome della collezione: BRCA, OV, LUAD.

Installazione del Package

Il package JHistint è disponibile nei Julia Registries, quindi installabile come segue:

julia > using Pkg
julia > Pkg.add("JHistint")
julia > using JHistint

In alternativa, digitare ] nel Julia REPL ed eseguire:

(@v1.8) pkg > add JHistint
(@v1.8) pkg > using JHistint

Funzioni Download Slides (JHistint.jl)

JHistint.download_single_collectionMethod
download_single_collection(collection_name::AbstractString)

Funzione per il download delle slides istologiche associate ad una collezione disponibile nel TCGA.

Argomenti

  • collection_name::AbstractString = Collezione di dati TCGA di cui scaricare le slides istologiche.

Note

La funzione valuta l'argomento collection_name, in caso di collezione non valida considera la configurazione del file Config.toml. Il valore impostato nel package è default.

# Esempi con input validi
julia> JHistint.download_single_collection("acc")
julia> JHistint.download_single_collection("bLca")
# Esempi con input non validi
julia> JHistint.download_single_collection("ac")
julia> JHistint.download_single_collection("")
JHistint.download_all_collectionMethod
download_all_collection()

Funzione per il download delle slides istologiche associate a tutte le collezioni disponbile nel TCGA.

# Esempi con input validi
julia> JHistint.download_all_collection()

Funzioni Segmentazione Slides (JHistint.jl)

JHistint.slide_cell_segmentationMethod
slide_cell_segmentation(collection_name::AbstractString)

Funzione per esecuzione della segmentazione cellulare delle slide istopatologiche presenti nel database JHistint_DB associate al nome della collezione fornita come argomento.

Argomenti

  • collection_name::AbstractString = Collezione di slide TCGA di cui effettuare la segmentazione cellulare.

Note

Per ogni slide nel DB viene eseguita la segmentazione delle cellule utilizzando la funzione apply_segmentation e il risultato viene salvato nel DB utilizzando la funzione load_seg_slide. Infine, viene stampato un messaggio di conferma per ogni slide segmentata.

# Esempi con input validi
julia> JHistint.slide_cell_segmentation("acc")
julia> JHistint.slide_cell_segmentation("bLca")
# Esempi con input non validi
julia> JHistint.slide_cell_segmentation("ac")
julia> JHistint.slide_cell_segmentation("")

Funzioni di supporto per Segmentazione (segmentationManager.jl)

JHistint.apply_segmentationMethod
apply_segmentation(slide_info::Tuple{String, Array{RGB{}, 3}, String})

La funzione esegue la segmentazione di un'immagine istologica.

Argomenti

  • slide_info::Tuple{String, Array{ColorTypes.RGB{FixedPointNumbers.N0f8}, 3}, String}: Tupla contenente l'id della slide, l'immagine stessa ottenuto dal DB e il percorso del file dell'immagine originale.

Valori di ritorno

  • filepath_seg: Il percorso all'interno del quale è memorizzata la slide segmentata.
  • segmented_slide: La slide istologica segmentata in formato .tif.

Note

La funzione utilizza l'algoritmo di segmentazione watershed per segmentare l'immagine in diversi raggruppamenti di pixel. La segmentazione viene eseguita utilizzando una trasformazione delle caratteristiche dell'immagine (feature_transform) e l'etichettatura dei componenti connessi. Viene quindi calcolata la distanza tra le diverse regioni e viene costruito un grafo di adiacenza delle regioni, utilizzando la funzione region_adjacency_graph. Viene inoltre assegnato un colore casuale a ciascuna regione segmentata. Infine, viene salvata un'immagine .tif segmentata e viene restituito il percorso del file della slide segmentata e la slide stessa.

JHistint.get_random_colorMethod
get_random_color(seed)

Funzione per restituire un colore casuale in formato RGB a 8 bit, utilizzando un seme specificato.

Argomenti

  • seed = Un intero utilizzato per inizializzare il generatore di numeri casuali. Se due chiamate alla funzione utilizzano lo stesso seme, verrà generato lo stesso colore.

Valore di ritorno

La funzione restituisce un colore casuale in formato RGB a 8 bit.

Funzioni di supporto DB (dbManager.jl)

JHistint.insert_record_DBMethod
insert_record_DB(col_name::AbstractString,
                      cas_name::AbstractString,
                      tcga_case_id::AbstractString,
                      sin_cas_name::AbstractString,
                      tcga_slide_id::AbstractString,
                      link_slide::AbstractString,
                      filepath_zip::AbstractString,
                      filepath_svs::AbstractString)

Funzione per la memorizzazione nel database JHistint_DB delle informazioni associate ad ogni slide scaricata dal CDSA.

Argomenti

  • col_name::AbstractString = Nome della collezione.
  • cas_name::AbstractString = Nome del caso, coincide con il CASE-NAME stampato a video dal package.
  • tcga_case_id::AbstractString = ID utilizzato dal TCGA per identificare il caso.
  • sin_cas_name::AbstractString = Nome del singolo caso, coincide con lo SLIDE-ID stampato a video dal package.
  • tcga_slide_id::AbstractString = ID utilizzato dal TCGA per identificare la slide.
  • link_slide::AbstractString = Link alle API per il download della slide.
  • filepath_zip::AbstractString = Percorso in cui è memorizzato il file .zip.
  • filepath_svs::AbstractString = Percorso in cui è memorizzato il file .svs.

Note

Dati disponibili nel database JHistint_DB per ogni slide:

  • collection_name TEXT = Nome della collezione.
  • case_name TEXT = Nome del caso.
  • TCGA_caseID TEXT = ID utilizzato dal TCGA per identificare il caso.
  • slide_ID TEXT = Nome del singolo caso.
  • TCGA_slideID TEXT UNIQUE = ID utilizzato dal TCGA per identificare la slide, UNIQUE evita la generazione di duplicati.
  • slide_path_folder_zip TEXT = Percorso in cui è memorizzato il file .zip.
  • slide_path_folder_svs TEXT = Percorso in cui è memorizzato il file .svs.
  • slide_path_api TEXT = Link alle API per il download della slide.
  • slide_path_folder_seg TEXT = Percorso in cui è memorizzato il file .tif segmentata.
  • slide_svs BLOB = Slide istopatologica (immagine).
  • slide_seg BLOB = Slide istopatologica segmentata (immagine).
  • slide_info_TSS TEXT = Informazioni sulla slide - Tissue Source Site.
  • slide_info_participant_code TEXT = Informazioni sulla slide - Codice associato al Participant, stringa alfanumerica.
  • slide_info_sample_type TEXT = Informazioni sulla slide - Sample Type. I valori associati ai campioni aventi tumori sono nell'intervallo 01 - 09. 10 - 19 indica l'intervallo dedicato a campioni normali non malati. 20 - 29 indica campioni attualmente sotto controllo.
  • slide_info_vial TEXT = Informazioni sulla slide - Vial. Relativo all'ordinamento del campione nella sequenza di campioni. I valori variano tra A - Z.
  • slide_info_portion TEXT = Informazioni sulla slide - Portion. Relativo all'ordinamento delle porzioni analizzate associate ad un campione. Assume valori nell'intervallo 01-99.
  • slide_info_type TEXT = Informazioni sulla slide - Tipo di immagine. I valori assumbili sono TS (Top Slide), BS (Bottom Slide) e MS (Middle Slide). Il valore alfanumerico indica l'ordinamento della slide.
JHistint.query_extract_slide_svsMethod
query_extract_slide_svs(collection_name::AbstractString)

La funzione interroga il JHistint_DB ed estrae la lista di slide associate al nome della collezione fornita come argomento.

Argomenti

  • collection_name::AbstractString: Nome della collezione di slide da ricercare nel JHistint_DB.

Valore di ritorno

  • slide_list: Lista di tuple, ognuna delle quali contiene l'ID della slide, il file .svs della slide e il percorso della cartella contenente il file .svs.
JHistint.load_seg_slideMethod
load_seg_slide(filepath_seg::AbstractString, segmented_slide::Array{RGB{Float32}, 3}, slide_id::AbstractString)

La funzione aggiorna il JHistint_DB con il percorso del file dell'immagine segmentata e l'immagine segmentata.

Argomento

  • filepath_seg::AbstractString: Percorso del file dell'immagine segmentata da aggiungere al DB.
  • segmented_slide::Array{ColorTypes.RGB{Float32}, 3}: Immagine segmentata da aggiungere al DB.
  • slide_id::AbstractString: ID della slide da aggiornare con le informazioni dell'immagine segmentata.

Funzioni di supporto API (apiManager.jl)

JHistint.download_collection_valuesMethod
download_collection_values(filepath::AbstractString)

Funzione per il download dei dati delle collezioni disponibili nel TCGA.

Argomenti

  • filepath::AbstractString = Percorso in cui salvare il file .json ottenuto dalle API disponibili nel CDSA.

Note

L'API richiede la definizione del parentType e del parentId. Il parentId specifica l'identificativo della collezione. La collezione di immagini associate al TCGA è identificata dal codice: 5b9ef8e3e62914002e454c39. L'utilizzo del limit=0 imposta l'assenza di limiti nel file interrogato, garantendo il download del file in modo completo. L'API appartiene alla categoria per gestire le folder memorizzate nel repository. Il file scaricato è .json.

JHistint.extract_collection_valuesMethod
extract_collection_values(filepath::AbstractString)

Funzione per estrarre i valori delle collezioni di dati dal file .json scaricato dalla funzione download_collection_values.

Argomenti

  • filepath::AbstractString = Percorso in cui è memorizzato il file collectionlist.json.

Valore di ritorno

  • collection_values::Array{String} = Lista di collezioni di dati disponibili nel TCGA.
JHistint.download_project_infosMethod
download_project_infos(filepath::AbstractString, collection_name::AbstractString)

Funzione per il download dei metadati associati alla collezione selezionata all'avvio.

Argomenti

  • filepath::AbstractString = Percorso in cui salvare il file .json associato alla collezione. Il file è indicato

con la dicitura collection_name.json.

  • collection_name::AbstractString = Nome della collezione di cui scaricare le slides.

Note

L'API richiede la definizione del parentType, del parentId e del name. L'attributo name identifica il nome della collezione di cui si desidera prelevare i dati (esempio: chol, esca, etc.). L'API appartiene alla categoria per gestire le folder memorizzate nel repository. Il file scaricato è .json.

JHistint.extract_project_idMethod
extract_project_id(filepath::AbstractString)

Funzione per estrarre il valore del id dai metadati della collezione selezionata all'avvio.

Argomenti

  • filepath::AbstractString = Percorso in cui è memorizzato il file collection_name.json.

Valori di ritorno

  • project_id = id della collezione.
JHistint.getCasesForProjectMethod
getCasesForProject(filepath_case::AbstractString, project_id::AbstractString)

Funzione per il download dei metadati associati ai casi della collezione selezionata all'avvio.

Argomenti

  • filepath::AbstractString = Percorso in cui salvare il file .json associato ai casi della collezione. Il file è indicato

con la dicitura collection_name.json.

  • project_id::AbstractString = id della collezione.

Valori di ritorno

  • casesID_values = Lista di id di tutti i casi della collezione.
  • casesNAME_values = Lista di name di tutti i casi della collezione.

Note

L'API richiede la definizione del parentType e del parentId. L'attributo parentType è impostato a folder data la struttura del repository. Il parentId è configurato definendo l'identificativo della collezione scelta. Il file scaricato è .json.

JHistint.download_zipMethod
download_zip(link::AbstractString, filepath::AbstractString)

Funzione per il download delle slides istologiche in formato .zip associate ai casi della collezione selezionata all'avvio.

Argomenti

  • link::AbstractString = URL per l'accesso alla API per il download delle slides.
  • filepath::AbstractString = Percorso in cui salvare il file .zip.

Funzioni di supporto ZIP (zipManager.jl)

JHistint.extract_slideMethod
extract_slide(filepath_zip::AbstractString)

Funzione per estrarre il contenuto dei file .zip scaricati dal CDSA.

Argomenti

  • filepath_zip::AbstractString = Percorso in cui è salvato il file .zip relativo al singolo caso.