Skip to content

Commit e132cce

Browse files
authored
TFA dashboard and CLI example for the FAC toolbox (#2)
* Add a CLI example for the FAC toolbox * Add basic TFA dashboard * Add CDF file upload * WIP on tfa_dashboard * Add CLI example code for FAC dashboard * Add CLI example code for TFA dashboard
1 parent 739fde9 commit e132cce

6 files changed

Lines changed: 462 additions & 0 deletions

File tree

dashboards/FAC.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import shutil
1111
import os
1212
from pathlib import Path
13+
from yaml import dump
1314

1415
from swarmpal.io import PalDataItem, create_paldata
1516
from swarmpal.experimental import LocalForwardMagneticModel
@@ -22,6 +23,7 @@
2223
xr.set_options(display_expand_groups=True, display_expand_attrs=True, display_expand_data_vars=True, display_expand_coords=True)
2324

2425
FAC_SINGLE_SAT_CODE_TEMPLATE = "fac-single-sat.jinja2"
26+
FAC_SINGLE_SAT_CLI_TEMPLATE = "fac-single-sat-cli.jinja2"
2527

2628
start_of_today = dt.datetime.now().date()
2729
end_of_today = start_of_today + dt.timedelta(days=1)
@@ -48,6 +50,7 @@ def __init__(self, widgets):
4850
self.interactive_output = pn.pane.HoloViews()
4951
self.swarmpal_quicklook = pn.pane.Matplotlib()
5052
self.code_snippet = pn.pane.Markdown(styles={"font-size": "15px",})
53+
self.cli_command = pn.pane.Markdown(styles={"font-size": "15px",})
5154
self.output_title = pn.pane.Markdown(styles={"font-size": "20px",})
5255
self.data_view = pn.pane.HTML()
5356
self.output_pane = pn.Column(
@@ -60,6 +63,7 @@ def __init__(self, widgets):
6063
("Interactive view", self.interactive_output),
6164
("Data view", self.data_view),
6265
("SwarmPAL Python Code", self.code_snippet),
66+
("SwarmPAL CLI Command", self.cli_command),
6367
),
6468
)
6569
self.widgets["evaluate-button"].on_click(self.update_data)
@@ -261,6 +265,8 @@ def update_output_pane(self, title="SwarmPAL FAC"):
261265
self.swarmpal_quicklook.object = fig
262266
# Code snippet
263267
self.code_snippet.object = f"```python\n{self.get_code()}\n```"
268+
# CLI example
269+
self.cli_command.object = self.get_cli()
264270
# Data view
265271
self.data_view.object = self.data._repr_html_()
266272

@@ -323,6 +329,37 @@ def get_code(self):
323329
template = JINJA2_ENVIRONMENT.get_template(FAC_SINGLE_SAT_CODE_TEMPLATE)
324330
return template.render(context)
325331

332+
def get_cli(self):
333+
"""
334+
Get the YAML configuration and CLI command to download and process the data for the current plot.
335+
"""
336+
process_params = []
337+
if self.mode == 'vires':
338+
data_params = {'provider': 'vires', **self.data_params}
339+
data_params.pop('options')
340+
341+
elif self.mode == 'local':
342+
dataset = self.process_params['dataset']
343+
data_params = {'provider': 'file', 'dataset': dataset, **self.data_params}
344+
process_params.append(dict(
345+
process_name="EXP_LocalForwardMagneticModel",
346+
dataset=dataset,
347+
model_descriptor="CHAOS-Core",
348+
))
349+
350+
process_params.append({'process_name': 'FAC_single_sat', **self.process_params})
351+
352+
353+
config = dict(
354+
data_params=[data_params],
355+
process_params=process_params,
356+
)
357+
config_yaml = dump(config, sort_keys=False)
358+
context = dict(
359+
config=config_yaml,
360+
)
361+
template = JINJA2_ENVIRONMENT.get_template(FAC_SINGLE_SAT_CLI_TEMPLATE)
362+
return template.render(context)
326363

327364
data_explorer = FacDataExplorer(widgets)
328365

0 commit comments

Comments
 (0)