Commit d3e716774b820997154e799b185af4575a381041

Authored by Alexis Koralewski
1 parent 14733cc6
Exists in dev

Put seq & eph fn_context in obsconfig file

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)
... ...