class_docstr: Interface for NiftyNet evaluations used with
  CachedSubanalysisEvaluator so that evaluations are run in a way that is
  friendly for caching intermediate computations. Each evaluation defines
  sub-analyses to run, and all subanalysis are run at the same time then
  the cache is cleared
docstr: This function defines the sub-analyses to run. All evaluations with
  matching sub-analyses will be run in sequence, before clearing the cache
  :param subject_id:  subject identifier string
  :param data:  a data dictionary as built by ImageReader
  :return: list of dictionaries, each containing information specifyng
  the analysis to run. Elements will be passed to layer_op one at a
  time in a cache friendly order
code: def subanalyses(self, subject_id, data):
      """
      This function defines the sub-analyses to run. All evaluations with
      matching sub-analyses will be run in sequence, before clearing the cache
      :param subject_id:  subject identifier string
      :param data:  a data dictionary as built by ImageReader
      :return: list of dictionaries, each containing information specifyng
      the analysis to run. Elements will be passed to layer_op one at a
      time in a cache friendly order
      """
      raise NotImplementedError("not implemented in abstract class")
  
file_path: NiftyNet/niftynet/evaluation/base_evaluations.py
imports: from __future__ import absolute_import, division, print_function
  import pandas
  from niftynet.layer.base_layer import Layer
label_desc: Use image node_id 1 for calling the CachedSubanalysisEvaluation obj's underlying member method code with example usage: obj.subanalyses(subject_id, data) without return types