Skip to content

Commit ff6826f

Browse files
committed
More options for which p-values to calculate
1 parent cb78b98 commit ff6826f

1 file changed

Lines changed: 64 additions & 6 deletions

File tree

R/calculate_aa_ratios.R

Lines changed: 64 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,73 @@ getSubstitutionRatios = function(
4747
if (verbose) message("Summarising...")
4848
mutation_table = summariseMutationTableToAAsAndSyns(mutation_table)
4949

50-
if (calculate_p_values) {
51-
# fmt: skip
52-
if (verbose) message("Calculating p-values...")
53-
mutation_table = purrr::map(
54-
mutation_table,
55-
~ addPValuesToMutationTable(.x, nuc_rates, sampling_function)
50+
# fmt: skip
51+
if (isTRUE(calculate_p_values)) {
52+
p_value_positions = list(
53+
aas = unique(mutation_table[["aas"]][["at"]]),
54+
nucs = unique(mutation_table[["nucs"]][["at"]])
5655
)
56+
min_LCR = -Inf
57+
max_LCR = +Inf
58+
} else if (is.list(calculate_p_values)){
59+
60+
if (!all(names(calculate_p_values) %in% c("aas", "nucs", "min_LCR", "max_LCR"))){
61+
stop("")
62+
}
63+
64+
p_value_positions = list()
65+
66+
if (!"aas" %in% names(calculate_p_values)){
67+
p_value_positions[["aas"]] = positions
68+
} else {
69+
p_value_positions[["aas"]] = calculate_p_values[["aas"]]
70+
}
71+
72+
if (!"nucs" %in% names(calculate_p_values)){
73+
p_value_positions[["nucs"]] = positions
74+
} else {
75+
p_value_positions[["nucs"]] = calculate_p_values[["nucs"]]
76+
}
77+
78+
if (!"min_LCR" %in% names(calculate_p_values)){
79+
min_LCR = -Inf
80+
} else {
81+
min_LCR = calculate_p_values[["min_LCR"]]
82+
}
83+
84+
if (!"max_LCR" %in% names(calculate_p_values)){
85+
max_LCR = Inf
86+
} else {
87+
max_LCR = calculate_p_values[["max_LCR"]]
88+
}
89+
90+
} else if (isFALSE(calculate_p_values)){
91+
return(mutation_table)
92+
} else{
93+
stop("calculate_p_values should be TRUE, FALSE, or list")
5794
}
5895

96+
# fmt: skip
97+
if (verbose) message("Calculating p-values...")
98+
99+
mutation_table = purrr::map2(
100+
mutation_table[c("aas", "nucs")],
101+
p_value_positions[c("aas", "nucs")],
102+
function(mutation_table, positions) {
103+
bind_rows(
104+
addPValuesToMutationTable(
105+
filter(
106+
mutation_table,
107+
at %in% positions | dplyr::between(log2(ratio), min_LCR, max_LCR)
108+
),
109+
nuc_rates,
110+
sampling_function
111+
),
112+
filter(mutation_table, !at %in% positions) %>% mutate(p = NA)
113+
)
114+
}
115+
)
116+
59117
mutation_table
60118
}
61119

0 commit comments

Comments
 (0)