parameters: (self, node_thres, edge_thres, paths, color_nodes_by_selftime)
docstring: Prune the profile
docstring_summary: Prune the profile
docstring_tokens: Prune the profile
function: def prune(self, node_thres, edge_thres, paths, color_nodes_by_selftime):
          """Prune the profile"""
  
          # compute the prune ratios
          for function in compat_itervalues(self.functions):
              try:
                  function.weight = function[TOTAL_TIME_RATIO]
              except UndefinedEvent:
                  pass
  
              for call in compat_itervalues(function.calls):
                  callee = self.functions[call.callee_id]
  
                  if TOTAL_TIME_RATIO in call:
                      # handle exact cases first
                      call.weight = call[TOTAL_TIME_RATIO] 
                  else:
                      try:
                          # make a safe estimate
                          call.weight = min(function[TOTAL_TIME_RATIO], callee[TOTAL_TIME_RATIO]) 
                      except UndefinedEvent:
                          pass
  
          # prune the nodes
          for function_id in compat_keys(self.functions):
              function = self.functions[function_id]
              if function.weight is not None:
                  if function.weight < node_thres:
                      del self.functions[function_id]
          
          # prune file paths
          for function_id in compat_keys(self.functions):
              function = self.functions[function_id]
              if paths and function.filename and not any(function.filename.startswith(path) for path in paths):
                  del self.functions[function_id]
              elif paths and function.module and not any((function.module.find(path)>-1) for path in paths):
                  del self.functions[function_id]
  
          # prune the edges
          for function in compat_itervalues(self.functions):
              for callee_id in compat_keys(function.calls):
                  call = function.calls[callee_id]
                  if callee_id not in self.functions or call.weight is not None and call.weight < edge_thres:
                      del function.calls[callee_id]
  
          if color_nodes_by_selftime:
              weights = []
              for function in compat_itervalues(self.functions):
                  try:
                      weights.append(function[TIME_RATIO])
                  except UndefinedEvent:
                      pass
              max_ratio = max(weights or [1])
  
              # apply rescaled weights for coloriung
              for function in compat_itervalues(self.functions):
                  try:
                      function.weight = function[TIME_RATIO] / max_ratio
                  except (ZeroDivisionError, UndefinedEvent):
                      pass
function_tokens: def prune ( self , node_thres , edge_thres , paths , color_nodes_by_selftime ) : # compute the prune ratios for function in compat_itervalues ( self . functions ) : try : function . weight = function [ TOTAL_TIME_RATIO ] except UndefinedEvent : pass for call in compat_itervalues ( function . calls ) : callee = self . functions [ call . callee_id ] if TOTAL_TIME_RATIO in call : # handle exact cases first call . weight = call [ TOTAL_TIME_RATIO ] else : try : # make a safe estimate call . weight = min ( function [ TOTAL_TIME_RATIO ] , callee [ TOTAL_TIME_RATIO ] ) except UndefinedEvent : pass # prune the nodes for function_id in compat_keys ( self . functions ) : function = self . functions [ function_id ] if function . weight is not None : if function . weight < node_thres : del self . functions [ function_id ] # prune file paths for function_id in compat_keys ( self . functions ) : function = self . functions [ function_id ] if paths and function . filename and not any ( function . filename . startswith ( path ) for path in paths ) : del self . functions [ function_id ] elif paths and function . module and not any ( ( function . module . find ( path ) > - 1 ) for path in paths ) : del self . functions [ function_id ] # prune the edges for function in compat_itervalues ( self . functions ) : for callee_id in compat_keys ( function . calls ) : call = function . calls [ callee_id ] if callee_id not in self . functions or call . weight is not None and call . weight < edge_thres : del function . calls [ callee_id ] if color_nodes_by_selftime : weights = [ ] for function in compat_itervalues ( self . functions ) : try : weights . append ( function [ TIME_RATIO ] ) except UndefinedEvent : pass max_ratio = max ( weights or [ 1 ] ) # apply rescaled weights for coloriung for function in compat_itervalues ( self . functions ) : try : function . weight = function [ TIME_RATIO ] / max_ratio except ( ZeroDivisionError , UndefinedEvent ) : pass