Beispiel #1
0
def test_horizon_events():
    # using here MNI template affine 2009a
    affine = np.array([[1., 0., 0., -98.],
                       [0., 1., 0., -134.],
                       [0., 0., 1., -72.],
                       [0., 0., 0., 1.]])

    data = 255 * np.random.rand(197, 233, 189)
    vox_size = (1., 1., 1.)

    images = [(data, affine)]
    # images = None
    from dipy.segment.tests.test_bundles import setup_module
    setup_module()
    from dipy.segment.tests.test_bundles import f1
    streamlines = f1.copy()
    streamlines._data += np.array([-98., -134., -72.])

    header = create_nifti_header(affine, data.shape, vox_size)
    sft = StatefulTractogram(streamlines, header, Space.RASMM)

    tractograms = [sft]

    # select all centroids and expand and click everything else
    # do not press the key shortcuts as vtk generates warning that
    # blocks recording
    fname = os.path.join(DATA_DIR, 'record_horizon.log.gz')

    horizon(tractograms=tractograms, images=images, pams=None,
            cluster=True, cluster_thr=5.0,
            random_colors=False, length_gt=0, length_lt=np.inf,
            clusters_gt=0, clusters_lt=np.inf,
            world_coords=True, interactive=True, out_png='tmp.png',
            recorded_events=fname)
Beispiel #2
0
def test_horizon_events2():

    affine = np.diag([2., 1, 1, 1]).astype('f8')
    data = 255 * np.random.rand(150, 150, 150)
    images = [(data, affine)]
    from dipy.segment.tests.test_bundles import f1
    streamlines = f1.copy()
    tractograms = [streamlines]
    fname = os.path.join(DATA_DIR, 'record_02.log.gz')
    horizon(tractograms, images=images, cluster=False, cluster_thr=5,
            random_colors=False, length_lt=np.inf, length_gt=0,
            clusters_lt=np.inf, clusters_gt=0,
            world_coords=True, interactive=True, recorded_events=fname)
Beispiel #3
0
    def initialize(self):
        print(sys.version)
        global renderer, renderWindow, renderWindowInteractor  #, cone, mapper, actor

        # Bring used components
        self.registerVtkWebProtocol(protocols.vtkWebMouseHandler())
        self.registerVtkWebProtocol(protocols.vtkWebViewPort())
        self.registerVtkWebProtocol(protocols.vtkWebViewPortImageDelivery())
        # self.registerVtkWebProtocol(protocols.vtkWebPublishImageDelivery(decode=False))
        self.registerVtkWebProtocol(protocols.vtkWebViewPortGeometryDelivery())

        # Update authentication key to use
        self.updateSecret(_WebCone.authKey)

        # tell the C++ web app to use no encoding. vtkWebPublishImageDelivery must be set to decode=False to match.
        # self.getApplication().SetImageEncoding(0)

        # Create default pipeline (Only once for all the session)
        if not _WebCone.view:
            TEST_HORIZON = False

            if not TEST_HORIZON:
                showm = window.ShowManager()
                showm.initialize()

                slider_demo = self.build_slider_demo()
                brain_demo = self.build_brain_demo(showm)
                bundle_demo = self.build_bundle_demo()
                surface_demo = self.build_surface_demo(showm)

                examples = [slider_demo, brain_demo]
                examples_names = [name for name, act in examples]

                listbox = ui.ListBox2D(values=examples_names,
                                       position=(10, 300),
                                       size=(300, 80),
                                       multiselection=False)

                def hide_all_examples():
                    for _, l_act in examples:
                        for element in l_act:
                            if hasattr(element, 'add_to_scene'):
                                element.set_visibility(False)
                            else:
                                element.SetVisibility(False)

                def display_element():
                    hide_all_examples()
                    example = examples[examples_names.index(
                        listbox.selected[0])]
                    for element in example[1]:
                        if hasattr(element, 'add_to_scene'):
                            element.set_visibility(True)
                        else:
                            element.SetVisibility(True)

                listbox.on_change = display_element
                listbox.panel.color = (1.0, 1.0, 1.0)
                listbox.panel.opacity = 0.3
                hide_all_examples()
                showm.scene.add(listbox)
                for _, l_act in examples:
                    for element in l_act:
                        showm.scene.add(element)

                # VTK specific code
                renderer = showm.scene
                renderWindow = showm.window
                renderWindowInteractor = showm.iren

            else:
                affine = np.diag([2., 1, 1, 1]).astype('f8')
                data = 255 * np.random.rand(150, 150, 150)
                images = [(data, affine)]
                from dipy.segment.tests.test_bundles import f1
                streamlines = f1.copy()
                tractograms = [streamlines]

                Horizon(tractograms,
                        images=images,
                        cluster=True,
                        cluster_thr=5,
                        random_colors=False,
                        length_lt=np.inf,
                        length_gt=0,
                        clusters_lt=np.inf,
                        clusters_gt=0,
                        world_coords=True)

            def calc_suare(numbers, showm):
                print("Calculate square numbers")
                for n in numbers:
                    time.sleep(1)
                    print("square:", n * n)
                    showm.scene.GetActiveCamera().Azimuth(10)
                    # showm.render()
                    # view = self.getApplication().GetObjectIdMap().GetActiveObject("VIEW")

            # arr = np.random.rand(100)
            # t1 = threading.Thread(target=calc_suare, args=(arr, showm))
            # t1.start()
            print("Auth-key {}".format(_WebCone.authKey))
            print('Initialization  --- OK')
            print('Starting FURY SERVER')
            # VTK Web application specific
            _WebCone.view = renderWindow
            self.getApplication().GetObjectIdMap().SetActiveObject(
                "VIEW", renderWindow)