コード例 #1
0
def search_signatures(indexname, level_filenames, feature_filenames):
    import correlate
    import smooth_avg

    level_signatures = []
    for level_filename, feature_filename in zip(level_filenames,
                                                feature_filenames):
        level_signature = signature_read.read_signature_short(level_filename)
        level_signatures.append(level_signature)

    data = pickle.loads(open(indexname, "r").read())
    search_results = []
    for level_filename, feature_filename in zip(level_filenames,
                                                feature_filenames):
        level_signature = signature_read.read_signature_short(level_filename)
        feature_signature = signature_read.read_signature_byte(
            feature_filename)
        signature = signature_make.signature_make(level_signature,
                                                  feature_signature)
        search_result = signature_make.signature_search_intersect(
            data, signature)
        search_result = [
            (i, compare,
             correlate.pearson(smooth_avg.avg_smooth(level_signature),
                               smooth_avg.avg_smooth(level_signatures[i])))
            for i, compare in search_result
        ]
        #        search_result = [(i, compare) for i, compare in search_result]
        search_results.append(search_result)
    return search_results
コード例 #2
0
def signature_make(level_signature, feature_signature):
    result = []

    level_range = 2**16
    feature_range = 2**8

    import smooth_avg
    level_signature = smooth_avg.avg_smooth(level_signature)

    for (last_level, last_feature), (level, feature) in adjacent(zip(level_signature, feature_signature)):
        if abs(level - last_level) > level_range / 8:
            feature_value = last_feature * feature_range + feature
            result.append(feature_value)

    return result
コード例 #3
0
def signature_make(level_signature, feature_signature):
    result = []

    level_range = 2**16
    feature_range = 2**8

    import smooth_avg
    level_signature = smooth_avg.avg_smooth(level_signature)

    for (last_level, last_feature), (level, feature) in adjacent(
            zip(level_signature, feature_signature)):
        if abs(level - last_level) > level_range / 8:
            feature_value = last_feature * feature_range + feature
            result.append(feature_value)

    return result
コード例 #4
0
def window_normalize(values, window = 200):
    import smooth_avg
    values = smooth_avg.avg_smooth(values)

    forward_avg, backward_avg = [], []

    queue = deque(maxlen = window / 2)
    for value in values:
        forward_avg.append((sum(queue), len(queue)))
        queue.append(value)

    queue = deque(maxlen = window / 2)
    for value in reversed(values):
        backward_avg.append((sum(queue), len(queue)))
        queue.append(value)

    avg = [float(fs + value + bs) / float(fl + 1 + bl) for value, (fs, fl), (bs, bl) in zip(values, forward_avg, backward_avg)]

    return [value / average if average else 0 for value, average in zip(values, avg)]
コード例 #5
0
def search_signatures(indexname, level_filenames, feature_filenames):
    import correlate
    import smooth_avg

    level_signatures = []
    for level_filename, feature_filename in zip(level_filenames, feature_filenames):
        level_signature = signature_read.read_signature_short(level_filename)
        level_signatures.append(level_signature)

    data = pickle.loads(open(indexname, "r").read())
    search_results = []
    for level_filename, feature_filename in zip(level_filenames, feature_filenames):
        level_signature = signature_read.read_signature_short(level_filename)
        feature_signature = signature_read.read_signature_byte(feature_filename)
        signature = signature_make.signature_make(level_signature, feature_signature)
        search_result = signature_make.signature_search_intersect(data, signature)
        search_result = [(i, compare, correlate.pearson(smooth_avg.avg_smooth(level_signature), smooth_avg.avg_smooth(level_signatures[i]))) for i, compare in search_result]
#        search_result = [(i, compare) for i, compare in search_result]
        search_results.append(search_result)
    return search_results
コード例 #6
0
def slide_normalize(values):
    import smooth_avg
    values = smooth_avg.avg_smooth(values)
    values = [value + 2**15 for value in values]

    forward_avg = []
    backward_avg = []

    alpha = 0.5

    average = 0.0

    for value in values:
        average = average * alpha + value * (1 - alpha)
        forward_avg.append(average)

    average = 0.0

    for value in reversed(values):
        average = average * alpha + value * (1 - alpha)
        backward_avg.append(average)

    backward_avg.reverse()

    bi_avg = [(forward + backward) / 2 for forward, backward in zip(forward_avg, backward_avg)]

    result = []

    for value, average in zip(values, forward_avg):
        if value and average:
            result_value = value / average
        else:
            result_value = 0
        result.append(result_value)

    return result[int(len(result) * 0.1):-int(len(result) * 0.1)]