DRMAA (Distributed Resource Management Application API) scheint eine offene API zu sein, die eine Spezifikation für die Übermittlung und Verwaltung von Arbeiten beschreibt, die an ein Grid / Cluster übermittelt wurden. Wenn Ihr Scheduler DRMAA-kompatibel ist, würde ich davon ausgehen, dass Sie mit dem --drmaa
-Flag snakemake
die zusätzlichen Steuerelemente erhalten, die dadurch verfügbar gemacht werden API.
Wie in Ihrer Frage mit DRMAA-Unterstützung erwähnt, wird Strg + C auf der Konsole an das Grid weitergeleitet, um übergebene Jobs zu beenden oder zu stoppen. Eine Aufgabe, die andernfalls die Verwendung des Befehls qdel
für Sun Grid Engine
erfordern würde.
Ich konnte sehen, warum der Vorschlag aktiviert werden sollte --drmaa
, wo dies möglich ist, da es wahrscheinlich Funktionen (wie die Kontrolle von Jobs und die Verfügbarkeit von Protokollen und Fehlern) verfügbar macht, die das Übermitteln und Verwalten von Jobs für Sie und snakemake ein wenig erleichtern
. Vielleicht kann jemand mit snakemake
-Erfahrung etwas mehr erklären, aber ich hoffe, das hilft?
Für das, was es wert ist, verwende ich Sun Grid Engine ohne DRMAA und es ist ziemlich schmerzhaft, es zu bekommen Gute Informationen aus qstat
und das Protokollformat qacct
sind möglicherweise das schlechteste Dateiformat, das mir je begegnet ist. Ich vermute, DRMAA bietet eine nette (oder zumindest vernünftigere) API für snakemake
(und andere), um diese Informationen leichter abrufen zu können.
Angehängt:
Unter der Haube werden die Flags vom Python-Modul argparse
in der Datei __init__.py
analysiert. Eine sich gegenseitig ausschließende Gruppe von Optionen erzwingt die Auswahl von --cluster
oder --drmaa
(oder --cluster-sync
).
--cluster
oder -c
erfordert die Angabe eines Arguments. Der Befehl, für den ein Job in Ihrem Cluster gesendet werden soll (die Beispielnamen qsub
). Das Flag --drmaa
scheint snakemake
nur anzuzeigen, dass DRMAA verwendet werden soll, was sich in Bezug auf die Ausführung des Befehls auf Ihrer Konsole nicht wesentlich ändert wird im __init__.py
oder workflow.py
verarbeitet.
Wenn es jedoch Zeit ist, mit Ihrem zu kommunizieren Scheduler (wie in scheduler.py
angegeben) überprüft eine elif
-Anweisung, ob Sie sich in irgendeiner Form im Cluster-Modus befinden, und den else
fängt den Fall ab, in dem Sie stattdessen das Flag --drmaa
gesetzt haben.
Hier geschieht die Magie, da Ihr Job jetzt mit dem DRMAAExecutor
wie in executors.py angegeben, anstelle des Standard-Executors.
Ohne viel mehr zu untersuchen, kann ich sehen, dass der DRMAAExecutor
bietet einige weitere Klassenattribute und stellt im Vergleich zu den anderen zusätzliche Funktionen bereit.
Hoffen Sie, dass dies von größerem Nutzen ist? Wieder habe ich mir den Code nur selbst angesehen, aber anstelle eines snakemake
-Nutzers, der sich einschaltet, dachte ich, ich hätte eine Nase.