comparison labelfreeproteinquantification.xml @ 0:39fa1ddd587d draft default tip

"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/proteomiqon_labelfreeproteinquantification commit 3d3272b1ebe527f4b1e80c08f915c6235625621c"
author galaxyp
date Wed, 13 Oct 2021 18:45:16 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:39fa1ddd587d
1 <tool id="proteomiqon_labelfreeproteinquantification" name="Proteomiqon LabelFreeProteinQuantification" version="@VERSION@" profile="20.05">
2 <description>
3 estimates protein abundances using quantified peptide ions.
4 </description>
5 <macros>
6 <token name="@VERSION@">0.0.1</token>
7 <import>aggregationparams.xml</import>
8 </macros>
9 <requirements>
10 <requirement type="package" version="@VERSION@">proteomiqon-labelfreeproteinquantification</requirement>
11 </requirements>
12 <command detect_errors="exit_code"><![CDATA[
13 #import re
14 #for $quantAndProtFile in $proteinassignedquantpepions
15 #set basename = $re.sub(r'[^\w ,.\-+]','_',$quantAndProtFile.element_identifier)
16 ln -s '$quantAndProtFile' '${basename}.quantAndProt' &&
17 #end for
18 #if $outputParamfile:
19 cat '$paramfile' >> '$out_paramfile' &&
20 #end if
21 ln -s '$out_labelFreeQuant' 'LabelFreeQuant.txt' &&
22 proteomiqon-labelfreeproteinquantification -i './' -p '$paramfile' -o './'
23 ]]>
24 </command>
25 <configfiles>
26 <configfile name="paramfile">
27 <![CDATA[
28 {
29 "ModificationFilter": {
30 "Case": "${ModificationFilterCond.ModificationFilter}",
31 #if $ModificationFilterCond.ModificationFilter == "UseOnly"
32 "Fields": [
33 [
34 #for $mod in $ModificationFilterCond.ModificationFilterSequence
35 {
36 "Case": "${mod}"
37 },
38 #end for
39 ]
40 ]
41 #end if
42 },
43 #set $aggregationParams = $AggregatePeptideChargeStatesParams.AggregatePeptideChargeStatesParamsCond
44 #if $aggregationParams.AggregatePeptideChargeStatesParamsEnabled == "no"
45 "AggregatePeptideChargeStatesParams": null,
46 #else
47 "AggregatePeptideChargeStatesParams": {
48 "Case": "Some",
49 "Fields": [
50 {
51 #set $TransformSection = $aggregationParams.Transform
52 #set $TransformLight = $TransformSection.TransformLightCond
53 #if $TransformLight.Type == "None"
54 "Transform": null,
55 #else
56 "Transform": {
57 "Case": "Some",
58 "Fields": [
59 {
60 #if $TransformLight.Type == "None"
61 "Light": null,
62 #else
63 "Light": {
64 "Case": "Some",
65 "Fields": [
66 {
67 "Case": "${TransformLight.Type}",
68 #if $TransformLight.Type != "Log2"
69 "Fields": [
70 $TransformLight.Value
71 ]
72 #end if
73 }
74 ]
75 },
76 #end if
77 }
78 ]
79 },
80 #end if
81 #set $SingleFiltersSection = $aggregationParams.SingleFilters
82 #set $SingleFiltersLight = $SingleFiltersSection.Light
83 #if not $SingleFiltersLight.BiggerThan and not $SingleFiltersLight.SmallerThan
84 "SingleFilters": null,
85 #else
86 "SingleFilters": {
87 "Case": "Some",
88 "Fields": [
89 {
90 #if not $SingleFiltersLight.BiggerThan and not $SingleFiltersLight.SmallerThan
91 "Light": null,
92 #else
93 "Light": {
94 "Case": "Some",
95 "Fields": [
96 [
97 #if $SingleFiltersLight.BiggerThan
98 {
99 "Case": "IsBiggerThan",
100 "Fields": [
101 $SingleFiltersLight.BiggerThan
102 ]
103 },
104 #end if
105 #if $SingleFiltersLight.SmallerThan
106 {
107 "Case": "IsSmallerThan",
108 "Fields": [
109 $SingleFiltersLight.SmallerThan
110 ]
111 }
112 #end if
113 ]
114 ]
115 },
116 #end if
117 }
118 ]
119 },
120 #end if
121 #set $GroupFiltersSection = $aggregationParams.GroupFilters
122 #set $GroupFiltersLight = $GroupFiltersSection.Light
123 #if not $GroupFiltersLight.Tukey and not $GroupFiltersLight.Stdev
124 "GroupFilters": null,
125 #else
126 "GroupFilters": {
127 "Case": "Some",
128 "Fields": [
129 {
130 #if not $GroupFiltersLight.Tukey and not $GroupFiltersLight.Stdev
131 "Light": null,
132 #else
133 "Light": {
134 "Case": "Some",
135 "Fields": [
136 [
137 #if $GroupFiltersLight.Tukey
138 {
139 "Case": "Tukey",
140 "Fields": [
141 $GroupFiltersLight.Tukey
142 ]
143 },
144 #end if
145 #if $GroupFiltersLight.Stdev
146 {
147 "Case": "Stdev",
148 "Fields": [
149 $GroupFiltersLight.Stdev
150 ]
151 }
152 #end if
153 ]
154 ]
155 },
156 #end if
157 }
158 ]
159 },
160 #end if
161 "Aggregation": {
162 "Light": {
163 "Case": "${aggregationParams.Aggregation.AggregationLight}"
164 }
165 }
166 }
167 ]
168 },
169 #end if
170 #set $aggregationParams = $AggregateModifiedPeptidesParams.AggregateModifiedPeptidesParamsCond
171 #if $aggregationParams.AggregateModifiedPeptidesParamsEnabled == "no"
172 "AggregateModifiedPeptidesParams": null,
173 #else
174 "AggregateModifiedPeptidesParams": {
175 "Case": "Some",
176 "Fields": [
177 {
178 #set $TransformSection = $aggregationParams.Transform
179 #set $TransformLight = $TransformSection.TransformLightCond
180 #if $TransformLight.Type == "None"
181 "Transform": null,
182 #else
183 "Transform": {
184 "Case": "Some",
185 "Fields": [
186 {
187 #if $TransformLight.Type == "None"
188 "Light": null,
189 #else
190 "Light": {
191 "Case": "Some",
192 "Fields": [
193 {
194 "Case": "${TransformLight.Type}",
195 #if $TransformLight.Type != "Log2"
196 "Fields": [
197 $TransformLight.Value
198 ]
199 #end if
200 }
201 ]
202 },
203 #end if
204 }
205 ]
206 },
207 #end if
208 #set $SingleFiltersSection = $aggregationParams.SingleFilters
209 #set $SingleFiltersLight = $SingleFiltersSection.Light
210 #if not $SingleFiltersLight.BiggerThan and not $SingleFiltersLight.SmallerThan
211 "SingleFilters": null,
212 #else
213 "SingleFilters": {
214 "Case": "Some",
215 "Fields": [
216 {
217 #if not $SingleFiltersLight.BiggerThan and not $SingleFiltersLight.SmallerThan
218 "Light": null,
219 #else
220 "Light": {
221 "Case": "Some",
222 "Fields": [
223 [
224 #if $SingleFiltersLight.BiggerThan
225 {
226 "Case": "IsBiggerThan",
227 "Fields": [
228 $SingleFiltersLight.BiggerThan
229 ]
230 },
231 #end if
232 #if $SingleFiltersLight.SmallerThan
233 {
234 "Case": "IsSmallerThan",
235 "Fields": [
236 $SingleFiltersLight.SmallerThan
237 ]
238 }
239 #end if
240 ]
241 ]
242 },
243 #end if
244 }
245 ]
246 },
247 #end if
248 #set $GroupFiltersSection = $aggregationParams.GroupFilters
249 #set $GroupFiltersLight = $GroupFiltersSection.Light
250 #if not $GroupFiltersLight.Tukey and not $GroupFiltersLight.Stdev
251 "GroupFilters": null,
252 #else
253 "GroupFilters": {
254 "Case": "Some",
255 "Fields": [
256 {
257 #if not $GroupFiltersLight.Tukey and not $GroupFiltersLight.Stdev
258 "Light": null,
259 #else
260 "Light": {
261 "Case": "Some",
262 "Fields": [
263 [
264 #if $GroupFiltersLight.Tukey
265 {
266 "Case": "Tukey",
267 "Fields": [
268 $GroupFiltersLight.Tukey
269 ]
270 },
271 #end if
272 #if $GroupFiltersLight.Stdev
273 {
274 "Case": "Stdev",
275 "Fields": [
276 $GroupFiltersLight.Stdev
277 ]
278 }
279 #end if
280 ]
281 ]
282 },
283 #end if
284 }
285 ]
286 },
287 #end if
288 "Aggregation": {
289 "Light": {
290 "Case": "${aggregationParams.Aggregation.AggregationLight}"
291 }
292 }
293 }
294 ]
295 },
296 #end if
297 #set $aggregationParams = $AggregateToProteinGroupsParams
298 "AggregateToProteinGroupsParams": {
299 #set $TransformSection = $aggregationParams.Transform
300 #set $TransformLight = $TransformSection.TransformLightCond
301 #if $TransformLight.Type == "None"
302 "Transform": null,
303 #else
304 "Transform": {
305 "Case": "Some",
306 "Fields": [
307 {
308 #if $TransformLight.Type == "None"
309 "Light": null,
310 #else
311 "Light": {
312 "Case": "Some",
313 "Fields": [
314 {
315 "Case": "${TransformLight.Type}",
316 #if $TransformLight.Type != "Log2"
317 "Fields": [
318 $TransformLight.Value
319 ]
320 #end if
321 }
322 ]
323 },
324 #end if
325 }
326 ]
327 },
328 #end if
329 #set $SingleFiltersSection = $aggregationParams.SingleFilters
330 #set $SingleFiltersLight = $SingleFiltersSection.Light
331 #if not $SingleFiltersLight.BiggerThan and not $SingleFiltersLight.SmallerThan
332 "SingleFilters": null,
333 #else
334 "SingleFilters": {
335 "Case": "Some",
336 "Fields": [
337 {
338 #if not $SingleFiltersLight.BiggerThan and not $SingleFiltersLight.SmallerThan
339 "Light": null,
340 #else
341 "Light": {
342 "Case": "Some",
343 "Fields": [
344 [
345 #if $SingleFiltersLight.BiggerThan
346 {
347 "Case": "IsBiggerThan",
348 "Fields": [
349 $SingleFiltersLight.BiggerThan
350 ]
351 },
352 #end if
353 #if $SingleFiltersLight.SmallerThan
354 {
355 "Case": "IsSmallerThan",
356 "Fields": [
357 $SingleFiltersLight.SmallerThan
358 ]
359 }
360 #end if
361 ]
362 ]
363 },
364 #end if
365 }
366 ]
367 },
368 #end if
369 #set $GroupFiltersSection = $aggregationParams.GroupFilters
370 #set $GroupFiltersLight = $GroupFiltersSection.Light
371 #if not $GroupFiltersLight.Tukey and not $GroupFiltersLight.Stdev
372 "GroupFilters": null,
373 #else
374 "GroupFilters": {
375 "Case": "Some",
376 "Fields": [
377 {
378 #if not $GroupFiltersLight.Tukey and not $GroupFiltersLight.Stdev
379 "Light": null,
380 #else
381 "Light": {
382 "Case": "Some",
383 "Fields": [
384 [
385 #if $GroupFiltersLight.Tukey
386 {
387 "Case": "Tukey",
388 "Fields": [
389 $GroupFiltersLight.Tukey
390 ]
391 },
392 #end if
393 #if $GroupFiltersLight.Stdev
394 {
395 "Case": "Stdev",
396 "Fields": [
397 $GroupFiltersLight.Stdev
398 ]
399 }
400 #end if
401 ]
402 ]
403 },
404 #end if
405 }
406 ]
407 },
408 #end if
409 "Aggregation": {
410 "Light": {
411 "Case": "${aggregationParams.Aggregation.AggregationLight}"
412 }
413 }
414 },
415 }
416 ]]>
417 </configfile>
418 </configfiles>
419 <inputs>
420 <param name="proteinassignedquantpepions" type="data" format="tabular" label="Protein assigned quant pep ions" help="Specify list of .quantAndProt files" multiple="true"/>
421 <conditional name="ModificationFilterCond">
422 <param name="ModificationFilter" type="select" label="Modification Filter">
423 <option value="All" selected="true">All</option>
424 <option value="No">No</option>
425 <option value="UseOnly">Use Only</option>
426 </param>
427 <when value="All">
428 </when>
429 <when value="No">
430 </when>
431 <when value="UseOnly">
432 <param name="ModificationFilterSequence" type="select" label="Sequence" multiple="true">
433 <option value="Acetylation'ProtNTerm'">Acetylation'ProtNTerm'</option>
434 <option value="Carbamidomethyl'Cys'">Carbamidomethyl'Cys'</option>
435 <option value="Oxidation'Met'">Oxidation'Met'</option>
436 <option value="Phosphorylation'Ser'Thr'Tyr'">Phosphorylation'Ser'Thr'Tyr'</option>
437 <option value="Pyro_Glu'GluNterm'">Pyro_Glu'GluNterm'</option>
438 <option value="Pyro_Glu'GlnNterm'">Pyro_Glu'GlnNterm'</option>
439 </param>
440 </when>
441 </conditional>
442 <section name="AggregatePeptideChargeStatesParams" title="Aggregate Peptide Charge States Parameters">
443 <conditional name="AggregatePeptideChargeStatesParamsCond">
444 <param name="AggregatePeptideChargeStatesParamsEnabled" type="select" label="Specify Aggregate Peptide Charge States Parameters?">
445 <option value="yes">Yes</option>
446 <option value="no" selected="true">No</option>
447 </param>
448 <when value="yes">
449 <expand macro="AggregationParams" />
450 </when>
451 <when value="no">
452 </when>
453 </conditional>
454 </section>
455 <section name="AggregateModifiedPeptidesParams" title="Aggregate Modified Peptides Parameters">
456 <conditional name="AggregateModifiedPeptidesParamsCond">
457 <param name="AggregateModifiedPeptidesParamsEnabled" type="select" label="Specify Aggregate Modified Peptides Parameters?">
458 <option value="yes">Yes</option>
459 <option value="no" selected="true">No</option>
460 </param>
461 <when value="yes">
462 <expand macro="AggregationParams" />
463 </when>
464 <when value="no">
465 </when>
466 </conditional>
467 </section>
468 <section name="AggregateToProteinGroupsParams" title="Aggregate To Protein Groups Parameters">
469 <expand macro="AggregationParams" />
470 </section>
471 <param name="outputParamfile" type="boolean" value="false" label="Output parameter file"/>
472 </inputs>
473 <outputs>
474 <data format="tabular" name="out_labelFreeQuant" />
475 <data format="json" name="out_paramfile">
476 <filter>outputParamfile</filter>
477 </data>
478 </outputs>
479 <tests>
480 <test expect_num_outputs="1">
481 <param name="proteinassignedquantpepions" value="sample.quantAndProt"/>
482 <conditional name="ModificationFilterCond">
483 <param name="ModificationFilter" value="All"/>
484 </conditional>
485 <section name="AggregatePeptideChargeStatesParams">
486 <conditional name="AggregatePeptideChargeStatesParamsCond">
487 <param name="AggregateModifiedPeptidesParamsEnabled" value="no" />
488 </conditional>
489 </section>
490 <section name="AggregateModifiedPeptidesParams">
491 <conditional name="AggregateModifiedPeptidesParamsCond">
492 <param name="AggregateModifiedPeptidesParamsEnabled" value="no"/>
493 </conditional>
494 </section>
495 <section name="AggregateToProteinGroupsParams">
496 <section name="Transform">
497 <conditional name="TransformLightCond">
498 <param name="Type" value="None"/>
499 </conditional>
500 </section>
501 <section name="SingleFilters">
502 <section name="Light">
503 <param name="BiggerThan" value=""/>
504 <param name="SmallerThan" value=""/>
505 </section>
506 </section>
507 <section name="GroupFilters">
508 <section name="Light">
509 <param name="Tukey" value=""/>
510 <param name="Stdev" value=""/>
511 </section>
512 </section>
513 <section name="Aggregation">
514 <param name="AggregationLight" value="Mean"/>
515 </section>
516 </section>
517 <param name="outputParamfile" value="false"/>
518 </test>
519 <test expect_num_outputs="2">
520 <param name="proteinassignedquantpepions" value="sample.quantAndProt"/>
521 <conditional name="ModificationFilterCond">
522 <param name="ModificationFilter" value="All"/>
523 </conditional>
524 <section name="AggregatePeptideChargeStatesParams">
525 <conditional name="AggregatePeptideChargeStatesParamsCond">
526 <param name="AggregateModifiedPeptidesParamsEnabled" value="no" />
527 </conditional>
528 </section>
529 <section name="AggregateModifiedPeptidesParams">
530 <conditional name="AggregateModifiedPeptidesParamsCond">
531 <param name="AggregateModifiedPeptidesParamsEnabled" value="no"/>
532 </conditional>
533 </section>
534 <section name="AggregateToProteinGroupsParams">
535 <section name="Transform">
536 <conditional name="TransformLightCond">
537 <param name="Type" value="None"/>
538 </conditional>
539 </section>
540 <section name="SingleFilters">
541 <section name="Light">
542 <param name="BiggerThan" value=""/>
543 <param name="SmallerThan" value=""/>
544 </section>
545 </section>
546 <section name="GroupFilters">
547 <section name="Light">
548 <param name="Tukey" value=""/>
549 <param name="Stdev" value=""/>
550 </section>
551 </section>
552 <section name="Aggregation">
553 <param name="AggregationLight" value="Mean"/>
554 </section>
555 </section>
556 <param name="outputParamfile" value="true"/>
557 <output name="out_paramfile" file="result_1.json"/>
558 </test>
559 <test expect_num_outputs="2">
560 <param name="proteinassignedquantpepions" value="sample.quantAndProt"/>
561 <conditional name="ModificationFilterCond">
562 <param name="ModificationFilter" value="No"/>
563 </conditional>
564 <section name="AggregatePeptideChargeStatesParams">
565 <conditional name="AggregatePeptideChargeStatesParamsCond">
566 <param name="AggregatePeptideChargeStatesParamsEnabled" value="yes" />
567 <section name="Transform">
568 <conditional name="TransformLightCond">
569 <param name="Type" value="Log2"/>
570 </conditional>
571 </section>
572 <section name="SingleFilters">
573 <section name="Light">
574 <param name="BiggerThan" value="1"/>
575 <param name="SmallerThan" value="2"/>
576 </section>
577 </section>
578 <section name="GroupFilters">
579 <section name="Light">
580 <param name="Tukey" value="1"/>
581 <param name="Stdev" value="2"/>
582 </section>
583 </section>
584 <section name="Aggregation">
585 <param name="AggregationLight" value="Median"/>
586 </section>
587 </conditional>
588 </section>
589 <section name="AggregateModifiedPeptidesParams">
590 <conditional name="AggregateModifiedPeptidesParamsCond">
591 <param name="AggregateModifiedPeptidesParamsEnabled" value="yes"/>
592 <section name="Transform">
593 <conditional name="TransformLightCond">
594 <param name="Type" value="Log2"/>
595 </conditional>
596 </section>
597 <section name="SingleFilters">
598 <section name="Light">
599 <param name="BiggerThan" value="1"/>
600 <param name="SmallerThan" value="2"/>
601 </section>
602 </section>
603 <section name="GroupFilters">
604 <section name="Light">
605 <param name="Tukey" value="1"/>
606 <param name="Stdev" value="2"/>
607 </section>
608 </section>
609 <section name="Aggregation">
610 <param name="AggregationLight" value="Median"/>
611 </section>
612 </conditional>
613 </section>
614 <section name="AggregateToProteinGroupsParams">
615 <section name="Transform">
616 <conditional name="TransformLightCond">
617 <param name="Type" value="Log2"/>
618 </conditional>
619 </section>
620 <section name="SingleFilters">
621 <section name="Light">
622 <param name="BiggerThan" value="1"/>
623 <param name="SmallerThan" value="2"/>
624 </section>
625 </section>
626 <section name="GroupFilters">
627 <section name="Light">
628 <param name="Tukey" value="1"/>
629 <param name="Stdev" value="2"/>
630 </section>
631 </section>
632 <section name="Aggregation">
633 <param name="AggregationLight" value="Median"/>
634 </section>
635 </section>
636 <param name="outputParamfile" value="true"/>
637 <output name="out_paramfile" file="result_2.json"/>
638 </test>
639 <test expect_num_outputs="2">
640 <param name="proteinassignedquantpepions" value="sample.quantAndProt"/>
641 <conditional name="ModificationFilterCond">
642 <param name="ModificationFilter" value="UseOnly"/>
643 <param name="ModificationFilterSequence" value="Acetylation'ProtNTerm',Carbamidomethyl'Cys',Oxidation'Met',Phosphorylation'Ser'Thr'Tyr',Pyro_Glu'GluNterm',Pyro_Glu'GlnNterm'"/>
644 </conditional>
645 <section name="AggregatePeptideChargeStatesParams">
646 <conditional name="AggregatePeptideChargeStatesParamsCond">
647 <param name="AggregatePeptideChargeStatesParamsEnabled" value="yes" />
648 <section name="Transform">
649 <conditional name="TransformLightCond">
650 <param name="Type" value="Substract"/>
651 <param name="Value" value="2"/>
652 </conditional>
653 </section>
654 <section name="SingleFilters">
655 <section name="Light">
656 <param name="BiggerThan" value="1"/>
657 <param name="SmallerThan" value=""/>
658 </section>
659 </section>
660 <section name="GroupFilters">
661 <section name="Light">
662 <param name="Tukey" value=""/>
663 <param name="Stdev" value="2"/>
664 </section>
665 </section>
666 <section name="Aggregation">
667 <param name="AggregationLight" value="Median"/>
668 </section>
669 </conditional>
670 </section>
671 <section name="AggregateModifiedPeptidesParams">
672 <conditional name="AggregateModifiedPeptidesParamsCond">
673 <param name="AggregateModifiedPeptidesParamsEnabled" value="yes"/>
674 <section name="Transform">
675 <conditional name="TransformLightCond">
676 <param name="Type" value="Add"/>
677 <param name="Value" value="2"/>
678 </conditional>
679 </section>
680 <section name="SingleFilters">
681 <section name="Light">
682 <param name="BiggerThan" value=""/>
683 <param name="SmallerThan" value="2"/>
684 </section>
685 </section>
686 <section name="GroupFilters">
687 <section name="Light">
688 <param name="Tukey" value="1"/>
689 <param name="Stdev" value=""/>
690 </section>
691 </section>
692 <section name="Aggregation">
693 <param name="AggregationLight" value="Sum"/>
694 </section>
695 </conditional>
696 </section>
697 <section name="AggregateToProteinGroupsParams">
698 <section name="Transform">
699 <conditional name="TransformLightCond">
700 <param name="Type" value="DivideBy"/>
701 <param name="Value" value="2"/>
702 </conditional>
703 </section>
704 <section name="SingleFilters">
705 <section name="Light">
706 <param name="BiggerThan" value=""/>
707 <param name="SmallerThan" value=""/>
708 </section>
709 </section>
710 <section name="GroupFilters">
711 <section name="Light">
712 <param name="Tukey" value=""/>
713 <param name="Stdev" value=""/>
714 </section>
715 </section>
716 <section name="Aggregation">
717 <param name="AggregationLight" value="Mean"/>
718 </section>
719 </section>
720 <param name="outputParamfile" value="true"/>
721 <output name="out_paramfile" file="result_3.json"/>
722 </test>
723 </tests>
724 <help>
725 <![CDATA[
726 What It Does
727 ------------
728 **Disclaimer** this tool needs a quantAndProt file, which combines the results from ProteinInference and PSMBasedQuantification.
729
730 After quantification and protein inference are performed, it is known which peptide originated from which protein, as well as the intensity of each peptide.
731 The information available for each peptide now needs to be aggragated for their proteins.
732
733 This tool performs the aggregation from the peptides to the protein in several steps. The first two aggregation steps are optional. One of them is the aggregation
734 based on charge state. Peptides with the same sequence and modifications, but different charge states are being aggregated. The next optional step does the same
735 for peptides with the same sequence, but different modifications. Those steps build upon each other. The last step is the aggregation of all peptides of a protein.
736 The result of each aggregation step is given as a tab separated file. The aggregation is performed according to the given parameters for each step.
737 If an optional aggregation is not performed, the next step takes the result from the prior aggregation. For example, if aggregation by charge and modification are
738 skipped, the protein aggregation is performed on previously unaggregated peptides, where a peptidesequence can occur with different charge states and modifications.
739
740 Further Reading
741 ---------------
742 Additional information about the tool can be found in the `documentation <https://csbiology.github.io/ProteomIQon/tools/LabelFreeProteinQuantification.html>`_.
743 ]]>
744 </help>
745 </tool>