Grosses Code-Update
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 -
Ueberarbeitung der Skripte fuer mogon -
Anpassung der Funktionen fuer globale Optimierungen -
Funktion zur Visualisierung mehrerer Pfade -
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.
Edited by Niklas Kolbe