Ich arbeite an einem Modell, das ein Protein beschreibt. Molekül kann in wenigen Zuständen gefunden werden, Übergänge von einem Zustand zu einem anderen werden durch Matrix beschrieben, die Übergangsraten enthält. Das Modell kann als Satz gewöhnlicher Differentialgleichungen aufgelöst werden, die schöne numerische Ergebnisse liefern (ausgehend von der Adjazenzmatrix -> Übergangsratenmatrix -> Kolmogorow-Forward-Gleichungen -> numerische Integration). Um den stochastischen Charakter des Prozesses zu erhalten, möchte ich jedoch die Monte-Carlo-Methode verwenden. Soweit ich weiß, ist der Gillespie-Algorithmus dafür gemacht. Gibt es Pakete, die Sie für diese Art von Aufgabe empfehlen?Python Paket für dynamischen Monte Carlo/Gillespie Algorithmus
Antwort
Sie könnten einfach das Modul random
verwenden und die Monte-Carlo-Simulation selbst durchführen, indem Sie einen zufälligen Gleitkommawert für die Werte in Ihrer anfänglichen Adjazenzmatrix verwenden. Achten Sie darauf, zufällig eine Zahl innerhalb des akzeptierten Bereichs dessen, was Ihre Matrix nehmen kann, auszuwählen.
Um über die Simulation zu iterieren, verwenden Sie eine for
oder while
Schleife, abhängig davon, wie viele Simulationen Sie ausführen möchten.
Neben der Arbeit mit dem Modul random
, wie von @PeterWang vorgeschlagen, können Sie auch die Matrizen selbst erstellen. Alternativ können Sie auch das Modul numpy
verwenden, das auch Stichproben bietet. Auf diese Weise können Sie beliebige Zahlen in beliebigen Matrixdimensionen erstellen. Gerade in Bezug auf Ihre weiteren Aufgaben ist ein Modul, das mit Matrizen numpy
arbeitet, eine gute Lösung.
Weitere Einzelheiten finden Sie reference of numpy.random
Hallo, willkommen zu SO. Dies ist eine ziemlich spezifische Frage, nicht wirklich über Programmierung * per se *. Das dritte Ergebnis der Google-Ergebnisseite für 'Gillespie algorithm' gibt einige Hinweise: http://scicomp.stackexchange.com/questions/338/python-implementations-of-gillespies-direct-method Wenn Sie wissen möchten, wie man Zufallszahlen setzt Zahlen in Python verwenden 'numpy.random' oder' random'. –