|
|
|
|
|
|
|
|
.data$start <= !!inserts$start[j] & .data$end >= !!inserts$end[j]) |
|
|
.data$start <= !!inserts$start[j] & .data$end >= !!inserts$end[j]) |
|
|
inserts[j, 'pad'] <- inserts$pad[j] + nrow(overlap) |
|
|
inserts[j, 'pad'] <- inserts$pad[j] + nrow(overlap) |
|
|
} |
|
|
} |
|
|
inserts <- inserts %>% |
|
|
|
|
|
tidyr::gather(type, loc, start:end) %>% |
|
|
|
|
|
|
|
|
inserts <- dplyr::bind_rows( |
|
|
|
|
|
inserts %>% select(-.data$end, dplyr::everything(), loc = .data$start) %>% mutate(type = "start"), |
|
|
|
|
|
inserts %>% select(-.data$start, dplyr::everything(), loc = .data$end) %>% mutate(type = "end") |
|
|
|
|
|
) %>% |
|
|
filter(!is.na(.data$loc)) %>% |
|
|
filter(!is.na(.data$loc)) %>% |
|
|
dplyr::arrange(loc, class, dplyr::desc(type)) %>% |
|
|
dplyr::arrange(loc, class, dplyr::desc(type)) %>% |
|
|
mutate( |
|
|
mutate( |
|
|
|
|
|
|
|
|
inserts <- if (max(inserts$pass) == 1) { |
|
|
inserts <- if (max(inserts$pass) == 1) { |
|
|
collapse_span_inserts(inserts) |
|
|
collapse_span_inserts(inserts) |
|
|
} else { |
|
|
} else { |
|
|
inserts %>% |
|
|
|
|
|
tidyr::nest(spans = -.data$pass) %>% |
|
|
|
|
|
mutate(spans = purrr::map(.data$spans, collapse_span_inserts)) %>% |
|
|
|
|
|
tidyr::unnest(.data$spans) %>% |
|
|
|
|
|
|
|
|
split(inserts, inserts$pass) %>% |
|
|
|
|
|
purrr::map(collapse_span_inserts) %>% |
|
|
|
|
|
dplyr::bind_rows() %>% |
|
|
group_by(.data$loc, .data$type) %>% |
|
|
group_by(.data$loc, .data$type) %>% |
|
|
summarize(insert = paste(.data$insert, collapse = "")) %>% |
|
|
summarize(insert = paste(.data$insert, collapse = "")) %>% |
|
|
dplyr::ungroup() |
|
|
dplyr::ungroup() |