stoch-smad issueshttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues2020-09-02T09:44:03+02:00https://gitlab.rlp.net/kolbe/stoch-smad/-/issues/10Globale Optimierung mit MEIGO2020-09-02T09:44:03+02:00Niklas KolbeGlobale Optimierung mit MEIGOGlobale Optimierung unter MEIGO ist fertig implementiert, muss aber noch durchlaufen.
Erster Versuch auf bernstein, einem Hochleistungsrechner der num Mathematik in Mainz ist zwischendrin abgebrochen wegen Fehler beim Zugriff auf die Fe...Globale Optimierung unter MEIGO ist fertig implementiert, muss aber noch durchlaufen.
Erster Versuch auf bernstein, einem Hochleistungsrechner der num Mathematik in Mainz ist zwischendrin abgebrochen wegen Fehler beim Zugriff auf die Festplatte. Nach Rücksprache mit Kai, der sich um die IT kuemmert, liegt das an dem Netzlaufwerk auf das ich die Daten schreiben wollte.
Zweiter Versuch auf bernstein, diesmal sollen die Ergebnisse auf die lokale Festplatte geschrieben werden, hat im ersten Anlauf auch nicht funktioniert. auch wieder wegen Zugriffsfehler auf die Festplatte. aktuell versuche ich einen zweiten Lauf mit kleinen aenderungen, aber ich befürchte, der wird auch irgendwann wegen diesem Fehler abbrechen. Eventuell komm ich so zu ein Paar weitere Informationen zu dem Problem.
Hat noch jemand eine andere Idee, wo wir die Rechnungen laufen lassen koennen? Bei mogon bin ich mir unsicher, ob der Job innerhalb der maximalen 5 Tage fertig wird. Lorenz, du hattest noch einen Rechner am IMB erwähnt, aber da gab es, soweit ich mich an die Diskussion erinnere, nicht die Matlab-Version, die wir brauchen, oder...?Niklas KolbeLorenz RipkaBammert, Lukas-MalteNiklas Kolbehttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues/9Schöne Plots2020-08-21T04:13:27+02:00Niklas KolbeSchöne PlotsMir ist gestern als ich ein paar der Violin-Plots anpassen wollte aufgefallen, dass wir keine funktionierenden Skripte zum Erstellen solcher Plots im Repository hatten.
Also habe ich bei der Gelegenheit ein neues geschrieben: draw_vplot...Mir ist gestern als ich ein paar der Violin-Plots anpassen wollte aufgefallen, dass wir keine funktionierenden Skripte zum Erstellen solcher Plots im Repository hatten.
Also habe ich bei der Gelegenheit ein neues geschrieben: draw_vplots_paths.m im Hauptverzeichnis.
Das Skript erstellt violin plots und Pfade fuer den aktuellen best fit in publizierbarer Qualität.
Dafür wird die Größe und die Schriftart angepasst. Ich hab ausserdem die Linien etwas dicker gemacht.
Bilder werden als eps, png und fig-Files gespeichert. Falls ihr noch Verbesserungsideen habt, dann könnt
ihr das entsprechend einbauen.
Um es zu benutzen müsst ihr nur den Pfad zu dem Seafile-Ordner oben im Skript an eure Ordnerstruktur anpassen.
Über dieses Skript sollten wir auch in Zukunft festhalten, was unsere aktuellen best fits sind.Niklas KolbeLorenz RipkaBammert, Lukas-MalteNiklas Kolbehttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues/8Grosses Code-Update2020-03-09T01:46:45+01:00Niklas KolbeGrosses Code-UpdateHey, ich habe unseren Code generell ueberarbeitet. Ich habe auch schon einige Tests durchgefuehrt und gecheckt, das alles stabil laeuft. Komplett fertig bin ich aber noch nicht, folgendes fehlt noch und kommt in den nächsten Wochen:
* [ ...Hey, ich habe unseren Code generell ueberarbeitet. Ich habe auch schon einige Tests durchgefuehrt und gecheckt, das alles stabil laeuft. Komplett fertig bin ich aber noch nicht, folgendes fehlt noch und kommt in den nächsten Wochen:
* [ ] Dokumentation
* [x] Ueberarbeitung der Skripte fuer mogon
* [ ] Anpassung der Funktionen fuer globale Optimierungen
* [x] Funktion zur Visualisierung mehrerer Pfade
* [x] Kleines Beispielskript zur Simulation mehrerer Pfade
Auch wenn noch nicht alles fertig ist und vieles noch nicht dokumentiert ist, koennt ihr den Code schon benutzen. Wie gehabt ist in example_path gezeigt, wie man einen einzelnen Pfad simuliert. in 2020test gibt es Funktionen die lokale Optimierungen konfigurieren und starten. Wenn etwas nicht funktioniert oder wenn ihr Fragen habt, dann schreibt das bitte hierein.
## Grundsaetzliche Neuerungen
* Der Fehler mit alterPassiveDegredation ist behoben
* Seeds werden jetzt wirklich auch bei paralleler Berechnung festgehalten. Werden Kontrollpfade verwedet, dann wird jedem Seed (der je nach Parametern verschiedene Pfade erzeugen kann) ein fester Kontrollpfad zugeordnet.
* **OOP/Klassen:** Es werden keine Structs mehr benutzt sondern Klassen mit festen Attributen. Damit stellen wir sicher, dass bloede Fehler durch falsch geschriebene Variablennamen wie mit alterPassiveDegradation nicht mehr auftreten. Ausserdem laesst sich der Code so logischer aufbauen und ist prinzipiell weniger fehleranfaellig.
* Ganz konkret gibt es jetzt Klassen fuer die Model-Parameter, die experimentellen Bedingungen, Pfadsammlungen, Burst-Statistiken und Fitting-Einstellungen. Die Klassen mit den Pfadsammlungen und Fitting-Einstellungen haben integrierte Methoden, die anderen sind einfache Containerklassen (wie Structs nur mit eingeschraenkten Moeglichkeiten fuer die Felder)
* Durch die Klasse mit den Burst-Statistiken habe ich die globals ueberfluessig gemacht und aus dem Code genommen. Das macht nicht nur den Code weniger verwirrend sondern wir haben jetzt auch die Moeglichkeiten das Fitting einfacher umzubauen und wie geplant mehrere Dosen mit mehreren Referenzstatistiken gleichzeitig zu fitten.
* Es gibt jetzt eine Funktion zum lokalen Fitten mit allen moeglichen Einstellungsmoeglickeiten ueber die Fitting-Einstellungsklasse.
* **Packages:** Funktionen sind jetzt in Packages. Das sind eigentlich nur Ordner die mit einem + Zeichen anfangen. Das macht die Struktur uebersichtlicher und der mcc Compiler versteht den Code besser. Dadurch fallen die addpath Befehle weg. Um eine andere Funktion (sagen wir simulate_path in +forward) aufrufen zu koennen muss diese im Code nun (im Beispiel durch import forward.simulate_path) importiert werden. Wenn ihr das Wurzelverzeichnis .../SMAD_STOCHASTIC/ zum matlab path hinzufuegt lassen sich durch diese imports alle unsere Funktionen von ueberall aus aufrufen.Niklas KolbeNiklas Kolbehttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues/7prediction for stimulation with 2.5pM2020-02-13T11:10:40+01:00Niklas Kolbeprediction for stimulation with 2.5pMhttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues/6Globale Optimierung mit Multistarts2020-01-18T11:09:35+01:00Niklas KolbeGlobale Optimierung mit MultistartsZur Uebersicht ueber die Fit-Ergebnisse.Zur Uebersicht ueber die Fit-Ergebnisse.Niklas KolbeNiklas Kolbehttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues/5Optimierung2019-12-07T06:59:04+01:00Niklas KolbeOptimierungIch habe etwas recherchiert - aktuelle state of the art global optimization bei aufwändigen Problemen in der Systembiologie bietet "saCeSS". Das ist der Nachfolger von eSS (enhanced scatter search) vom gleichen Autorenteam was wiederum i...Ich habe etwas recherchiert - aktuelle state of the art global optimization bei aufwändigen Problemen in der Systembiologie bietet "saCeSS". Das ist der Nachfolger von eSS (enhanced scatter search) vom gleichen Autorenteam was wiederum in MEIGO enthalten war wo wir schon einmal drüber nachgedacht haben.
Hier das zugehörige Paper:
https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-016-1452-4
Und hier der Code:
https://bitbucket.org/DavidPenas/sacess-library/src/master/
Das Programmpaket verwendet MPI, die älteren Algorithmen (z.B. das Original-eSS) sind auch mit dabei und es stehen verschiedene lokale Minimierter zur Verfügung. Darunter auch "Dynamic Hill Climbing", das sich wohl gut für stochastische Probleme eignet.
Ich denke, das Paket ist eine gute Wahl für uns. Damit wir das benutzen können, müssen wir im Grunde
* [ ] Unsere Kostenfunktion finalisieren und noch die Sachen einarbeiten, die wir gestern besprochen haben
* [ ] Die Kostenfunktion von saCeSS aus aufrufbar machen
* [ ] Sinnvolle obere und untere Grenzen für die zu fittenden Parameter wählen
* [ ] Minimiererbezogene Parameter (Toleranzen, Schrittweiten) passend auswählen
* [ ] alles so einstellen, dass der Minimierer möglichst optimal auf mogon läuft (jeweils einen Node mit 64 cpus pro lokale Minimierung benutzen, mehrere lokale Minimierungen auf verschiedenen Nodes gleichzeitig laufen lassen)Niklas KolbeNiklas Kolbehttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues/4Konsistenzcheck - neue Burst-Detection und neues stochastisches Modell2019-12-04T13:31:50+01:00Niklas KolbeKonsistenzcheck - neue Burst-Detection und neues stochastisches ModellWo wir jetzt ein neues Modell fuer das Rauschen in den Parametern und eine neue Burst-Detection haben, ist es an der Zeit erneut die Konsistenz der Kostenfunktion (modifiziert wegen neuer Detection) bezueglich des Modells (modifiziert we...Wo wir jetzt ein neues Modell fuer das Rauschen in den Parametern und eine neue Burst-Detection haben, ist es an der Zeit erneut die Konsistenz der Kostenfunktion (modifiziert wegen neuer Detection) bezueglich des Modells (modifiziert wegen neuem Parametermodell) zu pruefen.
## Vorgehen
Fuer die deterministischen Standardparameter im 100pM-Fall und das internalization Block-Modell mit sigma=0.05 und theta=0.02 fuer alle stochastischen Parameter werden 10 Mal hintereinander, ohne den Seed jeweils zurueckzusetzen, n Pfade erzeugt und anschliessend die Kostenfunktion ausgewertet. Anschliessend werden die einzelnen Komponenten der Kostenfunktion in Boxplots visualisiert.
## Stage 2
In Stage 2 des Konsistenzchecks wird zusaetzlich das 0pM Rauschen (durch Addition empirischer Daten) beachtet, was in Stage 1 zunaechst ignoriert wird.Niklas KolbeNiklas Kolbehttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues/3Parameter Modeling2019-10-30T06:04:17+01:00Niklas KolbeParameter ModelingHier koennen wir alle bisherigen Modellierungsansaetze fuer die Parameter diskutieren. Die Liste hier entspricht der von Malte (das zugehoerige Dokument habe ich angehaengt) mit zwei von mir hinzugefuegten Modellen.
Sei $`W_t`$ ein Stan...Hier koennen wir alle bisherigen Modellierungsansaetze fuer die Parameter diskutieren. Die Liste hier entspricht der von Malte (das zugehoerige Dokument habe ich angehaengt) mit zwei von mir hinzugefuegten Modellen.
Sei $`W_t`$ ein Standard Wiener Prozess. Die Modelle unten sind, je nachdem, wie sie sich schoener schreiben lassen, entweder als Funktion von $`W_t`$ oder als SDE notiert.
0. Wiener Prozess: $`P^{(0)}_t = P_0 + \sigma W_t`$
1. Arctan-Transformation: $`P^{(1)}_t = P_0(1 + \frac 2 \pi \arctan(\sigma W_t))`$
2. Produkt-Prozes: $`dP^{(2)}_t = \sigma P^{(2)}_t dW_t `$
- bzw $`P^{(2)}_t = P_0(\exp(- \frac{\sigma^2}{2} t + \sigma W_t)`$
3. Exp-Transformation: $`P^{(3)}_t = P_0 \exp( \sigma W_t)`$
- bzw $`dP^{(3)}_t = \frac{\sigma^2}{2} P^{(3)}_t dt + \sigma P^{(3)}_t dW_t `$
4. Tan-Hyperbolicus-Transformation: $`P^{(4)}_t = P_0 \tanh( \sigma W_t)`$
5. Ornstein-Uhlenbeck-Prozess: $` dP^{(5)}_t = \theta(P_0-P^{(5)}_t) dt + \sigma dW_t `$
6. Cox-Ingersoll-Ross-Modell: $` dP^{(6)}_t = \theta(P_0-P^{(6)}_t) dt + \sigma \sqrt{P^{(6)}_t} dW_t `$
[Parametermodelle.pdf](/uploads/60a97a30314eda72084d19dfd5b02888/Parametermodelle.pdf)Niklas KolbeNiklas Kolbehttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues/2Fitting of internalize block model for 2.5pM2019-08-30T15:28:42+02:00Niklas KolbeFitting of internalize block model for 2.5pMModell mit Stochastizitaet im internalize Block wird an den 5pM-Datensatz gefittet. Dafuer wird die Kostenfunktion (v3) minimiert. Ziel ist es, anschliessend die identifizierten Parameter im 2x 5pM-Restimulationsfall zu verwenden und dan...Modell mit Stochastizitaet im internalize Block wird an den 5pM-Datensatz gefittet. Dafuer wird die Kostenfunktion (v3) minimiert. Ziel ist es, anschliessend die identifizierten Parameter im 2x 5pM-Restimulationsfall zu verwenden und dann zu gucken, ob sich durch die Simulation die Daten (in gewissem Masse) vorhersagen lassen.
Wir gehen analog zum 100pM Fall vor und verwenden insbesondere ein analoges Skript zur Parameterschaetzung.
Ich schlage vor, wir teilen die noetige Arbeit im Vorfeld folgendermassen auf:
Lorenz: Ich bin mir nicht mehr sicher, ob jetzt die besseren Daten des Restimulationsexperiments im 2.5pM oder im 5pM Fall vorliegen. Im Ordner BurstDetection im Repository (master branch) liegen verschiedene Datensaetze fuer 5pM (Stimulation, late Stimulation, Restimulation) aber auch noch ein aktuellerer Datensatz zu 2_5pM Stimulation. Koenntest du noch einmal definitiv checken, welche jetzt die guten Datensaetze sind, die wir benutzen? Und auch nochmal, ob im entsprechenden Datensatz auch das drin ist, was dran steht (sprich ob in den 5pM nicht in Wirklichkeit Daten sind, die zum Modell mit Parametern zu 2.5pM passen)? Wenn du die entsprechenden Daten identifiziert hast, dann erzeuge bitte Referenzdaten fuer die Kostenfunktion (analog zum 100pM-Fall) und lade sie in den master branch.
Malte: Koenntest du bitte fuer verschiedene Werte von Sigma Pfade des internalize block Modells generieren aus denen wir einen initial guess fuer das Fitting gewinnen koennen. Und zwar, um sicher zu gehen, fuer 5pM und 2.5pM. Verwende dazu die Funktion block_job (Hauptordner) und schreibe ein Skript so wie zum Beispiel in Jobs/block_internalization. Bei der Berechnung der Pfade solltest du vorher sicher gehen, dass alle Skripte zur Pfadberechnung (im Ordner Forward) auf dem neusten Stand sind und mit der aktuellen Version im master branch uebereinstimmen. Zur Berechnung kannst du mogon oder bernstein benutzen. Sobald Lorenz die passenden Referenzdaten erzeugt hat, kannst du mit dem Skript block_analysis (entsprechend anpassen) den initial guess bestimmen.
Ich kuemmere mich derzeit um das Skript zum Fitting (zunaechst im 100pM Fall - hier wird dann ein analoges benutzt).
Aufgaben zusamengefasst:
* [x] Passende Datensaetze identifizieren (Lorenz)
* [x] Referenzdaten fuer die Kostenfunktion erzeugen und hochladen (Lorenz)
* [x] Pfade fuer verschiedene Sigma und 2.5pM/5pM erzeugen (Malte)
* [x] Initial guess mithilfe der Pfade und der Referenzdaten bestimmen (Malte)
* [x] Skript zur Parameter-Schaetzung schreiben (Niklas)
* [x] Parameter-Schaetzung durchfuehren (Niklas)
Fragen, Fortschritte und Ergebnisse bitte hier in den Thread.Niklas KolbeNiklas Kolbehttps://gitlab.rlp.net/kolbe/stoch-smad/-/issues/1Fitting of block models 100pM2019-08-16T09:26:00+02:00Niklas KolbeFitting of block models 100pMModelle mit Stochastizitaet in isolierten Bloecken werden an den 100pM-Datensatz gefittet. Dafuer wird die Kostenfunktion (v3) minimiert.
Ausgehend vom deterministischen Modell werden hierbei zunaechst alle sigma gekoppelt und fuer vers...Modelle mit Stochastizitaet in isolierten Bloecken werden an den 100pM-Datensatz gefittet. Dafuer wird die Kostenfunktion (v3) minimiert.
Ausgehend vom deterministischen Modell werden hierbei zunaechst alle sigma gekoppelt und fuer verschiedene diskrete Werte Pfade berechnet und die Kostenfunktion ausgewertet (siehe block_analysis). Das liefert einen initial guess der verschiedenen sigma.
Anschliessend wird mit fmincon die Kostenfunktion lokal minimiert bezueglich
* der zum stochastischen Block gehoerigen sigma
* der zum stochastischen Block gehoerigen Startwerte der Parameter
* der vier sensitivsten Parameter des determinstischen Modells (k_Dephos, index_trimer_dephos, S4_total, alterPassiveDeg)
Im Block internalize mit 3 stochastischen Parametern ergeben sich somit zum Beispiel also 10 Freiheitsgrade.
Es gibt die 5 Bloecke
* internalize
* degradation
* endosomal traffic
* receptor-ligand
* synthesisNiklas KolbeNiklas Kolbe