Skip to content

Commit 319bcfe

Browse files
authored
Modernise package (#169)
* modernise package * bump minimum version * remove . as a global variable
1 parent bad3b2b commit 319bcfe

85 files changed

Lines changed: 743 additions & 727 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/R-CMD-check.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
R_KEEP_PKG_SOURCE: yes
3131

3232
steps:
33-
- uses: actions/checkout@v5
33+
- uses: actions/checkout@v6
3434

3535
- uses: r-lib/actions/setup-pandoc@v2
3636

.github/workflows/test-coverage.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
1717

1818
steps:
19-
- uses: actions/checkout@v5
19+
- uses: actions/checkout@v6
2020

2121
- uses: r-lib/actions/setup-r@v2
2222
with:
@@ -56,7 +56,7 @@ jobs:
5656

5757
- name: Upload test results
5858
if: failure()
59-
uses: actions/upload-artifact@v4
59+
uses: actions/upload-artifact@v7
6060
with:
6161
name: coverage-test-failures
6262
path: ${{ runner.temp }}/package

DESCRIPTION

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Description: Provides functionality to infer trajectories from single-cell data,
55
represent them into a common format, and adapt them. Other biological information
66
can also be added, such as cellular grouping, RNA velocity and annotation.
77
Saelens et al. (2019) <doi:10.1038/s41587-019-0071-9>.
8-
Version: 1.2.5
8+
Version: 1.3.0
99
Authors@R: c(
1010
person(
1111
"Robrecht",
@@ -26,11 +26,11 @@ URL: https://github.com/dynverse/dynwrap
2626
BugReports: https://github.com/dynverse/dynwrap/issues
2727
License: MIT + file LICENSE
2828
LazyData: TRUE
29-
RoxygenNote: 7.2.3
29+
RoxygenNote: 7.3.3
3030
Roxygen: list(markdown = TRUE)
3131
Encoding: UTF-8
3232
Depends:
33-
R (>= 3.0.0)
33+
R (>= 4.1.0)
3434
Imports:
3535
assertthat,
3636
babelwhale,
@@ -40,7 +40,6 @@ Imports:
4040
dynparam,
4141
igraph,
4242
glue,
43-
magrittr,
4443
Matrix,
4544
methods,
4645
purrr (>= 1.0.0),

NAMESPACE

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,6 @@ importFrom(igraph,graph_from_data_frame)
122122
importFrom(igraph,is_directed)
123123
importFrom(igraph,layout_with_fr)
124124
importFrom(igraph,neighborhood)
125-
importFrom(magrittr,"%$%")
126-
importFrom(magrittr,"%<>%")
127-
importFrom(magrittr,set_colnames)
128-
importFrom(magrittr,set_rownames)
129125
importFrom(methods,as)
130126
importFrom(methods,formalArgs)
131127
importFrom(methods,is)

NEWS.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
# dynwrap 1.3.0
2+
3+
* MODERNISATION: Replace `%>%` pipes with native `|>` pipe throughout.
4+
5+
* MODERNISATION: Remove `magrittr` dependency; replace `set_rownames()`/`set_colnames()` with base R assignments.
6+
7+
* MODERNISATION: Replace deprecated `dplyr::do()` with `reframe()`.
8+
9+
* MODERNISATION: Replace deprecated `mutate_at()` with `mutate(across())`.
10+
11+
* FIX: Add missing `"id"` to `globalVariables()` to silence R CMD check NOTE about no visible binding for global variable `id`.
12+
13+
* FIX: Replace relative cross-vignette URLs (`../create_ti_method_xxx`) with proper file-relative links to silence R CMD check NOTE.
14+
15+
* MINOR CHANGE: Update GitHub Actions workflows to use `actions/checkout@v6` and `actions/upload-artifact@v7`.
16+
17+
* MINOR CHANGE: Add `pkgdown.yaml` GitHub Actions workflow for website deployment.
18+
119
# dynwrap 1.2.5
220

321
* BUG FIX `convert_definition()`: Fix for purrr having deprecated `invoke` in favour of `exec` (PR #166).

R/adapt_orient_topology.R

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,45 +25,45 @@ flip_edges <- function(
2525
paste0(trajectory$milestone_network$from, trajectory$milestone_network$to)
2626
), msg = "All edges in the milestone_network_toflip should also be present in the trajectory milestone network")
2727

28-
milestone_network_toflip <- milestone_network_toflip %>%
28+
milestone_network_toflip <- milestone_network_toflip |>
2929
select(from, to)
3030

3131
# flip edge if from is later than to
32-
trajectory$milestone_network <- trajectory$milestone_network %>%
33-
left_join(milestone_network_toflip %>% mutate(flip = TRUE), c("from", "to")) %>%
32+
trajectory$milestone_network <- trajectory$milestone_network |>
33+
left_join(milestone_network_toflip |> mutate(flip = TRUE), c("from", "to")) |>
3434
mutate(flip = ifelse(is.na(flip), FALSE, flip))
3535

3636
# flip milestone network & progressions
37-
trajectory$progressions <- trajectory$progressions %>%
38-
left_join(trajectory$milestone_network %>% select(from, to, flip), c("from", "to")) %>%
37+
trajectory$progressions <- trajectory$progressions |>
38+
left_join(trajectory$milestone_network |> select(from, to, flip), c("from", "to")) |>
3939
mutate(
4040
from2 = from,
4141
from = ifelse(flip, to, from),
4242
to = ifelse(flip, from2, to),
4343
percentage = ifelse(flip, 1-percentage, percentage)
44-
) %>%
44+
) |>
4545
select(-flip, -from2)
4646

4747
if (!is.null(trajectory$dimred_segment_progressions)) {
4848
trajectory$dimred_segment_progressions <-
49-
trajectory$dimred_segment_progressions %>%
50-
left_join(trajectory$milestone_network %>% select(from, to, flip), c("from", "to")) %>%
49+
trajectory$dimred_segment_progressions |>
50+
left_join(trajectory$milestone_network |> select(from, to, flip), c("from", "to")) |>
5151
mutate(
5252
from2 = from,
5353
from = ifelse(flip, to, from),
5454
to = ifelse(flip, from2, to),
5555
percentage = ifelse(flip, 1-percentage, percentage)
56-
) %>%
56+
) |>
5757
select(-flip, -from2)
5858
}
5959

60-
trajectory$milestone_network <- trajectory$milestone_network %>%
60+
trajectory$milestone_network <- trajectory$milestone_network |>
6161
mutate(
6262
from2 = from,
6363
from = ifelse(flip, to, from),
6464
to = ifelse(flip, from2, to),
6565
directed = TRUE
66-
) %>%
66+
) |>
6767
select(-flip, -from2)
6868

6969
trajectory

R/add_regulatory_network.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ add_regulatory_network <- function(dataset, regulatory_network, regulatory_netwo
5858
regulatory_network_sc$target <- factor(regulatory_network_sc$target, targets)
5959
}
6060

61-
dataset <- dataset %>% extend_with(
61+
dataset <- dataset |> extend_with(
6262
"dynwrap::with_regulatory_network",
6363
regulatory_network = regulatory_network,
6464
regulatory_network_sc = regulatory_network_sc,

R/calculate_average.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@
2121
#' @rdname calculate_average
2222
calculate_average_by_group <- function(x, cell_grouping) {
2323
milestone_percentages <-
24-
cell_grouping %>%
25-
mutate(percentage = 1) %>%
24+
cell_grouping |>
25+
mutate(percentage = 1) |>
2626
rename(milestone_id = group_id)
2727

2828
calculate_average_by_milestone_percentages(x, milestone_percentages)
2929
}
3030

3131
calculate_average_by_milestone_percentages <- function(x, milestone_percentages) {
3232
# cast milestone percentages to matrix
33-
milpct_m <- milestone_percentages %>%
33+
milpct_m <- milestone_percentages |>
3434
reshape2::acast(cell_id ~ milestone_id, value.var = "percentage", fill = 0, fun.aggregate = sum)
3535

3636
stat <- colSums(milpct_m)

R/calculate_geodesic_distances.R

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ calculate_geodesic_distances_ <- function(
7070
waypoint_ids <- unique(c(waypoint_ids, waypoint_milestone_percentages$waypoint_id))
7171
milestone_percentages <- bind_rows(
7272
milestone_percentages,
73-
waypoint_milestone_percentages %>% rename(cell_id = waypoint_id)
73+
waypoint_milestone_percentages |> rename(cell_id = waypoint_id)
7474
)
7575
}
7676

@@ -80,20 +80,19 @@ calculate_geodesic_distances_ <- function(
8080

8181
# rename milestones to avoid name conflicts between cells and milestones
8282
milestone_trafo_fun <- function(x) paste0("MILESTONE_", x)
83-
milestone_network <- milestone_network %>% mutate(from = milestone_trafo_fun(from), to = milestone_trafo_fun(to))
84-
milestone_ids <- milestone_ids %>% milestone_trafo_fun()
85-
milestone_percentages <- milestone_percentages %>% mutate(milestone_id = milestone_trafo_fun(milestone_id))
86-
divergence_regions <- divergence_regions %>% mutate(milestone_id = milestone_trafo_fun(milestone_id))
83+
milestone_network <- milestone_network |> mutate(from = milestone_trafo_fun(from), to = milestone_trafo_fun(to))
84+
milestone_ids <- milestone_ids |> milestone_trafo_fun()
85+
milestone_percentages <- milestone_percentages |> mutate(milestone_id = milestone_trafo_fun(milestone_id))
86+
divergence_regions <- divergence_regions |> mutate(milestone_id = milestone_trafo_fun(milestone_id))
8787

8888
# add 'extra' divergences for transitions not in a divergence
8989
extra_divergences <-
90-
milestone_network %>%
91-
# filter(from != to) %>% # filter self edges
92-
rowwise() %>%
93-
mutate(in_divergence = divergence_regions %>% group_by(divergence_id) %>% summarise(match = all(c(from, to) %in% milestone_id)) %>% {any(.$match)}) %>%
94-
filter(!in_divergence) %>%
95-
do({tibble(divergence_id = paste0(.$from, "__", .$to), milestone_id = c(.$from, .$to), is_start = c(T, F))}) %>%
96-
ungroup() %>%
90+
milestone_network |>
91+
# filter(from != to) |> # filter self edges
92+
rowwise() |>
93+
mutate(in_divergence = divergence_regions |> group_by(divergence_id) |> summarise(match = all(c(from, to) %in% milestone_id)) |> (\(x) any(x$match))()) |>
94+
filter(!in_divergence) |>
95+
reframe(tibble(divergence_id = paste0(from, "__", to), milestone_id = c(from, to), is_start = c(TRUE, FALSE))) |>
9796
distinct(divergence_id, milestone_id, .keep_all = TRUE)
9897

9998
divergence_regions <- bind_rows(
@@ -111,32 +110,32 @@ calculate_geodesic_distances_ <- function(
111110
# calculate cell-cell distances for pairs of cells that are in the same transition, i.e. an edge or a divergence region
112111
cell_in_tent_distances <-
113112
map_df(divergence_ids, function(did) {
114-
dir <- divergence_regions %>% filter(divergence_id == did)
115-
mid <- dir %>% filter(is_start) %>% .$milestone_id
113+
dir <- divergence_regions |> filter(divergence_id == did)
114+
mid <- dir |> filter(is_start) |> pull(milestone_id)
116115
tent <- dir$milestone_id
117116

118117
tent_nomid <- setdiff(tent, mid)
119118
tent_distances <- igraph::distances(mil_gr, v = mid, to = tent, mode = "out", weights = igraph::E(mil_gr)$length)
120119

121120
relevant_pct <-
122-
milestone_percentages %>%
123-
group_by(cell_id) %>%
124-
filter(all(milestone_id %in% tent)) %>%
121+
milestone_percentages |>
122+
group_by(cell_id) |>
123+
filter(all(milestone_id %in% tent)) |>
125124
ungroup()
126125

127126
if (nrow(relevant_pct) <= 1) {
128127
return(NULL)
129128
}
130129

131130
scaled_dists <-
132-
relevant_pct %>%
131+
relevant_pct |>
133132
mutate(dist = percentage * tent_distances[mid, milestone_id])
134133

135134
pct_mat <-
136135
bind_rows(
137-
scaled_dists %>% select(from = cell_id, to = milestone_id, length = dist),
138-
tent_distances %>% as.data.frame() %>% gather(from, length) %>% mutate(to = from)
139-
) %>%
136+
scaled_dists |> select(from = cell_id, to = milestone_id, length = dist),
137+
tent_distances |> as.data.frame() |> gather(from, length) |> mutate(to = from)
138+
) |>
140139
reshape2::acast(from ~ to, value.var = "length", fill = 0)
141140

142141
wp_cells <- rownames(pct_mat)[rownames(pct_mat) %in% waypoint_ids]
@@ -150,7 +149,7 @@ calculate_geodesic_distances_ <- function(
150149
if (!isFALSE(directed)) {
151150
# calculate the sign of the distance
152151
# distance is negative if the cell is closer to the beginning than the waypoint
153-
begin <- dir %>% filter(is_start) %>% pull(milestone_id)
152+
begin <- dir |> filter(is_start) |> pull(milestone_id)
154153

155154
signs <- sign(-outer(distances[, begin], distances[begin, ], "-"))
156155
signs[is.na(signs)] <- 1 # when disconnected, sign will be NaN, so that distance remains + Inf
@@ -159,10 +158,10 @@ calculate_geodesic_distances_ <- function(
159158
distances <- distances * signs
160159
}
161160

162-
distances <- distances %>%
163-
as.matrix() %>%
164-
reshape2::melt(varnames = c("from", "to"), value.name = "length") %>%
165-
mutate_at(c("from", "to"), as.character) %>%
161+
distances <- distances |>
162+
as.matrix() |>
163+
reshape2::melt(varnames = c("from", "to"), value.name = "length") |>
164+
mutate(across(c("from", "to"), as.character)) |>
166165
filter(from != to)
167166

168167
distances
@@ -181,26 +180,26 @@ calculate_geodesic_distances_ <- function(
181180
cell_in_tent_distances$from2,
182181
cell_in_tent_distances$to
183182
)
184-
cell_in_tent_distances <- cell_in_tent_distances %>% select(-from2)
183+
cell_in_tent_distances <- cell_in_tent_distances |> select(-from2)
185184
cell_in_tent_distances$length <- abs(cell_in_tent_distances$length)
186185

187186
# add reverse edges if distance approx. zero
188187
# this is necessary because the direction will be taken into account
189188
cell_in_tent_distances <- bind_rows(
190189
cell_in_tent_distances,
191-
cell_in_tent_distances %>%
192-
filter(length <= 1e-20) %>%
193-
mutate(from2 = from, from = to, to = from2) %>%
190+
cell_in_tent_distances |>
191+
filter(length <= 1e-20) |>
192+
mutate(from2 = from, from = to, to = from2) |>
194193
select(-from2)
195194
)
196195
}
197196

198197
# combine all networks into one graph
199198
gr <-
200-
bind_rows(milestone_network, cell_in_tent_distances) %>%
201-
group_by(from, to) %>%
202-
summarise(length = min(length)) %>%
203-
ungroup() %>%
199+
bind_rows(milestone_network, cell_in_tent_distances) |>
200+
group_by(from, to) |>
201+
summarise(length = min(length)) |>
202+
ungroup() |>
204203
igraph::graph_from_data_frame(directed = directed, vertices = unique(c(milestone_ids, cell_ids_trajectory, waypoint_ids)))
205204

206205
# compute cell-to-cell distances across entire graph
@@ -209,7 +208,7 @@ calculate_geodesic_distances_ <- function(
209208
directed == "reverse" ~ "in",
210209
TRUE ~ "all"
211210
)
212-
out <- gr %>%
211+
out <- gr |>
213212
igraph::distances(
214213
v = waypoint_ids,
215214
to = cell_ids_trajectory,

0 commit comments

Comments
 (0)