-
Notifications
You must be signed in to change notification settings - Fork 0
/
MANUAL.txt
162 lines (118 loc) · 17.9 KB
/
MANUAL.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
TAIGA_IACT_PROCESS - программа, предназначенная для обработки сырых данных с черенковского атмосферного телескопа Тункинской астрофизической обсерватории.
В идеале, в далеком будущем, программа будет универсализирована для работы с данными с любого черенковского телескопа, формат сырых данных которого точно известен.
Данное руководство написано с целью обучить пользоваться данной программой.
Также, следует отметить, что предполагается, что человек, пользующийся программой TAIGA_IACT_PROCESS является специалистом в данной области, поэтому руководство
преследует цель подробно описать алгоритмы обработки, использующиеся в ней.
Также прошу учесть, что данная программа является первой версией, по сути - гамма-версией, поэтому советую вовсю интересоваться ее обновлениями и дополнениями.
Пока что особые благодарности за инструктирование хочу принести: Коростелевой Е.А., Журову Д., Грессу О.А., Самолиге В. и всем членам международной коллаборации TAIGA.
Со временем этот список неминуемо расширится.
Автор: Сагань Ярослав
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Пакетные требования:
- sshpass
(execute in shell 'sudo apt-get install sshpass')
- python3, numpy, pandas
(execute in shell 'sudo apt-get install python3 numpy pandas')
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Основные принципы
1. В будущем есть идеи разработать единый стандарт данных для черенковских телескопов. Начиная с того этапа, на котором данные телескопа приведены к стандартным, обработка
также стандартизируется. То есть для разных источников данных будет меняться только прокладка между форматом сырых данных и стандартом. Остальное - конвеер. Учитывая это,
можно, забежав вперед, предположить, что также под этот стандарт можно будет загнать результаты Монте-Карло моделирования. Все-таки, сравнивая объекты одной природы, в них
легче искать сходства и расхождения.
2. Программа будет сделана так, чтобы максимально отвлечься от конкретного языка программирования. Так будет легче искать тех, кто будет помогать в ее поддержке. Вкратце,
это будет сделано следующим образом. Каждый скрипт преобразует входной файл в выходной. И сохраняет на диске. Следующий скрипт подхватывает этот файл и далет с ним что-то еще.
Как дети, которые играют в "горячую картошку", скрипты перебрасывают друг другу файлы. Только не на лету. Каждый скрипт "роняет" выходной файл на диск, где следующий "подбирает"
его. Таким образом, количество языков неограничено. Должны быть только оговорены форматы входа/выхода для каждого скрипта.
3. Таким образом, нетрудно заметить, что на диске сохраняется много промежуточных файлов. Здесь, вместо того, чтобы их тут же удалять, как только они исполнили свою роль, их
можно и хранить. Дело в том, что обе крайности в подходах плохи. Если мы храним все промежуточное, то через пару недель мы запутаемся, где что и куда на диске. Забьется память
и вообще. С другой стороны, если софт придется чинить (а чинить всегда найдется что), то разработчику намного удобнее, если все промежуточные результаты работы скриптов сохраняются.
Так проще отследить ошибки. Поэтому центральная идея в том, что есть возможность сохранить ВСЕ. Однако есть также и возможности чистки всех временных файлов. Ведь если человек -
просто юзер, а не программист, то весь этот зоопарк файлов разной степени причудливости ему не нужен.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Порядок работы
Общение программы с пользователем пока что осуществляется через консоль. В будущем можно прикрутить GUI, но это не принципиальный ход.
Начало программы - исполняемый файл iact_process.sh. Он всего лишь запускает одноименный скрипт на python. Формат запуска следующий:
iact_process 'полный путь к файлу для обработки' (или нескольким файлам через запятую).
Открывается меню №1.
Меню 1. В меню номер один пользователь может выбрать несколько опций:
- подключиться к машине МГУ и скачать новые данные в папку с софтом. Скрипт запускает Midnight Commander на машине МГУ в папке с данными из-под моего логина/пароля. К сожалению, дальше придется копировать ручками.
- прочитать FAQ (пока пустой).
- прочитать ВОТ ЭТОТ файл - MANUAL.txt.
- Перейти к обработке данных.
- Выйти из программы.
Если выбрана обработка данных, то открывается меню №2.
Меню 2 (после начала обработки):
- обработать один файл;
- обработать несколько различных файлов;
- обработать один кластер из одного дня;
- обработать один день (22 кластера);
- обработать несколько дней;
- выйти из программы;
- вернуться в предыдущее меню;
- стереть все временные файлы;
Примечание: временных файлов после предыдущего раза могло и не остаться. Программа попытается их удалить. Если не вышло, она просто скажет, что удалять-то и нечего. ВАЖНО: если после
предыдущей обработки остались временные файлы, то при данной обработке они перезапишутся. Так что, если Вам хотелось еще с ними поработать, перед началом данного сеанса перенесите
их куда-нибудь в надежное место.
Когда вы наконец выберете опции обработки, программа предложит вам ввести имя/имена файла/файлов. Принимаются только полные пути к файлам или папкам. Если их несколько, они вводятся через запятую.
После введения имен файлов для обработки откроется меню №3, где вы как раз выберете опции, касающиеся временных файлов.
Меню №3:
- после обработки ОСТАВИТЬ ВСЕ ВРЕМЕННЫЕ ФАЙЛЫ там, где их положила программа;
- после обработки удалить с диска все временные файлы;
- создать список всех файлов, которые после двух предыдущих меню подлежат обработке. Если файл один, то в списке будет одна строка. Если же Вы обрабатываете целый день, этих
файлов могут набраться чуть ли не сотни. После создания списка ОБРАБОТКА НЕ ПРОИЗВОДИТСЯ. Если же выбран один из двух пунктов выше, список в любом случае будет создан;
- создать список всех файлов, подлежащих обработке + список всех временных файлов, подлежащих созданию в процессе обработке. После создания списка ОБРАБОТКА НЕ ПРОИЗВОДИТСЯ.
Если же выбраны первый или второй пункты, список в любом случае будет создан;
- венуться в предыдущее меню;
- выйти из программы.
Если вы выбрали первый или второй пункты, начнется обработка всех файлов, которые были прописаны в меню №2 и создадутся списки, судьба которых после обработки будет зависеть от того,
какой конкретно пункт - 1 или 2 - был выбран.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Что под капотом
По сути единица измерения данного софта - скрипт process_single_file. Обработка нескольких файлов происходит через прокладку. Эта прокладка парсит список входных файлов и к каждому из них применяет этот скрипт.
Скрипт этот берет файл и за ручку отводит его по очереди к разным другим скриптам. Также он имеет отношение к началу создания всех списков файлов.
Грубо софт можно поделить на три основных класса скриптов:
- скрипты для общения с пользователем. Это такое себе черенковское гамма-RPG. Программа с помощью меню №1, №2 и №3 собирает информацию о том, чем она будет заниматься
после того, как пользователь нажмет все кнопочки и пойдет пить чай и ждать результат. Также эти скрипты хранят эту информацию и передают ее скриптам для обработки.
- скрипты для парса. Эти скрипты занимаются строками, путями к файлам, запонением списков файлов и временных файлов. Они составляют скриптам для обработки подробную
карту местности и подробный план действий;
- собственно, скрипты для обработки.
Какой в конце концов получится четкий формат конечного продукта - это мне и самому пока интересно.
В принципе, это еще самый неполный раздел.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Список функций программы (на 5 апреля 2020):
1. Main menu body 1. print_main_menu () отрисовывает меню №1.
2. to_process_answer_in_main_menu (answer) обрабатывает ответ, данный в меню №1.
3. main_menu () Собирает верхних двух воедино и является, по сути, НАСТОЯЩИМ меню №1.
2. Processing menu body 1. print_processing_menu () см. описание к п. 1.1.
2. to_process_answer_in_processing_menu (answer) см. описание к п. 1.2.
3. processing_menu () см. описание к п. 1.3.
3. Temporary files menu body 1. print_temporary_files_menu () см. описание к п. 1.1.
2. to_process_answer_in_temporary_files_menu (answer) см. описание к п. 1.2.
3. temporary_files_menu () см. описание к п. 1.3.
4. Interface tools 1. die () подушка безопасности. При некоректном пользовании программой информирует о том, что программа прощается с вами...и мягко вылетает. Эвакуация через окно.
2. quit () нормальный выход. Через дверь.
3. open_FAQ ()
4. open_manual ()
5. progressbar () строка состояния, которая подкручена ко всем-всем поочередным процессам. Чтобы иметь представление о том, сколько еще примерно ждать.
6. mess_destroyer (answer) скрипт, который запускается при удалении временных файлов после соответствующего выбора в меню №2.
7. checker_before_start (mode, mode) перед самым запуском обработки показывает выбранные Вами опции. Можно подтвердить или вернуться и что-то изменить.
5. Parsing tools 1. parser (mode, file_or_directory(s)) функция, отвечающая за то, чтобы программе были правильно переданы все имена файлов и дающая старт созданию списков файлов.
2. start_processing (file_with_the_list_of_files) программа, которая дает отмашку - она передает каждый файл тому самому process_single_file.
3. day_parser (directory) см. описание к п. 5.1.
4. BSM_parser (directory) см. описание к п. 5.1.
6. Processing tools 1. raw_file_to_txt (file_to_process) Что эти ребята делают - и так ясно из названий. А вот подробности их работы - это уже не для краткого описания.
2. txt_head_cleaner (file_to_process)
3. txt_head_parser (head_to_process)
4. txt_to_amplitudes (file_to_process)
5. get_quick_pedestals (file_to_process)
6. get_cleaned_quick_pedestal (file_to_process)
7. get_precise_pedestals (file_to_process)
8. amplitudes_minus_pedestals (file_to_process, file_of_pedestals)
9. amplitudes_to_photoelectrons (file_to_process, file_with_pe_codes_and_rel_sensitives)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Processing Tools - подробнее.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------