1010import shutil
1111import os
1212from pathlib import Path
13+ from yaml import dump
1314
1415from swarmpal .io import PalDataItem , create_paldata
1516from swarmpal .experimental import LocalForwardMagneticModel
2223xr .set_options (display_expand_groups = True , display_expand_attrs = True , display_expand_data_vars = True , display_expand_coords = True )
2324
2425FAC_SINGLE_SAT_CODE_TEMPLATE = "fac-single-sat.jinja2"
26+ FAC_SINGLE_SAT_CLI_TEMPLATE = "fac-single-sat-cli.jinja2"
2527
2628start_of_today = dt .datetime .now ().date ()
2729end_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
327364data_explorer = FacDataExplorer (widgets )
328365
0 commit comments