Replies: 4 comments 5 replies
-
@FrankD412, @jsemler, @kcathey, @doutriaux1 |
Beta Was this translation helpful? Give feedback.
-
anything more than sort by alphabetical and execution order is a nice bonus in my eyes :) |
Beta Was this translation helpful? Give feedback.
-
@jwhite242 -- Thanks for putting this together. For the sorting functionality, I think there are two options (since you mentioned YAML) in my eyes:
For the querying language, I feel like that might be a little overkill considering these aren't really in a database and that gets complex super quickly. Of course, this could also be motivation to finally port to a backend like that, but that's a considerable amount of effort. These are just some initial thoughts, so just putting these down before they get lost. Happy to discuss further. |
Beta Was this translation helpful? Give feedback.
-
All, (cc @jsemler @daub1 @antimatterhorn) I finally responded to some changes Frank requested on #381. It adds two new layouts ("summary" (see below) and "narrow2"), but I'm also thinking that users might want even more flexibility. What do you all think of an option for maestro "--renderers " that would import one or more renderer classes from an external file? V/r, -Chris class SummaryStatusRenderer(FlatStatusRenderer):
"""Flat, simple summary table layout"""
layout_type = "summary" # Defines name in factory/cli
def update_theme(self):
self._theme_dict["Step Prefix"] = "blue"
self._theme_dict["State"] = "bold red"
self._theme_dict["Count"] = "blue"
def process_status_data(self, status_data):
"""Construct the summary dictionary"""
summary_data = {
"Step Prefix": [],
"State": [],
"Count": [],
}
status_info = zip(status_data["Step Name"], status_data["State"])
status_info = sorted(status_info, key=lambda x: x[1])
working_data = defaultdict(list)
for step_name, state in status_info:
prefix = step_name.split("-")[0]
working_data[prefix].append(state)
for prefix, states in working_data.items():
counts = Counter(states)
summary_data["Step Prefix"] += ([prefix] * len(counts))
summary_data["State"] += counts.keys()
summary_data["Count"] += counts.values()
return summary_data |
Beta Was this translation helpful? Give feedback.
-
This is meant to kickstart some design discussions on a simple UI for applying filters to the status outputs to better deal with large studies. First, some high level features to enable:
Next, a bit on options for those features:
Now for some proposed syntax options.
sort by +step
sort in ascending order by step name (unparameterized)sort by -step
sort in descending order by step namesort by exec_order
sorts based on order of executionsort by step_param
sort by parameterized step names -> unsure of operandstep_param
here..sort by +param_name
sort in ascending order by values ofparam_name
sort by status
select steps <list of step names>
show only listed step names (unparameterized)select param_name by range <min_val> <max_val>
min/max vals for strings would be based on their sort order, capturing all indices in betweenselect param_name >= param_val
supports all bool operatorsselect param_name by value <list of values>
There's a question of what the default should be. The current default would be execution order but could be changed and configurable with filtering turned on. Said config would likely be more yaml, which could also be an alternate to verbose text input on every call, maybe even borrowing from git's aliasing of log formatting to set your own defaults.
This is meant to be a discussion, so please leave any suggestions/requests/comments below.
Beta Was this translation helpful? Give feedback.
All reactions