Ich mache eine Simulation von Protein-Protein-Interaktionen. Ich verwende Python, um logische Gatter als Funktionen zu modellieren, um Proteininteraktionen zu modellieren. Mein Modell ist im Grunde eine Reihe von Gruppen (g0
bis g4
) mit Logikgattern (siehe Bild). Anfangs habe ich eine list
mit meinen Gruppen eingerichtet, und dann für jede Gruppe eine dict
, die Proteine (Knoten) mit ihren Startwerten enthält (ihre sogenannten seedValues
, die die Startparameter für das Netzwerk sind t=0
).Durch eine Sequenz von gruppierten Logikgattern gehen
Meine Frage ist: Gibt es eine Möglichkeit, meine Gruppen von Iterieren durch (und ihre Funktionen Logikgatter), dass bei Gruppe bei t
0 (g0
im Bild) beginnt, und dass bei t=t+1
führt Gruppen g0
und g1
, Führt dann die drei Gruppen g0
, g1
und g2
bei t=t+2
aus, und so weiter bis t=m
, wobei m
die Anzahl der gewünschten Iterationen ist?
Erläuterung: Vielleicht bin ich unklar. Mein Problem ist das: Sagen Sie, dass ich eine Funktion schreibe, die nacheinander durch meine Gruppen geht. Es beginnt bei
g0
zum Zeitpunktt=0
und führt, speichert und gibt alle Gattern in dieser Gruppe, sowie alle Tore „ahead“ von selbst (g1
zug4
). Wenn dies erledigt ist, tickt die Funktion die Zeit um einen Schritt vorwärts (t=t+1
) und geht zu und executes wieder einschließlich der Ausgabe Gruppeng2
zug4
. Jetzt schleicht sich ein Fehler ein: für ein genaues Modell muss ichg0
zur Zeitt=t+1
auch ausführen, vor die Programmschritte zug2
. Wie kann ich mein Programm so sequentielle "Wellen" der Ausführung ausgeben lassen? Ich stelle mir vor, ich müsste Rekursion verwenden, aber ich weiß nicht wie.
Siehe Beispiel Bild von was ich meine mit "Gruppen" here. Bild Anmerkungen: A und B sind Schalter (das Programm soll sie ändern, als eine Möglichkeit, Störungen des Studiums), C ist eine Konstante (nie geändert). J ist der Ausgang (meistens für Show). D und F sind so gebaut zu schwingen, sobald A = 0.
Ich habe dafür auf Stack Exchange und Stack-Überlauf gesucht; Während ich viele Fragen tangiere, die meinen Interessensbereich berühren (1, 2), sehe ich keine, die ich spezifisch bestimmt, um meine Probleme zu lösen. Vielen Dank für Ihre Zeit.
Wahrscheinlich vermisse ich hier etwas. Der einzige gute Grund, ein Multithread-/Multiprocess-Programm zu erstellen, ist Performance. Wenn Sie das Programm noch nicht geschrieben haben, woher wissen Sie, dass es nicht schnell genug ist? Nur weil die Schaltungskomponenten parallel funktionieren, bedeutet dies nicht, dass die interne Struktur Ihres Programms die Berechnungen parallel durchführen muss. Was zählt, ist, dass das Programm ein genaues Modell dessen erzeugt, was die Schaltung (Protein) tut. Warum verkomplizieren Sie Ihre Aufgabe, indem Sie ein Multithread-Programm schreiben? –
Ich habe meine Frage aktualisiert, um besser zu reflektieren, was ich tun möchte. Bitte beachten Sie meine Klarstellung in der Originalfrage. –