0
|
1 # author: Pauline Ribeyre
|
|
2
|
|
3
|
|
4 #####################
|
|
5 # required packages #
|
|
6 #####################
|
|
7
|
|
8 library("metaMS") # provides "metaMSsettings" class
|
|
9
|
|
10
|
|
11 ####################
|
|
12 # default settings #
|
|
13 ####################
|
|
14
|
|
15 # PeakPicking
|
|
16 PeakPicking.method = "matchedFilter"
|
|
17 PeakPicking.step = 0.05
|
|
18 PeakPicking.steps = 2
|
|
19 PeakPicking.mzdiff = 0.5
|
|
20 PeakPicking.fwhm = 5
|
|
21 PeakPicking.snthresh = 2
|
|
22 PeakPicking.max = 500
|
|
23
|
|
24 # Alignment
|
|
25 # ?
|
|
26
|
|
27 # CAMERA
|
|
28 CAMERA.perfwhm = 1
|
|
29
|
|
30 # DBconstruction
|
|
31 DBconstruction.minintens = 0.0
|
|
32 DBconstruction.rttol = 0.1
|
|
33 DBconstruction.intensityMeasure = "maxo"
|
|
34 DBconstruction.DBthreshold = .80
|
|
35 DBconstruction.minfeat = 5
|
|
36
|
|
37 # match2DB
|
|
38 match2DB.rtdiff = 0.5
|
|
39 match2DB.minfeat = 5
|
|
40 # match2DB.rtval = ?
|
|
41 # match2DB.mzdiff = ?
|
|
42 # match2DB.ppm = ?
|
|
43 match2DB.simthresh = 0.8
|
|
44 match2DB.timeComparison = "rt"
|
|
45 match2DB.RIdiff = 5
|
|
46
|
|
47 # betweenSamples
|
|
48 betweenSamples.min.class.fraction = 0.8 # pools
|
|
49 # betweenSamples.min.class.fraction = 0.5 # samples
|
|
50 betweenSamples.min.class.size = 5
|
|
51 betweenSamples.timeComparison = "rt"
|
|
52 betweenSamples.rtdiff = 0.5
|
|
53 betweenSamples.RIdiff = 2 # default setting
|
|
54 # betweenSamples.RIdiff = 0.05 # w4m setting
|
|
55 betweenSamples.simthresh = 0.8
|
|
56
|
|
57 # matchIrrelevants
|
|
58 # matchIrrelevants.irrelevantClasses = c("Bleeding", "Plasticizers")
|
|
59 # matchIrrelevants.RIdiff = ?
|
|
60 # matchIrrelevants.rtdiff = ?
|
|
61 # matchIrrelevants.simthresh = ?
|
|
62 # matchIrrelevants.timeComparison = "RI"
|
|
63
|
|
64 # TODO RI option
|
|
65
|
|
66
|
|
67 ###################
|
|
68 # settings object #
|
|
69 ###################
|
|
70
|
|
71 # settings <- metaMSsettings("protocolName" = "settings", "chrom" = "GC")
|
|
72
|
|
73 settings <- metaMSsettings("protocolName" = "settings",
|
|
74 "chrom" = "GC",
|
|
75
|
|
76 PeakPicking = list(
|
|
77 method = PeakPicking.method,
|
|
78 step = PeakPicking.step,
|
|
79 steps = PeakPicking.steps,
|
|
80 mzdiff = PeakPicking.mzdiff,
|
|
81 fwhm = PeakPicking.fwhm,
|
|
82 snthresh = PeakPicking.snthresh,
|
|
83 max = PeakPicking.max),
|
|
84
|
|
85 CAMERA = list(perfwhm = CAMERA.perfwhm))
|
|
86
|
|
87 metaSetting(settings, "DBconstruction") <- list(
|
|
88 minintens = DBconstruction.minintens,
|
|
89 rttol = DBconstruction.rttol,
|
|
90 intensityMeasure = DBconstruction.intensityMeasure,
|
|
91 DBthreshold = DBconstruction.DBthreshold,
|
|
92 minfeat = DBconstruction.minfeat)
|
|
93
|
|
94 metaSetting(settings, "match2DB") <- list(
|
|
95 simthresh = match2DB.simthresh,
|
|
96 timeComparison = match2DB.timeComparison,
|
|
97 rtdiff = match2DB.rtdiff,
|
|
98 RIdiff = match2DB.RIdiff,
|
|
99 minfeat = match2DB.minfeat)
|
|
100
|
|
101 metaSetting(settings, "betweenSamples") <- list(
|
|
102 min.class.fraction = betweenSamples.min.class.fraction,
|
|
103 min.class.size = betweenSamples.min.class.size,
|
|
104 timeComparison = betweenSamples.timeComparison,
|
|
105 rtdiff = betweenSamples.rtdiff,
|
|
106 RIdiff = betweenSamples.RIdiff,
|
|
107 simthresh = betweenSamples.simthresh)
|
|
108
|
|
109 # metaSetting(GALAXY.GC, "matchIrrelevants") <- list(
|
|
110 # irrelevantClasses = matchIrrelevants.irrelevantClasses,
|
|
111 # RIdiff = matchIrrelevants.RIdiff,
|
|
112 # rtdiff = matchIrrelevants.rtdiff,
|
|
113 # simthresh = matchIrrelevants.simthresh,
|
|
114 # timeComparison = matchIrrelevants.timeComparison)
|
|
115
|
|
116
|
|
117 # best settings pool
|
|
118 settings@betweenSamples.min.class.size = 5
|
|
119 settings@PeakPicking$fwhm = 6
|
|
120 settings@PeakPicking$mzdiff = -0.5
|
|
121 settings@betweenSamples.min.class.fraction = 0.8
|
|
122 settings@betweenSamples.simthresh = 0.7
|
|
123 settings@betweenSamples.rtdiff = 0.05
|
|
124
|
|
125
|
|
126 # best settings samples
|
|
127 settings@betweenSamples.min.class.size = 5
|
|
128 settings@PeakPicking$fwhm = 6
|
|
129 settings@PeakPicking$mzdiff = 0.5
|
|
130 settings@betweenSamples.min.class.fraction = 0.5
|
|
131 settings@betweenSamples.simthresh = 0.7
|
|
132 settings@betweenSamples.rtdiff = 0.05
|
|
133
|
|
134
|
|
135 #################
|
|
136 # vary settings #
|
|
137 #################
|
|
138
|
|
139 pop <- function(list) {
|
|
140 # Removes the last item from a list.
|
|
141 #
|
|
142 # Args:
|
|
143 # list: the list to pop.
|
|
144 #
|
|
145 # Returns:
|
|
146 # The last item of the list before it was removed.
|
|
147
|
|
148 val <- list[length(list)]
|
|
149 assign(as.character(substitute(list)), list[-length(list)], parent.frame())
|
|
150 return (val)
|
|
151
|
|
152 }
|
|
153
|
|
154
|
|
155 vary_list_to_settings <- function(settings, vary_list, title = "", titles_to_test = c(), settings_to_test = c()) {
|
|
156 # Reads the list of parameters to vary and their ranges and builds a list of file titles and settings from it.
|
|
157 #
|
|
158 # Args:
|
|
159 # settings: default settings for runGC.
|
|
160 # vary_list: list of parameters to vary and the values each parameter must take.
|
|
161 # title: title of the current file (concatenation of the values taken by the varied parameters).
|
|
162 # titles_to_test: list of titles (one for each settings set) (concatenation of the values taken by the varied parameters).
|
|
163 # settings_to_test: list of settings sets for runGC.
|
|
164 #
|
|
165 # Returns:
|
|
166 # A list containing:
|
|
167 # 1: the list of file titles ;
|
|
168 # 2: the list of runGC() settings.
|
|
169
|
|
170 if (length(vary_list) == 0) { # if there are no parameters to vary
|
|
171
|
|
172 titles_to_test <- c(titles_to_test, "default_settings")
|
|
173 settings_to_test <- c(settings_to_test, settings)
|
|
174
|
|
175 }
|
|
176
|
|
177 else {
|
|
178
|
|
179 param <- pop(vary_list)[[1]]
|
|
180
|
|
181 title <- paste0(title, param[1])
|
|
182 setting <- param[2]
|
|
183 range <- as.numeric(param[3:length(param)])
|
|
184
|
|
185 # for each possible value of the parameter
|
|
186 for (p in range) {
|
|
187
|
|
188 # change the settings
|
|
189 isSlot <- regexpr("\\$", setting)[1]
|
|
190
|
|
191 if (isSlot == -1) { # the parameter is a slot in class metaMSsettings
|
|
192 slot(settings, setting) <- p
|
|
193 }
|
|
194 else { # the parameter is not a slot in class metaMSsettings
|
|
195 slot(settings, substr(setting, 1, isSlot - 1))[substr(setting, isSlot + 1, nchar(setting))] <- p
|
|
196 }
|
|
197
|
|
198 new_title <- paste0(title, "=", p, "_")
|
|
199
|
|
200 # save the settings in a list
|
|
201 if (length(vary_list) == 0) {
|
|
202 titles_to_test <- c(titles_to_test, new_title)
|
|
203 settings_to_test <- c(settings_to_test, settings)
|
|
204 }
|
|
205 else {
|
|
206 res <- vary_list_to_settings(settings, vary_list, new_title, titles_to_test, settings_to_test)
|
|
207 titles_to_test <- res[[1]]
|
|
208 settings_to_test <- res[[2]]
|
|
209 }
|
|
210
|
|
211 } # end for
|
|
212
|
|
213 } # end else
|
|
214
|
|
215 return (list(titles_to_test, settings_to_test))
|
|
216
|
|
217 }
|
|
218
|
|
219
|
|
220 ############
|
|
221 # main #
|
|
222 ############
|
|
223
|
|
224 # settings to vary and ranges of values
|
|
225 res <- vary_list_to_settings(settings, vary_list)
|
|
226 titles_to_test <- res[[1]]
|
|
227 settings_to_test <- res[[2]]
|