Skip to content

sayonara20xx/baikal_h5_parser

Repository files navigation

Небольшой набор скриптов, которые я использовал для автоматизации процесса моделирования, сбора и переработки данных.

Есть две версии контейнера и два набора sh-скриптов для работы с ними, если есть выбор лучше использовать новую
Все контейнеры должны быть скачаны автоматически во время работы, docker-daemon может запросить учетные данные от gitlab

Запускать все скрипты нужно из текущей директории (активная та же, в которой лежит этот readme.txt)

gen_1.1 - директория для sh-скриптов новой версии
    loop_h5_gen_save.sh - запустит контейнеры, изменит внутри него два конфиг файла и запустит моделирование. После его окончания скопирует все в папку h5_coll.
    Запускается с одним аргументом - количеством запускаемых последовательно моделирований.
    
    Файлы h5writer.conf и ligen.mac изменяются по требованию - они влияют на моделирование.
    create_h5_dataset_save.sh - содержит основные инструкции для работы с контейнером. Легко модифицируется в случае необходимости.

gen_old - директория для sh-скриптов старой версии
    loop_create_csv.sh - так же запустит контейнер с моделированием, извлечет данные и удалит его, но после еще запустит модуль gen_old_h5_to_csv.py, который извлечет данные в csv, после чего h5 файл удаляется.
    loop_create_h5.sh - сделает то же самое, но не запустит модуль и оставит h5 файл.

    Файлы конфигов и остальные скрипты участвуют в процессе и так же легко модифицируются.

Разные контейнеры производят файлы разного вида. В связи с этим, в корне, помимо модуля для извлечения данных и их записи в csv есть еще два:
    gen_old_h5_to_list - модуль, в котором находится метод для записи в созданный list информации из h5 в таком виде, в котором они бы сохранились в csv, т.е. данные обрабатываются так же, но никуда не сохраняются. Если запустить этот файл, то он обработает все h5 файлы в папке h5_coll и выведет длину получившегося списка вместе с примером данных из него (20 строк записей).

    Для работы следует импортировать следующий метод по названию (дополнительно описаны агрументы):
    def read_from_hdf5s_to_list(h5_folder_path : string, list_ref: list):

    Пример импорта: from gen_old_h5_to_list import read_from_hdf5s_to_list as read_h5

    Первый аргумент служит для указания пути к папке с h5 файлами. Можно передавать как относительный, так и абсолютный путь, внутри он передается модулю работы с h5 as is.

    Второй аргумент является той коллекцией данных (списком), в которую метод будет складывать обработанные записи. По сути, перед применением метода следует создать пустой список и передать его имя методу вторым аргументом, запись будет произведена по ссылке.

    gen_1.1_h5_to_list - модуль, который выполняет ту же самую функцию и имеет тот же метод (с тем же именем и набором аргументов). Единственное отличие - оно работает с файлами контейнера версии 1.1

Существует еще один файл, который участвует в работе двух приведенных выше модулей, а именно в записи данных о несработавших оптических модулях: detector_helper.py.
Он использует информацию из csv файла внутри поддиректории assist_data, в котором представлены координаты всех детекторов.

Больше использовались и тестировались скрипты для старого контейнера, с новым вполне могут возникнуть проблемы на моей стороне. Из известных проблем: может потребоваться вручную создавать папки csv_data и h5_coll, если вдруг скрипты или модули ругаются.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages