def OnTrackMolecules(self, event):
        import PYME.Analysis.points.DeClump.deClumpGUI as deClumpGUI
        #import PYME.Analysis.points.DeClump.deClump as deClump
        import PYME.Analysis.Tracking.trackUtils as trackUtils
        from PYME.LMVis.layers.tracks import TrackRenderLayer

        from PYME.recipes import tracking
        recipe = self.visFr.pipeline.recipe
    
        visFr = self.visFr
        pipeline = visFr.pipeline
        
        tracking_module = tracking.FindClumps(recipe, inputName=pipeline.selectedDataSourceKey,
                                              outputName='with_tracks',
                                    outputClumps = 'tracks',
                                    timeWindow=5,
                                    clumpRadiusVariable='1.0',
                                    clumpRadiusScale=250.,
                                    minClumpSize=50)
    
        if tracking_module.configure_traits(kind='modal'):
            recipe.add_module(tracking_module)
    
            recipe.execute()
            self.visFr.pipeline.selectDataSource('with_tracks')
            #self.visFr.CreateFoldPanel() #TODO: can we capture this some other way?
            layer = TrackRenderLayer(pipeline, dsname=tracking_module.outputClumps, method='tracks')
            visFr.add_layer(layer)
    def OnFindClumps(self, event=None):
        import PYME.Analysis.points.DeClump.deClumpGUI as deClumpGUI
        #import PYME.Analysis.points.DeClump.deClump as deClump
        import PYME.Analysis.Tracking.trackUtils as trackUtils
        

        visFr = self.visFr
        pipeline = visFr.pipeline

        #bCurr = wx.BusyCursor()
        dlg = deClumpGUI.deClumpDialog(None)

        ret = dlg.ShowModal()

        if ret == wx.ID_OK:
            #with progress.ComputationInProgress(visFr, 'finding consecutive appearances'):
            from PYME.recipes import tracking
            recipe = self.visFr.pipeline.recipe
    
            recipe.add_modules_and_execute([tracking.FindClumps(recipe, inputName=pipeline.selectedDataSourceKey, outputName='with_clumps',
                                                  timeWindow=dlg.GetClumpTimeWindow(),
                                                  clumpRadiusVariable=dlg.GetClumpRadiusVariable(),
                                                  clumpRadiusScale=dlg.GetClumpRadiusMultiplier()),])
    
            self.visFr.pipeline.selectDataSource('with_clumps')
            #self.visFr.CreateFoldPanel() #TODO: can we capture this some other way?

        dlg.Destroy()
    def OnTrackMolecules(self, event=None):
        import PYME.Analysis.points.DeClump.deClumpGUI as deClumpGUI
        #import PYME.Analysis.points.DeClump.deClump as deClump
        import PYME.Analysis.Tracking.trackUtils as trackUtils
        from PYME.LMVis.layers.tracks import TrackRenderLayer

        from PYME.recipes import tracking
        from PYME.recipes.tablefilters import FilterTable

        recipe = self.visFr.pipeline.recipe
    
        visFr = self.visFr
        pipeline = visFr.pipeline # type: PYME.LMVis.pipeline.Pipeline

        if hasattr(self, '_mol_tracking_module') and (self._mol_tracking_module in recipe.modules):
            # We have already tracked, edit existing tracking module instead
            wx.MessageBox('This dataset has already been tracked, edit parameters of existing tracking rather than starting again', 'Error', wx.OK|wx.ICON_ERROR, visFr)
            self._mol_tracking_module.configure_traits(kind='modal')
            return
            

        output_name = 'with_tracks'
        if output_name in recipe.namespace:
            # this should take care of, e.g. having tracked with feature based tracking or something in the recipe
            output_name = pipeline.new_ds_name('with_tracks')
            wx.MessageBox("Another module has already created a 'with_tracks' output, using the nonstandard name '%s' instead" % output_name, 'Warning', wx.OK|wx.ICON_WARNING, visFr)
        
        tracking_module = tracking.FindClumps(recipe, inputName=pipeline.selectedDataSourceKey,
                                              outputName=output_name,
                                    timeWindow=5,
                                    clumpRadiusVariable='1.0',
                                    clumpRadiusScale=250.,
                                    minClumpSize=50)
    
        if tracking_module.configure_traits(kind='modal'):
            self._mol_tracking_module = tracking_module
            recipe.add_modules_and_execute([tracking_module,
                                            # Add dynamic filtering on track length, etc.
                                            FilterTable(recipe,
                                                inputName=tracking_module.outputName,
                                                outputName='filtered_{}'.format(tracking_module.outputName),
                                                filters={'clumpSize':[tracking_module.minClumpSize, 1e6]})])
            
            self.visFr.pipeline.selectDataSource('filtered_{}'.format(tracking_module.outputName))
            #self.visFr.CreateFoldPanel() #TODO: can we capture this some other way?
            layer = TrackRenderLayer(pipeline, dsname='filtered_{}'.format(tracking_module.outputName), method='tracks')
            visFr.add_layer(layer)
Beispiel #4
0
    def OnTrackMolecules(self, event):
        import PYME.Analysis.points.DeClump.deClumpGUI as deClumpGUI
        #import PYME.Analysis.points.DeClump.deClump as deClump
        import PYME.Analysis.Tracking.trackUtils as trackUtils

        from PYME.recipes import tracking
        recipe = self.visFr.pipeline.recipe
    
        visFr = self.visFr
        pipeline = visFr.pipeline
        
        tracking_module = tracking.FindClumps(recipe, inputName=pipeline.selectedDataSourceKey,
                                              outputName='with_tracks',
                                    outputClumps = 'tracks',
                                    timeWindow=5,
                                    clumpRadiusVariable='1.0',
                                    clumpRadiusScale=250.,
                                    minClumpSize=50)
    
        if tracking_module.configure_traits(kind='modal'):
            recipe.add_module(tracking_module)
    
            recipe.execute()
            self.visFr.pipeline.selectDataSource('with_tracks')