diff FCSflowAI.xml @ 1:34397a84faf1 draft

"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/flowai commit 83ef47729f2d2cdae84171761a6795df9fb63389"
author azomics
date Tue, 23 Jun 2020 18:34:02 -0400
parents
children fab7c5deeb65
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FCSflowAI.xml	Tue Jun 23 18:34:02 2020 -0400
@@ -0,0 +1,177 @@
+<tool id="flowAI" name="flowAI" version="1.0+galaxy0">
+  <description> automatic quality control</description>
+  <requirements>
+    <requirement type="package" version="1.42.0">bioconductor-flowcore</requirement>
+    <requirement type="package" version="1.2.9">bioconductor-flowai</requirement>
+  </requirements>
+  <stdio>
+    <exit_code range="2:" level="fatal" description="See stderr for more details." />
+  </stdio>
+  <command><![CDATA[
+      Rscript $__tool_directory__/FCSflowAI.R '${input}' '${remove}' $alphaFR $chremFS $outFS $penFS '${sideFM}' '${full_rep}' $highfcs $lowfcs $qcfcs
+  ]]>
+  </command>
+  <inputs>
+    <param format="fcs" name="input" type="data" label="FCS file"/>
+    <param name="remove" type="select" label="Remove low quality cells from:">
+      <option value="all">Flow rate, Signal acquisition and Dynamic range</option>
+      <option value="FR_FS">Flow rate and Signal acquisition</option>
+      <option value="FR_FM">Flow rate and Dynamic range</option>
+      <option value="FS_FM">Signal acquisition and Dynamic range</option>
+      <option value="FR">Flow rate</option>
+      <option value="FS">Signal acquisition</option>
+      <option value="FM">Dynamic range</option>
+    </param>
+    <param name="alphaFR" type="float" label="Significance threshold for flow rate check:" value="0.01"/>
+    <param name="chremFS" type="boolean" checked="true" truevalue="TRUE" falsevalue="FALSE" label="Do you want to exclude the FSC and SSC parameters from the signal acquisition check?" help="The FSC and SSC parameters will not be taken into account for analysis but will not be removed."/>
+    <param name="outFS" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Do you want to remove outliers before the signal acquisition check?"/>
+    <param name="penFS" type="integer" label="Stringency of signal acquisition check (higher tolerance with higher values):" value="200"/>
+    <param name="sideFM" type="select" label="Include in dynamic range check:">
+      <option value="both">Both limits</option>
+      <option value="upper">Upper limit only</option>
+      <option value="lower">Lower limit only</option>
+    </param>
+    <param name="highQ_FCS" type="boolean" checked="true" truevalue="TRUE" falsevalue="FALSE" label="Create FCS file with only high quality events?"/>
+    <param name="lowQ_FCS" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Create FCS file with only low quality events?"/>
+    <param name="QC_FCS" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Create FCS file with an additional parameter where low quality events have values higher than 10,000?"/>
+  </inputs>
+  <outputs>
+    <data format="html" name="full_rep" label="QC of ${input.name}">
+    </data>
+    <data format="fcs" name="highfcs" label="High quality events only from ${input.name}">
+      <filter>(highQ_FCS)</filter>
+    </data>
+    <data format="fcs" name="lowfcs" label="Low quality events only from ${input.name}">
+      <filter>(lowQ_FCS)</filter>
+    </data>
+    <data format="fcs" name="qcfcs" label="All events (low quality event marked up) from ${input.name}">
+      <filter>(QC_FCS)</filter>
+    </data>
+  </outputs>
+  <tests>
+    <test>
+      <param name="input" value="input.fcs"/>
+      <param name="remove" value="all"/>
+      <param name="alphaFR" value="0.01"/>
+      <param name="chremFS" value="TRUE"/>
+      <param name="outFS" value="FALSE"/>
+      <param name="penFS" value="200"/>
+      <param name="sideFM" value="both"/>
+      <param name="highQ_FCS" value="TRUE"/>
+      <param name="lowQ_FCS" value="FALSE"/>
+      <param name="QC_FCS" value="FALSE"/>
+      <output name="full_rep" file="std/QCreport.html" compare="sim_size"/>
+      <output name="highfcs" file="std/hqdata.fcs" compare="sim_size"/>
+    </test>
+    <test>
+      <param name="input" value="input.fcs"/>
+      <param name="remove" value="all"/>
+      <param name="alphaFR" value="0.01"/>
+      <param name="chremFS" value="TRUE"/>
+      <param name="outFS" value="FALSE"/>
+      <param name="penFS" value="200"/>
+      <param name="sideFM" value="both"/>
+      <param name="highQ_FCS" value="TRUE"/>
+      <param name="lowQ_FCS" value="TRUE"/>
+      <param name="QC_FCS" value="TRUE"/>
+      <output name="full_rep" file="std/QCreport.html" compare="sim_size"/>
+      <output name="highfcs" file="std/hqdata.fcs" compare="sim_size"/>
+      <output name="lowfcs" file="std/lqdata.fcs" compare="sim_size"/>
+      <output name="qcfcs" file="std/alldata.fcs" compare="sim_size"/>
+    </test>
+    <test>
+      <param name="input" value="input.fcs"/>
+      <param name="remove" value="all"/>
+      <param name="alphaFR" value="0.01"/>
+      <param name="chremFS" value="TRUE"/>
+      <param name="outFS" value="TRUE"/>
+      <param name="penFS" value="200"/>
+      <param name="sideFM" value="both"/>
+      <param name="highQ_FCS" value="TRUE"/>
+      <param name="lowQ_FCS" value="FALSE"/>
+      <param name="QC_FCS" value="FALSE"/>
+      <output name="full_rep" file="nooutliers/QCreport_nooutliers.html" compare="sim_size"/>
+      <output name="highfcs" file="nooutliers/hqdata_nooutliers.fcs" compare="sim_size"/>
+    </test>
+    <test>
+      <param name="input" value="input.fcs"/>
+      <param name="remove" value="all"/>
+      <param name="alphaFR" value="0.01"/>
+      <param name="chremFS" value="FALSE"/>
+      <param name="outFS" value="FALSE"/>
+      <param name="penFS" value="200"/>
+      <param name="sideFM" value="both"/>
+      <param name="highQ_FCS" value="TRUE"/>
+      <param name="lowQ_FCS" value="FALSE"/>
+      <param name="QC_FCS" value="FALSE"/>
+      <output name="full_rep" file="withsfsc/QCreport_sfsc.html" compare="sim_size"/>
+      <output name="highfcs" file="withsfsc/hqdata_sfsc.fcs" compare="sim_size"/>
+    </test>
+  </tests>
+  <help><![CDATA[
+   This tool automatically performs quality control of flow cytometry data.
+
+-----
+
+**Input files**
+
+  • One or more FCS files.
+
+**Output files**
+
+  • full HTML report
+  • new FCS file containing only high quality events (default)
+  • new FCS file containing only low quality events (optional)
+  • original FCS file containing an additional parameter where the low quality events have a value higher than 10,000 (optional)
+
+
+The files generated will be FCS 3.0.
+
+----
+
+Description of the approach
+'''''''''''''''''''''''''''
+This tool identifies anomalies from three fundamental properties of flow cytometry data:
+
+  - *Flow rate*. Surges and substantial shifts of the rate of the cells passing through the capillary tube are detected.
+
+  - *Signal acquisition*. Instability in the signal acquired for each channel are detected. In most cases it corresponds to flow rate surges and shifts.
+
+  - *Dynamic range*. Values recorded in the upper limit (margin events) and negative outliers are removed.
+
+.. class:: infomark
+
+An HTML report with informative plots is generated. Users are advised to review the report and also::
+
+  1. Eventually adjust the quality control parameters
+  2. Discard the entire FCS file because of an unacceptable number of anomalies
+  3. Program a flow cytometry maintenance because of recurrent issues
+
+
+Parameters
+''''''''''
+Default settings work well in the majority of cases. Setting customization may be needed to address properties of unique datasets. For example, high-dimensional FCS files may perform best with more tolerant setttings for signal acquisition checks.
+
+Example
+'''''''
+This section provides an example of a flowAI quality control html report with plots:
+
+
+Flow rate check: anomalies are flagged with a green circle. In this instance a surge was detected and discarded as well as a shift from the median value later in the experiment.
+
+.. image:: ./static/images/flowtools/autoflowrate.png
+
+Signal acquistion check: Orange background (or yellow depending on the user's computer) highlights the stable region. Signal acquistion shifts are identified on a per channel basis and the largest region containing no anomalies is retained.
+
+.. image:: ./static/images/flowtools/autosignal.png
+
+Dynamic range check: red and blue lines reflect the detected number of events over time. The x-axis corresponds to that of the signal acquisition plot.
+
+.. image:: ./static/images/flowtools/margins.png
+
+ ]]>
+  </help>
+  <citations>
+    <citation type="doi">10.1093/bioinformatics/btw191</citation>
+  </citations>
+</tool>