Pipeline IDs

From ParaQ Wiki
Jump to navigationJump to search

Overview

Currently, there is no native support for unique identifiers in vtk/ParaView. There are many issues that relate to this.

Proposal

IDs are unique data types - they may not be the same as a typical DatArray.

  • Data objects such as vtkDataArray must be able to use IDs as accessors into their arrays.
  • IDs must be copied from input to output. It is unclear at this point if this requirement should be enforced by superclasses, or if it is a policy, and therefore responsibility lies with the filter programmer.
  • IDs must be able to be 'hidden', so that they won't clutter up the 'normal' array name space. Whenever possible, users should be able to ignore this data.
  • IDs must be able to be 'shown', if the user wants to color the data using these.

Pedigree ID

A pedigree ID is defined as the ID which relates input objects to output objects. It is used to follow the 'pedigree' of an object. This ID is applied by a filter, in a way defined by its operation. Two examples illustrate its use.

Constraints

  • A Pedigree ID is copied from parent to child. Any filter that creates cells that have a parent/child relationship should copy the Pedigree ID appropriately.
  • A Pedigree ID may not be arbitrarily overwritten by any filter in the pipeline.
  • Certain operations, such as interpolation, should never be performed on a Pedigree ID.

Source ID

A source ID is a unique identifier for a data object that resides in source data (either a file, a stream, or a source filter). For example, Exodus contains a GlobalElementID.

Constraints

  • If the input data contains an identifier for an object, this data is retrieved from the file as the Source ID.

Other IDs

If the Pedigree ID and the Source ID are not sufficient, a filter may create its own named ID. It may not overwrite other ID types.