C++ и Python

Отбор сигнальных событий (5)

Отбор событий

В этой задаче Вам предстоит выполнить анализ данных и выделить в них полезный сигнал. Сделать это позволит подходящая визуализация данных.

В файле data/events.npy сохранены результаты серии измерений параметров x и y в виде двумерного массива формы (N, 2), где N - это число измерений. Первый и второй столбцы содержат значения x и y, соответственно. Экспериментатор ожидает, что обе величины будут иметь нормальное распределение с центрами вблизи нуля. Анализ одномерных гистограмм, однако, показал, что помимо ожидаемого сигнала, данные содержат фоновые события, которые значительно искажают распределения.

Задание 1. Сохраните одномерные гистрограммы для параметров x и y в директории plots в файлах hist_x.png и hist_y.png, соответственно.

Экспериментатор построил scatter plot для x и y, после чего понял как устроены фоновые события и что существует хороший критерий для разделения полезных и фоновых событий.

Задание 2. Постройте scatter plot для параметров x и y. Проанализируйте распределение событий, предложите контур, разделяющий сигнальные и фоновые события. Нарисуйте контур в тех же осях, что и scatter plot, и сохраните результат в plots/scatter.png.

Задание 3. Реализуйте функцию signal_filter, принимающую массив измеренные данных, выполняющую фильтрацию согласно Вашей процедуре и возвращающую средние значения и среднеквадратичные отклонения параметров x и y в виде кортежа ((mean_x, std_x), (mean_y, mean_y)).

Как проверять решение локально

Код решения и полученные изображения будут проверяться вручную. Работу фукнции signal_filter можно проверить локально с помощью обычной процедуры: устанавливаем необходимые пакеты (один раз):

pip install -r requirements.txt

Запускаем тесты:

pytest -vs