       ]
     ]
   ]
-
-augmentConfusionMatrices = (maxs, scores) ->
-  p = maxs.data[2][maxs.data[0].indexOf 'tps']
-  n = maxs.data[2][maxs.data[0].indexOf 'fps']
-
-  tps = scores.data[findIndex scores.columns, (column) -> column.name is 'tps']
-  fps = scores.data[findIndex scores.columns, (column) -> column.name is 'fps']
-
-  cms = for tp, i in tps
-    fp = fps[i]
-    [[n - fp, fp], [p - tp, tp]]
-
-  scores.columns.push
-    name: 'CM'
-    description: 'CM'
-    format: 'matrix' #TODO HACK
-    type: 'matrix'
-
-  scores.data.push cms
 
 formulateGetPredictionsOrigin = (opts) ->
   if isArray opts

      description: description
      origin: origin

  blacklistedAttributesBySchema =
    KMeansOutput: 'names domains help'
    GBMOutput: 'names domains help'
    GLMOutput: 'names domains help'
    DRFOutput: 'names domains help'
    DeepLearningModelOutput: 'names domains help'
    NaiveBayesOutput: 'names domains help'
    PCAOutput: 'names domains help'
    ModelMetricsBinomial: null
    ModelMetricsMultinomial: null
    ModelMetricsRegression: null
    ModelMetricsClustering: null
    ModelMetricsAutoEncoder: null

  blacklistBySchema = do ->
    dicts = {}
    for schema, attrs of blacklistedAttributesBySchema
      dicts[schema] = dict = __meta: yes
      if attrs
        for attr in words attrs
          dict[attr] = yes
    dicts

  inspectObject = (inspections, name, origin, obj) ->
    blacklist = blacklistBySchema[obj.__meta?.schema_type] or {}

    record = {}

    inspections[name] = inspectRawObject_ name, origin, name, record

    for k, v of obj when not blacklist[k]
      if v is null
        record[k] = null
      else

    predictions

  extendPrediction = (modelKey, frameKey, prediction) ->
    inspections = {}
    inspectObject inspections, 'Prediction', "getPrediction model: #{stringify prediction.model.name}, frame: #{stringify prediction.frame.name}", prediction
    inspect_ prediction, inspections
