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 a list describing the path from this node to a child node
  
  If *node* is not a (grand)child of this node, then raise RuntimeError.
  
  Parameters
  ----------
  node : instance of Node
      The child node.
  
  Returns
  -------
  path : list | None
      The path.
docstr_tok: ["Return","a","list","describing","the","path","from","this","node","to","a","child","node","If","*","node","*","is","not","a","(","grand",")","child","of","this","node",",","then","raise","RuntimeError",".","Parameters","--","--","--","--","--","node",":","instance","of","Node","The","child","node",".","Returns","--","--","--","-","path",":","list","|","None","The","path","."]
code: def node_path_to_child(self, node):
      """Return a list describing the path from this node to a child node
  
      If *node* is not a (grand)child of this node, then raise RuntimeError.
  
      Parameters
      ----------
      node : instance of Node
          The child node.
  
      Returns
      -------
      path : list | None
          The path.
      """
      if node is self:
          return []
  
      # Go up from the child node as far as we can
      path1 = [node]
      child = node
      while child.parent is not None:
          child = child.parent
          path1.append(child)
          # Early exit
          if child is self:
              return list(reversed(path1))
  
      # Verify that we're not cut off
      if path1[-1].parent is None:
          raise RuntimeError("%r is not a child of %r" % (node, self))
  
      def _is_child(path, parent, child):
          path.append(parent)
          if child in parent.children:
              return path
          else:
              for c in parent.children:
                  possible_path = _is_child(path[:], c, child)
                  if possible_path:
                      return possible_path
          return None
  
      # Search from the parent towards the child
      path2 = _is_child([], self, path1[-1])
      if not path2:
          raise RuntimeError("%r is not a child of %r" % (node, self))
  
      # Return
      return path2 + list(reversed(path1))
  
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 39 for calling the Node obj's underlying member method code with example usage: obj.node_path_to_child(node) and returns: unknown, list, None, list, path, possible_path