def get_instance_in_time_of_day(device_instance,start_time,end_time): ''' Given an instance and a start and end datetime.time, it returns a trace within that time period. ''' print "WARNING: deprecated, "\ "use instance.get_time_of_day(start_time,end_time) instead" new_traces=[] for trace in device_instance.traces: new_traces.append(get_trace_in_time_of_day(trace,start_time,end_time)) return appliance.ApplianceInstance(new_traces,device_instance.metadata)
def resample_instance_traces(device_instance,sample_rate): ''' Resamples all traces within a given instance. ''' print "WARNING: deprecated, "\ "use appliance_instance.resample(sample_rate) instead" new_traces=[] for trace in device_instance.traces: new_traces.append(resample_trace(trace,sample_rate)) return appliance.ApplianceInstance(new_traces,device_instance.metadata)
def align_instances(instances): """ Aligns all traces in a list of instances. Removes traces that don't fit. """ traces = map(list,zip(*[instance.traces for instance in instances])) aligned_traces = [] for traces_ in traces: aligned_traces.append(align_traces(traces_)) traces = map(list,zip(*aligned_traces)) return [appliance.ApplianceInstance(traces_,instance.metadata) for traces_,instance in zip(traces,instances)]
def concatenate_instances(instances, metadata=None, how="strict"): ''' Takes a list of instances and concatenates them into a single instance with a single trace ''' if how == 'strict': traces = [instance.traces for instance in instances] trace = concatenate_traces(concatenate_traces_lists(traces)) return appliance.ApplianceInstance([trace],metadata) else: raise NotImplementedError
def split_instance_traces_into_rate(device_instance,rate): ''' Each trace in an instance is split into multiple traces that are each from a unique date ''' print "WARNING: deprecated, "\ "use appliance_instance.split_by(rate) instead" traces=[] for trace in device_instance.traces: traces.extend(split_trace_into_rate(trace,rate)) return appliance.ApplianceInstance(traces,device_instance.metadata)
def aggregate_instances(instances, metadata, how="strict"): ''' Given a list of temporally aligned instances, aggregate them into a single signal. ''' if how == "strict": if not instances_aligned(instances): raise appliance.AlignmentError traces = [instance.traces for instance in instances] traces = [list(t) for t in zip(*traces)] # transpose traces = [ aggregate_traces(t,{}) for t in traces] return appliance.ApplianceInstance(traces, metadata) else: return NotImplementedError
def generate_instance(self, device, instance_id): ''' This function imports the CSV files from a single device instance in a device folder ''' instance = [] instance_dates = self.get_trace_dates_from_instance( device, instance_id) for date in instance_dates: for trace in self.generate_traces(device, instance_id, date): instance.append(trace) meta = { 'source': self.source, 'device_name': device, 'instance_name': instance_id } return app.ApplianceInstance(instance, meta)