/**
         * Convenience method to compute a metric over an indices trace, excluding
         * resets.
         *
         * @param trace     Trace of indices
         * @return
         */
        public virtual Metric <int> mmGetMetricFromTrace(IndicesTrace trace)
        {
            List <HashSet <int> > data          = null;
            BoolsTrace            excludeResets = mmGetTraceResets();

            if (excludeResets != null)
            {
                int[] i = { 0 };
                data = trace.items.Where(t => !excludeResets.items[i[0]++]).ToList();
            }

            trace.items = data;
            CountsTrace iTrace = trace.makeCountsTrace();

            return(Metric <int> .createFromTrace(iTrace, mmGetTraceResets()));
        }
        public virtual List <Metric <int> > mmGetDefaultMetrics(int verbosity)
        {
            BoolsTrace           resetsTrace = mmGetTraceResets();
            List <Metric <int> > metrics     = new List <Metric <int> >();

            List <ITrace> utilTraces = mmGetDefaultTraces(verbosity);

            for (int i = 0; i < utilTraces.Count - 3; i++)
            {
                metrics.Add(Metric <int> .createFromTrace((Trace <int>)utilTraces[i], resetsTrace));
            }
            for (int i = utilTraces.Count - 3; i < utilTraces.Count - 1; i++)
            {
                metrics.Add(Metric <int> .createFromTrace((Trace <int>)utilTraces[i], null));
            }
            metrics.Add(mmGetMetricSequencesPredictedActiveCellsPerColumn());
            metrics.Add(mmGetMetricSequencesPredictedActiveCellsShared());

            return(metrics);
        }
 /**
  * Convenience method to compute a metric over an counts trace, excluding
  * resets.
  *
  * @param trace     Trace of indices
  * @return
  */
 public virtual Metric <double> mmGetMetricFromTrace(Trace <double> trace)
 {
     return(Metric <double> .createFromTrace(trace, mmGetTraceResets()));
 }