Лозовская Алина, 11В, СУНЦ МГУ / Май, 2020
- Постановка задачи
- Алгоритмы и технологии
- Руководство пользователя
- Руководство программиста
- Ссылки
PRC-INT – утилита для автоматизации начального этапа обработки данных магнитотеллурических (МТ) и магнитовариационных (МВ) зондирований в программе PRC_MRR.
Программа обработки МТ/МВ данных PRC_MRR является частью программной системы PRC_MTMV и предназначена для робастного многоточечного оценивания импеданса, типпера, горизонтального МВ отклика по синхронным МТ/МВ записям в серии точек наблюдения. Методика оценивания передаточных операторов основана на получении частных оценок для отдельных отрезков (окон) записей, их отбраковке/взвешивании по когерентностным и иным критериям. Оценивание ведется независимо для набора окон увеличивающейся длины и серии удаленных точек с последующим многоуровневым робастным осреднением.
Для обработки МТ/МВ данных в программе PRC_MRR необходимо предварительно подготовить файл-задание *.DAT. DAT-файл содержит всю необходимую для обработки МТ/МВ данных информацию: режим обработки, число окон обработки, значения параметров обработки и др.
На первом этапе обработки DAT-файл подается на вход программы PRC_MRR вместе с МТ/МВ данными. Выходные файлом, который программа выдает после обработки: файл *.INF, содержащий рапределение значений параметров обработки для данного оператора и результаты обработки в формате .FTF.
INF-файл содержит результаты распределения параметров обработки по квантилям (Q90, Q75, MED, Q25, Q10, Q3, Q1) для каждого независимого окна (обычно общее число окон составляет 7-13); общее число значений для данного окна (NUMBER OF EXTENTS) и число отобранных после обработки (отбраковки не удовлетворяющих установленным параметрам обработки) значений (SELECTED EXTENTS).
На втором этапе обработки значения параметров обработки (следуя определяемым пользователем правилам) переносятся вручную из INF-файла в DAT-файл, и DAT-файл снова подается в программу PRC_MRR в качестве входного.
На третьем этапе обработки пользователь оценивает результат обработки, полученный на втором этапе, и, при необходимости, повторяет описанные выше процедуры, внося изменения в параметры обработки, пока результат обработки его не удовлетворит.
- Открывать, считывать и выводить на экран значения из DAT-файла (ASCII);
- Открывать, считывать и выводить на экран значения из INF-файла (ASCII);
- Автоматически устанавливать параметры обработки в DAT-файле, исходя из значений параметров обработки, содержащихся в INF-файле, в соответствии с правилами, установленными в утилите.
- Изменять правила переноса значений параметров из INF-файла в DAT-файл по умолчанию для различных режимов обработки – в настройках утилиты (файл .SET);
- Позволять вручную производить корректировку значений параметров обработки, содержащихся в DAT-файле;
- Сохранять внесенные пользователем изменения в DAT-файл.
Для работы над проектом я сначала написала на C# (код по первому требованию выдается), но после перешла на Python ввиду огромного количества библиотек. Для графической составляющей были использованы PySide2, Matplotlib Попробовала объектно-ориентированное программирование на вкус, старалась всё описывать в классах, код соотвественно разделяла на отдельные файлы, которые при неоходимости подключались снаружи. Проект был разделен и реализован в четыре этапа:
- 1 этап - воссоздать SINGLE MODE существующей программы, чтобы он работал для примера входных данных
- 2 этап - дополнительное тестирование программы с разными режимами файла DAT
- 3 этап - пакетная обработка
- 4 этап - визуализация INF-файлов и пикировка на графиках параметров пороговых значений
Таблицы WINDOW NUMBER 1 и 2 на рисунке – это независимые окна – число окон (таблиц) задается в DAT-файле, обычно их 7-13. Число таблиц в утилите соответствует числу окон во входном DAT-файле.
Каждая таблица-окно заполняется значениями из INF- и DAT-файлов.
Параметры отбора значений из INF в DAT-файл считываются из файла .SET.
Данные из dat-файла загружаются в столбец .DAT.
Данные из INF-файла заполняют во все остальные столбцы.
Чтобы запустить программу, неоходимо установить самостоятельно Python Чтобы загрузить необходимый файл соответствующего расширения, следует просто нажать на кнопку и выбрать нужный файл, после всех выбранных файлов, на красную кнопку analyse.
С иллюстрациями находится по ссылке - https://github.com/lozovskaya/School-final-project/blob/master/input.pdf
DATFile.py - парсит файлы с расширением .DAT
Класс DAT содержит несколько необходимых переменных, требуемых для решения поставленной задачи. Windows показывает общее число независимых окон, regime - режим обработки, parameters - таблица с параметрами №1-6 для каждого предложенного окна. Соответствующие этим переменным функции вычисляют и сопоставляют значение в исходной файле с переменными.
INFFile.py - парсит файлы с расширением .INF
Класс DAT аналогично содержит несколько необходимых переменных, требуемых для решения поставленной задачи. Каждый класс представляет собой ровно одно окно, хранящее всю нужную информацию. Win_number показывает номер окна, index - точка отсчета данного окна, number_of_extents и selected_extents - соответствующие строки, parameters - таблица со значениями параметров для обработки квантилей (реализована в качестве двумерного словаря), также plain_table - просто таблица, собранная в одни руки.
SETFile.py - парсит файлы с расширением .SET
union.py - формирует итоговую таблицу из предоставленных данных, объединяет параметры вышеперечисленных файлов
main.py - отвечает за графическую составляющую
Планируемые улучшения в будущем:
- Введение интерактивных графиков на основе данных пользователя
- Адаптация программы для пользователей, не готовых устанавливать дополнительные приложения самостоятельно: перевод в .exe через pyinstaller
- Улучшение цветовой гаммы и дизайна