class_docstr: The base evaluator defines a simple evaluations that iterates through
  subjects and computes each metric in sequence
  
  Sub-classes should overload the default_evaluation_list with
  application-specific metrics
  If a particular ordering of computations per subject is needed, sub-class
  can override the evaluate_next method; if a particular ordering of
  subjects is needed, subclasses can override the evaluate method.
class_docstr_tok: ["The","base","evaluator","defines","a","simple","evaluations","that","iterates","through","subjects","and","computes","each","metric","in","sequence","Sub-classes","should","overload","the","default_evaluation_list","with","application-specific","metrics","If","a","particular","ordering","of","computations","per","subject","is","needed",",","sub-class","can","override","the","evaluate_next","method",";","if","a","particular","ordering","of","subjects","is","needed",",","subclasses","can","override","the","evaluate","method","."]
docstr: Computes metrics for one subject.
  
  :param subject_id:
  :param data: data dictionary passed to each evaluation
  :param interp_orders: metadata for the data dictionary
         [currently not used]
  :return: a list of pandas.DataFrame objects
docstr_tok: ["Computes","metrics","for","one","subject",".",":","param","subject_id",":",":","param","data",":","data","dictionary","passed","to","each","evaluation",":","param","interp_orders",":","metadata","for","the","data","dictionary","[","currently","not","used","]",":","return",":","a","list","of","pandas.DataFrame","objects"]
code: def evaluate_next(self, subject_id, data, interp_orders):
      """
      Computes metrics for one subject.
  
      :param subject_id:
      :param data: data dictionary passed to each evaluation
      :param interp_orders: metadata for the data dictionary
             [currently not used]
      :return: a list of pandas.DataFrame objects
      """
      metrics = []
      for evaluation in self.evaluations:
          metrics += evaluation(subject_id, data)
      return metrics
  
imports: from __future__ import absolute_import, division, print_function
  import itertools
  from itertools import groupby
  from collections import defaultdict
  import pandas
  from niftynet.engine.application_factory import EvaluationFactory
  from niftynet.utilities.util_common import cache
label_desc: Use image node_id 4 for calling the BaseEvaluator obj's underlying member method code with example usage: obj.evaluate_next(subject_id, data, interp_orders) and returns: metrics