Skip to content

Conversation

@SunilSimha
Copy link

Hello!

I'm proposing the addition of Constraints to the time_dependent plots, specifically plot_airmass. Currently, my changes add a thick black line where the telescope constraints are not satisfied (i.e. the object is not observable when it's marked black).
image
The figure above shows an example image with my custom Constraint class called KeckVisibility which takes into account the various telescope pointing constraints at Keck I and Keck II.

I've not made any changes to the other plots yet as they're plotted somewhat differently but am happy to take suggestions for those as well.

Regards,
Sunil

from __future__ import (absolute_import, division, print_function,
unicode_literals)
import copy
from xmlrpc.client import boolean
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this used anywhere?

Comment on lines +186 to +202

# Firstly, check that the constraints are valid if any.
if constraints is not None:
if isinstance(constraints, Constraint):
constraints = [constraints]

assert isinstance(constraints, (list, tuple, np.ndarray)), "constraints must be an array-like object or a single Constraint instance."
for cons in constraints:
assert isinstance(cons, Constraint), "All constraint objects must be Constraints"

# Make sure they're boolean
assert hasattr(cons, 'boolean_constraint'), "Each constraints element must have the 'boolean_constraint attribute."
assert cons.boolean_constraint, "Cannot work with non-boolean constraints."
# Then make sure they're not some weird user-generated constraint.
assert hasattr(cons, 'compute_constraint'), "Constraints must have a 'compute_constraint' method."


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than including asserts in the function here, a more common approach is to extract the elements of the list that meet the validation criteria, without raising an error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants