Skip to content

Commit 38180b8

Browse files
committed
Merge branch 'develop'
2 parents f5b5764 + 6178b5a commit 38180b8

File tree

10 files changed

+138
-33
lines changed

10 files changed

+138
-33
lines changed

conda/meta.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ build:
1515
test:
1616
requires:
1717
- ts-conda-build =0.3
18-
- {{ pin_compatible('rubin-sim', min_pin='x') }}
18+
- {{ pin_compatible('rubin-scheduler', min_pin='x') }}
1919
source_files:
2020
- python
2121
- tests
2222
- setup.cfg
2323
- pyproject.toml
2424
commands:
25-
- rs_download_data
25+
- scheduler_download_data --update
2626
- pytest -vsx tests/
2727

2828
requirements:
@@ -32,14 +32,14 @@ requirements:
3232
- pip
3333
- setuptools_scm
3434
- setuptools
35-
- rubin-sim =1
35+
- rubin-scheduler
3636
build:
3737
- python {{ python }}
3838
- numpy {{ numpy }}
3939
- setuptools
4040
- setuptools_scm
4141
- ts-conda-build
42-
- rubin-sim =1
42+
- rubin-scheduler
4343
run:
4444
- python {{ python }}
45-
- {{ pin_compatible('rubin-sim', min_pin='x') }}
45+
- {{ pin_compatible('rubin-scheduler', min_pin='x') }}

doc/version_history.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,19 @@
44
Version History
55
===============
66

7+
v0.9.0
8+
------
9+
* Move imports from rubin_sim to rubin_scheduler where applicable.
10+
* Update and extend conda dependencies.
11+
12+
v0.8.0
13+
------
14+
15+
* In ``auxtel/basis_functions.py``, add m5diff basis function to cwfs survey.
16+
* Add MaskAzimuthBasisFucntion to maintel blob and DD surveys.
17+
* Update maintel survey to use ``FieldSurvey`` class instead of ``DeepDrillingSurvey``.
18+
* Add an "anytime" survey to the maintel scheduler to allow using it anytime in the day.
19+
720
v0.7.3
821
------
922

python/lsst/ts/fbs/utils/auxtel/basis_functions.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
import typing
2929

30-
from rubin_sim.scheduler import basis_functions
30+
from rubin_scheduler.scheduler import basis_functions
3131

3232

3333
def get_basis_functions_image_survey(
@@ -150,6 +150,7 @@ def get_basis_functions_cwfs_survey(
150150

151151
return [
152152
basis_functions.NotTwilightBasisFunction(sun_alt_limit=sun_alt_limit),
153+
basis_functions.M5DiffBasisFunction(nside=nside),
153154
basis_functions.SlewtimeBasisFunction(nside=nside, filtername="g"),
154155
basis_functions.SlewtimeBasisFunction(nside=nside, filtername="r"),
155156
basis_functions.SlewtimeBasisFunction(nside=nside, filtername="i"),

python/lsst/ts/fbs/utils/auxtel/make_scheduler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727

2828
from astropy import units
2929
from astropy.coordinates import Angle
30-
from rubin_sim.scheduler.detailers import BaseDetailer
31-
from rubin_sim.scheduler.schedulers import CoreScheduler
32-
from rubin_sim.scheduler.surveys import BaseSurvey
30+
from rubin_scheduler.scheduler.detailers import BaseDetailer
31+
from rubin_scheduler.scheduler.schedulers import CoreScheduler
32+
from rubin_scheduler.scheduler.surveys import BaseSurvey
3333

3434
from .. import AssertSurvey, Target, Tiles, get_auxtel_tiles
3535
from .surveys import (

python/lsst/ts/fbs/utils/auxtel/surveys.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323

2424
import astropy.units as u
2525
import numpy as np
26-
from rubin_sim.scheduler.detailers import BaseDetailer
27-
from rubin_sim.scheduler.surveys import BaseSurvey, FieldSurvey, GreedySurvey
28-
from rubin_sim.scheduler.utils import empty_observation
26+
from rubin_scheduler.scheduler.detailers import BaseDetailer
27+
from rubin_scheduler.scheduler.surveys import BaseSurvey, FieldSurvey, GreedySurvey
28+
from rubin_scheduler.scheduler.utils import empty_observation
2929

3030
from ..target import Target
3131
from .basis_functions import (

python/lsst/ts/fbs/utils/maintel/basis_functions.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,11 @@
4444
"get_basis_functions_star_tracker_survey",
4545
"get_basis_functions_blob_survey",
4646
"get_basis_functions_ddf_survey",
47+
"get_basis_functions_anytime_survey",
4748
]
4849

49-
from rubin_sim.scheduler import basis_functions
50+
from rubin_scheduler.scheduler import basis_functions
51+
from rubin_scheduler.scheduler.utils import EuclidOverlapFootprint
5052

5153

5254
def get_basis_functions_star_tracker_survey(
@@ -155,6 +157,9 @@ def get_basis_functions_blob_survey(
155157
),
156158
basis_functions.SlewtimeBasisFunction(nside=nside, filtername="r"),
157159
basis_functions.VisitRepeatBasisFunction(nside=nside),
160+
basis_functions.MaskAzimuthBasisFunction(
161+
nside=nside, az_min=160.0, az_max=200.0
162+
),
158163
]
159164

160165

@@ -200,4 +205,47 @@ def get_basis_functions_ddf_survey(
200205
wind_speed_maximum=wind_speed_maximum, nside=nside
201206
),
202207
basis_functions.VisitGap(note=survey_name, gap_min=gap_min),
208+
basis_functions.MaskAzimuthBasisFunction(
209+
nside=nside, az_min=160.0, az_max=200.0
210+
),
211+
]
212+
213+
214+
def get_basis_functions_anytime_survey(
215+
nside: int,
216+
) -> list[basis_functions.BaseBasisFunction]:
217+
"""Get basis functions for the anytime survey.
218+
219+
Parameters
220+
----------
221+
nside : `int`
222+
The healpix map resolution.
223+
224+
Returns
225+
-------
226+
`list`[ `basis_functions.BaseBasisFunction` ]
227+
List of basis functions.
228+
"""
229+
sky = EuclidOverlapFootprint()
230+
footprints, labels = sky.return_maps()
231+
target_map = footprints["r"]
232+
233+
bfs = [
234+
basis_functions.HaMaskBasisFunction(
235+
ha_min=-1.5,
236+
ha_max=1.5,
237+
nside=nside,
238+
),
239+
basis_functions.ZenithShadowMaskBasisFunction(
240+
min_alt=40.0,
241+
max_alt=82.0,
242+
nside=nside,
243+
),
244+
basis_functions.SlewtimeBasisFunction(filtername="r", nside=nside),
245+
basis_functions.TargetMapBasisFunction(target_map=target_map),
246+
basis_functions.MaskAzimuthBasisFunction(
247+
nside=nside, az_min=160.0, az_max=200.0
248+
),
203249
]
250+
251+
return bfs

python/lsst/ts/fbs/utils/maintel/make_scheduler.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,18 @@
4747

4848
from astropy import units
4949
from astropy.coordinates import Angle
50-
from rubin_sim.scheduler.detailers import BaseDetailer
51-
from rubin_sim.scheduler.schedulers import CoreScheduler
52-
from rubin_sim.scheduler.surveys import BaseSurvey
53-
from rubin_sim.scheduler.utils import Footprint
50+
from rubin_scheduler.scheduler.detailers import BaseDetailer
51+
from rubin_scheduler.scheduler.schedulers import CoreScheduler
52+
from rubin_scheduler.scheduler.surveys import BaseSurvey
53+
from rubin_scheduler.scheduler.utils import Footprint
5454

5555
from .. import Target, Tiles, get_maintel_tiles
56-
from .surveys import generate_blob_survey, generate_ddf_surveys, generate_image_survey
56+
from .surveys import (
57+
generate_anytime_survey,
58+
generate_blob_survey,
59+
generate_ddf_surveys,
60+
generate_image_survey,
61+
)
5762

5863

5964
class SurveyType(enum.IntEnum):
@@ -73,6 +78,7 @@ def get_scheduler(
7378
wind_speed_maximum: float,
7479
survey_type: SurveyType,
7580
image_tiles: list[Tiles],
81+
survey_name: str = "SIT",
7682
survey_detailers: list[BaseDetailer] | None = None,
7783
) -> tuple[int, CoreScheduler]:
7884
"""Construct feature based scheduler.
@@ -113,9 +119,9 @@ def get_scheduler(
113119
target=target,
114120
wind_speed_maximum=wind_speed_maximum,
115121
nfields=len(image_targets),
116-
survey_detailers=survey_detailers
117-
if survey_detailers is not None
118-
else [],
122+
survey_detailers=(
123+
survey_detailers if survey_detailers is not None else []
124+
),
119125
)
120126
)
121127

@@ -135,18 +141,20 @@ def get_scheduler(
135141
footprints=footprints,
136142
wind_speed_maximum=wind_speed_maximum,
137143
filter_names="r",
138-
survey_name="SIT",
144+
survey_name=survey_name,
139145
)
140146

141147
ddf_surveys = generate_ddf_surveys(
142148
nside=nside,
143149
wind_speed_maximum=wind_speed_maximum,
144150
gap_min=60.0,
145-
survey_base_name="SIT",
151+
survey_base_name=survey_name,
146152
)
147153

154+
anytime_survey = generate_anytime_survey(nside=nside, survey_name=survey_name)
155+
148156
surveys = (
149-
[ddf_surveys, [blob_survey]]
157+
[ddf_surveys, [blob_survey], [anytime_survey]]
150158
if survey_type == SurveyType.SIT
151159
else [image_survey]
152160
)

python/lsst/ts/fbs/utils/maintel/surveys.py

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,19 @@
4444

4545
import astropy.units as u
4646
import numpy as np
47-
from rubin_sim.scheduler.detailers import BaseDetailer
48-
from rubin_sim.scheduler.surveys import (
47+
from rubin_scheduler.scheduler.detailers import BaseDetailer
48+
from rubin_scheduler.scheduler.surveys import (
4949
BaseSurvey,
5050
BlobSurvey,
51-
DeepDrillingSurvey,
5251
FieldSurvey,
52+
GreedySurvey,
5353
)
54-
from rubin_sim.scheduler.utils import empty_observation
55-
from rubin_sim.utils import ddf_locations
54+
from rubin_scheduler.scheduler.utils import empty_observation
55+
from rubin_scheduler.utils import ddf_locations
5656

5757
from ..target import Target
5858
from .basis_functions import (
59+
get_basis_functions_anytime_survey,
5960
get_basis_functions_blob_survey,
6061
get_basis_functions_ddf_survey,
6162
get_basis_functions_star_tracker_survey,
@@ -224,7 +225,7 @@ def generate_ddf_surveys(
224225
gap_min=gap_min,
225226
)
226227

227-
ddf_survey_1 = DeepDrillingSurvey(
228+
ddf_survey_1 = FieldSurvey(
228229
basis_functions,
229230
ra,
230231
dec,
@@ -252,7 +253,7 @@ def generate_ddf_surveys(
252253
gap_min=gap_min,
253254
)
254255

255-
ddf_survey_2 = DeepDrillingSurvey(
256+
ddf_survey_2 = FieldSurvey(
256257
basis_functions,
257258
ra,
258259
dec,
@@ -267,3 +268,37 @@ def generate_ddf_surveys(
267268
)
268269

269270
return [ddf_survey_1, ddf_survey_2]
271+
272+
273+
def generate_anytime_survey(
274+
nside: int,
275+
survey_name: str,
276+
) -> BaseSurvey:
277+
"""Generate a survey that will produce valid targets at anytime.
278+
279+
Parameters
280+
----------
281+
nside : `int`
282+
Healpix map resolution.
283+
survey_name : `str`
284+
Survey name.
285+
286+
Returns
287+
-------
288+
anytime_survey : `GreedySurvey`
289+
Greedy survey configured to produce targets at any time.
290+
"""
291+
292+
bfs = get_basis_functions_anytime_survey(nside)
293+
294+
weights = np.ones(len(bfs))
295+
296+
anytime_survey = GreedySurvey(
297+
basis_functions=bfs,
298+
basis_weights=weights,
299+
filtername="r",
300+
nside=nside,
301+
survey_name=survey_name,
302+
)
303+
304+
return anytime_survey

tests/auxtel/test_basis_functions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def test_get_basis_functions_cwfs_survey() -> None:
5252
wind_speed_maximum=7.0,
5353
)
5454

55-
assert len(basis_functions) == 8
55+
assert len(basis_functions) == 9
5656

5757

5858
def test_get_basis_functions_spectroscopic_survey() -> None:

tests/auxtel/test_scheduler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from astropy.coordinates import Angle
2727
from lsst.ts.fbs.utils import Target, Tiles
2828
from lsst.ts.fbs.utils.auxtel.make_scheduler import MakeScheduler, SurveyType
29-
from rubin_sim.scheduler.detailers import BaseDetailer, CameraRotDetailer
29+
from rubin_scheduler.scheduler.detailers import BaseDetailer, CameraRotDetailer
3030

3131

3232
class TestMakeScheduler(unittest.TestCase):

0 commit comments

Comments
 (0)