In [2]:
import tellurium as te
import urllib2
%matplotlib inline
Lade mithilfe von urllib2 das Antimony-Modell des "Repressilator" herunter. Benutze dazu die urllib2 Methoden urlopen() und read()
Die URL für den Repressilator lautet: http://antimony.sourceforge.net/examples/biomodels/BIOMD0000000012.txt
Elowitz, M. B., & Leibler, S. (2000). A synthetic oscillatory network of transcriptional regulators. Nature, 403(6767), 335-338.
In [3]:
Repressilator =
Erstelle eine Instanz von roadrunner, indem du gleichzeitig den Repressilator als Modell lädst. Benutze dazu loada() von tellurium.
In [4]:
Im folgenden Teil wollen wir einige der Methoden von telluriums roadrunner ausprobieren. Lass dir dazu das Modell als Antimony oder SBML anzeigen. Dies erreichst du mit getAntimony() oder getSBML().
In [5]:
In [6]:
Achtung: Obwohl resetToOrigin() das Modell in den ursprünglichen Zustand zurück setzt, bleiben Solver-spezifische Einstellungen erhalten. Daher benutze am besten immer te.loada() als vollständigen Reset!
Mit getIntegrator() ist es möglich, den Solver und dessen gesetzte Einstellungen anzeigen zu lassen.
In [7]:
rr = te.loada(Repressilator)
Ändere den verwendeten Solver von 'CVODE' auf Runge-Kutta 'rk45' und lass dir die Settings nochmals anzeigen. Verwende dazu setIntegrator() und getIntegrator(). Was fällt auf?
In [8]:
rr = te.loada(Repressilator)
Simuliere den Repressilator von 0s bis 1000s und plotte die Ergebnisse für verschiedene steps-Werte (z.b. steps = 10 oder 10000) in der simulate-Methode. Was macht das Argument steps?
In [9]:
rr = te.loada(Repressilator)
Benutze weiterhin 'CVODE' und verändere den Paramter 'relative_tolerance' des Solvers (z.b. 1 oder 10). Verwendete dabei steps = 10000 in simulate(). Was fällt auf?
Hinweis - die nötige Methode lautet roadrunner.getIntegrator().setValue().
In [1]:
rr = te.loada(Repressilator)
Oben haben wir gesehen, dass tellurium eine Instanz von RoadRunner erzeugt, wenn ein Modell eingelesen wird.
Außerdem ist der Zugriff auf das eigentliche Modell möglich. Unter Verwendung von .model gibt es zusätzliche Methoden um das eigentliche Modell zu manipulieren:
In [11]:
rr = te.loada(Repressilator)
print type(rr)
print type(rr.model)
A) Sieh dir die Implementierung des Modells 'Repressilator' an, welche Paramter gibt es?
B) Erstelle einen Parameterscan, welcher den Wert des Paramters mit der Bezeichnung 'n' im Repressilator ändert. (Beispielsweise für n=1,n=2,n=3,...)
Lasse das Modell für jedes gewählte 'n' simulieren.
Beantworte dazu folgende Fragen:
a) Welchen Zweck erfüllt 'n' im Modell im Hinblick auf die Reaktion, in der 'n' auftaucht?
b) Im Gegensatz dazu, welchen Effekt hat 'n' auf das Modellverhalten?
c) Kannst du einen Wert für 'n' angeben, bei dem sich das Verhalten des Modells qualitativ ändert?
C) Visualisiere die Simulationen. Welche Art von Plot ist günstig, um die Modellsimulation darzustellen? Es gibt mehrere geeignete Varianten, aber beschränke die Anzahl der Graphen im Plot(z.b. wähle eine Spezies und plotte).
Hinweise:
Nutze die "Autovervollständigung" des Python-Notebook und außerdem die offizielle Dokumentation von RoadRunner, um die Methoden zu finden, die für die Implementierung eines Parameterscans notwendig sind. Natürlich kannst du auch das Notebook von der Tellurium Einführung als Hilfe benutzen.
Ziehe in Erwägung, dass das Modell einen oder mehrere Resets benötigt. Überlege, an welcher Stelle deiner implementierung und welche Reset-Methode du idealerweise einsetzen solltest.
In [12]:
import matplotlib.pyplot as plt
import numpy as np
rr = te.loada(Repressilator)
In [26]:
import matplotlib.pyplot as plt
import numpy as np
rr = te.loada(Repressilator)