際際滷

際際滷Share a Scribd company logo
MATLAB: soluzione di equazioni
differenziali e fitting non lineare
Focus principale sullutilizzo delle funzioni
ode45 e lsqcurvefit
Michele Scipioni
Ph.D. Student
Dip. Ingegneria dellinformazione
Universit di Pisa
Corso di Immagini Biomediche, 02 Dicembre 2016
2
Outline
 PARTE 1 - Soluzione di un sistema di equazioni differenziali in MATLAB
 PARTE 2 - Fitting di modelli non lineari in MATLAB
 PARTE 3 - Esercitazione: implementazione e fitting di modelli bi-compartimentali
A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
3
PARTE 1
Soluzione di un sistema di equazioni differenziali in MATLAB
A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
4
Obiettivo
A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
MODELLO BI-COMPARTIMENTALE
DESCRITTO DA UN SISTEMA DI 2
EQUAZIONI DIFFERENZIALI
1. Prendere confidenza con le funzioni integrate in MATLAB dedicate alla soluzione delle ODE.
2. Impostare le opzioni e i parametri richiesti dal motore di soluzione ODE.
3. Passare il nostro modello ed eventuali parametri aggiuntivi al risolutore.
5A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Risoluzione numerica di equazioni differenziali
MATLAB fornisce un gran numero di strumenti per risolvere numericamente delle equazioni differenziali.
Noi ci concentraremo sui due metodi principali gi integrati in tutte le versioni, ossia le funzioni ode23 e
ode45, entrambe basate sul metodo di risoluzione Runge-Kutta.
Entrambe queste funzioni si presentano con la medesima interfaccia e si aspettano gli stessi parametri
in ingresso.
 y: vettore di soluzione, in cui ogni colonna 竪 associata ad una variabile (pi湛 di una se lavoriamo con
un sistema di ODE), ed ogni riga rappresenta un istante temporale riferito al vettore t.
 odefun: funzione esterna (m-file) che restituisce un vettore colonna con Iuscita del sistema ODE
 tspan: specifica il vettore dei tempi di integrazione per risolvere il Sistema
 se tspan 竪 un vettore di due elementi, questi sono trattati come tempi di inizio e fine, e gli
step di integrazione intermedi sono scelti arbitrariamente dal risolutore
 se tspan ha pi湛 di 2 valori, i risultati sono calcolati soltanti per gli specifici istanti temporali
richiesti
 y0: vettore delle condizioni iniziali per (t=0)
[t, y] = ode45(odefun, tspan, y0)
6A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: equazione differenziale del primo ordine


= ヰ2
+ ;  0 = 1   [0; 0.5]
1) Definire la funzione :  ,  =
7A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: equazione differenziale del primo ordine


= ヰ2
+ ;  0 = 1   [0; 0.5]
2) Passare la funzione appena creata in input al risolutore ode45()
8A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: equazione differenziale del primo ordine


= ヰ2
+ ;  0 = 1   [0; 0.5]
3) Specificare un tspan personalizzato
Quello che 竪 interessante puntualizzare riguardo il
tspan 竪 che MATLAB in background continua ad
usare pi湛 o meno lo stesso timestep predefinito
per risolvere lequazione differenziale, variando
soltanto il modo in cui restituisce in output il
risultato finale. Lavorare con un tspan
personalizzato quindi non altera in modo eccessivo
laccuratezza della soluzione numerica.
9A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: equazione differenziale del primo ordine


= ヰ2
+ ;  0 = 1   [0; 0.5]
4) Opzioni di personalizzazione
Ad ogni iterazione del risolutore viene calcolato un errore. Se chiamiamo   lapprossimazione di
   allo step k, ed   lerrore corrispondente, MATLAB adatta il suo passo di integrazione in
modo che risulti:
   (告諮  | |, 諮),
Dove i valori di default sono  = 103
= .001 and 基 = 106
= .000001.
N.B.
Con questa convenzione, se la soluzione | | diventa molto grande, di conseguenza lo 竪 anche lerrore, e per
evitare che il risolutore si arresti prima di convergere 竪 necessario ridurre RelTol. Viceversa, se la soluzione
tende ad avere valori molto piccoli (< 106
), allora 竪 AbsTol a dover essere ridotto.
10A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: equazione differenziale del primo ordine


= ヰ2
+ ;  0 = 1   [0; 0.5]
4) Opzioni di personalizzazione


= ヰ2
+ ;   =
1
1
11A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: sistemi di ODE
 = 1,2 1 0 = 2
 = 0,6 2 0 = 1
 = 0,8
 = 0,3
Modello Predator-Prey
Vettore colonna
212
2
211
1
yyy
dt
dy
yyy
dt
dy
駕
12A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: passaggio di parametri aggiuntivi
Immaginiamo di voler continuare a lavorare allesempio del modello predatore-preda, ma variando il
valore delle costanti del modello , ,  e , ma ovviamente senza modificare manualmente il file
MATLAB.
13
PARTE 2
Fitting di modelli non lineari in MATLAB
A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
14A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Obiettivo
STIMA AI MINIMI QUADRATI
1. Prendere confidenza con le funzioni integrate in MATLAB dedicate al fitting non lineare.
2. Impostare le opzioni e i parametri richiesti dalla funzione lsqcurvefit.
3. Passare il nostro modello ed eventuali parametri aggiuntivi alla funzione di fitting.
15A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Least Squares Estimator
Lobiettivo di uno stimatore ai minimi quadrati 竪 trovare un vettore x che sia un minimizzatore locale della
funzione data dalla somma degli scarti quadratici tra curva misurata e uscita del modello teorico,
possibilmente sottoposta ad alcuni vincoli:
  () 2
2
=  

告
2
()
tale che  揃   , 基 揃  = ,     .
16A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
lsqcurvefit
[x,resnorm,residual,exitflag,output] =
lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)INPUT
 (, ): funzione non lineare che fornisce in output la stima della curva da fittare
 : vettore dei parametri incogniti
 : variabile indipendete (generalmente il vettore temporale a cui 竪 campionato ydata)
 : stima inziale dei coefficienti del modello da fittare
 : curva misurata (deve essere della stessa misura delloutput di fun)
 , : lower e upper bounds tali che      (devono avere stessa dimensione di x0, o essere matrici vuote se
non si 竪 interessati a vincolare la stima parametrica)
 : opzioni di ottimizzazione
OUTPUT
 : parametri del modello stimati (stessa dimensione di x0 e del vettore di parametri preso in input da fun(x,xdata))
 : somma degli scarti quadratici (residui) corrispondenti alloutput del fitting
 : vettore dei residui [fun(x,xdata)-ydata] alla soluzione x
 : valore che descrive la condizione di uscita
 : struttura contenente informazioni riassuntive sul processo di ottimizzazione
17A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: fitting di una funzione esponenziale
 = 1 exp 1  + 2 exp 2    [0; 2]
1) Definire la funzione ヰヰ:  = (, )
18A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: fitting di una funzione esponenziale
 = 1 exp 1  + 2 exp 2    [0; 2]
2) Usiamo il modello implementato per simulare una misura rumorosa ydata
19A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: fitting di una funzione esponenziale
 = 1 exp 1  + 2 exp 2    [0; 2]
3) Passare la funzione modello e il vettore misurato con input ad lsqcurvefit
20A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: fitting di una funzione esponenziale
 = 1 exp 1  + 2 exp 2    [0; 2]
4) Passare parametri aggiuntivi alla funzione modello
21A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Esempio: fitting di una funzione esponenziale
 = 1 exp 1  + 2 exp 2    [0; 2]
5) Principali opzioni per personalizzare il risultato del fitting
x0 = [1 1 1 0]
options = optimset('Display', 'none');
options.TolFun = 1e-6;
options.TolX = 1e-6;
options.MaxFunEvals = 1e6;
options.MaxIter = 1e6;
lb = [0. 5. 5. 0.];
ub = [5. 15. 10. 3.];
22
PARTE 3
Esercitazione: implementazione e fitting di modelli
bi-compartimentali ad un dataset PET
A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Link per scaricare i dati sperimentali per lesercitazione
23A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
Punti principali
1. Implementare modello bicompartimentale mediante ode45
2. Implementare modello bicompartimentale mediante la soluzione analitica bi-esponenziale
3. Verificare che i due modelli si comportano in modo analogo simulando delle curve usando i medesimi
parametri cinetici
4. Estrarre una input function ed una curva tissutale dal dataset clinico fornito, e stimare i parametri
cinetici usando entrambe le implementazioni del modello compartimentale
5. Usando limplementazione pi湛 veloce delle due, applicare il fitting a tutti i voxel dellimmagine,
generando delle mappe parametriche
___________________________________
FACOLTATIVO: sfruttando limplementazione dellalgoritmo ml-em sviluppato in una precedente esercitazione,
cimentarsi nellimplementazione del metodo diretto di stima da sinogrammi, descritto nellultima parte della
precedente lezione.
24A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
1. Implementare modello bicompartimentale
mediante ode45
1  = 0 = 1
2  = 0 = 0
Consiglio: implementare due funzioni distinte nello stesso m-file
function Ct = modello_ode(k, t)  funzione principale che calcola luscita della ode45 e da in
output Ct=C(:,1)+C(:,2);
function Cp = sistema_ode(t,C,param)  funzione interna in cui vengono esplicitate le due equazioni
differenziali del sistema
25A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
2. Implementare modello bicompartimentale
mediante la soluzione analitica bi-esponenziale
  =      +     
1 = 1
3 + 4  1
2  1
2 = 1
2  3  4
2  1
1 =
2 + 3 + 4  2 + 3 + 4
2  42 4
2
2 =
2 + 3 + 4 + 2 + 3 + 4
2  42 4
2
function Ct = modello_exp(k, time)
Questa funzione deve prendere gli stessi
ingressi della precedente (le 4 costanti del
modello compartimentale e il vettore dei tempi)
e svolgere al suo interno la conversione nel set
di variabili ausiliarie prima di calcolare  (t).
26A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
3. Verificare che i due modelli si comportano in
modo analogo
Simulare le risposte impulsive (IRF) dei
due tessuti con i seguenti valori di
ingresso:
 = 0: 35; %  $
 = [0.3 0.5 0.6 0.1];
27A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
4. Stimare i parametri cinetici dai dati sperimentali (1/2)
1. Importare il dataset allegato allesercitazione
2. Estrarre 2 curve tempo-attivit dalla matrice 4D Volume
 ROI Input function: slice 7, time frame 4
 ROI tessuto: slice 23, time frame 24
3. Importare dalla struttura PETInfo il vettore dei tempi:
 time = mean(PETInfo.time,2)./60;
4. Implementare le formule riportate nella diapositiva 33 della lezione precedente
utilizzando la funzione riportata nella prossima slide. Usare questultima come
ingresso allalgoritmo di ottimizzazione lsqcurvefit
5. Impostare le seguenti opzioni di ottimizzazione:
 lb = [ 0. 0. 0. 0. 0. ]; % K1 k2 k3 k4 vB
 ub= [ 1. 1. 1. 1. 1. ]; % K1 k2 k3 k4 vB
 k0= [ 0.1 0.1 0.01 0.01 0.1]; % K1 k2 k3 k4 vB
28A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
function Ct = modello_conv_IF(k, time, Cp)
vB = k(5);
dt = 0.1;
t = 0:dt:time(end);
IF = max(0,interp1(time,Cp,t,'linear',0) );
sol = conv(modello_exp(k, t), IF)*dt;
tsol = (0:dt:2*max(t));
% Taking into account natural radioactive decay
dk = log(2)/109.8; % radioactive decay constant for F-18
sol = sol .* exp(-dk * tsol);
% Taking into account blood fraction in tissue
sol = max(0,interp1(tsol,sol,time,'linear',0) );
Ct = (1-vB)*sol + vB* Cp;
Ct(Ct<=0) = eps; K1 k2 k3 k4 vB
0.2820 0.5087 0.6218 0.0804 0.0656
4. Stimare i parametri cinetici dai dati sperimentali (2/2)
29A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
5. Generazione di mappe parametriche
1. Importare il dataset allegato allesercitazione
2. Estrarre 1 curva tempo-attivit dalla matrice 4D Volume relativa alla input function (ROI da slice 7, time
frame 4)
3. Importare dalla struttura PETInfo il vettore dei tempi:
 time = mean(PETInfo.time,2)./60;
4. Scegliere una fetta del volume PET importato (ad esempio la 24 da cui si 竪 estratta la ROI precedente o
qualsiasi altra a piacere) e fittare voxel per voxel il modello, come fatto al punto precedente.
 img = squeeze(Volume(:,:,24,:));
30A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
5. Generazione di mappe parametriche
Consiglio
Impostare un filtro che riduca il numero di pixel da fittare, per
accelerare lesecuzione del codice ed anche per ottenere delle mappe
pi湛 pulite (evitando di fittare anche pixel di sfondo). Le mappe qui
riportate sono ottenute:
 Moltiplicando il volume importato x1000 (img = img.*1000)
 Fittando solo le curve estratte da img tali che (max(curva)>=15)
31A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
6. Stima diretta dei parametri da sinogramma
(FACOLTATIVO)
1. Importare il dataset allegato allesercitazione
2. Estrarre 1 curve tempo-attivit dalla matrice 4D Volume relativa all input function (slice 7, time frame 4)
3. Importare dalla struttura PETInfo il vettore dei tempi:
 time = mean(PETInfo.time,2)./60;
4. Scegliere una fetta del volume PET importato (ad esempio la 24 da cui si 竪 estratta la ROI precedente o qualsiasi altra
a piacere) e fittare voxel per voxel il modello, come fatto al punto precedente.
5. Richiamare lesercitazione sullalgoritmo di ricostruzione MLEM (28 Ottobre 2016) e:
 utilizzare la matrice di sistema (A) per convertire il volume PET in un sinogramma dinamico (come fatto con il fantoccio laltra volta)
 copiare il blocco di codice che esegue 1 iterazione di MLEM, facendo lipotesi che il sinogramma non abbia artefatti da correggere
6. Implementare il metodo diretto di stima parametrica, alternando una iterazione MLEM ad un fitting dellintero
volume ricostruito, come svolto al punto 5.
32A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
6. Stima diretta dei parametri da sinogramma
(FACOLTATIVO)
Ad

Recommended

CAMBRIDGE A2 HISTORY: STALIN QUESTIONS AND ANSWERS
CAMBRIDGE A2 HISTORY: STALIN QUESTIONS AND ANSWERS
George Dumitrache
FLASH REVISE CARDS - STRENGTH THROUGH JOY
FLASH REVISE CARDS - STRENGTH THROUGH JOY
George Dumitrache
Modelli E Strumenti Software Per La Valutazione Di Protocolli Di Terapia Insu...
Modelli E Strumenti Software Per La Valutazione Di Protocolli Di Terapia Insu...
Cesare Armandola
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)
STELITANO
Cn01 matlabmat-inf-090304063949-phpapp02
Cn01 matlabmat-inf-090304063949-phpapp02
Jose Aldo Ruiz Ycanaque
Support Vector Machines: concetti ed esempi
Support Vector Machines: concetti ed esempi
Gioele Ciaparrone
Invarianza di un politopo
Invarianza di un politopo
Vittoriano Muttillo
Umano vs Computer: un esempio pratico
Umano vs Computer: un esempio pratico
Francesco Sblendorio
Introduzione a Matlab
Introduzione a Matlab
Marco Suma
Algoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessa
Vittoriano Muttillo
Metodi per la soluzione di problemi di programmazione non lineare
Metodi per la soluzione di problemi di programmazione non lineare
Luca Vitale
Algoritmi di ordinamento
Algoritmi di ordinamento
Marco Liverani
Matlab: Introduzione e comandi base
Matlab: Introduzione e comandi base
Majong DevJfu
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
Angela Cristina
Appunti di Elaborazione automatica dei dati: il simplesso
Appunti di Elaborazione automatica dei dati: il simplesso
profman
Simulation and analysis of a linear system in MATLAB
Simulation and analysis of a linear system in MATLAB
AlessioSechi
Minimax regret solution to linear programming problems with an interval obje...
Minimax regret solution to linear programming problems with an interval obje...
NicolasTortora
Appunti di Elaborazione automatica dei dati: matrici e matlab
Appunti di Elaborazione automatica dei dati: matrici e matlab
profman
L'algoritmo
L'algoritmo
Piera Ingala
Rango di una matrice e teorema di rouche capelli
Rango di una matrice e teorema di rouche capelli
Nicola Iantomasi
Syntactical errors detection 1
Syntactical errors detection 1
LucaPostiglione2
Flow chart
Flow chart
orestJump
Correzione Flow Chart Numeri Compresi
Correzione Flow Chart Numeri Compresi
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Linguaggio V.B.A.
Linguaggio V.B.A.
Agabiti25
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Nicola Iantomasi
Acp
Acp
Matteo Maponi
Modellazione tramite geometria frattale
Modellazione tramite geometria frattale
Massimiliano Leone
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...
Francesco Andreuzzi

More Related Content

Similar to Kinetic_Modeling_02_12_2016 (20)

Introduzione a Matlab
Introduzione a Matlab
Marco Suma
Algoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessa
Vittoriano Muttillo
Metodi per la soluzione di problemi di programmazione non lineare
Metodi per la soluzione di problemi di programmazione non lineare
Luca Vitale
Algoritmi di ordinamento
Algoritmi di ordinamento
Marco Liverani
Matlab: Introduzione e comandi base
Matlab: Introduzione e comandi base
Majong DevJfu
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
Angela Cristina
Appunti di Elaborazione automatica dei dati: il simplesso
Appunti di Elaborazione automatica dei dati: il simplesso
profman
Simulation and analysis of a linear system in MATLAB
Simulation and analysis of a linear system in MATLAB
AlessioSechi
Minimax regret solution to linear programming problems with an interval obje...
Minimax regret solution to linear programming problems with an interval obje...
NicolasTortora
Appunti di Elaborazione automatica dei dati: matrici e matlab
Appunti di Elaborazione automatica dei dati: matrici e matlab
profman
L'algoritmo
L'algoritmo
Piera Ingala
Rango di una matrice e teorema di rouche capelli
Rango di una matrice e teorema di rouche capelli
Nicola Iantomasi
Syntactical errors detection 1
Syntactical errors detection 1
LucaPostiglione2
Flow chart
Flow chart
orestJump
Correzione Flow Chart Numeri Compresi
Correzione Flow Chart Numeri Compresi
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Linguaggio V.B.A.
Linguaggio V.B.A.
Agabiti25
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Nicola Iantomasi
Acp
Acp
Matteo Maponi
Modellazione tramite geometria frattale
Modellazione tramite geometria frattale
Massimiliano Leone
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...
Francesco Andreuzzi
Introduzione a Matlab
Introduzione a Matlab
Marco Suma
Algoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessa
Vittoriano Muttillo
Metodi per la soluzione di problemi di programmazione non lineare
Metodi per la soluzione di problemi di programmazione non lineare
Luca Vitale
Algoritmi di ordinamento
Algoritmi di ordinamento
Marco Liverani
Matlab: Introduzione e comandi base
Matlab: Introduzione e comandi base
Majong DevJfu
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
Angela Cristina
Appunti di Elaborazione automatica dei dati: il simplesso
Appunti di Elaborazione automatica dei dati: il simplesso
profman
Simulation and analysis of a linear system in MATLAB
Simulation and analysis of a linear system in MATLAB
AlessioSechi
Minimax regret solution to linear programming problems with an interval obje...
Minimax regret solution to linear programming problems with an interval obje...
NicolasTortora
Appunti di Elaborazione automatica dei dati: matrici e matlab
Appunti di Elaborazione automatica dei dati: matrici e matlab
profman
Rango di una matrice e teorema di rouche capelli
Rango di una matrice e teorema di rouche capelli
Nicola Iantomasi
Syntactical errors detection 1
Syntactical errors detection 1
LucaPostiglione2
Flow chart
Flow chart
orestJump
Linguaggio V.B.A.
Linguaggio V.B.A.
Agabiti25
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Nicola Iantomasi
Modellazione tramite geometria frattale
Modellazione tramite geometria frattale
Massimiliano Leone
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...
Francesco Andreuzzi

Kinetic_Modeling_02_12_2016

  • 1. MATLAB: soluzione di equazioni differenziali e fitting non lineare Focus principale sullutilizzo delle funzioni ode45 e lsqcurvefit Michele Scipioni Ph.D. Student Dip. Ingegneria dellinformazione Universit di Pisa Corso di Immagini Biomediche, 02 Dicembre 2016
  • 2. 2 Outline PARTE 1 - Soluzione di un sistema di equazioni differenziali in MATLAB PARTE 2 - Fitting di modelli non lineari in MATLAB PARTE 3 - Esercitazione: implementazione e fitting di modelli bi-compartimentali A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
  • 3. 3 PARTE 1 Soluzione di un sistema di equazioni differenziali in MATLAB A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
  • 4. 4 Obiettivo A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare MODELLO BI-COMPARTIMENTALE DESCRITTO DA UN SISTEMA DI 2 EQUAZIONI DIFFERENZIALI 1. Prendere confidenza con le funzioni integrate in MATLAB dedicate alla soluzione delle ODE. 2. Impostare le opzioni e i parametri richiesti dal motore di soluzione ODE. 3. Passare il nostro modello ed eventuali parametri aggiuntivi al risolutore.
  • 5. 5A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Risoluzione numerica di equazioni differenziali MATLAB fornisce un gran numero di strumenti per risolvere numericamente delle equazioni differenziali. Noi ci concentraremo sui due metodi principali gi integrati in tutte le versioni, ossia le funzioni ode23 e ode45, entrambe basate sul metodo di risoluzione Runge-Kutta. Entrambe queste funzioni si presentano con la medesima interfaccia e si aspettano gli stessi parametri in ingresso. y: vettore di soluzione, in cui ogni colonna 竪 associata ad una variabile (pi湛 di una se lavoriamo con un sistema di ODE), ed ogni riga rappresenta un istante temporale riferito al vettore t. odefun: funzione esterna (m-file) che restituisce un vettore colonna con Iuscita del sistema ODE tspan: specifica il vettore dei tempi di integrazione per risolvere il Sistema se tspan 竪 un vettore di due elementi, questi sono trattati come tempi di inizio e fine, e gli step di integrazione intermedi sono scelti arbitrariamente dal risolutore se tspan ha pi湛 di 2 valori, i risultati sono calcolati soltanti per gli specifici istanti temporali richiesti y0: vettore delle condizioni iniziali per (t=0) [t, y] = ode45(odefun, tspan, y0)
  • 6. 6A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: equazione differenziale del primo ordine = ヰ2 + ; 0 = 1 [0; 0.5] 1) Definire la funzione : , =
  • 7. 7A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: equazione differenziale del primo ordine = ヰ2 + ; 0 = 1 [0; 0.5] 2) Passare la funzione appena creata in input al risolutore ode45()
  • 8. 8A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: equazione differenziale del primo ordine = ヰ2 + ; 0 = 1 [0; 0.5] 3) Specificare un tspan personalizzato Quello che 竪 interessante puntualizzare riguardo il tspan 竪 che MATLAB in background continua ad usare pi湛 o meno lo stesso timestep predefinito per risolvere lequazione differenziale, variando soltanto il modo in cui restituisce in output il risultato finale. Lavorare con un tspan personalizzato quindi non altera in modo eccessivo laccuratezza della soluzione numerica.
  • 9. 9A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: equazione differenziale del primo ordine = ヰ2 + ; 0 = 1 [0; 0.5] 4) Opzioni di personalizzazione Ad ogni iterazione del risolutore viene calcolato un errore. Se chiamiamo lapprossimazione di allo step k, ed lerrore corrispondente, MATLAB adatta il suo passo di integrazione in modo che risulti: (告諮 | |, 諮), Dove i valori di default sono = 103 = .001 and 基 = 106 = .000001. N.B. Con questa convenzione, se la soluzione | | diventa molto grande, di conseguenza lo 竪 anche lerrore, e per evitare che il risolutore si arresti prima di convergere 竪 necessario ridurre RelTol. Viceversa, se la soluzione tende ad avere valori molto piccoli (< 106 ), allora 竪 AbsTol a dover essere ridotto.
  • 10. 10A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: equazione differenziale del primo ordine = ヰ2 + ; 0 = 1 [0; 0.5] 4) Opzioni di personalizzazione = ヰ2 + ; = 1 1
  • 11. 11A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: sistemi di ODE = 1,2 1 0 = 2 = 0,6 2 0 = 1 = 0,8 = 0,3 Modello Predator-Prey Vettore colonna 212 2 211 1 yyy dt dy yyy dt dy 駕
  • 12. 12A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: passaggio di parametri aggiuntivi Immaginiamo di voler continuare a lavorare allesempio del modello predatore-preda, ma variando il valore delle costanti del modello , , e , ma ovviamente senza modificare manualmente il file MATLAB.
  • 13. 13 PARTE 2 Fitting di modelli non lineari in MATLAB A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare
  • 14. 14A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Obiettivo STIMA AI MINIMI QUADRATI 1. Prendere confidenza con le funzioni integrate in MATLAB dedicate al fitting non lineare. 2. Impostare le opzioni e i parametri richiesti dalla funzione lsqcurvefit. 3. Passare il nostro modello ed eventuali parametri aggiuntivi alla funzione di fitting.
  • 15. 15A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Least Squares Estimator Lobiettivo di uno stimatore ai minimi quadrati 竪 trovare un vettore x che sia un minimizzatore locale della funzione data dalla somma degli scarti quadratici tra curva misurata e uscita del modello teorico, possibilmente sottoposta ad alcuni vincoli: () 2 2 = 告 2 () tale che 揃 , 基 揃 = , .
  • 16. 16A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare lsqcurvefit [x,resnorm,residual,exitflag,output] = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)INPUT (, ): funzione non lineare che fornisce in output la stima della curva da fittare : vettore dei parametri incogniti : variabile indipendete (generalmente il vettore temporale a cui 竪 campionato ydata) : stima inziale dei coefficienti del modello da fittare : curva misurata (deve essere della stessa misura delloutput di fun) , : lower e upper bounds tali che (devono avere stessa dimensione di x0, o essere matrici vuote se non si 竪 interessati a vincolare la stima parametrica) : opzioni di ottimizzazione OUTPUT : parametri del modello stimati (stessa dimensione di x0 e del vettore di parametri preso in input da fun(x,xdata)) : somma degli scarti quadratici (residui) corrispondenti alloutput del fitting : vettore dei residui [fun(x,xdata)-ydata] alla soluzione x : valore che descrive la condizione di uscita : struttura contenente informazioni riassuntive sul processo di ottimizzazione
  • 17. 17A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: fitting di una funzione esponenziale = 1 exp 1 + 2 exp 2 [0; 2] 1) Definire la funzione ヰヰ: = (, )
  • 18. 18A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: fitting di una funzione esponenziale = 1 exp 1 + 2 exp 2 [0; 2] 2) Usiamo il modello implementato per simulare una misura rumorosa ydata
  • 19. 19A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: fitting di una funzione esponenziale = 1 exp 1 + 2 exp 2 [0; 2] 3) Passare la funzione modello e il vettore misurato con input ad lsqcurvefit
  • 20. 20A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: fitting di una funzione esponenziale = 1 exp 1 + 2 exp 2 [0; 2] 4) Passare parametri aggiuntivi alla funzione modello
  • 21. 21A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Esempio: fitting di una funzione esponenziale = 1 exp 1 + 2 exp 2 [0; 2] 5) Principali opzioni per personalizzare il risultato del fitting x0 = [1 1 1 0] options = optimset('Display', 'none'); options.TolFun = 1e-6; options.TolX = 1e-6; options.MaxFunEvals = 1e6; options.MaxIter = 1e6; lb = [0. 5. 5. 0.]; ub = [5. 15. 10. 3.];
  • 22. 22 PARTE 3 Esercitazione: implementazione e fitting di modelli bi-compartimentali ad un dataset PET A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Link per scaricare i dati sperimentali per lesercitazione
  • 23. 23A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare Punti principali 1. Implementare modello bicompartimentale mediante ode45 2. Implementare modello bicompartimentale mediante la soluzione analitica bi-esponenziale 3. Verificare che i due modelli si comportano in modo analogo simulando delle curve usando i medesimi parametri cinetici 4. Estrarre una input function ed una curva tissutale dal dataset clinico fornito, e stimare i parametri cinetici usando entrambe le implementazioni del modello compartimentale 5. Usando limplementazione pi湛 veloce delle due, applicare il fitting a tutti i voxel dellimmagine, generando delle mappe parametriche ___________________________________ FACOLTATIVO: sfruttando limplementazione dellalgoritmo ml-em sviluppato in una precedente esercitazione, cimentarsi nellimplementazione del metodo diretto di stima da sinogrammi, descritto nellultima parte della precedente lezione.
  • 24. 24A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare 1. Implementare modello bicompartimentale mediante ode45 1 = 0 = 1 2 = 0 = 0 Consiglio: implementare due funzioni distinte nello stesso m-file function Ct = modello_ode(k, t) funzione principale che calcola luscita della ode45 e da in output Ct=C(:,1)+C(:,2); function Cp = sistema_ode(t,C,param) funzione interna in cui vengono esplicitate le due equazioni differenziali del sistema
  • 25. 25A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare 2. Implementare modello bicompartimentale mediante la soluzione analitica bi-esponenziale = + 1 = 1 3 + 4 1 2 1 2 = 1 2 3 4 2 1 1 = 2 + 3 + 4 2 + 3 + 4 2 42 4 2 2 = 2 + 3 + 4 + 2 + 3 + 4 2 42 4 2 function Ct = modello_exp(k, time) Questa funzione deve prendere gli stessi ingressi della precedente (le 4 costanti del modello compartimentale e il vettore dei tempi) e svolgere al suo interno la conversione nel set di variabili ausiliarie prima di calcolare (t).
  • 26. 26A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare 3. Verificare che i due modelli si comportano in modo analogo Simulare le risposte impulsive (IRF) dei due tessuti con i seguenti valori di ingresso: = 0: 35; % $ = [0.3 0.5 0.6 0.1];
  • 27. 27A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare 4. Stimare i parametri cinetici dai dati sperimentali (1/2) 1. Importare il dataset allegato allesercitazione 2. Estrarre 2 curve tempo-attivit dalla matrice 4D Volume ROI Input function: slice 7, time frame 4 ROI tessuto: slice 23, time frame 24 3. Importare dalla struttura PETInfo il vettore dei tempi: time = mean(PETInfo.time,2)./60; 4. Implementare le formule riportate nella diapositiva 33 della lezione precedente utilizzando la funzione riportata nella prossima slide. Usare questultima come ingresso allalgoritmo di ottimizzazione lsqcurvefit 5. Impostare le seguenti opzioni di ottimizzazione: lb = [ 0. 0. 0. 0. 0. ]; % K1 k2 k3 k4 vB ub= [ 1. 1. 1. 1. 1. ]; % K1 k2 k3 k4 vB k0= [ 0.1 0.1 0.01 0.01 0.1]; % K1 k2 k3 k4 vB
  • 28. 28A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare function Ct = modello_conv_IF(k, time, Cp) vB = k(5); dt = 0.1; t = 0:dt:time(end); IF = max(0,interp1(time,Cp,t,'linear',0) ); sol = conv(modello_exp(k, t), IF)*dt; tsol = (0:dt:2*max(t)); % Taking into account natural radioactive decay dk = log(2)/109.8; % radioactive decay constant for F-18 sol = sol .* exp(-dk * tsol); % Taking into account blood fraction in tissue sol = max(0,interp1(tsol,sol,time,'linear',0) ); Ct = (1-vB)*sol + vB* Cp; Ct(Ct<=0) = eps; K1 k2 k3 k4 vB 0.2820 0.5087 0.6218 0.0804 0.0656 4. Stimare i parametri cinetici dai dati sperimentali (2/2)
  • 29. 29A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare 5. Generazione di mappe parametriche 1. Importare il dataset allegato allesercitazione 2. Estrarre 1 curva tempo-attivit dalla matrice 4D Volume relativa alla input function (ROI da slice 7, time frame 4) 3. Importare dalla struttura PETInfo il vettore dei tempi: time = mean(PETInfo.time,2)./60; 4. Scegliere una fetta del volume PET importato (ad esempio la 24 da cui si 竪 estratta la ROI precedente o qualsiasi altra a piacere) e fittare voxel per voxel il modello, come fatto al punto precedente. img = squeeze(Volume(:,:,24,:));
  • 30. 30A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare 5. Generazione di mappe parametriche Consiglio Impostare un filtro che riduca il numero di pixel da fittare, per accelerare lesecuzione del codice ed anche per ottenere delle mappe pi湛 pulite (evitando di fittare anche pixel di sfondo). Le mappe qui riportate sono ottenute: Moltiplicando il volume importato x1000 (img = img.*1000) Fittando solo le curve estratte da img tali che (max(curva)>=15)
  • 31. 31A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare 6. Stima diretta dei parametri da sinogramma (FACOLTATIVO) 1. Importare il dataset allegato allesercitazione 2. Estrarre 1 curve tempo-attivit dalla matrice 4D Volume relativa all input function (slice 7, time frame 4) 3. Importare dalla struttura PETInfo il vettore dei tempi: time = mean(PETInfo.time,2)./60; 4. Scegliere una fetta del volume PET importato (ad esempio la 24 da cui si 竪 estratta la ROI precedente o qualsiasi altra a piacere) e fittare voxel per voxel il modello, come fatto al punto precedente. 5. Richiamare lesercitazione sullalgoritmo di ricostruzione MLEM (28 Ottobre 2016) e: utilizzare la matrice di sistema (A) per convertire il volume PET in un sinogramma dinamico (come fatto con il fantoccio laltra volta) copiare il blocco di codice che esegue 1 iterazione di MLEM, facendo lipotesi che il sinogramma non abbia artefatti da correggere 6. Implementare il metodo diretto di stima parametrica, alternando una iterazione MLEM ad un fitting dellintero volume ricostruito, come svolto al punto 5.
  • 32. 32A.A. 2016/2017 MATLAB: soluzione di equazioni differenziali e fitting non lineare 6. Stima diretta dei parametri da sinogramma (FACOLTATIVO)