- scheduler - This package. The
core scheduling library, a.k.a.
schedlib
. - scheduler-server - The Flask API for fetching schedules.
- scheduler-web - The web front end for the scheduler.
First clone this repository, and then install with pip:
git@github.com:simonsobs/scheduler.git
pip install .
Alternatively, pip install directly from GitHub:
pip install schedlib@git+https://github.com/simonsobs/scheduler.git
The basic task of scheduler is to take sequences of planned observations, optimize them based on observational constraint set by observer and instrument, and convert them into a series of commands to operate the telescope. To achieve this goal, the scheduler divides this task into three steps:
- initialize sequences of timed blocks (
Block
) which represent planned observations; - apply transformations (
Rule
) to the sequences of blocks to optimize the sequence based on given constraints. An example transformation could besun-avoidance
which removes blocks that are too close to the sun; - convert the sequence of blocks into a sequence of commands to operate the telescope.
A Policy
defines how this three-step process is orchastrated. In other words, a policy defines how sequences of Blocks
get transformed into commands. Step 1 is implemented with Policy.init_seq
, step 2 is implemented with Policy.apply
, and step 3 is implemented with Policy.seq2cmd
. Different policies can be implemented to correspond to the needs of different instruments.
Confluence link for instructions on setting up and using scheduler