# encoding: utf-8
# module vtkmodules.vtkCommonDataModel
# from C:\Users\xukai\Downloads\发票2\venv\Lib\site-packages\vtkmodules\vtkCommonDataModel.cp311-win_amd64.pyd
# by generator 1.147
# no doc

# imports
import vtkmodules.vtkCommonCore as __vtkmodules_vtkCommonCore
import vtkmodules.vtkCommonMath as __vtkmodules_vtkCommonMath
import vtkmodules.vtkCommonTransforms as __vtkmodules_vtkCommonTransforms


from .vtkDataObject import vtkDataObject

class vtkGraph(vtkDataObject):
    """
    vtkGraph - Base class for graph data types.
    
    Superclass: vtkDataObject
    
    vtkGraph is the abstract base class that provides all read-only API
    for graph data types. A graph consists of a collection of vertices
    and a collection of edges connecting pairs of vertices. The
    vtkDirectedGraph subclass represents a graph whose edges have
    inherent order from source vertex to target vertex, while
    vtkUndirectedGraph is a graph whose edges have no inherent ordering.
    
    Graph vertices may be traversed in two ways. In the current
    implementation, all vertices are assigned consecutive ids starting at
    zero, so they may be traversed in a simple for loop from 0 to
    graph->GetNumberOfVertices() - 1. You may alternately create a
    vtkVertexListIterator and call graph->GetVertices(it). it->Next()
    will return the id of the next vertex, while it->HasNext() indicates
    whether there are more vertices in the graph. This is the preferred
    method, since in the future graphs may support filtering or
    subsetting where the vertex ids may not be contiguous.
    
    Graph edges must be traversed through iterators. To traverse all
    edges in a graph, create an instance of vtkEdgeListIterator and call
    graph->GetEdges(it). it->Next() returns lightweight vtkEdgeType
    structures, which contain the public fields Id, Source and Target. Id
    is the identifier for the edge, which may be used to look up values
    in associated edge data arrays. Source and Target store the ids of
    the source and target vertices of the edge. Note that the edge list
    iterator DOES NOT necessarily iterate over edges in order of
    ascending id. To traverse edges from wrapper code (Python, Java), use
    it->NextGraphEdge() instead of it->Next().  This will return a
    heavyweight, wrappable vtkGraphEdge object, which has the same fields
    as vtkEdgeType accessible through getter methods.
    
    To traverse all edges outgoing from a vertex, create a
    vtkOutEdgeIterator and call graph->GetOutEdges(v, it). it->Next()
    returns a lightweight vtkOutEdgeType containing the fields Id and
    Target. The source of the edge is always the vertex that was passed
    as an argument to GetOutEdges(). Incoming edges may be similarly
    traversed with vtkInEdgeIterator, which returns vtkInEdgeType
    structures with Id and Source fields. Both vtkOutEdgeIterator and
    vtkInEdgeIterator also provide the wrapper functions NextGraphEdge()
    which return vtkGraphEdge objects.
    
    An additional iterator, vtkAdjacentVertexIterator can traverse
    outgoing vertices directly, instead needing to parse through edges.
    Initialize the iterator by calling graph->GetAdjacentVertices(v, it).
    
    vtkGraph has two instances of vtkDataSetAttributes for associated
    vertex and edge data. It also has a vtkPoints instance which may
    store x,y,z locations for each vertex. This is populated by filters
    such as vtkGraphLayout and vtkAssignCoordinates.
    
    All graph types share the same implementation, so the structure of
    one may be shared among multiple graphs, even graphs of different
    types. Structures from vtkUndirectedGraph and
    vtkMutableUndirectedGraph may be shared directly.  Structures from
    vtkDirectedGraph, vtkMutableDirectedGraph, and vtkTree may be shared
    directly with the exception that setting a structure to a tree
    requires that a "is a tree" test passes.
    
    For graph types that are known to be compatible, calling
    ShallowCopy() or DeepCopy() will work as expected.  When the outcome
    of a conversion is unknown (i.e. setting a graph to a tree),
    CheckedShallowCopy() and CheckedDeepCopy() exist which are identical
    to ShallowCopy() and DeepCopy(), except that instead of emitting an
    error for an incompatible structure, the function returns false. 
    This allows you to programmatically check structure compatibility
    without causing error messages.
    
    To construct a graph, use vtkMutableDirectedGraph or
    vtkMutableUndirectedGraph. You may then use CheckedShallowCopy to set
    the contents of a mutable graph type into one of the non-mutable
    types vtkDirectedGraph, vtkUndirectedGraph. To construct a tree, use
    vtkMutableDirectedGraph, with directed edges which point from the
    parent to the child, then use CheckedShallowCopy to set the structure
    to a vtkTree.
    
    @warning
    All copy operations implement copy-on-write. The structures are
    initially shared, but if one of the graphs is modified, the structure
    is copied so that to the user they function as if they were deep
    copied. This means that care must be taken if different threads are
    accessing different graph instances that share the same structure.
    Race conditions may develop if one thread is modifying the graph at
    the same time that another graph is copying the structure.
    
    @par Vertex pedigree IDs: The vertices in a vtkGraph can be
    associated with pedigree IDs through GetVertexData()->SetPedigreeIds.
    In this case, there is a 1-1 mapping between pedigree Ids and
    vertices. One can query the vertex ID based on the pedigree ID using
    FindVertex, add new vertices by pedigree ID with AddVertex, and add
    edges based on the pedigree IDs of the source and target vertices.
    For example, AddEdge("Here", "There") will find (or add) vertices
    with pedigree ID "Here" and "There" and then introduce an edge from
    "Here" to "There".
    
    @par Vertex pedigree IDs: To configure the vtkGraph with a pedigree
    ID mapping, create a vtkDataArray that will store the pedigree IDs
    and set that array as the pedigree ID array for the vertices via
    GetVertexData()->SetPedigreeIds().
    
    @par Distributed graphs: vtkGraph instances can be distributed across
    multiple machines, to allow the construction and manipulation of
    graphs larger than a single machine could handle. A distributed graph
    will typically be distributed across many different nodes within a
    cluster, using the Message Passing Interface (MPI) to allow those
    cluster nodes to communicate.
    
    @par Distributed graphs: An empty vtkGraph can be made into a
    distributed graph by attaching an instance of a
    vtkDistributedGraphHelper via the SetDistributedGraphHelper() method.
    To determine whether a graph is distributed or not, call
    GetDistributedGraphHelper() and check whether the result is
    non-nullptr. For a distributed graph, the number of processors across
    which the graph is distributed can be retrieved by extracting the
    value for the DATA_NUMBER_OF_PIECES key in the vtkInformation object
    (retrieved by GetInformation()) associated with the graph. Similarly,
    the value corresponding to the DATA_PIECE_NUMBER key of the
    vtkInformation object describes which piece of the data this graph
    instance provides.
    
    @par Distributed graphs: Distributed graphs behave somewhat
    differently from non-distributed graphs, and will require special
    care. In a distributed graph, each of the processors will contain a
    subset of the vertices in the graph. That subset of vertices can be
    accessed via the vtkVertexListIterator produced by GetVertices().
    GetNumberOfVertices(), therefore, returns the number of vertices
    stored locally: it does not account for vertices stored on other
    processors. A vertex (or edge) is identified by both the rank of its
    owning processor and by its index within that processor, both of
    which are encoded within the vtkIdType value that describes that
    vertex (or edge). The owning processor is a value between 0 and P-1,
    where P is the number of processors across which the vtkGraph has
    been distributed. The local index will be a value between 0 and
    GetNumberOfVertices(), for vertices, or GetNumberOfEdges(), for
    edges, and can be used to access the local parts of distributed data
    arrays. When given a vtkIdType identifying a vertex, one can
    determine the owner of the vertex with
    vtkDistributedGraphHelper::GetVertexOwner() and the local index with
    vtkDistributedGraphHelper::GetVertexIndex(). With edges, the
    appropriate methods are vtkDistributedGraphHelper::GetEdgeOwner() and
    vtkDistributedGraphHelper::GetEdgeIndex(), respectively. To construct
    a vtkIdType representing either a vertex or edge given only its owner
    and local index, use vtkDistributedGraphHelper::MakeDistributedId().
    
    @par Distributed graphs: The edges in a distributed graph are always
    stored on the processors that own the vertices named by the edge. For
    example, given a directed edge (u, v), the edge will be stored in the
    out-edges list for vertex u on the processor that owns u, and in the
    in-edges list for vertex v on the processor that owns v. This
    "row-wise" decomposition of the graph means that, for any vertex that
    is local to a processor, that processor can look at all of the
    incoming and outgoing edges of the graph. Processors cannot, however,
    access the incoming or outgoing edge lists of vertex owned by other
    processors. Vertices owned by other processors will not be
    encountered when traversing the vertex list via GetVertices(), but
    may be encountered by traversing the in- and out-edge lists of local
    vertices or the edge list.
    
    @par Distributed graphs: Distributed graphs can have pedigree IDs for
    the vertices in the same way that non-distributed graphs can. In this
    case, the distribution of the vertices in the graph is based on
    pedigree ID. For example, a vertex with the pedigree ID "Here" might
    land on processor 0 while a vertex pedigree ID "There" would end up
    on processor 3. By default, the pedigree IDs themselves are hashed to
    give a random (and, hopefully, even) distribution of the vertices.
    However, one can provide a different vertex distribution function by
    calling vtkDistributedGraphHelper::SetVertexPedigreeIdDistribution. 
    Once a distributed graph has pedigree IDs, the no-argument
    AddVertex() method can no longer be used. Additionally, once a vertex
    has a pedigree ID, that pedigree ID should not be changed unless the
    user can guarantee that the vertex distribution will still map that
    vertex to the same processor where it already resides.
    
    @sa
    vtkDirectedGraph vtkUndirectedGraph vtkMutableDirectedGraph
    vtkMutableUndirectedGraph vtkTree vtkDistributedGraphHelper
    
    @par Thanks: Thanks to Brian Wylie, Timothy Shead, Ken Moreland of
    Sandia National Laboratories and Douglas Gregor of Indiana University
    for designing these classes.
    """
    def AddEdgePoint(self, e, x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        AddEdgePoint(self, e:int, x:(float, float, float)) -> None
        C++: void AddEdgePoint(vtkIdType e, const double x[3])
        AddEdgePoint(self, e:int, x:float, y:float, z:float) -> None
        C++: void AddEdgePoint(vtkIdType e, double x, double y, double z)
        
        Adds a point to the end of the list of edge points for a certain
        edge.
        """
        pass

    def CheckedDeepCopy(self, g): # real signature unknown; restored from __doc__
        """
        CheckedDeepCopy(self, g:vtkGraph) -> bool
        C++: virtual bool CheckedDeepCopy(vtkGraph *g)
        
        Performs the same operation as DeepCopy(), but instead of
        reporting an error for an incompatible graph, returns false.
        """
        return False

    def CheckedShallowCopy(self, g): # real signature unknown; restored from __doc__
        """
        CheckedShallowCopy(self, g:vtkGraph) -> bool
        C++: virtual bool CheckedShallowCopy(vtkGraph *g)
        
        Performs the same operation as ShallowCopy(), but instead of
        reporting an error for an incompatible graph, returns false.
        """
        return False

    def ClearEdgePoints(self, e): # real signature unknown; restored from __doc__
        """
        ClearEdgePoints(self, e:int) -> None
        C++: void ClearEdgePoints(vtkIdType e)
        
        Clear all points associated with an edge.
        """
        pass

    def ComputeBounds(self): # real signature unknown; restored from __doc__
        """
        ComputeBounds(self) -> None
        C++: void ComputeBounds()
        
        Compute the bounds of the graph. In a distributed graph, this
        computes the bounds around the local part of the graph.
        """
        pass

    def CopyStructure(self, g): # real signature unknown; restored from __doc__
        """
        CopyStructure(self, g:vtkGraph) -> None
        C++: virtual void CopyStructure(vtkGraph *g)
        
        Does a shallow copy of the topological information, but not the
        associated attributes.
        """
        pass

    def DeepCopy(self, obj): # real signature unknown; restored from __doc__
        """
        DeepCopy(self, obj:vtkDataObject) -> None
        C++: void DeepCopy(vtkDataObject *obj) override;
        
        Deep copies the data object into this graph. If it is an
        incompatible graph, reports an error.
        """
        pass

    def DeepCopyEdgePoints(self, g): # real signature unknown; restored from __doc__
        """
        DeepCopyEdgePoints(self, g:vtkGraph) -> None
        C++: void DeepCopyEdgePoints(vtkGraph *g)
        """
        pass

    def Dump(self): # real signature unknown; restored from __doc__
        """
        Dump(self) -> None
        C++: void Dump()
        
        Dump the contents of the graph to standard output.
        """
        pass

    def FindVertex(self, pedigreeID): # real signature unknown; restored from __doc__
        """
        FindVertex(self, pedigreeID:vtkVariant) -> int
        C++: vtkIdType FindVertex(const vtkVariant &pedigreeID)
        
        Retrieve the vertex with the given pedigree ID. If successful,
        returns the ID of the vertex. Otherwise, either the vertex data
        does not have a pedigree ID array or there is no vertex with the
        given pedigree ID, so this function returns -1. If the graph is a
        distributed graph, this method will return the Distributed-ID of
        the vertex.
        """
        return 0

    def GetActualMemorySize(self): # real signature unknown; restored from __doc__
        """
        GetActualMemorySize(self) -> int
        C++: unsigned long GetActualMemorySize() override;
        
        Return the actual size of the data in kibibytes (1024 bytes).
        This number is valid only after the pipeline has updated. The
        memory size returned is guaranteed to be greater than or equal to
        the memory required to represent the data (e.g., extra space in
        arrays, etc. are not included in the return value).
        """
        return 0

    def GetAdjacentVertices(self, v, it): # real signature unknown; restored from __doc__
        """
        GetAdjacentVertices(self, v:int, it:vtkAdjacentVertexIterator)
            -> None
        C++: virtual void GetAdjacentVertices(vtkIdType v,
            vtkAdjacentVertexIterator *it)
        
        Initializes the adjacent vertex iterator to iterate over all
        outgoing vertices from vertex v.  For an undirected graph,
        returns all adjacent vertices. In a distributed graph, the vertex
        v must be local to this processor.
        """
        pass

    def GetAttributesAsFieldData(self, type): # real signature unknown; restored from __doc__
        """
        GetAttributesAsFieldData(self, type:int) -> vtkFieldData
        C++: vtkFieldData *GetAttributesAsFieldData(int type) override;
        
        Returns the attributes of the data object as a vtkFieldData. This
        returns non-null values in all the same cases as GetAttributes,
        in addition to the case of FIELD, which will return the field
        data for any vtkDataObject subclass.
        """
        return vtkFieldData

    def GetBounds(self): # real signature unknown; restored from __doc__
        """
        GetBounds(self) -> Pointer
        C++: double *GetBounds()
        GetBounds(self, bounds:[float, float, float, float, float, float])
             -> None
        C++: void GetBounds(double bounds[6])
        
        Return a pointer to the geometry bounding box in the form
        (xmin,xmax, ymin,ymax, zmin,zmax). In a distributed graph, this
        computes the bounds around the local part of the graph.
        """
        pass

    def GetData(self, info): # real signature unknown; restored from __doc__
        """
        GetData(info:vtkInformation) -> vtkGraph
        C++: static vtkGraph *GetData(vtkInformation *info)
        GetData(v:vtkInformationVector, i:int=0) -> vtkGraph
        C++: static vtkGraph *GetData(vtkInformationVector *v, int i=0)
        
        Retrieve a graph from an information vector.
        """
        return vtkGraph

    def GetDataObjectType(self): # real signature unknown; restored from __doc__
        """
        GetDataObjectType(self) -> int
        C++: int GetDataObjectType() override;
        
        Return what type of dataset this is.
        """
        return 0

    def GetDegree(self, v): # real signature unknown; restored from __doc__
        """
        GetDegree(self, v:int) -> int
        C++: virtual vtkIdType GetDegree(vtkIdType v)
        
        The total of all incoming and outgoing vertices for vertex v. For
        undirected graphs, this is simply the number of edges incident to
        v. In a distributed graph, the vertex v must be local to this
        processor.
        """
        return 0

    def GetDistributedGraphHelper(self): # real signature unknown; restored from __doc__
        """
        GetDistributedGraphHelper(self) -> vtkDistributedGraphHelper
        C++: vtkDistributedGraphHelper *GetDistributedGraphHelper()
        
        Retrieves the distributed graph helper for this graph
        """
        return vtkDistributedGraphHelper

    def GetEdgeData(self): # real signature unknown; restored from __doc__
        """
        GetEdgeData(self) -> vtkDataSetAttributes
        C++: virtual vtkDataSetAttributes *GetEdgeData()
        """
        return vtkDataSetAttributes

    def GetEdgeId(self, a, b): # real signature unknown; restored from __doc__
        """
        GetEdgeId(self, a:int, b:int) -> int
        C++: vtkIdType GetEdgeId(vtkIdType a, vtkIdType b)
        
        Returns the Id of the edge between vertex a and vertex b. This is
        independent of directionality of the edge, that is, if edge A->B
        exists or if edge B->A exists, this function will return its Id.
        If multiple edges exist between a and b, here is no guarantee
        about which one will be returned. Returns -1 if no edge exists
        between a and b.
        """
        return 0

    def GetEdgePoint(self, e, i): # real signature unknown; restored from __doc__
        """
        GetEdgePoint(self, e:int, i:int) -> (float, float, float)
        C++: double *GetEdgePoint(vtkIdType e, vtkIdType i)
        
        Get the x,y,z location of a point along edge e.
        """
        pass

    def GetEdgePoints(self, e, npts, pts, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        GetEdgePoints(self, e:int, npts:int, pts:[float, ...]) -> None
        C++: void GetEdgePoints(vtkIdType e, vtkIdType &npts,
            double *&pts)
        """
        pass

    def GetEdges(self, it): # real signature unknown; restored from __doc__
        """
        GetEdges(self, it:vtkEdgeListIterator) -> None
        C++: virtual void GetEdges(vtkEdgeListIterator *it)
        
        Initializes the edge list iterator to iterate over all edges in
        the graph. Edges may not be traversed in order of increasing edge
        id. In a distributed graph, this returns edges that are stored
        locally.
        """
        pass

    def GetGraphInternals(self, modifying): # real signature unknown; restored from __doc__
        """
        GetGraphInternals(self, modifying:bool) -> vtkGraphInternals
        C++: vtkGraphInternals *GetGraphInternals(bool modifying)
        
        Returns the internal representation of the graph. If modifying is
        true, then the returned vtkGraphInternals object will be unique
        to this vtkGraph object.
        """
        return vtkGraphInternals

    def GetInDegree(self, v): # real signature unknown; restored from __doc__
        """
        GetInDegree(self, v:int) -> int
        C++: virtual vtkIdType GetInDegree(vtkIdType v)
        
        The number of incoming edges to vertex v. For undirected graphs,
        returns the same as GetDegree(). In a distributed graph, the
        vertex v must be local to this processor.
        """
        return 0

    def GetInducedEdges(self, verts, edges): # real signature unknown; restored from __doc__
        """
        GetInducedEdges(self, verts:vtkIdTypeArray, edges:vtkIdTypeArray)
            -> None
        C++: void GetInducedEdges(vtkIdTypeArray *verts,
            vtkIdTypeArray *edges)
        
        Fills a list of edge indices with the edges contained in the
        induced subgraph formed by the vertices in the vertex list.
        """
        pass

    def GetInEdge(self, v, index): # real signature unknown; restored from __doc__
        """
        GetInEdge(self, v:int, index:int) -> vtkInEdgeType
        C++: virtual vtkInEdgeType GetInEdge(vtkIdType v, vtkIdType index)
        GetInEdge(self, v:int, index:int, e:vtkGraphEdge) -> None
        C++: virtual void GetInEdge(vtkIdType v, vtkIdType index,
            vtkGraphEdge *e)
        
        Random-access method for retrieving incoming edges to vertex v.
        """
        return vtkInEdgeType

    def GetInEdges(self, v, it): # real signature unknown; restored from __doc__
        """
        GetInEdges(self, v:int, it:vtkInEdgeIterator) -> None
        C++: virtual void GetInEdges(vtkIdType v, vtkInEdgeIterator *it)
        
        Initializes the in edge iterator to iterate over all incoming
        edges to vertex v.  For an undirected graph, returns all incident
        edges. In a distributed graph, the vertex v must be local to this
        processor.
        """
        pass

    def GetMTime(self): # real signature unknown; restored from __doc__
        """
        GetMTime(self) -> int
        C++: vtkMTimeType GetMTime() override;
        
        The modified time of the graph.
        """
        return 0

    def GetNumberOfEdgePoints(self, e): # real signature unknown; restored from __doc__
        """
        GetNumberOfEdgePoints(self, e:int) -> int
        C++: vtkIdType GetNumberOfEdgePoints(vtkIdType e)
        
        Get the number of edge points associated with an edge.
        """
        return 0

    def GetNumberOfEdges(self): # real signature unknown; restored from __doc__
        """
        GetNumberOfEdges(self) -> int
        C++: virtual vtkIdType GetNumberOfEdges()
        
        The number of edges in the graph. In a distributed graph, this
        returns the number of edges stored locally.
        """
        return 0

    def GetNumberOfElements(self, type): # real signature unknown; restored from __doc__
        """
        GetNumberOfElements(self, type:int) -> int
        C++: vtkIdType GetNumberOfElements(int type) override;
        
        Get the number of elements for a specific attribute type (VERTEX,
        EDGE, etc.).
        """
        return 0

    def GetNumberOfGenerationsFromBase(self, type): # real signature unknown; restored from __doc__
        """
        GetNumberOfGenerationsFromBase(self, type:str) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Given the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def GetNumberOfGenerationsFromBaseType(self, type): # real signature unknown; restored from __doc__
        """
        GetNumberOfGenerationsFromBaseType(type:str) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def GetNumberOfVertices(self): # real signature unknown; restored from __doc__
        """
        GetNumberOfVertices(self) -> int
        C++: virtual vtkIdType GetNumberOfVertices()
        
        The number of vertices in the graph. In a distributed graph,
        returns the number of local vertices in the graph.
        """
        return 0

    def GetOutDegree(self, v): # real signature unknown; restored from __doc__
        """
        GetOutDegree(self, v:int) -> int
        C++: virtual vtkIdType GetOutDegree(vtkIdType v)
        
        The number of outgoing edges from vertex v. For undirected
        graphs, returns the same as GetDegree(). In a distributed graph,
        the vertex v must be local to this processor.
        """
        return 0

    def GetOutEdge(self, v, index): # real signature unknown; restored from __doc__
        """
        GetOutEdge(self, v:int, index:int) -> vtkOutEdgeType
        C++: virtual vtkOutEdgeType GetOutEdge(vtkIdType v,
            vtkIdType index)
        GetOutEdge(self, v:int, index:int, e:vtkGraphEdge) -> None
        C++: virtual void GetOutEdge(vtkIdType v, vtkIdType index,
            vtkGraphEdge *e)
        
        Random-access method for retrieving outgoing edges from vertex v.
        """
        return vtkOutEdgeType

    def GetOutEdges(self, v, it): # real signature unknown; restored from __doc__
        """
        GetOutEdges(self, v:int, it:vtkOutEdgeIterator) -> None
        C++: virtual void GetOutEdges(vtkIdType v, vtkOutEdgeIterator *it)
        
        Initializes the out edge iterator to iterate over all outgoing
        edges of vertex v.  For an undirected graph, returns all incident
        edges. In a distributed graph, the vertex v must be local to this
        processor.
        """
        pass

    def GetPoint(self, ptId): # real signature unknown; restored from __doc__
        """
        GetPoint(self, ptId:int) -> Pointer
        C++: double *GetPoint(vtkIdType ptId)
        GetPoint(self, ptId:int, x:[float, float, float]) -> None
        C++: void GetPoint(vtkIdType ptId, double x[3])
        
        These methods return the point (0,0,0) until the points structure
        is created, when it returns the actual point position. In a
        distributed graph, only the points for local vertices can be
        retrieved.
        """
        pass

    def GetPoints(self): # real signature unknown; restored from __doc__
        """
        GetPoints(self) -> vtkPoints
        C++: vtkPoints *GetPoints()
        
        Returns the points array for this graph. If points is not yet
        constructed, generates and returns a new points array filled with
        (0,0,0) coordinates. In a distributed graph, only the points for
        local vertices can be retrieved or modified.
        """
        pass

    def GetSourceVertex(self, e): # real signature unknown; restored from __doc__
        """
        GetSourceVertex(self, e:int) -> int
        C++: vtkIdType GetSourceVertex(vtkIdType e)
        
        Retrieve the source and target vertices for an edge id. NOTE: The
        first time this is called, the graph will build a mapping array
        from edge id to source/target that is the same size as the number
        of edges in the graph. If you have access to a vtkOutEdgeType,
        vtkInEdgeType, vtkEdgeType, or vtkGraphEdge, you should directly
        use these structures to look up the source or target instead of
        this method.
        """
        return 0

    def GetTargetVertex(self, e): # real signature unknown; restored from __doc__
        """
        GetTargetVertex(self, e:int) -> int
        C++: vtkIdType GetTargetVertex(vtkIdType e)
        """
        return 0

    def GetVertexData(self): # real signature unknown; restored from __doc__
        """
        GetVertexData(self) -> vtkDataSetAttributes
        C++: virtual vtkDataSetAttributes *GetVertexData()
        
        Get the vertex or edge data.
        """
        return vtkDataSetAttributes

    def GetVertices(self, it): # real signature unknown; restored from __doc__
        """
        GetVertices(self, it:vtkVertexListIterator) -> None
        C++: virtual void GetVertices(vtkVertexListIterator *it)
        
        Initializes the vertex list iterator to iterate over all vertices
        in the graph. In a distributed graph, the iterator traverses all
        local vertices.
        """
        pass

    def Initialize(self): # real signature unknown; restored from __doc__
        """
        Initialize(self) -> None
        C++: void Initialize() override;
        
        Initialize to an empty graph.
        """
        pass

    def IsA(self, type): # real signature unknown; restored from __doc__
        """
        IsA(self, type:str) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Return 1 if this class is the same type of (or a subclass of) the
        named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def IsSameStructure(self, other): # real signature unknown; restored from __doc__
        """
        IsSameStructure(self, other:vtkGraph) -> bool
        C++: bool IsSameStructure(vtkGraph *other)
        
        Returns true if both graphs point to the same adjacency
        structure. Can be used to test the copy-on-write feature of the
        graph.
        """
        return False

    def IsTypeOf(self, type): # real signature unknown; restored from __doc__
        """
        IsTypeOf(type:str) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Return 1 if this class type is the same type of (or a subclass
        of) the named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        return 0

    def NewInstance(self): # real signature unknown; restored from __doc__
        """
        NewInstance(self) -> vtkGraph
        C++: vtkGraph *NewInstance()
        """
        return vtkGraph

    def ReorderOutVertices(self, v, vertices): # real signature unknown; restored from __doc__
        """
        ReorderOutVertices(self, v:int, vertices:vtkIdTypeArray) -> None
        C++: void ReorderOutVertices(vtkIdType v,
            vtkIdTypeArray *vertices)
        
        Reorder the outgoing vertices of a vertex. The vertex list must
        have the same elements as the current out edge list, just in a
        different order. This method does not change the topology of the
        graph. In a distributed graph, the vertex v must be local.
        """
        pass

    def SafeDownCast(self, o): # real signature unknown; restored from __doc__
        """
        SafeDownCast(o:vtkObjectBase) -> vtkGraph
        C++: static vtkGraph *SafeDownCast(vtkObjectBase *o)
        """
        return vtkGraph

    def SetDistributedGraphHelper(self, helper): # real signature unknown; restored from __doc__
        """
        SetDistributedGraphHelper(self, helper:vtkDistributedGraphHelper)
            -> None
        C++: void SetDistributedGraphHelper(
            vtkDistributedGraphHelper *helper)
        
        Sets the distributed graph helper of this graph, turning it into
        a distributed graph. This operation can only be executed on an
        empty graph.
        """
        pass

    def SetEdgePoint(self, e, i, x, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        SetEdgePoint(self, e:int, i:int, x:(float, float, float)) -> None
        C++: void SetEdgePoint(vtkIdType e, vtkIdType i,
            const double x[3])
        SetEdgePoint(self, e:int, i:int, x:float, y:float, z:float)
            -> None
        C++: void SetEdgePoint(vtkIdType e, vtkIdType i, double x,
            double y, double z)
        
        Set an x,y,z location of a point along an edge. This assumes
        there is already a point at location i, and simply overwrites it.
        """
        pass

    def SetEdgePoints(self, e, npts, pts, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        SetEdgePoints(self, e:int, npts:int, pts:(float, ...)) -> None
        C++: void SetEdgePoints(vtkIdType e, vtkIdType npts,
            const double pts[])
        
        Get/Set the internal edge control points associated with each
        edge. The size of the pts array is 3*npts, and holds the x,y,z
        location of each edge control point.
        """
        pass

    def SetPoints(self, points): # real signature unknown; restored from __doc__
        """
        SetPoints(self, points:vtkPoints) -> None
        C++: virtual void SetPoints(vtkPoints *points)
        """
        pass

    def ShallowCopy(self, obj): # real signature unknown; restored from __doc__
        """
        ShallowCopy(self, obj:vtkDataObject) -> None
        C++: void ShallowCopy(vtkDataObject *obj) override;
        
        Shallow copies the data object into this graph. If it is an
        incompatible graph, reports an error.
        """
        pass

    def ShallowCopyEdgePoints(self, g): # real signature unknown; restored from __doc__
        """
        ShallowCopyEdgePoints(self, g:vtkGraph) -> None
        C++: void ShallowCopyEdgePoints(vtkGraph *g)
        
        Copy the internal edge point data from another graph into this
        graph. Both graphs must have the same number of edges.
        """
        pass

    def Squeeze(self): # real signature unknown; restored from __doc__
        """
        Squeeze(self) -> None
        C++: virtual void Squeeze()
        
        Reclaim unused memory.
        """
        pass

    def ToDirectedGraph(self, g): # real signature unknown; restored from __doc__
        """
        ToDirectedGraph(self, g:vtkDirectedGraph) -> bool
        C++: bool ToDirectedGraph(vtkDirectedGraph *g)
        
        Convert the graph to a directed graph.
        """
        return False

    def ToUndirectedGraph(self, g): # real signature unknown; restored from __doc__
        """
        ToUndirectedGraph(self, g:vtkUndirectedGraph) -> bool
        C++: bool ToUndirectedGraph(vtkUndirectedGraph *g)
        
        Convert the graph to an undirected graph.
        """
        return False

    def __delattr__(self, *args, **kwargs): # real signature unknown
        """ Implement delattr(self, name). """
        pass

    def __getattribute__(self, *args, **kwargs): # real signature unknown
        """ Return getattr(self, name). """
        pass

    def __init__(self, *args, **kwargs): # real signature unknown
        pass

    @staticmethod # known case of __new__
    def __new__(*args, **kwargs): # real signature unknown
        """ Create and return a new object.  See help(type) for accurate signature. """
        pass

    def __repr__(self, *args, **kwargs): # real signature unknown
        """ Return repr(self). """
        pass

    def __setattr__(self, *args, **kwargs): # real signature unknown
        """ Implement setattr(self, name, value). """
        pass

    def __str__(self, *args, **kwargs): # real signature unknown
        """ Return str(self). """
        pass

    __this__ = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    """Pointer to the C++ object."""


    __dict__ = None # (!) real value is 'mappingproxy({\'__vtkname__\': \'vtkGraph\', \'IsTypeOf\': <method \'IsTypeOf\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'IsA\': <method \'IsA\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'SafeDownCast\': <method \'SafeDownCast\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'NewInstance\': <method \'NewInstance\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetNumberOfGenerationsFromBaseType\': <method \'GetNumberOfGenerationsFromBaseType\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetNumberOfGenerationsFromBase\': <method \'GetNumberOfGenerationsFromBase\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetVertexData\': <method \'GetVertexData\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetEdgeData\': <method \'GetEdgeData\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetDataObjectType\': <method \'GetDataObjectType\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'Initialize\': <method \'Initialize\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetPoint\': <method \'GetPoint\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetPoints\': <method \'GetPoints\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'SetPoints\': <method \'SetPoints\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'ComputeBounds\': <method \'ComputeBounds\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetBounds\': <method \'GetBounds\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetMTime\': <method \'GetMTime\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetOutEdges\': <method \'GetOutEdges\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetDegree\': <method \'GetDegree\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetOutDegree\': <method \'GetOutDegree\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetOutEdge\': <method \'GetOutEdge\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetInEdges\': <method \'GetInEdges\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetInDegree\': <method \'GetInDegree\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetInEdge\': <method \'GetInEdge\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetAdjacentVertices\': <method \'GetAdjacentVertices\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetEdges\': <method \'GetEdges\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetNumberOfEdges\': <method \'GetNumberOfEdges\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetVertices\': <method \'GetVertices\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetNumberOfVertices\': <method \'GetNumberOfVertices\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'SetDistributedGraphHelper\': <method \'SetDistributedGraphHelper\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetDistributedGraphHelper\': <method \'GetDistributedGraphHelper\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'FindVertex\': <method \'FindVertex\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'ShallowCopy\': <method \'ShallowCopy\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'DeepCopy\': <method \'DeepCopy\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'CopyStructure\': <method \'CopyStructure\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'CheckedShallowCopy\': <method \'CheckedShallowCopy\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'CheckedDeepCopy\': <method \'CheckedDeepCopy\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'Squeeze\': <method \'Squeeze\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetActualMemorySize\': <method \'GetActualMemorySize\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetData\': <method \'GetData\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'ReorderOutVertices\': <method \'ReorderOutVertices\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'IsSameStructure\': <method \'IsSameStructure\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetSourceVertex\': <method \'GetSourceVertex\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetTargetVertex\': <method \'GetTargetVertex\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'SetEdgePoints\': <method \'SetEdgePoints\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetEdgePoints\': <method \'GetEdgePoints\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetNumberOfEdgePoints\': <method \'GetNumberOfEdgePoints\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetEdgePoint\': <method \'GetEdgePoint\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'ClearEdgePoints\': <method \'ClearEdgePoints\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'SetEdgePoint\': <method \'SetEdgePoint\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'AddEdgePoint\': <method \'AddEdgePoint\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'ShallowCopyEdgePoints\': <method \'ShallowCopyEdgePoints\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'DeepCopyEdgePoints\': <method \'DeepCopyEdgePoints\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetGraphInternals\': <method \'GetGraphInternals\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetInducedEdges\': <method \'GetInducedEdges\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetAttributesAsFieldData\': <method \'GetAttributesAsFieldData\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetNumberOfElements\': <method \'GetNumberOfElements\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'Dump\': <method \'Dump\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'GetEdgeId\': <method \'GetEdgeId\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'ToDirectedGraph\': <method \'ToDirectedGraph\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'ToUndirectedGraph\': <method \'ToUndirectedGraph\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'__new__\': <built-in method __new__ of type object at 0x00007FF81D626790>, \'__repr__\': <slot wrapper \'__repr__\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'__str__\': <slot wrapper \'__str__\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'__getattribute__\': <slot wrapper \'__getattribute__\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'__setattr__\': <slot wrapper \'__setattr__\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'__delattr__\': <slot wrapper \'__delattr__\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'__dict__\': <attribute \'__dict__\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'__this__\': <attribute \'__this__\' of \'vtkmodules.vtkCommonDataModel.vtkGraph\' objects>, \'__doc__\': \'vtkGraph - Base class for graph data types.\\n\\nSuperclass: vtkDataObject\\n\\nvtkGraph is the abstract base class that provides all read-only API\\nfor graph data types. A graph consists of a collection of vertices\\nand a collection of edges connecting pairs of vertices. The\\nvtkDirectedGraph subclass represents a graph whose edges have\\ninherent order from source vertex to target vertex, while\\nvtkUndirectedGraph is a graph whose edges have no inherent ordering.\\n\\nGraph vertices may be traversed in two ways. In the current\\nimplementation, all vertices are assigned consecutive ids starting at\\nzero, so they may be traversed in a simple for loop from 0 to\\ngraph->GetNumberOfVertices() - 1. You may alternately create a\\nvtkVertexListIterator and call graph->GetVertices(it). it->Next()\\nwill return the id of the next vertex, while it->HasNext() indicates\\nwhether there are more vertices in the graph. This is the preferred\\nmethod, since in the future graphs may support filtering or\\nsubsetting where the vertex ids may not be contiguous.\\n\\nGraph edges must be traversed through iterators. To traverse all\\nedges in a graph, create an instance of vtkEdgeListIterator and call\\ngraph->GetEdges(it). it->Next() returns lightweight vtkEdgeType\\nstructures, which contain the public fields Id, Source and Target. Id\\nis the identifier for the edge, which may be used to look up values\\nin associated edge data arrays. Source and Target store the ids of\\nthe source and target vertices of the edge. Note that the edge list\\niterator DOES NOT necessarily iterate over edges in order of\\nascending id. To traverse edges from wrapper code (Python, Java), use\\nit->NextGraphEdge() instead of it->Next().  This will return a\\nheavyweight, wrappable vtkGraphEdge object, which has the same fields\\nas vtkEdgeType accessible through getter methods.\\n\\nTo traverse all edges outgoing from a vertex, create a\\nvtkOutEdgeIterator and call graph->GetOutEdges(v, it). it->Next()\\nreturns a lightweight vtkOutEdgeType containing the fields Id and\\nTarget. The source of the edge is always the vertex that was passed\\nas an argument to GetOutEdges(). Incoming edges may be similarly\\ntraversed with vtkInEdgeIterator, which returns vtkInEdgeType\\nstructures with Id and Source fields. Both vtkOutEdgeIterator and\\nvtkInEdgeIterator also provide the wrapper functions NextGraphEdge()\\nwhich return vtkGraphEdge objects.\\n\\nAn additional iterator, vtkAdjacentVertexIterator can traverse\\noutgoing vertices directly, instead needing to parse through edges.\\nInitialize the iterator by calling graph->GetAdjacentVertices(v, it).\\n\\nvtkGraph has two instances of vtkDataSetAttributes for associated\\nvertex and edge data. It also has a vtkPoints instance which may\\nstore x,y,z locations for each vertex. This is populated by filters\\nsuch as vtkGraphLayout and vtkAssignCoordinates.\\n\\nAll graph types share the same implementation, so the structure of\\none may be shared among multiple graphs, even graphs of different\\ntypes. Structures from vtkUndirectedGraph and\\nvtkMutableUndirectedGraph may be shared directly.  Structures from\\nvtkDirectedGraph, vtkMutableDirectedGraph, and vtkTree may be shared\\ndirectly with the exception that setting a structure to a tree\\nrequires that a "is a tree" test passes.\\n\\nFor graph types that are known to be compatible, calling\\nShallowCopy() or DeepCopy() will work as expected.  When the outcome\\nof a conversion is unknown (i.e. setting a graph to a tree),\\nCheckedShallowCopy() and CheckedDeepCopy() exist which are identical\\nto ShallowCopy() and DeepCopy(), except that instead of emitting an\\nerror for an incompatible structure, the function returns false. \\nThis allows you to programmatically check structure compatibility\\nwithout causing error messages.\\n\\nTo construct a graph, use vtkMutableDirectedGraph or\\nvtkMutableUndirectedGraph. You may then use CheckedShallowCopy to set\\nthe contents of a mutable graph type into one of the non-mutable\\ntypes vtkDirectedGraph, vtkUndirectedGraph. To construct a tree, use\\nvtkMutableDirectedGraph, with directed edges which point from the\\nparent to the child, then use CheckedShallowCopy to set the structure\\nto a vtkTree.\\n\\n@warning\\nAll copy operations implement copy-on-write. The structures are\\ninitially shared, but if one of the graphs is modified, the structure\\nis copied so that to the user they function as if they were deep\\ncopied. This means that care must be taken if different threads are\\naccessing different graph instances that share the same structure.\\nRace conditions may develop if one thread is modifying the graph at\\nthe same time that another graph is copying the structure.\\n\\n@par Vertex pedigree IDs: The vertices in a vtkGraph can be\\nassociated with pedigree IDs through GetVertexData()->SetPedigreeIds.\\nIn this case, there is a 1-1 mapping between pedigree Ids and\\nvertices. One can query the vertex ID based on the pedigree ID using\\nFindVertex, add new vertices by pedigree ID with AddVertex, and add\\nedges based on the pedigree IDs of the source and target vertices.\\nFor example, AddEdge("Here", "There") will find (or add) vertices\\nwith pedigree ID "Here" and "There" and then introduce an edge from\\n"Here" to "There".\\n\\n@par Vertex pedigree IDs: To configure the vtkGraph with a pedigree\\nID mapping, create a vtkDataArray that will store the pedigree IDs\\nand set that array as the pedigree ID array for the vertices via\\nGetVertexData()->SetPedigreeIds().\\n\\n@par Distributed graphs: vtkGraph instances can be distributed across\\nmultiple machines, to allow the construction and manipulation of\\ngraphs larger than a single machine could handle. A distributed graph\\nwill typically be distributed across many different nodes within a\\ncluster, using the Message Passing Interface (MPI) to allow those\\ncluster nodes to communicate.\\n\\n@par Distributed graphs: An empty vtkGraph can be made into a\\ndistributed graph by attaching an instance of a\\nvtkDistributedGraphHelper via the SetDistributedGraphHelper() method.\\nTo determine whether a graph is distributed or not, call\\nGetDistributedGraphHelper() and check whether the result is\\nnon-nullptr. For a distributed graph, the number of processors across\\nwhich the graph is distributed can be retrieved by extracting the\\nvalue for the DATA_NUMBER_OF_PIECES key in the vtkInformation object\\n(retrieved by GetInformation()) associated with the graph. Similarly,\\nthe value corresponding to the DATA_PIECE_NUMBER key of the\\nvtkInformation object describes which piece of the data this graph\\ninstance provides.\\n\\n@par Distributed graphs: Distributed graphs behave somewhat\\ndifferently from non-distributed graphs, and will require special\\ncare. In a distributed graph, each of the processors will contain a\\nsubset of the vertices in the graph. That subset of vertices can be\\naccessed via the vtkVertexListIterator produced by GetVertices().\\nGetNumberOfVertices(), therefore, returns the number of vertices\\nstored locally: it does not account for vertices stored on other\\nprocessors. A vertex (or edge) is identified by both the rank of its\\nowning processor and by its index within that processor, both of\\nwhich are encoded within the vtkIdType value that describes that\\nvertex (or edge). The owning processor is a value between 0 and P-1,\\nwhere P is the number of processors across which the vtkGraph has\\nbeen distributed. The local index will be a value between 0 and\\nGetNumberOfVertices(), for vertices, or GetNumberOfEdges(), for\\nedges, and can be used to access the local parts of distributed data\\narrays. When given a vtkIdType identifying a vertex, one can\\ndetermine the owner of the vertex with\\nvtkDistributedGraphHelper::GetVertexOwner() and the local index with\\nvtkDistributedGraphHelper::GetVertexIndex(). With edges, the\\nappropriate methods are vtkDistributedGraphHelper::GetEdgeOwner() and\\nvtkDistributedGraphHelper::GetEdgeIndex(), respectively. To construct\\na vtkIdType representing either a vertex or edge given only its owner\\nand local index, use vtkDistributedGraphHelper::MakeDistributedId().\\n\\n@par Distributed graphs: The edges in a distributed graph are always\\nstored on the processors that own the vertices named by the edge. For\\nexample, given a directed edge (u, v), the edge will be stored in the\\nout-edges list for vertex u on the processor that owns u, and in the\\nin-edges list for vertex v on the processor that owns v. This\\n"row-wise" decomposition of the graph means that, for any vertex that\\nis local to a processor, that processor can look at all of the\\nincoming and outgoing edges of the graph. Processors cannot, however,\\naccess the incoming or outgoing edge lists of vertex owned by other\\nprocessors. Vertices owned by other processors will not be\\nencountered when traversing the vertex list via GetVertices(), but\\nmay be encountered by traversing the in- and out-edge lists of local\\nvertices or the edge list.\\n\\n@par Distributed graphs: Distributed graphs can have pedigree IDs for\\nthe vertices in the same way that non-distributed graphs can. In this\\ncase, the distribution of the vertices in the graph is based on\\npedigree ID. For example, a vertex with the pedigree ID "Here" might\\nland on processor 0 while a vertex pedigree ID "There" would end up\\non processor 3. By default, the pedigree IDs themselves are hashed to\\ngive a random (and, hopefully, even) distribution of the vertices.\\nHowever, one can provide a different vertex distribution function by\\ncalling vtkDistributedGraphHelper::SetVertexPedigreeIdDistribution. \\nOnce a distributed graph has pedigree IDs, the no-argument\\nAddVertex() method can no longer be used. Additionally, once a vertex\\nhas a pedigree ID, that pedigree ID should not be changed unless the\\nuser can guarantee that the vertex distribution will still map that\\nvertex to the same processor where it already resides.\\n\\n@sa\\nvtkDirectedGraph vtkUndirectedGraph vtkMutableDirectedGraph\\nvtkMutableUndirectedGraph vtkTree vtkDistributedGraphHelper\\n\\n@par Thanks: Thanks to Brian Wylie, Timothy Shead, Ken Moreland of\\nSandia National Laboratories and Douglas Gregor of Indiana University\\nfor designing these classes.\\n\\n\'})'
    __vtkname__ = 'vtkGraph'


