Example #1
0
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)
Example #2
0
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)
Example #3
0
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)]
Example #4
0
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
Example #5
0
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)
Example #6
0
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)