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)