11# ' @importFrom furrr future_map
2- # ' @importFrom dplyr mutate bind_rows filter vars
2+ # ' @importFrom dplyr mutate bind_rows filter vars contains
33# ' @importFrom dplyr inner_join semi_join select mutate_at
44# ' @importFrom stringr str_sub str_replace_all
55# ' @importFrom mzAnnotation relationshipCalculator
@@ -20,37 +20,75 @@ setMethod('relationships',signature = 'Assignment',
2020 cors <- assignment @ preparedCorrelations
2121
2222 if (isTRUE(transformations )) {
23- trans <- parameters @ transformations
23+ trans <- c( NA , parameters @ transformations )
2424 } else {
25- trans <- c()
25+ trans <- NA
2626 }
2727
2828 rel <- cors %> %
2929 select(`m/z1` ,`m/z2` ,Mode1 ,Mode2 ) %> %
3030 split(1 : nrow(. )) %> %
3131 future_map(~ {
32- relationshipCalculator(.x %> %
33- select(`m/z1` ,`m/z2` ) %> %
34- unlist(),
35- limit = parameters @ limit ,
36- modes = .x %> %
37- select(Mode1 ,Mode2 ) %> %
38- unlist(),
39- adducts = parameters @ adducts ,
40- isotopes = parameters @ isotopes ,
41- transformations = trans ,
42- adductTable = parameters @ adductRules ,
43- isotopeTable = parameters @ isotopeRules ,
44- transformationTable = parameters @ transformationRules )
32+
33+ mzs <- bind_rows(
34+ .x %> %
35+ select(contains(' 1' )) %> %
36+ setNames(stringr :: str_remove(names(. ),' 1' )),
37+ .x %> %
38+ select(contains(' 2' )) %> %
39+ setNames(stringr :: str_remove(names(. ),' 2' ))
40+ )
41+
42+ modes <- mzs $ Mode %> %
43+ unique()
44+
45+ if (length(modes ) > 1 ){
46+ adducts <- parameters @ adducts %> %
47+ unlist()
48+ } else {
49+ adducts <- parameters @ adducts [[modes ]]
50+ }
51+
52+ relationships <- relationshipCalculator(mzs $ `m/z` ,
53+ limit = parameters @ limit ,
54+ adducts = adducts ,
55+ isotopes = c(NA ,parameters @ isotopes ),
56+ transformations = trans ,
57+ adductTable = parameters @ adductRules ,
58+ isotopeTable = parameters @ isotopeRules ,
59+ transformationTable = parameters @ transformationRules ) %> %
60+ left_join(mzs ,by = c(' m/z1' = ' m/z' )) %> %
61+ rename(Mode1 = Mode ) %> %
62+ left_join(mzs ,by = c(' m/z2' = ' m/z' )) %> %
63+ rename(Mode2 = Mode ) %> %
64+ dplyr :: relocate(contains(' Mode' ),.after = `m/z2` )
65+
66+ if (length(modes ) > 1 ){
67+ adduct_modes <- parameters @ adducts %> %
68+ map(tibble :: enframe ,value = ' Adduct' ) %> %
69+ bind_rows(.id = ' Mode' ) %> %
70+ select(- name )
71+
72+ relationships <- relationships %> %
73+ inner_join(adduct_modes ,
74+ by = c(' Mode1' = ' Mode' ,
75+ ' Adduct1' = ' Adduct' )) %> %
76+ inner_join(adduct_modes ,
77+ by = c(' Mode2' = ' Mode' ,
78+ ' Adduct2' = ' Adduct' ))
79+ }
80+
81+ return (relationships )
4582 }) %> %
4683 bind_rows() %> %
47- inner_join(cors ,by = c(' m/z1' = ' m/z1' ,' m/z2' = ' m/z2' )) %> %
48- select(Feature1 : Mode2 ,
49- `m/z1` ,
50- `m/z2` ,
51- RetentionTime1 ,
52- RetentionTime2 ,
53- Adduct1 : Transformation2 ,
84+ inner_join(cors ,by = c(' m/z1' ,' m/z2' ,' Mode1' ,' Mode2' )) %> %
85+ select(contains(' Feature' ),
86+ contains(' Mode' ),
87+ contains(' m/z' ),
88+ contains(' RetentionTime' ),
89+ contains(' Adduct' ),
90+ contains(' Isotope' ),
91+ contains(' Transformation' ),
5492 log2IntensityRatio ,
5593 r ,
5694 Error ,
0 commit comments