Exemple #1
0
def merge_short_lines_into_groups(events, chapter_times, max_ts_duration, max_ts_distance):
    search_groups = []
    chapter_times = iter(chapter_times[1:] + [100000000])
    next_chapter = next(chapter_times)
    events = ensure_static_collection(events)

    processed = set()
    for idx, event in enumerate(events):
        if idx in processed:
            continue

        while event.end > next_chapter:
            next_chapter = next(chapter_times)

        if event.duration > max_ts_duration:
            search_groups.append([event])
            processed.add(idx)
        else:
            group = [event]
            group_end = event.end
            i = idx+1
            while i < len(events) and abs(group_end - events[i].start) < max_ts_distance:
                if events[i].end < next_chapter and events[i].duration <= max_ts_duration:
                    processed.add(i)
                    group.append(events[i])
                    group_end = max(group_end, events[i].end)
                i += 1

            search_groups.append(group)

    return search_groups
Exemple #2
0
def merge_short_lines_into_groups(events, chapter_times, max_ts_duration,
                                  max_ts_distance):
    search_groups = []
    chapter_times = iter(chapter_times[1:] + [100000000])
    next_chapter = next(chapter_times)
    events = ensure_static_collection(events)

    processed = set()
    for idx, event in enumerate(events):
        if idx in processed:
            continue

        while event.end > next_chapter:
            next_chapter = next(chapter_times)

        if event.duration > max_ts_duration:
            search_groups.append([event])
            processed.add(idx)
        else:
            group = [event]
            group_end = event.end
            i = idx + 1
            while i < len(events) and abs(group_end -
                                          events[i].start) < max_ts_distance:
                if events[i].end < next_chapter and events[
                        i].duration <= max_ts_duration:
                    processed.add(i)
                    group.append(events[i])
                    group_end = max(group_end, events[i].end)
                i += 1

            search_groups.append(group)

    return search_groups
Exemple #3
0
def interpolate_nones(data, points):
    data = ensure_static_collection(data)
    data_idx = [point for point, value in izip(points, data) if value is not None]
    if not data_idx:
        return []
    zero_idx = [point for point, value in izip(points, data) if value is None]
    if not zero_idx:
        return data
    data_values = [value for value in data if value is not None]
    out = iter(np.interp(zero_idx, data_idx, data_values))

    for point, value in enumerate(data):
        if value is None:
            data[point] = next(out, None)

    return data
Exemple #4
0
def interpolate_nones(data, points):
    data = ensure_static_collection(data)
    values_lookup = {p: v for p, v in izip(points, data) if v is not None}
    if not values_lookup:
        return []

    zero_points = {p for p, v in izip(points, data) if v is None}
    if not zero_points:
        return data

    data_list = sorted(values_lookup.iteritems())
    zero_points = sorted(x for x in zero_points if x not in values_lookup)

    out = np.interp(x=zero_points,
                    xp=map(operator.itemgetter(0), data_list),
                    fp=map(operator.itemgetter(1), data_list))

    values_lookup.update(izip(zero_points, out))

    return [
        values_lookup[point] if value is None else value
        for point, value in izip(points, data)
    ]
Exemple #5
0
def interpolate_nones(data, points):
    data = ensure_static_collection(data)
    values_lookup = {p: v for p, v in izip(points, data) if v is not None}
    if not values_lookup:
        return []

    zero_points = {p for p, v in izip(points, data) if v is None}
    if not zero_points:
        return data

    data_list = sorted(values_lookup.iteritems())
    zero_points = sorted(x for x in zero_points if x not in values_lookup)

    out = np.interp(x=zero_points,
                    xp=map(operator.itemgetter(0), data_list),
                    fp=map(operator.itemgetter(1), data_list))

    values_lookup.update(izip(zero_points, out))

    return [
        values_lookup[point] if value is None else value
        for point, value in izip(points, data)
    ]