comparison metascreenPre.xml @ 6:f6e6b6914b48 draft

Uploaded
author sigven
date Wed, 21 Dec 2022 23:22:27 +0000
parents
children
comparison
equal deleted inserted replaced
5:e9fcb14b0065 6:f6e6b6914b48
1 <tool id="metascreenPre" name="metascreen: pre-experimental" version="0.2.6">
2 <description>Setup of drug combination screens</description>
3 <requirements>
4 <container type="docker">sigven/metascreen:0.2.1</container>
5 </requirements>
6 <command detect_errors="aggressive"><![CDATA[
7 ln -f -s $input_data.list_of_drugs "$input_data.list_of_drugs.element_identifier" &&
8 #set drugs_csv = './' + str($input_data.list_of_drugs.element_identifier)
9
10 ln -f -s $input_data.list_of_volumes "$input_data.list_of_volumes.element_identifier" &&
11 #set volumes_csv = './' + str($input_data.list_of_volumes.element_identifier)
12
13 ln -f -s $input_data.list_of_doses "$input_data.list_of_doses.element_identifier" &&
14 #set doses_csv = './' + str($input_data.list_of_doses.element_identifier)
15
16 ln -f -s $input_data.list_of_ctrls "$input_data.list_of_ctrls.element_identifier" &&
17 #set ctrls_csv = './' + str($input_data.list_of_ctrls.element_identifier)
18
19 ln -f -s $input_data.list_of_stock_cons "$input_data.list_of_stock_cons.element_identifier" &&
20 #set stock_cons_csv = './' + str($input_data.list_of_stock_cons.element_identifier)
21
22 #for $pmap in $input_data.platemaps
23 ln -f -s '$pmap' '$pmap.element_identifier';
24 #end for
25
26
27 #set excluded_well_ids_file = ''
28 #if $dispensing_options.well_exclusion.exclude_wells
29 echo 'DUMMY_WELL' > excl_well_ids.csv &&
30 echo $dispensing_options.well_exclusion.well_ids | sed 's/__cn__/\n/g' >> excl_well_ids.csv &&
31 #set excluded_well_ids_file = './excl_well_ids.csv'
32 #end if
33
34 R -e 'suppressPackageStartupMessages(library(metascreen));
35
36 custom_excluded_wells = NULL;
37 #if $excluded_well_ids_file
38 custom_excluded_wells = readr::read_csv(
39 "$excluded_well_ids_file", show_col_types = F);
40 custom_excluded_wells = custom_excluded_wells[[1]];
41 #end if
42
43 list_of_drugs_raw <- read.csv(
44 file = "$drugs_csv",
45 check.names = FALSE,
46 na.strings = "",
47 dec = ".", encoding = "UTF-8");
48 list_of_volumes_raw <- read.csv(
49 file = "$volumes_csv",
50 check.names = FALSE,
51 na.strings = "",
52 dec = ".", encoding = "UTF-8");
53 list_of_doses_raw <- read.csv(
54 file = "$doses_csv",
55 check.names = FALSE,
56 na.strings = "",
57 dec = ".", encoding = "UTF-8");
58 list_of_controls_raw <- read.csv(
59 file = "$ctrls_csv",
60 check.names = FALSE,
61 na.strings = "",
62 dec = ".", encoding = "UTF-8");
63 list_of_stock_cons_raw <- read.csv(
64 file = "$stock_cons_csv",
65 check.names = FALSE,
66 na.strings = "",
67 dec = ".", encoding = "UTF-8");
68
69 listofDoses <-
70 metascreen::generateListofDoses(
71 list_of_doses_raw,
72 .dropCol = TRUE);
73
74
75 sourcePlate = data.frame();
76 #for $pmap in $input_data.platemaps
77
78 sourcePlate = dplyr::bind_rows(
79 sourcePlate,
80 metascreen::importPlateMap(
81 "$pmap.element_identifier",
82 .fileFormat = "PlateMap",
83 .sourcePlateConv = TRUE));
84 #end for
85
86
87
88 combine_doses = c(1:min(unique(table(listofDoses[,"Drug"]))));
89 exclude_outer_wells = FALSE;
90
91 #if $dispensing_options.well_exclusion.exclude_wells
92 exclude_outer_wells = $dispensing_options.well_exclusion.outer_wells;
93 #end if
94
95 #if $combination_options.combo_design.type_combination == "all"
96 #if $combination_options.combo_design.inner_dosing
97 combine_doses = c(2:(min(unique(table(listofDoses[,"Drug"])))-1));
98 #end if
99 #end if
100
101 add_untreated = NULL;
102 #if $dispensing_options.add_untreated.untreated
103 add_untreated = list(
104 name = "$dispensing_options.add_untreated.untreated_name",
105 replicates = $dispensing_options.add_untreated.untreated_replicates);
106 #end if
107
108
109 listofExWells <-
110 metascreen::excludeWells(
111 plateType = $input_data.plateformat,
112 wells = custom_excluded_wells,
113 outer.wells = exclude_outer_wells);
114
115
116 listofCombinations <-
117 metascreen::combineDrugs(
118 listofDoses,
119 .combineDoses = combine_doses,
120 .noReplicates = $combination_options.num_replicates,
121 .drugRepAttrib = "$combination_options.combo_design.type_combination");
122
123
124 dispensingData <-
125 metascreen::generateDispensingData(
126 listofCombinations,
127 list_of_drugs_raw,
128 listofDoses,
129 list_of_volumes_raw,
130 list_of_controls_raw,
131 list_of_stock_cons_raw,
132 sourcePlate,
133 listofExWells,
134 .ctrlReplicates = $dispensing_options.num_control_replicates,
135 .addUntreated = add_untreated,
136 .finalWellVolume = $dispensing_options.well_volume,
137 .plateFormat = $input_data.plateformat,
138 .destinationPlateID = "$dispensing_options.dest_plate_ID",
139 .randomizeDispensing = $dispensing_options.randomise_dispensing,
140 .probeDispensing = $dispensing_options.probe_dispensing);
141
142
143 df = as.data.frame(dispensingData[["output"]]);
144 readr::write_tsv(listofCombinations,file="$doseComb",col_names=T, quote="none");
145 readr::write_tsv(df,file="$dispensingDF", col_names = T, quote = "none");' 2>&1
146
147 ]]></command>
148 <inputs>
149
150 <section name="input_data" title="User-defined input files - see below for strict formatting requirements" expanded="true">
151 <param name="list_of_doses" type="data" format="txt" label="List of drug doses (CSV)" multiple="false"/>
152 <param name="list_of_drugs" type="data" format="txt" label="List of drugs (CSV)" multiple="false"/>
153 <param name="list_of_volumes" type="data" format="txt" label="List of volumes (CSV)" multiple="false"/>
154 <param name="list_of_ctrls" type="data" format="txt" label="List of controls (CSV)" multiple="false"/>
155 <param name="list_of_stock_cons" type="data" format="txt" label="List of stock concentrations (CSV)" multiple="false"/>
156 <param name="platemaps" type="data" format="xml" label="PlateMap file (XML)" multiple="true"/>
157 <!--param name="convert_platemap_format" type="boolean" label="Convert platemap to a source plate format" truevalue="T" falsevalue="F" checked="false"/-->
158 <param name="plateformat" type="select" label="Plate format" display="radio" multiple="false">
159 <option value="6">6</option>
160 <option value="12">12</option>
161 <option value="24">24</option>
162 <option value="48">48</option>
163 <option value="96">96</option>
164 <option value="384">384</option>
165 <option value="1536">1536</option>
166 </param>
167 </section>
168
169 <section name="combination_options" title="Options - drug combination design" expanded="true">
170 <conditional name="combo_design">
171 <param name="type_combination" type="select" display="radio" multiple="false" label="Type of dose combinations">
172 <option value="all">All - both single treatments and combination treatments</option>
173 <option value="single">Single - only single treatments</option>
174 </param>
175 <when value="all">
176 <param name="inner_dosing" type="boolean" label="Exclude lowest and highest dose (inner dosing only)" truevalue="T" falsevalue="F" checked="false"/>
177 </when>
178 </conditional>
179 <param type="integer" name="num_replicates" label="Number of replicates for each dose combination" value="3" min="1" max="20"/>
180 </section>
181 <section name="dispensing_options" title="Options - dispensing layout" expanded="true">
182 <!--param name="out_dir" type="text" size="25" label="Dispensing files" value="dispFiles" /-->
183 <conditional name="well_exclusion">
184 <param name="exclude_wells" type="boolean" label="Exclusion of wells" truevalue="T" falsevalue="F" checked="false"/>
185 <when value="T">
186 <param name="well_ids" type="text" label="Custom set of well identifiers to exclude (one per line):" area="true"/>
187 <param name="outer_wells" type="boolean" label="Exclude all outer wells" truevalue="T" falsevalue="F" checked="true"/>
188 </when>
189 </conditional>
190 <param name="num_control_replicates" type="integer" label="Number of control replicates" value="3" min="1" max="10"/>
191 <param name="well_volume" type="integer" label="Final well volume" value="5" min="1" max="500"/>
192 <param name="randomise_dispensing" type="boolean" label="Randomise dispensing" truevalue="T" falsevalue="F" checked="true"/>
193 <param name="probe_dispensing" type="boolean" label="Probe dispensing" truevalue="T" falsevalue="F" checked="false"/>
194 <param name="dest_plate_ID" type="text" value="PLATE_012" label="A unique destination plate ID - for destination plate barcode"/>
195 <conditional name="add_untreated">
196 <param name="untreated" type="boolean" label="Add untreated" truevalue="T" falsevalue="F" checked="true"/>
197 <when value="T">
198 <param name="untreated_name" type="text" label="Identifier (name) for untreated" value="Untreated"/>
199 <param name="untreated_replicates" type="integer" label="Number of untreated replicates" value="5" min="1" max="500"/>
200 </when>
201 </conditional>
202
203 </section>
204 </inputs>
205 <outputs>
206 <!--data format="xlsx" name="output_xlsx" label="crisprFPA - xlsx"/-->
207 <data format="txt" name="doseComb" label="doseCombinations - tsv"/>
208 <data format="txt" name="dispensingDF" label="dispensingData - tsv"/>
209 <!--data format="rdata" name="dispensingRDA" label="dispensingData - rda"/-->
210
211 <!--collection type="list" name="dispensingFiles" label="dispensingFiles">
212 <discover_datasets pattern=".csv" format="txt" directory="dispFiles" />
213 </collection-->
214 </outputs>
215
216
217 <help><![CDATA[
218 .. class:: infomark
219
220 Limitations etc:
221
222 -----
223
224 **Dataset formats**
225
226 The input datasets are in text_ (CSV) format and in XML format. The output datasets are also in text_ formats.
227
228 .. _text: ${static_path}/formatHelp.html#text
229
230 Specific input file requirements:
231
232 - **List of drug doses** - `CSV <https://en.wikipedia.org/wiki/Comma-separated_values/>`_ file
233
234 Provides a list of all the doses for each drug used in
235 a drug sensitivity screen. The list needs to include a column with the drug number,
236 drug name, one or multiple columns for the doses, and a column with the unit.
237 ['Number', 'Drug', '6th Dose', ..., '1st Dose', 'Unit'].
238 An example is shown with https://raw.githubusercontent.com/Enserink-lab/metascreen/main/inst/extdata/library/listofdoses.csv
239
240 - **List of drugs.** - `CSV <https://en.wikipedia.org/wiki/Comma-separated_values/>`_ file
241
242 Provides a list of drugs used in the drug screen. The list
243 needs to include a column with a unique drug number / id for each drug, the
244 drug name and the CAS number. ['ID', 'NAME', 'CAS_NUMBER']. For custom
245 compunds without CAS number, include column, but leave field empty.
246 An example is shown with https://raw.githubusercontent.com/Enserink-lab/metascreen/main/inst/extdata/library/listofdrugs.csv
247
248 - **List of stock concentrations.** - A `CSV <https://en.wikipedia.org/wiki/Comma-separated_values/>`_ file
249
250 Provides a list of the stock concentrations
251 for each drug used in the drug screen. If the stock concentrations are not
252 known, use the highest dose. The list needs to include column with the unique
253 drug number / id, the drug name, the stock concentration and the concentration unit.
254 ['NUMBER', 'NAME', 'CONCENTRATION', 'UNIT'].
255 An example is shown with https://raw.githubusercontent.com/Enserink-lab/metascreen/main/inst/extdata/library/listofstockconcentrations.csv
256
257 - **List of controls.** - A `CSV <https://en.wikipedia.org/wiki/Comma-separated_values/>`_ file
258
259 Provides the controls to be used in a drug
260 screen. The list needs to include a column with the name, CAS number,
261 dose, unit, the source plate from which the control is dispensed from and the
262 volume. ['NAME', 'CAS_NUMBER', 'DOSE', 'UNIT', 'SOURCE_PLATE', 'VOLUME'].
263 An example is shown with https://raw.githubusercontent.com/Enserink-lab/metascreen/main/inst/extdata/library/listofctrls.csv
264
265 - **List of drug volumes.** - A `CSV <https://en.wikipedia.org/wiki/Comma-separated_values/>`_ file
266
267 Provides the volumes for each drug that
268 have been or will be dispensed. The list follows the same format as the
269 list of drug doses. The list needs to include a column with the drug number,
270 drug name, one or multiple columns with doses, and a column with the unit.
271 ['Number', 'Drug', 'Vol 6th Dose', ..., 'Vol 1st Dose', 'Unit'].
272 An example is shown with https://raw.githubusercontent.com/Enserink-lab/metascreen/main/inst/extdata/library/listofvolumes.csv
273
274
275 - **plateMap** - XML file (s)
276
277 One or more plate map files with the contents (usually compounds/drugs) of the
278 source plate from which drugs are dispensed from. Plate maps can currently be imported
279 using .PlateMap (XML files) provided by the IncuCyte® Plate Map Editor. **IMPORTANT: when uploading
280 PlateMap files to Galaxy, please make sure you denote file 'Type' as XML.**
281
282 An example is shown with https://github.com/Enserink-lab/metascreen/blob/main/inst/extdata/library/C008.PlateMap
283
284 -----
285
286 **What it does**
287
288 The *pre-experimental* modules of metascreen is intended to serve the following purposes:
289
290 set up drug combination screens by (a) generating drug combinations from a list of drugs, and
291 (b) distributing those drug combinations across a number of experimental plates,
292 (c) generating instructions for dispensing robots for the creation of those
293 experimental plates.
294
295
296
297
298
299
300 ]]>
301 </help>
302
303 </tool>