Selection and Data Analysis: Difference between revisions

From ParaQ Wiki
Jump to navigationJump to search
mNo edit summary
Line 14: Line 14:


== The feature wish list ==
== The feature wish list ==
  pick point in space (on surface) or type coords in.  
* Pick point in space (on surface) or type coords in.  


  frustum selection - this was in long long ago. it uses vtkFrustumExtractor. Need to put it back in.
* Picking by global ids, pedigree id, proc+cell/pt id.
    gui interface through a tiny model drop down next to selection button to choose surface, frustum, or single point
** We need to be able to choose a list of IDs manually. We'll start by letting user pick a single id.
** We need to be able to manually refine the list of selected ids.
** We will extend the element inspector to do this (or possibly the [[Statistics_View]]). We need to use ranges so that we don't explode millions of entries on a big dataset. This is especially true with frustum selection.


  picking by global ids, pedigree id, proc+cell/pt id
* Frustum (volume/deep) selection - this was in long long ago. It used vtkFrustumExtractor to extract all pts/cells in a frustum. GUI interface to choose what type of selection through a tiny model drop down next to selection button. {surface, frustum, or single point}
    we need to be able to choose a list of IDs manually we'll start by letting user pick a single point
    we also need to be able to manually refine the list of selected ids
    we might extend the element inspector to do this or [[Statistics_View]] to do this while being careful to show ranges when appropriate to avoid long lists of cells
    proposed updates to element inspector
      ids shown
      enter in an id (or ids)
      tab formating
      especially for frustum show ids without expanding to much


  tie histogram to selection
* Proposed updates to element inspector:
    choose bars in histogram and use the output as input to a threshold filter
** ids shown
** enter in an id (or ids)
** tab formating
** grouped ranges instead of one line per element.


  saving and reusing selection:
* Tie histogram to selection - choose bars in histogram and use the output as input to a threshold filter.
    when we make a selection we should be able to reuse it
    example 1) applying a filter to just the output of the selection
    example 2) changing the resolution of a source that was selected and getting more cells out
    should we save output of selection or input of selection?
      if we save the input to selection for surface selection, the results will be
      meaningless if the camera has been changed.
      the answer is probably somewhere inbetween, we will save the output of the selection operator.
      for surface selection - that means a list of cell ids to extract
      for volume selection - that means a frustum to extract
      both types can (theoretically) be put into a vtkSelection structure and extracted.
      when we play back to extract the pipeline will have inputs and the selection and be able
      to generate proper outputs


  could expose the selection filter in the pipeline view
* Saving and reusing selection:
** When we make a selection we should be able to reuse it.
*** ex 1) applying a filter to just the output of the selection.
*** ex 2) changing the resolution of a source that was selected and getting more cells out.
** Should we save output of selection or input of selection? If we save the input to selection for surface selection, the results will be meaningless if the camera has been changed.We will save the output of the selection operator and reextract as necessary see [[Selection Types].


  implementation could have one global "selection" and let user toggle its visibility
* Show selections in the pipeline view so we can apply multiple filters to the output of a selection. State saving and restoring may become an issue. We need to save all inputs to the selection to recreate.
    we are not 100% sure we want to do it this way
    the selection will show up in pipeline browser
    any "Apply" will clear the selection


  need to be able to make props unpickable in the gui somehow
* Need to be able to make props unpickable in the gui somehow.
    low level picking classes can do this, need to expose the pickable property on the gui
** Low level picking classes can do this, need to expose the pickable property on the gui.
    pipeline browser - seems natural to relate this to the EYE
** Pipeline browser - seems natural to relate this to the EYE.
    purpose is for masking, so the existing pickable property may not be enough (as is if unpickable
** Purpose is for masking, so the existing pickable property may not be enough (as is if unpickable it is ignored entirely).Need a new actor flag that says render me as background/invisible or with ids.
    it is ignored entirely) for visible cell determination need a new render flag  
    that says render me as background


  data analysis
* Data analysis - output of a selection should be immedately available for quantitative discovery.
    many filters will produce 1D rectgrid - all of which can be plotted
** Many filters will produce 1D rectgrid, all of which can be plotted.
    polydata with one vertex - example output of max
** Polydata with one vertex - example output of max.
    concept of prefered views
** Prefered/compatible viewtypes in XML say what output of each filter/source can and prefers to be. Have icons in pipeline browser that lets you hide/show each one.
      in XML say what output of each filter/source can and prefers to be
      have icons in pipeline browser that lets you choose


  anchoring selection in space or to ids (plot vals at location over time or plot vals of an id over time)
* Anchoring selection in space or to ids (plot vals at location over time or plot vals of an id over time).
  choice of interpolation or using nearest neighbor (probe vs pick)


  label ids -
* Choice of interpolation or using nearest neighbor (probe vs pick).
    want ids of points and cells to be drawn in the render window
    have to be careful to use global ids in parallel for piece invariance
    have to be careful not to clutter view with too much text - n% of pixels show id
    great to be able to display any particular attribute value


  should be able to select blocks within a multiblock dataset
* On screen id and value labelling - draw ids in the render window.
** Have to be careful to use global ids in parallel for piece invariance.
** Have to be careful not to clutter view with too much text - n% of pixels get a label.
** Great to be able to display any particular attribute value (not just ids).


  multiple selections (sub selections) (refining selections)
* Have to be able to select blocks within a multiblock dataset.
 
* Multiple selections (sub selections) (refining selections).


== Implementation ==
== Implementation ==

Revision as of 14:33, 1 February 2007

There has been much work done already on selection in ParaViewIII. Previous discussion includes Selection_Use_Cases, Selection_In_ParaQ, Selection, Selection_Implementation and Integrating_Interactive_Selection. Several improvements need to be made before the upcoming full release in order to improve useability and fully support quantitative analysis. To put it simply, we want ParaView to have intuitive selection capabilities (note the plural) and we want it to be easy to filter and/or perform quantitative analysis on the results of a selection. Previous discussion of quantitative analysis in paraview includes PGraph_Implementation, Plot_Data_Pipeline, Statistics_View, Plot_View_Management, Data_Analysis_Design and Client_Side_Delivery.

The feature wish list

  • Pick point in space (on surface) or type coords in.
  • Picking by global ids, pedigree id, proc+cell/pt id.
    • We need to be able to choose a list of IDs manually. We'll start by letting user pick a single id.
    • We need to be able to manually refine the list of selected ids.
    • We will extend the element inspector to do this (or possibly the Statistics_View). We need to use ranges so that we don't explode millions of entries on a big dataset. This is especially true with frustum selection.
  • Frustum (volume/deep) selection - this was in long long ago. It used vtkFrustumExtractor to extract all pts/cells in a frustum. GUI interface to choose what type of selection through a tiny model drop down next to selection button. {surface, frustum, or single point}
  • Proposed updates to element inspector:
    • ids shown
    • enter in an id (or ids)
    • tab formating
    • grouped ranges instead of one line per element.
  • Tie histogram to selection - choose bars in histogram and use the output as input to a threshold filter.
  • Saving and reusing selection:
    • When we make a selection we should be able to reuse it.
      • ex 1) applying a filter to just the output of the selection.
      • ex 2) changing the resolution of a source that was selected and getting more cells out.
    • Should we save output of selection or input of selection? If we save the input to selection for surface selection, the results will be meaningless if the camera has been changed.We will save the output of the selection operator and reextract as necessary see [[Selection Types].
  • Show selections in the pipeline view so we can apply multiple filters to the output of a selection. State saving and restoring may become an issue. We need to save all inputs to the selection to recreate.
  • Need to be able to make props unpickable in the gui somehow.
    • Low level picking classes can do this, need to expose the pickable property on the gui.
    • Pipeline browser - seems natural to relate this to the EYE.
    • Purpose is for masking, so the existing pickable property may not be enough (as is if unpickable it is ignored entirely).Need a new actor flag that says render me as background/invisible or with ids.
  • Data analysis - output of a selection should be immedately available for quantitative discovery.
    • Many filters will produce 1D rectgrid, all of which can be plotted.
    • Polydata with one vertex - example output of max.
    • Prefered/compatible viewtypes in XML say what output of each filter/source can and prefers to be. Have icons in pipeline browser that lets you hide/show each one.
  • Anchoring selection in space or to ids (plot vals at location over time or plot vals of an id over time).
  • Choice of interpolation or using nearest neighbor (probe vs pick).
  • On screen id and value labelling - draw ids in the render window.
    • Have to be careful to use global ids in parallel for piece invariance.
    • Have to be careful not to clutter view with too much text - n% of pixels get a label.
    • Great to be able to display any particular attribute value (not just ids).
  • Have to be able to select blocks within a multiblock dataset.
  • Multiple selections (sub selections) (refining selections).

Implementation

  Flesh out vtkSelection with the additional required selection types. 
    ids
      surface ids (aka output of visiblecellselector) proc+cell/pt ids 
      globalids or pedigreeids similar to ids
    frustum - bounds in 3D space
    point in space
    thresholds