Problemlösning 2 Stokastisk simulering, Problemlösning 2 Stokastisk simulering 1/13
Strategier Flera lösningsmetoder är möjliga Deterministisk/kontinuerlig metod (ODE-lösare) Stokastisk/diskret (Continuous time discrete space Markov Process), Problemlösning 2 Stokastisk simulering 2/13
Simulering av kemiska system Lȧt oss ha ett system med 3 reaktiva ämnen A, B, och C som reagerar enligt A + B k 1AB 0, B k 3B C, A k 2A B, C k 4C 0. Reaktionsschemat kan skrivas som en kontinuerlig process i tiden som ett system av ODE:er, da dt = k 1AB k 2 A, db dt = k 1AB + k 2 A k 3 B, dc dt = k 3B k 4 C., Problemlösning 2 Stokastisk simulering 3/13
Stor skala (miljoner molekyler) A, B och C tolkas som koncentrationer som tar värden mellan 0 och 1. Propensiteterna, ω 1 (a, b, c) = k 1 AB, ω 2 (a, b, c) = k 2 A, ω 3 (a, b, c) = k 3 B, ω 4 (a, b, c) = k 4 C, betecknar reaktionshastigheterna., Problemlösning 2 Stokastisk simulering 4/13
Numerisk lösning En kontinuerlig modell löses med en ODE-lösare; 1 function dudt = f(t,u,p) 2 A = U (1); 3 B = U (2); 4 C = U (3); 5 6 dadt = -p.k1*a*b - p.k2*a; 7 dbdt = -p.k1*a*b + p.k2*a - p.k3*b; 8 dcdt = p.k3*b - p.k4*c; 9 10 dudt = [ dadt ; dbdt ; dcdt ];, Problemlösning 2 Stokastisk simulering 5/13
Numerisk lösning Skapa initialdata i samma ordning som variablerna är definierade i funktions-filen; 1 x0 = [A0; B0; C0 ]; Skicka med parametrarna; 1 p.k1 = k1; 2 p.k2 = k2; 3 p.k3 = k3; 4 p.k4 = k4; Lös systemet; 1 [t,u] = ode45 (@(t,u)f(t,u,p),[t0, tn],x0 ); eller 1 [t,u] = ode15s (@(t,u)f(t,u,p),[t0, tn],x0 );, Problemlösning 2 Stokastisk simulering 6/13
Liten skala (enstaka molekyler) A, B, och C tolkas som antalet molekyler och antar icke-negativa heltalsvärden. Propensiteterna betecknar nu sannolikheten att en reaktion äger rum under en tidsenhet. Processen är alltsȧ inte längre kontinuerlig. T.ex. reaktionen A + B k 1AB 0 betyder att antalet av molekylerna A och B minskar med ett, med sannolikhet k 1 AB per tidsenhet., Problemlösning 2 Stokastisk simulering 7/13
Stökiometri Vi kan istället skriva upp systemet pȧ stökiometrisk form; r Reaktion ω r 1 A och B förbrukas ω 1 = k 1 AB 2 A blir B ω 2 = k 2 A 3 B blir C ω 3 = k 3 B 4 C förbrukas ω 4 = k 4 C eller som stökiometri-matris/vektorer; 1 1 0 N = 1 1 0 0 1 1, n r = N(r, :). 0 0 1 En reaktion kan dȧ skrivas som x ωr (x) x + n r., Problemlösning 2 Stokastisk simulering 8/13
Gillespies algoritm I allmänhet kan vilket system som helst simuleras genom följande algoritm, 1 function x = ssa (U, N, x0, t0, tf) 2 x = x0; 3 t = t0; 4 while t < tf 5... 6 tau = get_next_reaction_time (...); 7 r = get_next_reaction_number (...); 8 x = x + N(r,:) ; 9 t = t + tau ; 10 end, Problemlösning 2 Stokastisk simulering 9/13
Huvuduppgift Er huvuduppgift för miniprojekt 2 är att; Skriv funktionen get next reaction time Skriv funktionen get next reaction number Stoppa in i Gillespies algoritm pȧ sidan 21 i Hellanders kompendium 2000 1800 A R 1600 1400 1200 Number 1000 800 600 400 200 0 0 10 20 30 40 50 60 70 80 90 100 Time, Problemlösning 2 Stokastisk simulering 10/13
Tips get next reaction time Sampla slumptal frȧn exponentialfördelningen get next reaction number Hitta minsta r sȧ att a0 (x)u 2 r ω k (x) cumsum(x), find(expr) k=1, Problemlösning 2 Stokastisk simulering 11/13
Anmärkning Vi vet inte pȧ förhand hur mȧnga tidssteg som behövs. Matlabs dynamiska minnesallokering är SJUKT lȧngsam. Ca 250 000 tidssteg mellan t = 0 och t = 100. 1 A = R = zeros ( miljoner,1); 2 while t < tf 3 A(i) = X (1); R(i) = X( end ); 4 >> Elapsed time is 9.631500 seconds 1 while t < tf 2 A(i) = X (1); R(i) = X( end ); 3 >> Elapsed time is 667.979062 seconds, Problemlösning 2 Stokastisk simulering 12/13
Lycka till! Deadline 12:e oktober, Problemlösning 2 Stokastisk simulering 13/13