Skip to content

Commit 74c390f

Browse files
committed
allow flexibility for deleting original time-viewer
1 parent 3277d4d commit 74c390f

12 files changed

+36
-35
lines changed

lcviz/helper.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77
from glue.core.component_id import ComponentID
88
from glue.core.link_helpers import LinkSame
99
from jdaviz.core.helpers import ConfigHelper
10+
from lcviz.viewers import TimeScatterView
1011

1112
__all__ = ['LCviz']
1213

13-
_default_time_viewer_reference_name = 'flux-vs-time'
14-
1514
custom_components = {'plugin-ephemeris-select': 'components/plugin_ephemeris_select.vue'}
1615

1716
# Register pure vue component. This allows us to do recursive component instantiation only in the
@@ -22,11 +21,7 @@
2221

2322

2423
def _get_range_subset_bounds(self, subset_state, *args, **kwargs):
25-
# Instead of overriding the jdaviz version of this method on jdaviz.Application,
26-
# we could put in jdaviz by (1) checking if helper has a
27-
# _default_time_viewer_reference_name, (2) using the LCviz version if so, and (3)
28-
# using the jdaviz version otherwise.
29-
viewer = self.get_viewer(self._jdaviz_helper._default_time_viewer_reference_name)
24+
viewer = self._jdaviz_helper.default_time_viewer._obj
3025
light_curve = viewer.data()[0]
3126
reference_time = light_curve.meta['reference_time']
3227
if viewer:
@@ -86,7 +81,6 @@ class LCviz(ConfigHelper):
8681

8782
def __init__(self, *args, **kwargs):
8883
super().__init__(*args, **kwargs)
89-
self._default_time_viewer_reference_name = _default_time_viewer_reference_name
9084

9185
# override jdaviz behavior to support temporal subsets
9286
self.app._get_range_subset_bounds = (
@@ -152,6 +146,14 @@ def get_data(self, data_label=None, cls=LightCurve, subset=None):
152146
"""
153147
return super()._get_data(data_label=data_label, mask_subset=subset, cls=cls)
154148

149+
@property
150+
def default_time_viewer(self):
151+
tvs = [viewer for vid, viewer in self.app._viewer_store.items()
152+
if isinstance(viewer, TimeScatterView)]
153+
if not len(tvs):
154+
raise ValueError("no time viewers exist")
155+
return tvs[0].user_api
156+
155157
@property
156158
def _tray_tools(self):
157159
"""

lcviz/parsers.py

+6-9
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@
33
from jdaviz.core.registries import data_parser_registry
44
import lightkurve
55

6-
from lcviz.viewers import PhaseScatterView
6+
from lcviz.viewers import PhaseScatterView, TimeScatterView
77

88
__all__ = ["light_curve_parser"]
99

1010

1111
@data_parser_registry("light_curve_parser")
1212
def light_curve_parser(app, file_obj, data_label=None, show_in_viewer=True, **kwargs):
13-
time_viewer_reference_name = app._jdaviz_helper._default_time_viewer_reference_name
14-
1513
# load local FITS file from disk by its path:
1614
if isinstance(file_obj, str) and os.path.exists(file_obj):
1715
if data_label is None:
@@ -44,13 +42,12 @@ def light_curve_parser(app, file_obj, data_label=None, show_in_viewer=True, **kw
4442
app.add_data(data, new_data_label)
4543

4644
if show_in_viewer:
47-
app.add_data_to_viewer(time_viewer_reference_name, new_data_label)
48-
49-
# add to any known phase viewers
45+
# add to any known time/phase viewers
5046
for viewer_id, viewer in app._viewer_store.items():
51-
if not isinstance(viewer, PhaseScatterView):
52-
continue
53-
app.add_data_to_viewer(viewer_id, new_data_label)
47+
if isinstance(viewer, TimeScatterView):
48+
app.add_data_to_viewer(viewer_id, new_data_label)
49+
elif isinstance(viewer, PhaseScatterView):
50+
app.add_data_to_viewer(viewer_id, new_data_label)
5451

5552

5653
def _data_with_reftime(app, light_curve):

lcviz/plugins/binning/binning.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616
from lcviz.components import FluxColumnSelectMixin
1717
from lcviz.events import EphemerisChangedMessage
18-
from lcviz.helper import _default_time_viewer_reference_name
1918
from lcviz.marks import LivePreviewBinning
2019
from lcviz.parsers import _data_with_reftime
20+
from lcviz.viewers import TimeScatterView
2121
from lcviz.components import EphemerisSelectMixin
2222

2323

@@ -129,11 +129,11 @@ def _set_results_viewer(self, event={}):
129129

130130
def viewer_filter(viewer):
131131
if self.ephemeris_selected in self.ephemeris._manual_options:
132-
return viewer.reference == _default_time_viewer_reference_name
132+
return isinstance(viewer, TimeScatterView)
133133
if 'flux-vs-phase:' not in viewer.reference:
134134
# ephemeris selected, but no active phase viewers
135135
return False
136-
return viewer.reference.split('flux-vs-phase:')[1] == self.ephemeris_selected
136+
return viewer._ephemeris_component == self.ephemeris_selected
137137

138138
self.add_results.viewer.filters = [viewer_filter]
139139

lcviz/plugins/ephemeris/ephemeris.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from lightkurve import periodogram, FoldedLightCurve
1515

1616
from lcviz.events import EphemerisComponentChangedMessage, EphemerisChangedMessage
17-
from lcviz.viewers import PhaseScatterView
17+
from lcviz.viewers import PhaseScatterView, TimeScatterView
1818

1919
__all__ = ['Ephemeris']
2020

@@ -304,7 +304,7 @@ def create_phase_viewer(self, ephem_component=None):
304304
self._check_if_phase_viewer_exists()
305305

306306
# set default data visibility
307-
time_viewer_item = self.app._get_viewer_item(self.app._jdaviz_helper._default_time_viewer_reference_name) # noqa
307+
time_viewer_item = self.app._get_viewer_item(self.app._jdaviz_helper.default_time_viewer._obj.reference) # noqa
308308
for data in dc:
309309
data_id = self.app._data_id_from_label(data.label)
310310
visible = time_viewer_item['selected_data_items'].get(data_id, 'hidden')

lcviz/plugins/viewer_creator/viewer_creator.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from jdaviz.configs.default.plugins import ViewerCreator
2-
from jdaviz.core.registries import tool_registry, viewer_registry
2+
from jdaviz.core.events import NewViewerMessage
3+
from jdaviz.core.registries import tool_registry
34
from lcviz.events import EphemerisComponentChangedMessage
5+
from lcviz.viewers import TimeScatterView
46

57
__all__ = ['ViewerCreator']
68

@@ -35,8 +37,11 @@ def vue_create_viewer(self, name):
3537
ephem_plg = self.app._jdaviz_helper.plugins['Ephemeris']
3638
ephem_plg.create_phase_viewer(ephem_comp)
3739
return
38-
if name == 'flux-vs-time':
40+
if name in ('flux-vs-time', 'lcviz-time-viewer'):
3941
# allow passing label and map to the name for upstream support
40-
name = 'lcviz-time-viewer'
42+
viewer_id = self.app._jdaviz_helper._get_clone_viewer_reference('flux-vs-time')
43+
self.app._on_new_viewer(NewViewerMessage(TimeScatterView, data=None, sender=self.app),
44+
vid=viewer_id, name=viewer_id)
45+
return
4146

4247
super().vue_create_viewer(name)

lcviz/tests/test_parser.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def test_synthetic_lc(helper):
7070
def test_apply_xrangerois(helper, light_curve_like_kepler_quarter):
7171
lc = light_curve_like_kepler_quarter
7272
helper.load_data(lc)
73-
viewer = helper.app.get_viewer(helper._default_time_viewer_reference_name)
73+
viewer = helper.default_time_viewer._obj
7474
subset_plugin = helper.plugins['Subset Tools']
7575

7676
# the min/max of temporal regions can be defined in two ways:
@@ -95,7 +95,7 @@ def test_apply_xrangerois(helper, light_curve_like_kepler_quarter):
9595
def test_apply_yrangerois(helper, light_curve_like_kepler_quarter):
9696
lc = light_curve_like_kepler_quarter
9797
helper.load_data(lc)
98-
viewer = helper.app.get_viewer(helper._default_time_viewer_reference_name)
98+
viewer = helper.default_time_viewer._obj
9999
subset_plugin = helper.plugins['Subset Tools']
100100

101101
subset_plugin._obj.subset_selected = "Create New"

lcviz/tests/test_plugin_binning.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def test_docs_snippets(helper, light_curve_like_kepler_quarter):
2121

2222
def test_plugin_binning(helper, light_curve_like_kepler_quarter):
2323
helper.load_data(light_curve_like_kepler_quarter)
24-
tv = helper.app.get_viewer(helper._default_time_viewer_reference_name)
24+
tv = helper.default_time_viewer._obj
2525

2626
b = helper.plugins['Binning']
2727
b._obj.plugin_opened = True

lcviz/tests/test_plugin_flatten.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def test_docs_snippets(helper, light_curve_like_kepler_quarter):
2525

2626
def test_plugin_flatten(helper, light_curve_like_kepler_quarter):
2727
helper.load_data(light_curve_like_kepler_quarter)
28-
tv = helper.app.get_viewer(helper._default_time_viewer_reference_name)
28+
tv = helper.default_time_viewer._obj
2929

3030
ephem = helper.plugins['Ephemeris']
3131
pv = ephem.create_phase_viewer()._obj

lcviz/tests/test_plugin_frequency_analysis.py

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ def test_docs_snippets(helper, light_curve_like_kepler_quarter):
1919

2020
def test_plugin_frequency_analysis(helper, light_curve_like_kepler_quarter):
2121
helper.load_data(light_curve_like_kepler_quarter)
22-
# tv = helper.app.get_viewer(helper._default_time_viewer_reference_name)
2322

2423
freq = helper.plugins['Frequency Analysis']
2524
freq.open_in_tray()

lcviz/tests/test_plugin_markers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def test_docs_snippets(helper, light_curve_like_kepler_quarter):
3535

3636
def test_plugin_markers(helper, light_curve_like_kepler_quarter):
3737
helper.load_data(light_curve_like_kepler_quarter)
38-
tv = helper.app.get_viewer(helper._default_time_viewer_reference_name)
38+
tv = helper.default_time_viewer
3939

4040
mp = helper.plugins['Markers']
4141
label_mouseover = mp._obj.coords_info

lcviz/tests/test_translator.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ def test_round_trip(helper):
7272
'2009-05-02 03:52'
7373
], format='iso')
7474

75-
viewer = helper.app.get_viewer(
76-
helper._default_time_viewer_reference_name
77-
)
75+
viewer = helper.default_time_viewer._obj
7876
viewer.apply_roi(XRangeROI(*near_transit))
7977

8078
columns_to_check = ['time', 'flux', 'flux_err']

lcviz/tests/test_viewers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
def test_reset_limits(helper, light_curve_like_kepler_quarter):
33
helper.load_data(light_curve_like_kepler_quarter)
4-
tv = helper.app.get_viewer(helper._default_time_viewer_reference_name)
4+
tv = helper.default_time_viewer._obj
55

66
orig_xlims = (tv.state.x_min, tv.state.x_max)
77
orig_ylims = (tv.state.y_min, tv.state.y_max)

0 commit comments

Comments
 (0)