principalmente separa el workflow (en scripts, notebooks, rules (aunque pueden ir todas dentro de Snakefile), y environments) de lo que son resultados. Por ejemplo los datos que se descargan pueden ir en resources. Lo normal es guardar en Github únicamente el workflow, y los resultados solo sin son pequeños y de interés. Esto también permite borrar todos los resultados facilmente y reiniciar el workflow desde el principio.
Os recomiendo tener un archivo de config.yml para gestionar archivos que actualmente están hard-coded en los scripts, principalmente el nombre del archivo data/output/Municipios.csv. Lo mismo para otras variables que puedan ser globales. Eso facilita que si en algún momento queréis usar otro archivo de input, se puede hacer fácilmente sin modificar los scripts.
No recuerdo si os lo he puesto antes, pero con estos comandos podéis generar el DAG y otros diagramas, que además de ser muy chulos, sobretodo si tenéis paralización, es bueno ponerlos en el readme para que la gente vea la lógica del workflow y la secuencia de ejecuciones. Esto lo tenéis que ejecutar fuera del workflow:
data
convivan información de entrada enign
con productos de la pipeline enoutput
. Esta estructura de archivos es genial, y realmente es útil para organizar el workflow de una manera práctica y efectiva: https://snakemake.readthedocs.io/en/stable/snakefiles/deployment.html?highlight=reproducible#distribution-and-reproducibilityprincipalmente separa el workflow (en scripts, notebooks, rules (aunque pueden ir todas dentro de Snakefile), y environments) de lo que son resultados. Por ejemplo los datos que se descargan pueden ir en
resources
. Lo normal es guardar en Github únicamente el workflow, y los resultados solo sin son pequeños y de interés. Esto también permite borrar todos los resultados facilmente y reiniciar el workflow desde el principio.Os recomiendo tener un archivo de
config.yml
para gestionar archivos que actualmente están hard-coded en los scripts, principalmente el nombre del archivo data/output/Municipios.csv. Lo mismo para otras variables que puedan ser globales. Eso facilita que si en algún momento queréis usar otro archivo de input, se puede hacer fácilmente sin modificar los scripts.No recuerdo si os lo he puesto antes, pero con estos comandos podéis generar el DAG y otros diagramas, que además de ser muy chulos, sobretodo si tenéis paralización, es bueno ponerlos en el readme para que la gente vea la lógica del workflow y la secuencia de ejecuciones. Esto lo tenéis que ejecutar fuera del workflow:
No es imprescindible, pero es muy útil: snakemake tiene la opción de crear logs del output que produce cada rule. Por ejemplo si ponéis prints en las funciones, etc. Cada log se guarda en un archivo independiente, así son fáciles de encontrar. Basta con añadir esto: https://snakemake.readthedocs.io/en/stable/tutorial/advanced.html?highlight=logging#step-5-logging