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
ecollection
memorizzano in formato.json
i metadati relativi ai singoli casi e alle collezioni disponibili nel TCGA Data Portal. La foldercollection
è 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 campoCase ID
riportato nel TCGA Data Portal. La denominazione dei file.zip
situati in ogni folder fa riferimento all'attributoSample ID
associato al paziente. La denominazione della slide è data dalla concatenazione degli attributiSlide ID
eSlide UUID
consultabili nella sezione inferiore della pagina web dedicata al caso genericoTCGA-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_collection
— Methoddownload_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_collection
— Methoddownload_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_segmentation
— Methodslide_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_segmentation
— Methodapply_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_color
— Methodget_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_DB
— Methodinsert_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 ilCASE-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 loSLIDE-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_svs
— Methodquery_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 nelJHistint_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_slide
— Methodload_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_values
— Methoddownload_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_values
— Methodextract_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 filecollectionlist.json
.
Valore di ritorno
collection_values::Array{String}
= Lista di collezioni di dati disponibili nel TCGA.
JHistint.download_project_infos
— Methoddownload_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_id
— Methodextract_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 filecollection_name.json
.
Valori di ritorno
project_id
=id
della collezione.
JHistint.getCasesForProject
— MethodgetCasesForProject(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 diid
di tutti i casi della collezione.casesNAME_values
= Lista diname
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_zip
— Methoddownload_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_slide
— Methodextract_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.