-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add top-level "limits" key in xija JSON specification #70
Comments
See also the project-level issue https://github.com/sot/ska-projects/issues/125. |
@taldcroft I love this idea. In fact, this was the first thing I tried in #69. I think I just reversed the changes instead of rewriting the history, so I should be able to bring them back easily. |
OK, I had missed this issue. With regard to using "planning" limits for anything not ODB, are we better off with the capability to just freely label these thins? That was my suggestion in sot/ska-projects#125 But my thought there just speaks to the idea that the MCC API would just be plotting lines for anything not-ODB. If we have other uses for planning limits, that's a different conversation. |
@taldcroft what color would you like the ACA penalty limit to be? |
Chartreuse? 😄 Well, whatever is the standard "planning_caution_*" color. I don't really care as long as it is not red and is visible on the plots with a white background. |
I wasn't aware that there is a "planning caution" color. I think the only limit that exists with this designation is the ACA limit. The planning warning limits are usually plotted in green. |
Indeed ACA is currently the only subsystem that uses this, but it seems like a natural generalization of the caution/warning terminology used for the ODB / glimmon limits. Maybe it would make sense to be more specific and use e.g. |
In my working copy I currently call it def annotate_limits(self, ax, dir='h'):
if len(self.limits) == 0:
return
draw_line = getattr(ax, 'ax{}line'.format(dir))
if 'acisi' in self.limits:
draw_line(self.limits['acisi'], ls='-.', color='blue')
if 'aciss' in self.limits:
draw_line(self.limits['aciss'], ls='-.', color='purple')
if 'aca_penalty' in self.limits:
draw_line(self.limits['aca_penalty'], ls='-.', color='dodgerblue')
if 'planning_low' in self.limits:
draw_line(self.limits['planning_low'], ls='-', color='green')
if 'planning_high' in self.limits:
draw_line(self.limits['planning_high'], ls='-', color='green')
if 'caution_low' in self.limits:
draw_line(self.limits['caution_low'], ls='-', color='gold')
if 'caution_high' in self.limits:
draw_line(self.limits['caution_high'], ls='-', color='gold')
if 'warning_low' in self.limits:
draw_line(self.limits['caution_low'], ls='-', color='red')
if 'warning_high' in self.limits:
draw_line(self.limits['caution_high'], ls='-', color='red') |
[EDIT] - I'm not in favor of this idea. Hmm, I wonder if we should abstract this out a bit and define a The |
A good question about proseco vs aca penalty limit. Probably not the place for this conversation, but what is your intuition @taldcroft on the likelihood of many aca penalty limit increases while keeping the penalty equation the same? If it is likely, it seems like we'd want to just manage the limit with the json file so we could do a quick release to update. If we need a proseco release to change the limit, that will be a full matlab release. Or we'd need some other limit / penalty limit management strategy. |
Looking back, can we just go with my original suggestion (with the I would also suggest using more verbose/descriptive names for |
And basically the ACA penalty limit is pretty much a |
With the current proseco code this will happen each time we raise the |
Specifically, I was asking about the possible value of changing proseco to take a supplied penalty limit (could be passed from ORViewer for our use case). |
EDIT: |
Sorry, ADD, didn't quite read between the lines. Yeah, that is probably a good idea. |
Per TWG today, it sounds like if we want to delegate the limits to TWG as a managed thing in the model file (with the limits as conceptually a distinct thing from the model) we'll need to bring that process change to FDB too (which is fine, just wanted to capture it). |
I'm sorry we didn't have time to focus on this in much depth today, this really deserves a separate TWG discussion. From my initial perspective, I don't see the need to delegate thermal planning_warning limit management to the TWG, it can, and probably should, remain an FDB controlled item, as this currently fits well in the mission planning guideline management framework. The odb_warning limits are controlled at the FDB level and the odb_caution limits should remain controlled at the FOM level. Should any of these limits be changed using existing processes, the TWG would simply give approval to update the files to reflect already-approved limits. The caution_planning limits could be controlled at the TWG, where such limits are specified (e.g. ACA penalty limit). Is this the process change that would require FDB approval? |
One subtlety with regard to this is that I think of the model and the limits as being somewhat intimately connected. You can change the "effective" limits quite easily by changing the model, so at that point does it make as much sense for the limits to be independently controlled by FDB? Worth more discussion. And of course this github issue of keeping the limits in the JSON file is a code/process item separate from the "who should need to sign off" part, but I wasn't sure where to keep track of these elements/ideas. Thanks! |
Yes they are connected, but as they both impact safety, I think it is appropriate for one of these elements to be FDB controlled, and I'd rather the FDB control the planning_warning limit as this is more straightforward than the model. They way I see it, the planning_warning limit is the goal, set with a reasonable expectation of the model error. Although this error can change, the goal is to keep the model error at or below that required to prevent an odb_caution violation most of the time, or to prevent unexpected performance impacts, such as with the ACA limit. This can take the form of updating the model when the observed error becomes too large, or, as a last resort, moving the planning_warning limit to account for larger error. I too want to keep track of these elements/ideas and this seems to be a good place for the time being, though I will try to remember to link to this conversation, and summarize it, when it gets added as a TWG topic. Thank you! |
What I was suggesting in the meeting was to have names like Obviously this requires changes to existing spec files and code, but maybe this gets us into a good footing for future enhancements? Thoughts? |
I like the clean look of this quasi-hierarchy naming convention, but I'm hesitant due to the possible confusion this could lead to when reading through the code. it looks like it implies that This doesn't really matter to the functionality of the code, but adds a hurdle to visually parsing the code and leads me to wonder if we shouldn't make this hierarchy in the json, if it is indeed what we want, e.g.
|
I feel like that structural hierarchy just complicates the application code without providing any real benefit (but maybe I'm not seeing it?). I also think this is harder for humans to read the JSON than the flat version. E.g. by the time you get to the
vs.
There is some precedent, e.g. the |
I agree that the "proper" hierarchy is cumbersome, and that it doesn't really add any significant benefits. My only real argument is that using a language access syntax (i.e. the |
I agree with Tom, adding any additional hierarchy adds complication without any real benefit. In addition to making this part of the model specification file harder to read as a human, such a hierarchy makes it less flexible. After all, using a name like "planning.caution.high" is just a convention and can coexist alongside other naming conventions. The only rules we need to abide by here are:
|
Looking at this again after a few hours, maybe we can fit things a bit more neatly into a schema like |
That seems reasonable. This adds an easy to read field that would be easy to parse and clearly indicates the intent. |
Should we update the "top" of this issue with the final schema? |
Done. |
Should this issue be closed now? |
Based on discussions in recent working groups, and informal support in #69, this issue proposes the formal addition of a top-level keyword
limits
in the xija JSON model specification format. This key would be adict
that can contain the limit keywords shown below. All keywords would be optional, except that if any values are provided then aunit
keyword must be supplied.Keywords
In general the keywords use the pattern
<limit_system>.<limit_type>.<high/low>.<optional qualifier>
.ODB caution and warning limits
odb.caution.low
odb.caution.high
odb.warning.low
odb.warning.high
Planning limits
planning.warning.low
: "low planning limit" for ACIS DPA for exampleplanning.warning.high
: "planning limit" for most systems (do not exceed)planning.caution.low
: no systems currently use this AFAIKplanning.penalty.high
: "penalty limit" for ACAUnit for all values
unit
:degF
ordegC
. Defaults todegC
.Examples:
@jzuhone @jeanconn @jskrist @matthewdahmer
Closes https://github.com/sot/ska-projects/issues/125
The text was updated successfully, but these errors were encountered: