Skip to content

Releases: lsst/rubin_scheduler

v2.0.0

16 Sep 21:00
ce6e319
Compare
Choose a tag to compare

v2.0.0 has several important changes from v1.2.1.

  • Removed Basis functions:
    LimitObsPnightBasisFunction SunHighLimitBasisFunction TargetMapBasisFunction AvoidLongGapsBasisFunction AvoidFastRevisits GoalStrictFilterBasisFunction AggressiveSlewtimeBasisFunction SkybrightnessLimitAtHpixBasisFunction SkybrightnessLimitBasisFunction CablewrapUnwrapBasisFunction TemplateGenerateBasisFunction FootprintNvisBasisFunction ThirdObservationBasisFunction NearSunTwilightBasisFunction ObservedTwiceBasisFunction LimitRepeatBasisFunction ZenithShadowMaskBasisFunction MaskAzimuthBasisFunction TargetMapModuloBasisFunction

  • Removed features:
    NObsSurvey (and note that NObsCount now accepts a note as well as a filter name to double for what was previously in NObsSurvey), LastsequenceObservation LastFilterChange CoaddedDepth NObservationsSeason NObsCountSeason SurveyInNight

  • empty_observation has been replaced by ObservationsArray so is now a numpy subclass rather than a simple array. Note that a single-element ObservationArray should be handed to the scheduler in add_observation, as well as in unit tests of basis functions and features. Multiple observations (to potentially be added at the same time) would also be passed in a single ObservationArray, however this would be multi-element. All basis functions and features should have the capability to add multiple observations, in add_observations_array functions.
    In addition, science_program, observation_reason and target_name are now elements of the ObservationArray.

  • The kinematic model (used in simulations) now will appropriately handle slew calculations if the azimuth range available to the telescope is < 360 degrees. Jerk is now included when estimating slew times. Two new utilities (tma_movement and rotator_movement) allow quick setting of telescope parameters at a given percentage of maximum capability.

  • The Conditions object now keeps tel_alt_limit and tel_az_limit as potential "good observing region" pieces of information, and will also keep kinematic_alt_limit and kinematic_az_limit which should be set from the current kinematic capabilities of the telescope. In simulations these will automatically be picked up from the Kinematic Model; in operations they could be passed from observatory model yaml configuration. Several unused attributes and keyword arguments were also removed from Conditions.

  • The AltAzShadowMaskBasisFunction is updated to pick up tel_alt_limit, tel_az_limit, kinematic_alt_limit and kinematic_az_limit from the conditions object, as well as key word arguments for both alt and azimuth in the keywords. This allows configuration of surveys that will automatically pick up the limits of accessible regions of sky, and use these to mask out un-observable regions, including regions that will enter those parts of the sky within shadow_minutes.

  • sim_runner arguments have been updated to be more clearly named; mjd_start was intended to indicate the start of the simulated survey, not the current starting time (which is mjd), so has been renamed sim_start_mjd. (note that this is true for other basis function or survey use of mjd_start or survey_start ; both of these are intended to indicate the start of the entire survey and not the current starting time.

  • functions useful for configuring surveys according to the v3.6 baseline were added to rubin_scheduler

  • additional simple survey configuration utilities were added in rubin_scheduler.scheduler.example.simple_examples, including a greedy and pairs survey which (when configured as the default) should be able to provide observations at any time without ranging out of bounds. An example for FieldSurvey configuration is also included.

  • Some unused kwargs are removed from the BlobSurvey

  • Small updates to the DDF locations to match the 2018 cadence white paper

  • Euclid deep drilling field dither detailer updates

  • Increase the default read out time to 2.4s

  • Add jerk to slewtime calculations, with a default value

  • Increase downtime estimates in year one (ramping down over first year)

  • Updates to FieldSurvey (addition of the option to only count observations with a particular survey note)

  • SchemaConverter is more robust against missing or changed columns

  • Support for retrieving visits from the ConsDB is added

  • Support to automatically run daily one-night auxtel sims to support the prenight briefing

What's Changed

  • PREOPS-5256: make rubin_scheduler.scheduler.utils.SchemaConverter.opsim2obs robust to columns of unexpected type by @ehneilsen in #69
  • Pin scipy by @rhiannonlynne in #70
  • PREOPS-5190: Automatically run one-night auxtel sims daily to support the prenight briefing by @ehneilsen in #71
  • OPSIM-1163: Update DDF locations to 2018 white paper by @rhiannonlynne in #73
  • OPSIM-1164: cleanup deprecation warnings, skip unit test if lsst.ts not available by @yoachim in #74
  • OPSIM-1140: swap note to scheduler_note by @yoachim in #77
  • add switch to use old ddf locs by @yoachim in #75
  • increase read time to 2.4s by @yoachim in #78
  • Euclid detailer updates (doc and field coordinates) U/yoachim/euclid detailer clean by @yoachim in #79
  • Fix bug in "NObsSurvey" feature to add_observation/add_observation_array by @yoachim in #81
  • OPSIM-1170: convert observation schema from target to target_name by @yoachim in #82
  • PREOPS-5245: Add support for reading visits from ConsDB by @ehneilsen in #80
  • PREOPS-5361: Gracefully handle missing columns in SchemaConverter by @ehneilsen in #83
  • OPSIM-1173: : change basis function names, small bug fix by @rhiannonlynne in #85
  • OPSIM-1174: modify FieldSurvey, add new fields to observation by @rhiannonlynne in #87
  • PREOPS-5366: remove old minimum pair time kwarg since blob no longer adjust pair time by @yoachim in #89
  • OPSIM-1178: update defaults to add more downtime in year and add jerk by @yoachim in #90
  • Unpin scipy by @rhiannonlynne in #92
  • OPSIM-1181: backwards compatibility for field survey kwargs by @rhiannonlynne in #94
  • OPSIM-1176 : Add additional tools for comcam sv surveys by @rhiannonlynne in #91
  • OPSIM-1180: Updates to bring rubin_scheduler in line with v3.5 simulations by @yoachim in #93
  • OPSIM-1184: use ra/dec to order series of observations in BlobSurvey by @yoachim in #95
  • OPSIM-1175: update the kinematic model and altazshadowmask basis function by @rhiannonlynne in #88
  • OPSIM-1186: Add science_program, observation_reason, target_name via TrackingInfoDetailer by @yoachim in #98
  • OPSIM-1182: Refactor add_observation to use an observation array (like empty_observation). by @yoachim in #97
  • OPSIM-1188: remove comcam sv experiments, go to just simple greedy/pairs/field survey examples by @rhiannonlynne in #96
  • OPSIM-1189: Remove unused attributes from Conditions object by @yoachim in #100
  • increase fast coord tolerance by 1 second by @yoachim in #101
  • OPSIM-1157: Add ObservationsArray - change observations to proper numpy subclass by @yoachim in #102
  • PREOPS-5526: Rename sim_runner args to distinguish simulation start and duration from survey start and duration by @ehneilsen in #104
  • OPSIM-1190: remove deprecated features and basis functions by @rhiannonlynne in #103

Full Changelog: v1.2.1...v2.0.0

v1.2.1

11 Jun 00:18
Compare
Choose a tag to compare

This patch fixes a bug introduced at v1.2.0, where the pseudo parallax angle was introduced to the opsim output. This column was then assumed to be present when reading observations back into via the SchemaConverter, but this was then incompatible with older versions of simulation outputs.
The bug fix here allows reading older versions of the simulation outputs where columns may be missing, and will fill missing columns with NaN values.

In addition, documentation is now provided in rubin-scheduler.lsst.io for the archive sim driver functionality.

What's Changed

  • OPSIM-1154 scripted survey check filter loaded by @yoachim in #66
  • tickets/PREOPS-5186: be robust to missing columns in obs databases by @ehneilsen in #68
  • tickets/PREOPS-5185: Create doc stubs for rubin_scheduler's pre-night sim driver by @ehneilsen in #67

Full Changelog: v1.2.0...v1.2.1

v1.2.0

28 May 01:26
afced0e
Compare
Choose a tag to compare

Updates with v1.2.0:

  • Update in rotSkyPos calculation for SimonyiTel, to match SMTN-019 (at the time of release, on branch DM-44258).
  • Update in rubin_scheduler.utils.calc_season, to anchor the start time for all RA values. Will now return -1 for ra/date combination which produces less than a full year of observability at the start of the survey, and then proceeds from 0 for each full season. The DDF scheduling is updated to fit with this new implementation and more easily account for partial seasons at the start or end of the survey.
  • "Uniform rolling" is now available as a option in the base scheduler code
  • Starting simulations at various points during the day now produces more uniform results, and a bug fix is added where simulations might skip ahead by a night if given a start time exactly at sunset.
  • Scheduled observations (such as DDF visits) will now respect moon distance limits.
  • rubin_scheduler.skybrightness_pre will now return a flag bright sky value if a time is requested when the sun is up instead of the nearest twilight value
  • more support is added for running rubin_scheduler to create nightly simulations for the pre-night briefing

Other changes are primarily code refactoring or details: line lengths have been updated to fit within style guidelines, installation instructions are updated, a context manager is used for loading files, better compatibility with tabulate is provided, and IntRounded is moved within the codebase.

What's Changed

  • load with context manager by @yoachim in #47
  • OPSIM-1133: Docstrings and comments line lengths to pass ruff by @yoachim in #49
  • move IntRounded by @yoachim in #51
  • add mjd_start to calc_season by @yoachim in #48
  • OPSIM-1135 Move 'get_baseline' to rubin-sim by @rhiannonlynne in #52
  • Include a moon distance limit for scheduled observations. by @yoachim in #54
  • U/yoachim/roll uniform by @yoachim in #56
  • another fix for minimum area survey by @yoachim in #58
  • fix skip night ahead bug by @yoachim in #59
  • install instruction clarification by @yoachim in #60
  • tickets/PREOPS-5051: work around tabulate's inability to deal with array values in pandas.… by @ehneilsen in #61
  • OPSIM-1136: Update zero point for calc_season and make it multi-RA capable by @rhiannonlynne in #53
  • filter scheduler always use moon phase at sunset by @yoachim in #62
  • OPSIM-1151: return a bright sky map if time requested when sun is up by @yoachim in #63
  • tickets/PREOPS-5156: Create driver for sets of pre-night opsim simulations by @ehneilsen in #65
  • OPSIM-1150: update rotSkyPos / rotTelPos conversion for rubin fov by @yoachim in #64

Full Changelog: v1.1.1...v1.2.0

v1.1.1

29 Feb 21:42
e06c03c
Compare
Choose a tag to compare

V1.1.1

Primary updates:

  • Addition of a jerk component to the KinematicModel. While this is disabled by default in this release (infinite jerk), it allows the option of adding a finite jerk to the kinematic model for evaluation of this effect.
  • Addition of documentation for the simulation archive code (which enables easier analysis of nightly simulations), and additional documentation for the rotator settings (please read, if creating your own FBS targets from the scheduler).
  • Added the option for SchemaConverter to append to an existing sqlite database, if desired.
  • Made it easier to run the ModelObservatory with subsets of 'ideal' conditions -- i.e. ideal cloud and no downtime, but not idealized seeing.
  • Cross-platform and rounding issues addressed in a couple of locations, by extension of IntRounded into new methods.
  • (optional) use of lsst.resources to load skybrightness files.
  • Code reconfiguration so that the optimal path calculation for a series of visits is a utility, not part of (a specific) Survey class.
  • An update to better support observing with a ComCam field of view.

Some other notable updates:

  • Update to purest 8 and black 24.
  • Fix code coverage tests in GitHub actions.
  • No more ruff failures!

What's Changed

  • tickets/PREOPS-4831: fix code coverage tests in github action by @ehneilsen in #36
  • tickets/PREOPS-4775: Document the prototype sim archive by @ehneilsen in #33
  • tickets/PREOPS-4736: Support loading of sky brightess with lsst.resources in rubin_scheduler by @ehneilsen in #34
  • Tickets/opsim 1114 Add jerk to the telescope kinematic model by @yoachim in #32
  • rotator documentation by @yoachim in #35
  • tickets/PREOPS-4836: make conda package optional in rubin_scheduler by @ehneilsen in #37
  • tickets/PREOPS-4846: update rubin_scheduler for pytest 8 and black 24 by @ehneilsen in #38
  • IntRounded into TSP code by @yoachim in #40
  • Fixing ruff issues by @yoachim in #41
  • remove pytest-black dependency by @ehneilsen in #39
  • Update ComCam by @yoachim in #42
  • move path optimization out of survey object by @yoachim in #43
  • easier to run model observatory with ideal conditions by @yoachim in #44
  • let SchemaConverter append to an already existing sqlite file by @yoachim in #45

Full Changelog: v1.1.0...v1.1.1

v1.1.0

28 Jan 04:47
Compare
Choose a tag to compare

Significant feature updates available in this release include :

  • The ModelObservatory will run all the way to sunrise and sunset, extending the potential use of rubin_scheduler beyond -12 degree twilight.
  • The addition of altitude and azimuth limits to the Conditions object which passes incoming telemetry to the scheduler. This is coupled with an new mask basis function, AltAzShadowMaskBasisFunction which uses these limits set by the Conditions object, or optional tighter constraints set by kwargs, to mask off unavailable areas of the sky (as well as provides an optional 'shadow' to prevent early observations of the fields which would move into these unavailable regions). It is generally recommended to include the limits provided by the Conditions object into any Survey class configured by a user.
  • The addition of a PointingSurvey subclass, which is a slight generalization of a FieldSurvey but allows multiple (single field) targets within the same Survey class. There is additional documentation of the use of this new subclass in the rubin_sim_notebooks tutorials.
  • Additional support for schedview visualizations of the scheduler outputs, including the addition of an archive which can include S3 buckets to store simulation outputs (which can later be retrieved in schedview dashboards for visualization). NOTE that this now adds lsst-resources as an optional package. lsst-resources is necessary for use of the archive portion of the code.

Bugfixes continue, as always.

  • A bug introduced after v1.0.0 caused the near sun twilight micro survey to fail to execute continuously over the survey lifetime. We then fixed that bug. (note that no released version of rubin_scheduler included this bug).
  • We continue to strive for cross-platform repeatability, and updated IntRounded to enable this goal.
  • The DitherDetailer could occasionally push requested RA into negative values, but now wraps the RA values properly into 0-360 degrees.
  • We continue to work on updating and clarifying the documentation.

The rubin_scheduler software is maintained primarily by the Rubin Survey Scheduling Team - @yoachim, @ehneilsen and @rhiannonlynne

What's Changed

  • deprecate thomson and training dirs by @yoachim in #13
  • OPSIM-893: bugfix/feature. Update IntRounded for cross-platform repeatability. by @yoachim in #15
  • Documentation. Add initial rubin_scheduler overview page to documentation. by @rhiannonlynne in #16
  • Feature. modelobservatory can run all the way to sunrise and set (not just -12deg twilight). by @yoachim in #17
  • Documentation. Add drop-down for FBS scheduler pieces by @rhiannonlynne in #18
  • OPSIM-1105: bugfix. Ensure twilight near-sun survey executes. by @yoachim in #19
  • PREOPS-4646: feature- Support addition of opsim data to an archive for use by schedview-prenight by @ehneilsen in #20
  • PREOPS-4776: bug fix - Fix import order for isort in rubin_scheduler by @ehneilsen in #23
  • OPSIM-1104: feature. Add PointingSurvey subclass. by @yoachim in #21
  • PREOPS-4779: bug fix - make sim_archive be robust toward presence of absence of trailing / by @ehneilsen in #25
  • PREOPS-4781: feature - make save of scheduler pickle work for arbitrary paths, not just from the current dir. by @ehneilsen in #27
  • PREOPS-4780: bug fix - fix end date of simulation to be closed interval, not open interval by @ehneilsen in #26
  • PREOPS-4782: bug fix - when requesting time during the day, set available block size time to 0 by @ehneilsen in #24
  • OPSIM-1112: feature - scripted surveys avoid the start of twilight by @yoachim in #28
  • OPSIM-1111: feature - Add altitude and azimuth limits to Conditions, along with new basis function + shadow mask by @yoachim in #22
  • PREOPS-4795: feature - Use SITCOMTN-32 dayObs defn. for rollover time in prenight sim archive by @ehneilsen in #29
  • OPSIM-1113: bugfix for dither detailer (wrap RA) and DDF prescheduling for morning twilight by @yoachim in #30
  • PREOPS-4828: feature - make lsst.resource dependency of rubin_scheduler optional by @ehneilsen in #31

Full Changelog: v1.0.0...v1.1.0

v1.0.0

29 Nov 03:07
Compare
Choose a tag to compare

The first official release of rubin_scheduler, home of the Feature Based Scheduler algorithms for scheduling Vera C. Rubin Observatory's Legacy Survey of Space and Time.

The software modules in this package used to be part of rubin_sim but for more reliable deployment during operations, they now exist in this separate repository with fewer dependencies and a more compact codebase.

This software is maintained by @yoachim, @ehneilsen and @rhiannonlynne of the Rubin Survey Scheduling Team, as well as @tribeiro and @edennihy from Rubin Telescope&Site/Observatory Operations.

Pre-release

06 Nov 22:35
152a804
Compare
Choose a tag to compare
Pre-release Pre-release
Pre-release

Initial repo setup.