Generell eine gute Idee. Allerdings habe ich in späteren Generationen bei der Paarung von Individuen vom Asian- und Papuan-Typus auch eine Durchmischung der autosomalen Gene und somit Werte zwischen [0, 1]. Ich werde hier also bei der 0/1-Codierung bleiben.
Entgeltliche Optimierung eines Agent-based models
Re: Entgeltliche Optimierung eines Agent-based models
Re: Entgeltliche Optimierung eines Agent-based models
Ja, das ist ein gutes Argument für numeric.
Re: Entgeltliche Optimierung eines Agent-based models
Was für n langer Arbeitstag ... schon wieder
Naja, jetzt hab ich wenigstens meinen Code vollständig geschrieben und konnte auf die Schnelle auch keine offensichtlichen Fehler ausmachen (auch wenn ich ihn jetzt um kurz nach halb 2 Uhr morgens nicht mehr hab über ein paar Jahre simulieren lassen). Ich würde mich daher sehr freuen, wenn Ihr mir nun noch Tipps zur Effizierung (besonders eine immense Laufzeit-Verkürzung ist mir wichtig - Ziel für einen vollständigen Lauf mit einem gegebenen Parameter-Set ist < 2 min.; dann können mehrere Parameter-Sets parallel laufen) geben könntet oder sich einer von Euch erbarmen würde, diese umzusetzen. Vllt. kennt Ihr aber auch Jemanden, der mir dabei helfen könnte und der darauf Lust hätte. Ich wäre dafür extremst dankbar (300 € und eine Erwähnung in meiner Diss sind Euch gewiss).
Besten Dank und gute Nacht
Anti
PS: Anbei natürlich der vollständige Code ...
Naja, jetzt hab ich wenigstens meinen Code vollständig geschrieben und konnte auf die Schnelle auch keine offensichtlichen Fehler ausmachen (auch wenn ich ihn jetzt um kurz nach halb 2 Uhr morgens nicht mehr hab über ein paar Jahre simulieren lassen). Ich würde mich daher sehr freuen, wenn Ihr mir nun noch Tipps zur Effizierung (besonders eine immense Laufzeit-Verkürzung ist mir wichtig - Ziel für einen vollständigen Lauf mit einem gegebenen Parameter-Set ist < 2 min.; dann können mehrere Parameter-Sets parallel laufen) geben könntet oder sich einer von Euch erbarmen würde, diese umzusetzen. Vllt. kennt Ihr aber auch Jemanden, der mir dabei helfen könnte und der darauf Lust hätte. Ich wäre dafür extremst dankbar (300 € und eine Erwähnung in meiner Diss sind Euch gewiss).
Besten Dank und gute Nacht
Anti
PS: Anbei natürlich der vollständige Code ...
- Dateianhänge
-
- files.7z
- (31.92 KiB) 75-mal heruntergeladen
Re: Entgeltliche Optimierung eines Agent-based models
Hallo Anti,
wenn ich Deinen Code laufen lasse bekomme ich den Fehler:
Der Fehler kommt aus der dritten Zeile hier:
Gruß, Jörg
wenn ich Deinen Code laufen lasse bekomme ich den Fehler:
Bitte teste selbst nochmal in einer frischen R-session.Fehler in migration : Objekt 'migration' nicht gefunden
Der Fehler kommt aus der dritten Zeile hier:
Code: Alles auswählen
for (mig in migratables) {
if (runif(1) < ifelse(runlist$Aoverall[mig] > 0.5, runsummary$asian.migrations[i], runsummary$papuan.migrations[i])) { #will individual j migrate?
deme.candidates <- migration[[runlist$residence[mig]]][,1]
Gruß, Jörg
Re: Entgeltliche Optimierung eines Agent-based models
Hmm, das ist seltsam. "migration" heißt die Liste, die eigentlich in Zeile 12 geladen wird. Ist die bei Dir korrekt importiert worden? Ich kann den Fehler aktuell nicht nachvollziehen.
Re: Entgeltliche Optimierung eines Agent-based models
ah, ich hatte das Paket rlist nicht installiert. mea culpa
Re: Entgeltliche Optimierung eines Agent-based models
ist das eigentlich die einzige Stelle, wo eine Funktion aus dem Paket rlist verwendet wird?
Das Ablegen und das Zurückholen von R-Objekten - das können auch die Funktionen save() und load() von base R.
So, Dein Skript läuft gerade vor sich hin. Nach etwa 1,5 Stunden kommen da irgendwelche Kontrollprints (fortlaufende Zahlen) und ich weiß nicht recht aus welcher Ecke des Skripts ...
Während ich diese Nachricht schrieb, fand Dein Skript ein jähes Ende:ich könnte mir vorstellen, dass bei diesem Funktionaufruf vielleicht auch length(x) gleich 0 sein könnte.
Bei mir sieht der Anfang jetzt so aus:mit der Datei myData.RData (siehe Anhang)
Gruß, Jörg
Das Ablegen und das Zurückholen von R-Objekten - das können auch die Funktionen save() und load() von base R.
So, Dein Skript läuft gerade vor sich hin. Nach etwa 1,5 Stunden kommen da irgendwelche Kontrollprints (fortlaufende Zahlen) und ich weiß nicht recht aus welcher Ecke des Skripts ...
Während ich diese Nachricht schrieb, fand Dein Skript ein jähes Ende:
Code: Alles auswählen
...
[1] 4689
[1] 4690
Fehler in sample.int(length(x), size, replace, prob) :
ungültiges erstes Argument
Bei mir sieht der Anfang jetzt so aus:
Code: Alles auswählen
setwd("~/Desktop/R.Zeug/Anti/files")
load("myData.RData")
Gruß, Jörg
- Dateianhänge
-
- myData.zip
- drei Objekte
- (30.89 KiB) 67-mal heruntergeladen
Re: Entgeltliche Optimierung eines Agent-based models
Ja, das ist tatsächlich die einzige Nutzung des Pakets. Kann Dir aktuell tatsächlich auch nicht sagen, warum ich nit load() verwendet habe.
Erst nach 1.5 h? Hmm, bei mir geht das nach ein paar Minuten. Wenn ich mich recht entsinne, hatte ich da nur irgendwo im Code einmal "print" stehen. Da ich hier auf der Arbei leider mein 7z-File nicht öffnen kann, kann ich aktuell nicht sagen, wo das ist. Das muß aber entweder bei der Migration oder bei der Verpaarung sein.
Grml. Hört sich wirklich so an wie length(x)==0 oder length(x)==1. Und ich dachte, ich hätte da schon überall die Konditionen vorher getestet. Schau ich mir aber nochmal an.jogo hat geschrieben: ↑Mi Nov 14, 2018 12:53 pmWährend ich diese Nachricht schrieb, fand Dein Skript ein jähes Ende:ich könnte mir vorstellen, dass bei diesem Funktionaufruf vielleicht auch length(x) gleich 0 sein könnte.Code: Alles auswählen
... [1] 4689 [1] 4690 Fehler in sample.int(length(x), size, replace, prob) : ungültiges erstes Argument
Alles in einer Datei zu haben ist natürlich die elegantere Lösung. Danke dafür!jogo hat geschrieben: ↑Mi Nov 14, 2018 12:53 pmBei mir sieht der Anfang jetzt so aus:mit der Datei myData.RData (siehe Anhang)Code: Alles auswählen
setwd("~/Desktop/R.Zeug/Anti/files") load("myData.RData")
Gestern Nacht (nach einem 11 h-Arbeitstag) kam mir die Idee, daß ich als Alternative zur Simulation vllt. doch das Ganze gleichungsbasiert angehen könnte. Im Prinzip kann ich für jeden Schritt den Erwartungswert für die Admixture für einzelne Populationen berechnen. Wenn ich nun noch die Varianz in einzelnen Populationen und Covarianz über alle simulierten Populationen berechnen kann, könnte ich am Schluß auch so die plausibelsten Parameter für die Outcomes schätzen. Allerdings erfordert das Ganze natürlich mehr mathematisches Können und birgt die Gefahr von mehr Fehlern, die man einbauen kann. Ich werde aber drüber nachdenken, ob ich stattdessen diesen Weg gehen sollte. Zum aktuellen Zeitpunkt kann ich noch nicht sehen, wie ich meinen Code schneller zum Laufen bringen können sollte. Bin aber für Anregungen und Ideen nach wie vor dankbar und werde sie gerne umsetzen.
Danke nochmal
Anti
Re: Entgeltliche Optimierung eines Agent-based models
Hallo Anti,
ich habe eine kleine Frage:
Stimmt es, dass pro Parameterkombination der gesamte Dataframe runlist (mit seinen 26 Mio Zeilen) jeweils in eine CSV-Datei geschrieben werden soll?
Wie groß ist eine solche Datei? (ups, das war schon die zweite Frage)
Hier noch eine heiße Spur zu dem Fehler bei sample():(ich hatte noch einen kleinen Aufruf message("print(which(fertiles==fer))") eingefügt)
Es gibt also eine Stelle, an der partner.candidates null Elemente hat.
Gruß, Jörg
ich habe eine kleine Frage:
Stimmt es, dass pro Parameterkombination der gesamte Dataframe runlist (mit seinen 26 Mio Zeilen) jeweils in eine CSV-Datei geschrieben werden soll?
Wie groß ist eine solche Datei? (ups, das war schon die zweite Frage)
Hier noch eine heiße Spur zu dem Fehler bei sample():
Code: Alles auswählen
print(which(fertiles==fer))
[1] 299
Fehler in sample.int(length(x), size, replace, prob) :
ungültiges erstes Argument
> traceback()
2: sample.int(length(x), size, replace, prob)
1: sample(partner.candidates, 1)
> partner.candidates
integer(0)
Es gibt also eine Stelle, an der partner.candidates null Elemente hat.
Gruß, Jörg