Пайплайн (Snakemake + Hydra)

Author

Daniil Solovjev

Данные

В этом пайплайне используется следующий датасет

В нем содержится информация о студентах: их демографические данные и успеваемость.

Цель - предсказать итоговую оценку учащегося от 0 до 20.

Данные подготавливаются в двух вариантах, отличающиеся количеством используемых признаков.

Используемые столбцы для датасетов берутся из конфигов с помощью Hydra.

Модели

В рамках пайплайна обучаются модели:

  • Линейная регрессия;
  • Случайный лес.

Параметры моделей берутся из конфигов с помощью Hydra.

Пайплайн

Граф пайплайна представлен на рисунке Figure 1.

Code
import subprocess

import matplotlib.pyplot as plt
from PIL import Image

PIPELINE_IMAGE_FILENAME = "pipeline.png"

# Running
COMMAND = 'poetry run snakemake --dag -s "./../Snakefile" --configfile "./../workflows/config.yaml"'
COMMAND += f' | dot -T png > {PIPELINE_IMAGE_FILENAME}'
subprocess.run(COMMAND, shell=True)

# Visualize dag
fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(111)
img = Image.open(PIPELINE_IMAGE_FILENAME)
ax.imshow(img)
ax.axes.xaxis.set_visible(False)  # type: ignore[union-attr]
ax.axes.yaxis.set_visible(False)  # type: ignore[union-attr]
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.spines["bottom"].set_visible(False)
ax.spines["left"].set_visible(False)
plt.show()
Building DAG of jobs...
Figure 1: Пайплайн

Переменные окружения

Для работы необходимо задать следующие переменные окружения (в Windows они установлены по умолчанию)

NUMBER_OF_PROCESSORS=16

Команды

Генерация изображения пайплайна

poetry run snakemake --dag | dot -T png > pipeline.png

Запуск пайплайна

poetry run snakemake --cores 16 all