예제 #1
0
def test_plugins():

    # Make sure that glue plugins are correctly loaded, by checking that the
    # WCS autolinker works.

    from astropy.wcs import WCS

    app = gj.jglue()

    data1 = Data(label='test1')
    data1.coords = WCS(naxis=2)
    data1.coords.wcs.ctype = 'RA---TAN', 'DEC--TAN'
    data1.coords.wcs.set()
    data1['x'] = np.ones((2, 3))

    data2 = Data(label='test1')
    data2.coords = WCS(naxis=2)
    data2.coords.wcs.ctype = 'GLON-CAR', 'GLAT-CAR'
    data2.coords.wcs.set()
    data2['y'] = np.ones((2, 3))

    app.add_data(data1=data1)
    app.add_data(data2=data2)

    links = find_possible_links(app.data_collection)

    assert 'Astronomy WCS' in links
예제 #2
0
    def __init__(self):

        self._glue_app = gj.jglue()

        self._history = []

        self._3d_data = {}
        self._2d_data = {}
        self._1d_data = {}

        self._3d_processing = {}
        self.add_3d_processing("Median Collapse over Wavelenths", np.nanmedian,
                               'a', (('axis', 0), ))
        self.add_3d_processing("Mean Collapse over Wavelenths", np.nanmean,
                               'a', (('axis', 0), ))
        self.add_3d_processing("Median Collapse over Space", np.nanmedian, 'a',
                               (('axis', (1, 2)), ))
        self.add_3d_processing("Mean Collapse over Space", np.nanmean, 'a',
                               (('axis', (1, 2)), ))

        self._2d_processing = {}

        self._1d_processing = {}
        self.add_1d_processing("Median Smoothing", scipy.signal.medfilt,
                               'volume', (('kernel_size', 3), ))
        self.add_1d_processing("Hanning Smoothing", np.convolve, 'a',
                               (('mode', 'valid'), ('w', np.hanning(3))))
        self.add_1d_processing("Hamming Smoothing", np.convolve, 'a',
                               (('mode', 'valid'), ('w', np.hamming(3))))
        self.add_1d_processing("Bartlett Smoothing", np.convolve, 'a',
                               (('mode', 'valid'), ('w', np.bartlett(3))))
        self.add_1d_processing("Blackman Smoothing", np.convolve, 'a',
                               (('mode', 'valid'), ('w', np.blackman(3))))
예제 #3
0
    def __init__(self, spec, rest_lines):
        spec_data = gcore.Data(wl=spec.wavelength,
                               flux=spec.flux,
                               unc=spec.uncertainty.array)
        self.app = app = gj.jglue(spec_data)

        self.regions = {}  # populated with spectral regions by frecord

        line_selection = ipywidgets.Dropdown(options=rest_lines.keys(),
                                             description='Line:')
        record_button = ipywidgets.Button(description='Record line')
        result_text = ipywidgets.Text(disabled=True, value='No line recorded')

        record_box = ipywidgets.HBox(
            [line_selection, record_button, result_text])

        z_text = ipywidgets.FloatText(description='z guess:', value=0)
        jump_button = ipywidgets.Button(description='Jump to line')
        line_width_text = ipywidgets.FloatText(description='width(Ang):',
                                               value=100)

        jump_box = ipywidgets.HBox([z_text, jump_button, line_width_text])

        def frecord(widget):
            wls_selected = spec_data['wl'][
                spec_data.subsets[0].to_index_list()]

            reg = specutils.SpectralRegion(
                np.min(wls_selected) * spec.wavelength.unit,
                np.max(wls_selected) * spec.wavelength.unit)
            result_text.value = 'Recorded {}: {} to {}'.format(
                line_selection.value, reg.lower, reg.upper)
            self.regions[line_selection.value] = reg

            z_text.value = specutils.analysis.centroid(
                spec, reg) / rest_lines[line_selection.value] - 1

        record_button.on_click(frecord)

        self.plot_to_jump = None

        def fjump(widget):
            if self.plot_to_jump is None:
                return
            rest_linecen = rest_lines[line_selection.value]
            linecen = rest_linecen * (1 + z_text.value)
            self.plot_to_jump.state.x_min = linecen.value + line_width_text.value / 2
            self.plot_to_jump.state.x_max = linecen.value - line_width_text.value / 2

        jump_button.on_click(fjump)

        self.action_vbox = ipywidgets.VBox([record_box, jump_box])
예제 #4
0
def app(dataxyz, datax, dataxz, data_volume, data_image):
    app = gj.jglue(dataxyz=dataxyz, dataxz=dataxz, datax=datax)
    app.add_link(dataxyz, 'x', dataxz, 'x')
    app.add_link(dataxyz, 'y', dataxz, 'z')
    app.add_link(dataxyz, 'x', datax, 'x')
    app.add_data(data_volume=data_volume)
    app.add_data(data_image=data_image)
    app.add_link(data_image, 'Pixel Axis 0 [y]', dataxyz, 'y')
    app.add_link(data_image, 'Pixel Axis 1 [x]', dataxyz, 'x')
    app.add_link(data_volume, 'Pixel Axis 0 [z]', dataxyz, 'z')
    app.add_link(data_volume, 'Pixel Axis 1 [y]', dataxyz, 'y')
    app.add_link(data_volume, 'Pixel Axis 2 [x]', dataxyz, 'x')
    return app
예제 #5
0
def test_double_load_data(tmpdir):

    # Regression test for a bug that caused a crash when adding two datasets
    # with the same shape.

    filename = tmpdir.join('data1.csv').strpath

    with open(filename, 'w') as f:
        f.write('a,b\n1,2\n3,4\n5.6\n')

    app = gj.jglue()
    app.load_data(filename)
    app.load_data(filename)
예제 #6
0
def test_no_data(dataxz, dataxyz):

    app = gj.jglue()

    with pytest.raises(ValueError, match='No dataset is present'):
        app.scatter2d()

    app.add_data(dataxz)
    app.scatter2d()

    app.add_data(dataxyz)
    with pytest.raises(ValueError, match='There is more than one dataset'):
        app.scatter2d()
예제 #7
0
def app(dataxyz, datax, dataxz, data_volume, data_image):
    link1 = ['dataxyz.x'], ['dataxz.x'], lambda x: x
    link2 = ['dataxyz.y'], ['dataxz.z'], lambda y: y + 1, lambda z: z - 1
    link3 = ['dataxyz.x'], ['datax.x'], lambda x: x
    app = gj.jglue(dataxyz=dataxyz,
                   dataxz=dataxz,
                   datax=datax,
                   links=[link1, link2, link3])
    app.add_data(data_volume=data_volume)
    app.add_data(data_image=data_image)
    app.add_link(data_image, 'Pixel Axis 0 [y]', dataxyz, 'y')
    app.add_link(data_image, 'Pixel Axis 1 [x]', dataxyz, 'x')
    app.add_link(data_volume, 'Pixel Axis 0 [z]', dataxyz, 'z')
    app.add_link(data_volume, 'Pixel Axis 1 [y]', dataxyz, 'y')
    app.add_link(data_volume, 'Pixel Axis 2 [x]', dataxyz, 'x')
    return app
예제 #8
0
def app(dataxyz, dataxz, data_volume, data_image):
    link1 = ['dataxyz.x'], ['dataxz.x'], lambda x: x
    link2 = ['dataxyz.y'], ['dataxz.z'], lambda y: y + 1, lambda z: z - 1
    app = gj.jglue(dataxyz=dataxyz, dataxz=dataxz, links=[link1, link2])
    app.add_data(data_volume=data_volume)
    app.add_data(data_image=data_image)
    link1 = ComponentLink([data_image.id['Pixel Axis 0 [y]']], dataxyz.id['y'])
    link2 = ComponentLink([data_image.id['Pixel Axis 1 [x]']], dataxyz.id['x'])
    app.data_collection.add_link([link1, link2])
    link1 = ComponentLink([data_volume.id['Pixel Axis 0 [z]']],
                          dataxyz.id['z'])
    link2 = ComponentLink([data_volume.id['Pixel Axis 1 [y]']],
                          dataxyz.id['y'])
    link3 = ComponentLink([data_volume.id['Pixel Axis 2 [x]']],
                          dataxyz.id['x'])
    app.data_collection.add_link([link1, link2, link3])
    return app
예제 #9
0
파일: viewer.py 프로젝트: astrofrog/gvizapp
    def __init__(self, vizapp):

        self._app = gj.jglue()