7 M ETODI P REDITT
7.2 S CRIPTING A UTOMATION
Tutti i processi descritti, portano alla realizzazione del progetto e l’infrastruttura network creata per l’automazione e la raccolta dei dati (data-mining) mediante scripting python, che si interfaccia direttamente con alcuni degli strumenti e dei treatment planning system utilizzati.
Nella pratica quotidiana senza l’utilizzo degli script non sarebbe possibile attuare processi così complessi e l’impiego delle attrezzature sarebbe limitato a queste attività. A tale scopo la possibilità di introdurre automazioni attraverso codici e scripting, consente anche all’utente inesperto di attuare attività molteplici. La possibilità di eseguire gli script in modalità notturna o mediante l’avvio manuale al termine delle attività di routine fisico-clinica, consente lo sfruttamento delle risorse tecnologiche durante tutto il giorno. In particolare è possibile utilizzare tutte le risorse HW e SW al pieno del loro potenziale
Durante gli anni di ricerca con l’avvento delle GPU il processo si è velocizzato esponenzialmente. Fino al 2014 l’infrastruttura era dotata solo i software che agiva tramite la CPU. Tra il 2014 e il 2015, l’avvento delle GPU e la semplificazione del codice, sui sistemi certificati clinici, ha permesso di ridurre il tempo di un fattore 10. Tale riduzione ha portato anche alla possibilità di aumentare la risoluzione durante le fasi di deformazione elastica ed estrapolazione delle mesh, nonché della raccolta statistica dei dati. Questo ha consentito di raggiungere risoluzioni delle matrici di deformazioni pari a 0.1 cm senza avere problematiche e malfunzionamenti dei sistemi (crash) e acconsentendo la possibilità di estendere le metodiche di Adaptive ad un numero elevato di pazienti.
Il linguaggio usato per gli script, IronPython, è la versione .NET di Python e possiede le seguenti caratteristiche:
1. Linguaggio completo di programmazione (semplice e documentato), open-source e di alto livello. 2. Essendo integrato con Microsoft .NET Framework e Windows Presentation Foundation (WPF),
permette di creare e visualizzare finestre con componenti grafici.
Offre accesso a tutte le capacità del sistema operativo, così come alle altre applicazioni (es. creare report pdf, scrivere file di testo e interfacciare altre applicazioni come Microsoft Excel®, SPSS® o MATLAB®), e consente di comunicare e interfacciare computer e sistemi di infrastrutture informatiche miste.
È un linguaggio dinamico, compie molte operazioni durante il tempo di esecuzione, piuttosto che durante il tempo di compilazione, risultando più veloce rispetto ai linguaggi statici come il C e C#. L’accesso SQL ai dati, consente di creare relazioni e interfacce dirette con i sistemi di analisi statistica. L’implementazione e la traslazione della ricerca sarebbe possibile anche a livello nazionale, indipendentemente dai sistemi utilizzati.
Già oggi sono state messe in campo e sviluppate collaborazioni e integrazioni a livello nazionale, che permettono lo scambio dei dati e l’analisi mediante gli stessi principi utilizzati dal centro di riferimento di Modena e descritti nell’elaborato. Tali confronti hanno permesso di dimostrare la solidità del sistema e delle reti predittive e la possibilità di attuare un data-mining nazionale, senza particolari esigenze di infrastrutture complesse.
Di seguito sono riportate le tabelle con gli script implementati nel network e le descrizioni delle peculiarità di ogni singolo codice.
Tabella 6: Elenco scripts implementati a supporto del network e del progetto SCRIPTS DESCRIZIONE S CRIPTS PER AUTOMAZION E DEI P RO CESSI DI A DAPTIVE RT E D ATA -M INI NG ImportPatient_WithoutRTPLAN.py
Importa in ordine di data tutte le serie d’immagini del paziente in base al filtro impostato (es. PatientID), tranne il file RTPLAN.
RigidRegistration.py.
Esegue la co-registrazione rigida tra gli esami del paziente, impostando la CT 1 come target image set e la CT n-esima come source image set. Inoltre, nella co-registrazione sono permesse le rotazioni e l’algoritmo si focalizza sulle ossa nelle immagini coinvolte.
RigidRegistration_NoRotations.py Esegue la co-registrazione rigida, bloccando le possibili rotazioni delle immagini coinvolte.
RigidRegistration_NoRotations_NoFocusOnBone.py Esegue la co-registrazione bloccando le possibili rotazioni e senza focalizzarsi sulle strutture ossee. CopyROI.py Copia le ROI dalla prima seduta a tutte le altre.
HybridDeformation_CC.py Esegue la deformazione ibrida, con algoritmo di cross-correlazione, tra gli esami del paziente. HybridDeformation_CCmixedMI.py Esegue la deformazione ibrida, con algoritmo misto di cross-correlazione e mutual information, tra gli esami del paziente. HybridDeformation_MI.py Esegue la deformazione ibrida, con algoritmo di mutual information, tra gli esami del paziente. MapRoiReverse.py Esegue il Map ROI inverso al campo di deformazione, tra le CT della deformazione ibrida.
MapRoiReverse_NoAbort.py Esegue il Map ROI inverso e non interrompe il processo, nel caso in cui ci sia qualche errore nel campo di deformazione. GetDoseStatistics_db.py Estrapola in un file .txt le dosi e i volumi (dati relativi al secondo workspace layout) della tabella Dose Statistics del software e aggiunge alcune colonne necessarie per la statistica. GetDoseStatistics_solo_dosi.py Estrapola solo le dosi contenute nella tabella Dose Statistics scrivendole in un file di testo.
GetDoseStatistics_dosi_volumi.py Estrapola dosi e volumi contenuti nella tabella Dose Statistics scrivendoli in un file di testo.
ImportScriptInFolder.py Importa in successione gli script indicati all’interno del listato del programma. Inoltre, scrive un file di testo con il tempo totale di esecuzione.
S CRIPT DI C ONTROLLO RotationValue.py
Calcola l’angolo di rotazione tra le immagini co-registrate, attraverso la matrice di rotazione delle stesse. I valori degli angoli di rotazioni vengono scritti in un file di testo per il successivo controllo.
RotationValue.py
Calcola l’angolo di rotazione tra le immagini co-registrate, attraverso la matrice di rotazione delle stesse. I valori degli angoli di rotazioni vengono scritti in un file di testo per il successivo controllo.
RotationValue.py
Calcola l’angolo di rotazione tra le immagini co-registrate, attraverso la matrice di rotazione delle stesse. I valori degli angoli di rotazioni vengono scritti in un file di testo per il successivo controllo. S CRIPT DI D OSE E A DAPTIVE RT
Delete_deformed_doses.py Cancella tutte le dosi deformate
Delete_mapped_rois.py Cancella tutte le ROIs deformate
Dose_deformation.py Effettua la deformazione di dose sulla base dei DVF ottenuti dal warping delle strutture
ExpandGridToCoverRTDose.py Espande la griglia di deformazione per includere tutti i volumi
ImportPatient.py Importa in automatico i file DICOMRT del nuovo paziente
ImportScriptInFolder.py Lancia più script in serie
MapROI.py Effettua il mapping ROI reverse
OneClick-ART.py
Riunisce tutti i singoli script: dall’import, alla co-registrazione, alla deformazione, all’analisi, all’export dei dati. Lanciato in modalità batch notturna, consente di ottenere i dati il mattino. Con le GPU le analisi sono abbastanza immediate, conviene verificare i risultati di ciascuna operazione per evitare bias (i.e. rototraslazioni anomale)
RigidRegistration.py Effettua la Co-Registrazione rigida
ROI_disp_exp_speed.py Dedicato al modello epidemiologico SIS, consente di esportare come .txt i vertici e i displacements di tutte le ROIs deformate ROI_displacement_export.py Analizza una sola ROI alla volta e ne riporta i dati fondamentali per il SIS
RotationValue.py Stampa a video gli angoli di rotazione delle registrazioni rigide
Update_ROI_voxel.py Update voxel dopo deformazione, Consente l’aggiornamento dei dadi dosimetrici dei singoli voxel dopo dose accumulation
S
CRIPT
G
ENERICI
CopyROI.py Copia le ROIs dalla kVCT agli studi secondari MVCT e CBCT
Delete_all_doses.py Elimina tutte le dosi deformate calcolate nel modulo “Dose evaluation”.
New_console.py Apre una nuova sessione del TPS.
7.2.1 L
IMITI DELL’
AUTOMAZIONEMediante scripts è possibile analizzare una grande quantità di pazienti in tempo reale, o sfruttando risorse computazionali durante le ore notturne, ma accanto ai vantaggi dell’automazione, è necessario riportare anche alcuni svantaggi o criticità, apparsi durante lo studio e che possono portare a valutazioni qualitative e quantitative errate e pericolose nel percorso radioterapico, se non doverosamente controllate da parte dei professionisti.
Figura 83: Esempio di co-registrazione rigida errata con angolo di rotazione di 60°
In figura sono evidenti le problematiche di co-registrazione apparse durante la copia delle ROI tra i diversi dataset. Le ROI in questo caso sono copiate esternamente alle immagini, essendo limitato il campo tomografico acquisito durante le immagini di setup. Ovviamente in modo analogo il campo vettoriale e le trasformate elastiche, risulterebbero errate.
Eventuali operazioni di ART o di accumulo di dose porterebbero a significativi errori e quantificazioni inesatte della dose erogata e/o accumulata sul paziente.
Figura 84: Errata deformazione elastica dovuta alla presenza della protesi dentarie di una protesi dentale
Il campo di deformazione risulta inappropriato in seguito alla presenza della protesi dentale che per l’elevata densità, crea anomale scale di grigi. Sulla base di quanto descritto nei capitoli di co-registrazione rigida ed elastica, si crea inevitabilmente un area vettoriale inattesa, in prossimità della mandibola. Tale errore, porta a variazioni volumetriche e dosimetriche significative della mandibola, che devono essere accuratamente valutate, al fine di evitare inappropriati sotto dosaggi o sovradosaggi delle aree del cavo orale.
In analogia, la possibilità che parte del campo tomografico non sia stato acquisito, può genere campi vettoriali, esterni al volume di interesse, tali da generare inattese deformazioni e possibili errate valutazioni. A tal proposito si riportano alcuni esempi di casi limiti, indagati durante la ricerca.
Figura 85: Deformazioni inappropriate per mancanza di Field-OF-View (FOV)
Nell’immagini sono riportate un esempi di deformazione ibrida dei polmoni e della cute, in cui il software e gli algoritmi rilevano un gradiente elevato nei livelli di grigio ai bordi dell’immagine e disegnano un campo di deformazione delle ROI al di fuori della CT di appartenenza. Tali effetti potrebbe essere correlati con dosi calcolate o deformate non appropriate e congruenti con la realtà. Nel caso sotto riportato le immagini mostrano dosi esterne o sovradosaggi in aree della teca cranica, in ragione delle differenze di imaging utilizzate o variazione delle cavità aeree.
Figura 86: Variazioni delle dosi per effetto delle cavità aeree o sistemi di imaging on-board differenti (Casi Prostata e Polmoni)
In ultimo invece la densità diversa di alcune aeree può portare ad avere HU corrispondenti significativamente diverse. Il software interpreta le differenze come possibili aree di deformazioni, variando in modo significativo e inappropriato i volumi di interesse del trattamento. Tale errore può portare ad un indebito sotto-dosaggio delle aree tumorali, se non adeguatamente valutato.
Figura 87: Variazione densitometrica in patologia SBRT polmonare non rilevata