feat: allow experiments to be merged

This commit is contained in:
gmega 2025-02-03 15:45:53 -03:00
parent 7844a3e338
commit f01dab84f0
No known key found for this signature in database
GPG Key ID: 6290D34EAD824B18
2 changed files with 22 additions and 2 deletions

View File

@ -23,3 +23,18 @@ read_all_experiments <- function(base_path, skip_incomplete = TRUE) {
experiments[!is.null(experiments)]
}
merge_experiments <- function(set_1, set_2, prefix) {
maxid <- max(as.integer(sub(pattern = 'e', '', ls(deluge))))
merged <- list()
for (set_1_id in ls(set_1)) {
merged[[set_1_id]] <- set_1[[set_1_id]]
}
for (set_2_id in ls(set_2)) {
merged[[paste0(prefix, set_2_id)]] <- set_2[[set_2_id]]
}
merged
}

View File

@ -20,7 +20,9 @@ devtools::load_all()
This is data that's been pre-parsed from an experiment [log source](https://github.com/codex-storage/bittorrent-benchmarks/blob/1ee8ea8a35a2c0fccea6e7c955183c4ed03eebb3/benchmarks/logging/sources.py#L27).
```{r}
deluge <- read_all_experiments('./data/g1738145663/')
deluge <- read_all_experiments('./data/g1738145663/') |>
merge_experiments(
read_all_experiments('./data/g1738248455/'), prefix = 's')
```
Computes the benchmark statistics from raw download logs.
@ -49,7 +51,10 @@ benchmarks <- lapply(deluge, function(experiment) {
bind_rows() |>
arrange(file_size, network_size, seeders, leechers) |>
mutate(
file_size = as.character(rlang::parse_bytes(as.character(file_size))),
# This factor conversion is horrible but needed so things are sorted properly in the plot.
file_size = factor(rlang::parse_bytes(as.character(file_size)),
levels = rlang::parse_bytes(as.character(
unique(file_size[order(file_size, decreasing = TRUE)])))),
seeder_ratio = seeders/network_size
) |>
relocate(file_size, network_size, seeders, leechers)