def perform(self, simulation_results, result_factory):
        value_collection = []
#        sample_period = None
        sample_times = numpy.arange(self.start_time,
                self.stop_time + self.sample_period/2, self.sample_period)
        for simulation in simulation_results:
            times, values = simulation['filaments'][0]['measurements'
                    ][self.measurement_name]
            stimes, sampled_values = interpolation.resample_measurement(
                    (times, values), sample_times, method='previous_value')

#            if not sample_period and len(times) > 1:
#                sample_period = float(times[1] - times[0])
            value_collection.append(sampled_values)

        # calculate velocities collection
        velocity_collection = [numpy.diff(v) / self.sample_period
                for v in value_collection]

        # collection get mean/std -> threshold
        mean, std = correlation.collection_stats(velocity_collection)
        threshold = mean + self.std_devs * std

        # do autocorrelation
        if 'above' == self.side.lower():
            matched_collection = [numpy.array(velocities > threshold, dtype=int)
                    for velocities in velocity_collection]
        else:
            matched_collection = [numpy.array(velocities < threshold, dtype=int)
                    for velocities in velocity_collection]

        measurement = correlation.aggregate_autocorrelation(self.sample_period,
                matched_collection)

        return result_factory(measurement, label=self.label)
    def perform(self, simulation_results, result_factory):
        value_collection = []
        sample_times = numpy.arange(self.start_time,
                self.stop_time + self.sample_period/2, self.sample_period)
        for simulation in simulation_results:
            times, values = simulation['filaments'][0]['measurements'
                    ][self.measurement_name]
            stimes, sampled_values = interpolation.resample_measurement(
                    (times, values), sample_times, method='previous_value')

            values = numpy.array(sampled_values)
            matches = numpy.array(values == self.state, dtype=int)
            value_collection.append(matches)

        measurement = correlation.aggregate_autocorrelation(self.sample_period,
                value_collection)

        return result_factory(measurement, label=self.label)
    def perform(self, simulation_results, result_factory):
        value_collection = []
        sample_times = numpy.arange(self.start_time,
                                    self.stop_time + self.sample_period / 2,
                                    self.sample_period)
        for simulation in simulation_results:
            times, values = simulation['filaments'][0]['measurements'][
                self.measurement_name]
            stimes, sampled_values = interpolation.resample_measurement(
                (times, values), sample_times, method='previous_value')

            values = numpy.array(sampled_values)
            matches = numpy.array(values == self.state, dtype=int)
            value_collection.append(matches)

        measurement = correlation.aggregate_autocorrelation(
            self.sample_period, value_collection)

        return result_factory(measurement, label=self.label)