class_docstr: Base class representing an object in a scene.
  
  A group of nodes connected through parent-child relationships define a 
  scenegraph. Nodes may have any number of children.
  
  Each Node defines a ``transform`` property, which describes the position,
  orientation, scale, etc. of the Node relative to its parent. The Node's
  children inherit this property, and then further apply their own
  transformations on top of that. 
  
  With the ``transform`` property, each Node implicitly defines a "local" 
  coordinate system, and the Nodes and edges in the scenegraph can be thought
  of as coordinate systems connected by transformation functions.
  
  Parameters
  ----------
  parent : Node
      The parent of the Node.
  name : str
      The name used to identify the node.
  transforms : instance of TransformSystem | None
      The associated transforms.
docstr: Return two lists describing the path from this node to another
  
  Parameters
  ----------
  node : instance of Node
      The other node.
  
  Returns
  -------
  p1 : list
      First path (see below).
  p2 : list
      Second path (see below).
  
  Notes
  -----
  The first list starts with this node and ends with the common parent
  between the endpoint nodes. The second list contains the remainder of
  the path from the common parent to the specified ending node.
  
  For example, consider the following scenegraph::
  
      A --- B --- C --- D
                                 --- E --- F
  
  Calling `D.node_path(F)` will return::
  
      ([D, C, B], [E, F])
docstr_tok: ["Return","two","lists","describing","the","path","from","this","node","to","another","Parameters","--","--","--","--","--","node",":","instance","of","Node","The","other","node",".","Returns","--","--","--","-","p1",":","list","First","path","(","see","below",")",".","p2",":","list","Second","path","(","see","below",")",".","Notes","--","--","-","The","first","list","starts","with","this","node","and","ends","with","the","common","parent","between","the","endpoint","nodes",".","The","second","list","contains","the","remainder","of","the","path","from","the","common","parent","to","the","specified","ending","node",".","For","example",",","consider","the","following","scenegraph",":",":","A","--","-","B","--","-","C","--","-","D","--","-","E","--","-","F","Calling","`","D.node_path","(","F",")","`","will","return",":",":","(","[","D",",","C",",","B","]",",","[","E",",","F","]",")"]
code: def node_path(self, node):
      """Return two lists describing the path from this node to another
  
          Parameters
          ----------
          node : instance of Node
              The other node.
  
          Returns
          -------
          p1 : list
              First path (see below).
          p2 : list
              Second path (see below).
  
          Notes
          -----
          The first list starts with this node and ends with the common parent
          between the endpoint nodes. The second list contains the remainder of
          the path from the common parent to the specified ending node.
  
          For example, consider the following scenegraph::
  
              A --- B --- C --- D
                     \
                      --- E --- F
  
          Calling `D.node_path(F)` will return::
  
              ([D, C, B], [E, F])
  
          """
      p1 = self.parent_chain()
      p2 = node.parent_chain()
      cp = None
      for p in p1:
          if p in p2:
              cp = p
              break
      if cp is None:
          raise RuntimeError(
              "No single-path common parent between nodes %s "
              "and %s." % (self, node)
          )
  
      p1 = p1[: p1.index(cp) + 1]
      p2 = p2[: p2.index(cp)][::-1]
      return p1, p2
  
imports: from __future__ import division
  import weakref
  from contextlib import contextmanager
  from ..util.event import Event, EmitterGroup
  from ..visuals.transforms import NullTransform, BaseTransform, ChainTransform, create_transform, TransformSystem
label_desc: Use image node_id 40 for calling the Node obj's underlying member method code with example usage: obj.node_path(node) and returns: p1,  p2