Commit d3e716774b820997154e799b185af4575a381041
1 parent
14733cc6
Exists in
dev
Put seq & eph fn_context in obsconfig file
Showing
10 changed files
with
159 additions
and
106 deletions
Show diff stats
CHANGELOG
... | ... | @@ -2,7 +2,8 @@ |
2 | 2 | - Add install-dependecies command |
3 | 3 | - Move obsconfig/config folder into obsconfig |
4 | 4 | - Rename default obsconfig file |
5 | - | |
5 | + - Put seq & eph fn_context in obsconfig file | |
6 | + | |
6 | 7 | 01-09-2023 (AKo): V0.6.29.0 |
7 | 8 | - Add fn context to channels in obsconfig class |
8 | 9 | - Add makedirs in fn_context definition | ... | ... |
config/config_pyros_default.yml
... | ... | @@ -3,12 +3,6 @@ general: |
3 | 3 | logo: logo_pyros_default.png |
4 | 4 | color_theme: sienna |
5 | 5 | nb_element_per_page: 20 |
6 | - fn_contexts: | |
7 | - pyros_seq: | |
8 | - root_dir: "data/sequence/" | |
9 | - description: "pyros_seq" | |
10 | - extension: ".p" | |
11 | - pathnaming: "PyROS.seq.1" | |
12 | 6 | USR: |
13 | 7 | nb_element_per_page: 10 |
14 | 8 | SCP: ~ | ... | ... |
config/pyros_observatory/general/schemas/schema_observatory-2.0.yml
... | ... | @@ -130,6 +130,83 @@ schema;schema_MOUNT: |
130 | 130 | sequence: |
131 | 131 | - type: any |
132 | 132 | |
133 | +schema;schema_FN_CONTEXTS: | |
134 | + | |
135 | + type: map | |
136 | + required: False | |
137 | + mapping: | |
138 | + img_L0: | |
139 | + type: map | |
140 | + required: False | |
141 | + mapping: | |
142 | + root_dir: | |
143 | + type: str | |
144 | + description: | |
145 | + type: str | |
146 | + extension: | |
147 | + type: str | |
148 | + naming: | |
149 | + type: str | |
150 | + pathnaming: | |
151 | + type: str | |
152 | + img_L1: | |
153 | + type: map | |
154 | + required: False | |
155 | + mapping: | |
156 | + root_dir: | |
157 | + type: str | |
158 | + description: | |
159 | + type: str | |
160 | + extension: | |
161 | + type: str | |
162 | + naming: | |
163 | + type: str | |
164 | + pathnaming: | |
165 | + type: str | |
166 | + img_tmp: | |
167 | + type: map | |
168 | + required: False | |
169 | + mapping: | |
170 | + root_dir: | |
171 | + type: str | |
172 | + description: | |
173 | + type: str | |
174 | + extension: | |
175 | + type: str | |
176 | + naming: | |
177 | + type: str | |
178 | + pathnaming: | |
179 | + type: str | |
180 | + pyros_seq: | |
181 | + type: map | |
182 | + required: False | |
183 | + mapping: | |
184 | + root_dir: | |
185 | + type: str | |
186 | + description: | |
187 | + type: str | |
188 | + extension: | |
189 | + type: str | |
190 | + naming: | |
191 | + type: str | |
192 | + pathnaming: | |
193 | + type: str | |
194 | + pyros_eph: | |
195 | + type: map | |
196 | + required: False | |
197 | + mapping: | |
198 | + root_dir: | |
199 | + type: str | |
200 | + description: | |
201 | + type: str | |
202 | + extension: | |
203 | + type: str | |
204 | + naming: | |
205 | + type: str | |
206 | + pathnaming: | |
207 | + type: str | |
208 | + | |
209 | + | |
133 | 210 | schema;schema_CHANNEL: |
134 | 211 | type: map |
135 | 212 | mapping: |
... | ... | @@ -150,66 +227,8 @@ schema;schema_CHANNEL: |
150 | 227 | sequence: |
151 | 228 | - type: any |
152 | 229 | fn_contexts: |
153 | - type: map | |
154 | - required: False | |
155 | - mapping: | |
156 | - img_L0: | |
157 | - type: map | |
158 | - required: False | |
159 | - mapping: | |
160 | - root_dir: | |
161 | - type: str | |
162 | - description: | |
163 | - type: str | |
164 | - extension: | |
165 | - type: str | |
166 | - naming: | |
167 | - type: str | |
168 | - pathnaming: | |
169 | - type: str | |
170 | - img_L1: | |
171 | - type: map | |
172 | - required: False | |
173 | - mapping: | |
174 | - root_dir: | |
175 | - type: str | |
176 | - description: | |
177 | - type: str | |
178 | - extension: | |
179 | - type: str | |
180 | - naming: | |
181 | - type: str | |
182 | - pathnaming: | |
183 | - type: str | |
184 | - img_tmp: | |
185 | - type: map | |
186 | - required: False | |
187 | - mapping: | |
188 | - root_dir: | |
189 | - type: str | |
190 | - description: | |
191 | - type: str | |
192 | - extension: | |
193 | - type: str | |
194 | - naming: | |
195 | - type: str | |
196 | - pathnaming: | |
197 | - type: str | |
198 | - pyros_seq: | |
199 | - type: map | |
200 | - required: False | |
201 | - mapping: | |
202 | - root_dir: | |
203 | - type: str | |
204 | - description: | |
205 | - type: str | |
206 | - extension: | |
207 | - type: str | |
208 | - naming: | |
209 | - type: str | |
210 | - pathnaming: | |
211 | - type: str | |
212 | - | |
230 | + include: schema_FN_CONTEXTS | |
231 | + | |
213 | 232 | schema;schema_IMAGE_CALIBRATIONS: |
214 | 233 | type: map |
215 | 234 | mapping: |
... | ... | @@ -400,6 +419,11 @@ schema;schema_UNIT: |
400 | 419 | - type: str |
401 | 420 | DATABASE: |
402 | 421 | include: schema_DATABASE |
422 | + SEQUENCE_MANAGEMENT: | |
423 | + type: map | |
424 | + mapping: | |
425 | + fn_contexts: | |
426 | + include: schema_FN_CONTEXTS | |
403 | 427 | AGENTS: |
404 | 428 | include: schema_AGENTS |
405 | 429 | TOPOLOGY: | ... | ... |
config/pyros_observatory/pyros_observatory_default/observatory.yml
... | ... | @@ -68,6 +68,20 @@ OBSERVATORY: |
68 | 68 | computer: MainComputer |
69 | 69 | file: .database.env |
70 | 70 | |
71 | + SEQUENCE_MANAGEMENT: | |
72 | + fn_contexts: | |
73 | + pyros_seq: | |
74 | + root_dir: "data/sequences/" | |
75 | + description: "pyros_seq" | |
76 | + extension: ".p" | |
77 | + pathnaming: "PyROS.seq.1" | |
78 | + | |
79 | + pyros_eph: | |
80 | + root_dir : "/tmp/eph" | |
81 | + description: "Ephemeris PyROS" | |
82 | + extension : ".f" | |
83 | + pathnaming : "PyROS.eph.1" | |
84 | + | |
71 | 85 | AGENTS: |
72 | 86 | |
73 | 87 | - AGENT_DEVICE: |
... | ... | @@ -138,6 +152,22 @@ OBSERVATORY: |
138 | 152 | AGENTS: |
139 | 153 | - optic |
140 | 154 | - camera |
155 | + fn_contexts: | |
156 | + img_L0: | |
157 | + root_dir: "data/product/images/science/incoming" | |
158 | + description: "PyROS images L0" | |
159 | + extension: ".fit" | |
160 | + naming: "PyROS.img.1" | |
161 | + img_L1: | |
162 | + root_dir: "data/product/images/science/processed" | |
163 | + description: "PyROS images L1" | |
164 | + extension: ".fit" | |
165 | + pathnaming: "PyROS.img.1" | |
166 | + img_tmp: | |
167 | + root_dir: "data/product/images/tmp" | |
168 | + description: "PyROS temporary files during processings" | |
169 | + extension: ".fit" | |
170 | + pathnaming: "" | |
141 | 171 | |
142 | 172 | ALBUMS: |
143 | 173 | ... | ... |
config/schema_pyros_config.yml
... | ... | @@ -16,24 +16,6 @@ mapping: |
16 | 16 | nb_element_per_page: |
17 | 17 | type: int |
18 | 18 | required: True |
19 | - fn_contexts: | |
20 | - type: map | |
21 | - required: True | |
22 | - mapping: | |
23 | - pyros_seq: | |
24 | - type: map | |
25 | - required: True | |
26 | - mapping: | |
27 | - root_dir: | |
28 | - type: str | |
29 | - description: | |
30 | - type: str | |
31 | - extension: | |
32 | - type: str | |
33 | - naming: | |
34 | - type: str | |
35 | - pathnaming: | |
36 | - type: str | |
37 | 19 | USR: |
38 | 20 | type: any |
39 | 21 | SCP: | ... | ... |
src/core/pyros_django/dashboard/config_pyros.py
... | ... | @@ -88,19 +88,7 @@ class ConfigPyros: |
88 | 88 | if pyros_config_file is None: |
89 | 89 | pyros_config_file = "config_pyros_default.yml" |
90 | 90 | self.pyros_config = self.read_and_check_config_file(pyros_config_file) |
91 | - fn = FileNames() | |
92 | - contexts = self.pyros_config["general"]["fn_contexts"] | |
93 | - for context, values in contexts.items(): | |
94 | - fn.fcontext_create(context, values["description"]) | |
95 | - fn.fcontext = context | |
96 | - if values.get("naming"): | |
97 | - fn.naming(values["naming"]) | |
98 | - elif values.get("pathnaming"): | |
99 | - fn.pathnaming(values["pathnaming"]) | |
100 | - root_project_path = os.environ.get("PROJECT_ROOT_PATH") | |
101 | - fn.rootdir = os.path.join(root_project_path, values["root_dir"]) | |
102 | - fn.extension = values["extension"] | |
103 | - self.fn = fn | |
91 | + | |
104 | 92 | def main(): |
105 | 93 | os.environ["DJANGO_PATH"] = "../../src/core/pyros_django" |
106 | 94 | os.environ["PROJECT_ROOT_PATH"] = "../../../../" | ... | ... |
src/core/pyros_django/obs_config/obsconfig_class.py
... | ... | @@ -606,6 +606,20 @@ class OBSConfig: |
606 | 606 | self.unit_name = unit_name |
607 | 607 | # call get_agents so the class will check if mandatory agents are in the obsconfig |
608 | 608 | self.get_agents(self.unit_name) |
609 | + fn = FileNames() | |
610 | + contexts = self.get_unit_by_name(self.unit_name)["SEQUENCE_MANAGEMENT"]["fn_contexts"] | |
611 | + for context, values in contexts.items(): | |
612 | + fn.fcontext_create(context, values["description"]) | |
613 | + fn.fcontext = context | |
614 | + if values.get("naming"): | |
615 | + fn.naming(values["naming"]) | |
616 | + elif values.get("pathnaming"): | |
617 | + fn.pathnaming(values["pathnaming"]) | |
618 | + root_project_path = os.environ.get("PROJECT_ROOT_PATH") | |
619 | + fn.rootdir = os.path.join(root_project_path, values["root_dir"]) | |
620 | + fn.extension = values["extension"] | |
621 | + self.fn = fn | |
622 | + | |
609 | 623 | |
610 | 624 | def get_obs_name(self) -> str: |
611 | 625 | """ | ... | ... |
src/core/pyros_django/scheduling/A_Scheduler.py
... | ... | @@ -127,7 +127,7 @@ class A_Scheduler(Agent): |
127 | 127 | home = guitastro.Home(self._home) |
128 | 128 | |
129 | 129 | # === Get all file contexts from pyros config |
130 | - self._fn = self.pconfig.fn | |
130 | + self._fn = self.config.fn | |
131 | 131 | |
132 | 132 | # === Select the file contextof sequence files |
133 | 133 | self._fn.pathnaming("PyROS.seq.1") | ... | ... |
src/core/pyros_django/scp_mgmt/A_SCP_Manager.py
... | ... | @@ -59,7 +59,7 @@ class A_SCP_Manager(Agent): |
59 | 59 | next_period = Period.objects.next_period() |
60 | 60 | period = next_period |
61 | 61 | self.pconfig = self._oc['pyros_config'] |
62 | - self._fn = self.pconfig.fn | |
62 | + self._fn = self.config.fn | |
63 | 63 | self.config = self._oc['config'] |
64 | 64 | self._fn.pathnaming("PyROS.seq.1") |
65 | 65 | |
... | ... | @@ -271,14 +271,34 @@ class A_SCP_Manager(Agent): |
271 | 271 | eph = guitastro.Ephemeris() |
272 | 272 | target_sun = "sun" |
273 | 273 | ephem_sun = eph.target2night(target_sun, current_date, None, None) |
274 | - file_name_sun = f"ephem_sun_{current_date}" | |
275 | - file_name_moon = f"ephem_moon_{current_date}" | |
274 | + | |
275 | + self._fn.fcontext_create("pyros_eph", "Ephemeris PyROS") | |
276 | + self._fn.fcontext = "pyros_eph" | |
277 | + self._fn.pathnaming("PyROS.eph.1") | |
278 | + self._fn.rootdir = "/tmp/eph" | |
279 | + self._fn.extension = ".f" | |
280 | + param = {} | |
281 | + param['period'] = period_id | |
282 | + param['date'] = current_date | |
283 | + param['unit'] = self.pconfig.unit_name | |
284 | + param['version'] = 1 | |
285 | + param['target'] = "sun" | |
286 | + fname = self._fn.naming_set(param) | |
287 | + file_name_sun = self._fn.join(fname) | |
288 | + | |
289 | + # moon parameters | |
290 | + param['target'] = "moon" | |
291 | + fname = self._fn.naming_set(param) | |
292 | + file_name_moon = self._fn.join(fname) | |
276 | 293 | os.chdir(ephem_data_night_folder) |
277 | 294 | pickle.dump(ephem_sun, open(f"{file_name_sun}.f","wb")) |
278 | 295 | target_moon = "moon" |
279 | 296 | ephem_moon = eph.target2night(target_moon, current_date, None, None) |
280 | 297 | pickle.dump(ephem_moon, open(f"{file_name_moon}.f","wb")) |
281 | 298 | |
299 | + | |
300 | + | |
301 | + | |
282 | 302 | # lire tous les fichiers sun de la period et appliquer le sky_elev pour déterminer le quota total de période |
283 | 303 | # prendre le champ alt & |
284 | 304 | # -> prendre tous les éléments en dessous de duskelev (cf l412 d'A_Sheduler, exemple 14 des éphémérides pour trier ces éléménts) et faire un sum | ... | ... |
src/core/pyros_django/seq_submit/functions.py
... | ... | @@ -441,9 +441,9 @@ def create_sequence_pickle(sequence): |
441 | 441 | unit_name = os.environ["unit_name"] |
442 | 442 | config = OBSConfig(os.environ["PATH_TO_OBSCONF_FILE"], unit_name) |
443 | 443 | pyros_config = ConfigPyros(os.environ["pyros_config_file"]) |
444 | - pyros_config.fn.fcontext = "pyros_seq" | |
444 | + config.fn.fcontext = "pyros_seq" | |
445 | 445 | home = guitastro.Home(config.getHome()) |
446 | - pyros_config.fn.longitude(home.longitude) | |
446 | + config.fn.longitude(home.longitude) | |
447 | 447 | period_id = str(period.id) |
448 | 448 | if len(str(period.id)) < 3: |
449 | 449 | while len(period_id) < 3: |
... | ... | @@ -455,8 +455,8 @@ def create_sequence_pickle(sequence): |
455 | 455 | "date": sequence.night_id, |
456 | 456 | "id_seq": sequence.id |
457 | 457 | } |
458 | - pyros_config.fn.fname = pyros_config.fn.naming_set(fn_param) | |
459 | - fpath_name = pyros_config.fn.join(pyros_config.fn.fname) | |
458 | + config.fn.fname = config.fn.naming_set(fn_param) | |
459 | + fpath_name = config.fn.join(config.fn.fname) | |
460 | 460 | # create dirs if they don't exist |
461 | 461 | os.makedirs(os.path.dirname(fpath_name), exist_ok=True) |
462 | 462 | print(fpath_name) | ... | ... |