$30 off During Our Annual Pro Sale. View details »

Introducción a MK

xihh87
February 23, 2017

Introducción a MK

La presentación usada en el curso de MK.

xihh87

February 23, 2017
Tweet

More Decks by xihh87

Other Decks in Education

Transcript

  1. Bioinformática automática y reproducible con mk Joshua Ismael Haase Hernández

    INMEGEN - 2017-02-23 1
  2. Figure 1: La Biología moderna necesita computadoras. 2

  3. Repetir procesos en varios conjuntos de datos. Figure 2: ¿Scripts?

    Manejo de errores en scripts... • Repetirlo todo. • Agregarle corrección de errores en cada paso. 3
  4. mk • reproducible. • modular. • automático. • paralelizado. Figure

    3: mk genera un árbol de dependencias. 4
  5. Repetir procesos en varios conjuntos de datos con mk Sólo

    se necesita un comando: mk Manejo de errores • Siempre retoma desde donde se quedó. • Puede detenerse en un paso intermedio. • Puede explicar el proceso mk -dep. 5
  6. Estructura mk Un mkfile sencillo se ve así: objetivo: prerequisitos-separados-por-espacios

    comando [opciones] $prereq > $target Se usa <tab> para indicar los comandos de una receta. Por defecto mk hace el primer objetivo. 6
  7. Receta para compu (mkfile) pastel-de-coco: harina-de-trigo huevo azúcar coco-rallado mezclar

    harina-de-trigo huevo azúcar > molde-de-hornear hornear --time=5min molde-de-hornear espolvorear coco-rallado molde-de-hornear > $target coco-rallado: coco-pelado rallar $prereq > $target coco-pelado: coco pelar $prereq > $target harina-de-%: grano-de-% moler --finito --con-molino $prereq > $target 7
  8. Un mkfile no tan sencillo VARIABLE1=”VALOR” VARIABLE=‘{comando que se guanda

    en variable} OBJETIVOS=‘{comando que dice qué hacer \ usando \ varias líneas} todo:V: $OBJETIVOS objetivo-%: \ prerequisitos-separados-por-espacios \ prerequisito-usando-comodín-% comando [opciones] $prereq > $target 8
  9. Instalar mk En varias distribuciones linux, es parte de 9base

    o plan9port: ## apt install 9base Se necesita agregar a tu ~/.profile o ~/.bashrc: export PATH=$PATH:/usr/lib/plan9/bin 9
  10. Instalar mk Si tu distro no lo tiene (o no

    eres admin): git clone https://github.com/9fans/plan9port cd plan9port ./INSTALL Se necesita agregar a tu ~/.profile o ~/.bashrc: export PATH=$PATH:/donde/quedó/plan9/bin 10
  11. Buenas prácticas 11

  12. Buenas prácticas • Usar control de versiones. • Mantener los

    datos y resultados en su directorio (y no guardarlos en el mismo control de versiones): mkdir data printf ”/data\n/results\n” > .gitignore • Poner los objetivos virtuales juntos y al inicio: all:V: ./targets_5p-3p | xargs mk lcs:V: ./targets_lcs | xargs mk 12
  13. Buenas prácticas • En cada objetivo, asegurarse que exista el

    directorio de los resultados: results/%.lcs: results/%.sorted mkdir -p ‘dirname $target‘ • Guardar los resultados en un archivo temporal hasta que haya terminado el proceso correctamente: results/%.lcs: results/%.sorted mkdir -p ‘dirname $target‘ ./mariana.py $prereq > $target’.build’ \ && mv $target’.build’ $target 13
  14. Buenas prácticas • Ejecutar mk asignándole el número de procesos

    que puede ejecutar a la vez: ## puedes saber cuántos procesadores tienes usando: ## grep proc /proc/cpuinfo | wc -l env NPROC=‘grep proc /proc/cpuinfo | wc -l‘ mk • Si tu proceso utiliza múltiples cores (te estoy viendo java ~~): env NPROC=1‘ mk 14