Previous changeset 0:60aa5e56531a (2017-02-27) Next changeset 2:fab7c5deeb65 (2023-09-26) |
Commit message:
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/flowai commit 83ef47729f2d2cdae84171761a6795df9fb63389" |
added:
FCSflowAI.R FCSflowAI.xml static/images/flowtools/autoflowrate.png static/images/flowtools/autosignal.png static/images/flowtools/margins.png test-data/input.fcs test-data/nooutliers/QCreport_nooutliers.html test-data/nooutliers/hqdata_nooutliers.fcs test-data/std/QCreport.html test-data/std/alldata.fcs test-data/std/hqdata.fcs test-data/std/lqdata.fcs test-data/withsfsc/QCreport_sfsc.html test-data/withsfsc/hqdata_sfsc.fcs |
removed:
flowai/FCSflowAI.R flowai/FCSflowAI.xml flowai/static/images/flowtools/autoflowrate.png flowai/static/images/flowtools/autosignal.png flowai/static/images/flowtools/margins.png flowai/test-data/input.fcs flowai/test-data/nooutliers/QCreport_nooutliers.html flowai/test-data/nooutliers/hqdata_nooutliers.fcs flowai/test-data/std/QCreport.html flowai/test-data/std/alldata.fcs flowai/test-data/std/hqdata.fcs flowai/test-data/std/lqdata.fcs flowai/test-data/withsfsc/QCreport_sfsc.html flowai/test-data/withsfsc/hqdata_sfsc.fcs |
b |
diff -r 60aa5e56531a -r 34397a84faf1 FCSflowAI.R --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FCSflowAI.R Tue Jun 23 18:34:02 2020 -0400 |
[ |
@@ -0,0 +1,38 @@ +#!/usr/bin/env Rscript +# +# Authors: Gianni Monaco +# +# Reference: flowAI: automatic and interactive anomaly discerning +# tools for flow cytometry data. +# Gianni Monaco, Hao Chen, Michael Poidinger, Jinmiao Chen, +# Joao Pedro de Magalhaes and Anis Larbi +# Bioinformatics (2016) +# doi: 10.1093/bioinformatics/btw191 +# + +library(flowAI) +library(methods) + +# parse arguments + +args <- commandArgs(trailingOnly = TRUE) + +remFS <- if(args[4]) c("FSC", "SSC") else NULL + +flow_auto_qc( + fcsfiles = args[1], + remove_from = args[2], + alphaFR = as.numeric(args[3]), + ChRemoveFS = remFS, + outlierFS = args[5], + pen_valueFS = as.numeric(args[6]), + sideFM = args[7], + fcs_QC = ifelse(args[9] == "None", FALSE, "_QC"), + fcs_highQ = ifelse(args[10] == "None", FALSE, "_highQ"), + fcs_lowQ = ifelse(args[11] == "None", FALSE, "_lowQ"), + folder_results = FALSE) + +try(file.rename(dir(".", pattern = ".*_QC.html"), args[8]), silent =TRUE) +try(file.rename(dir(".", pattern = ".*_QC.fcs"), args[9]), silent =TRUE) +try(file.rename(dir(".", pattern = ".*_highQ.fcs"), args[10]), silent =TRUE) +try(file.rename(dir(".", pattern = ".*_lowQ.fcs"), args[11]), silent =TRUE) |
b |
diff -r 60aa5e56531a -r 34397a84faf1 FCSflowAI.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FCSflowAI.xml Tue Jun 23 18:34:02 2020 -0400 |
[ |
b'@@ -0,0 +1,177 @@\n+<tool id="flowAI" name="flowAI" version="1.0+galaxy0">\n+ <description> automatic quality control</description>\n+ <requirements>\n+ <requirement type="package" version="1.42.0">bioconductor-flowcore</requirement>\n+ <requirement type="package" version="1.2.9">bioconductor-flowai</requirement>\n+ </requirements>\n+ <stdio>\n+ <exit_code range="2:" level="fatal" description="See stderr for more details." />\n+ </stdio>\n+ <command><![CDATA[\n+ Rscript $__tool_directory__/FCSflowAI.R \'${input}\' \'${remove}\' $alphaFR $chremFS $outFS $penFS \'${sideFM}\' \'${full_rep}\' $highfcs $lowfcs $qcfcs\n+ ]]>\n+ </command>\n+ <inputs>\n+ <param format="fcs" name="input" type="data" label="FCS file"/>\n+ <param name="remove" type="select" label="Remove low quality cells from:">\n+ <option value="all">Flow rate, Signal acquisition and Dynamic range</option>\n+ <option value="FR_FS">Flow rate and Signal acquisition</option>\n+ <option value="FR_FM">Flow rate and Dynamic range</option>\n+ <option value="FS_FM">Signal acquisition and Dynamic range</option>\n+ <option value="FR">Flow rate</option>\n+ <option value="FS">Signal acquisition</option>\n+ <option value="FM">Dynamic range</option>\n+ </param>\n+ <param name="alphaFR" type="float" label="Significance threshold for flow rate check:" value="0.01"/>\n+ <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."/>\n+ <param name="outFS" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Do you want to remove outliers before the signal acquisition check?"/>\n+ <param name="penFS" type="integer" label="Stringency of signal acquisition check (higher tolerance with higher values):" value="200"/>\n+ <param name="sideFM" type="select" label="Include in dynamic range check:">\n+ <option value="both">Both limits</option>\n+ <option value="upper">Upper limit only</option>\n+ <option value="lower">Lower limit only</option>\n+ </param>\n+ <param name="highQ_FCS" type="boolean" checked="true" truevalue="TRUE" falsevalue="FALSE" label="Create FCS file with only high quality events?"/>\n+ <param name="lowQ_FCS" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Create FCS file with only low quality events?"/>\n+ <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?"/>\n+ </inputs>\n+ <outputs>\n+ <data format="html" name="full_rep" label="QC of ${input.name}">\n+ </data>\n+ <data format="fcs" name="highfcs" label="High quality events only from ${input.name}">\n+ <filter>(highQ_FCS)</filter>\n+ </data>\n+ <data format="fcs" name="lowfcs" label="Low quality events only from ${input.name}">\n+ <filter>(lowQ_FCS)</filter>\n+ </data>\n+ <data format="fcs" name="qcfcs" label="All events (low quality event marked up) from ${input.name}">\n+ <filter>(QC_FCS)</filter>\n+ </data>\n+ </outputs>\n+ <tests>\n+ <test>\n+ <param name="input" value="input.fcs"/>\n+ <param name="remove" value="all"/>\n+ <param name="alphaFR" value="0.01"/>\n+ <param name="chremFS" value="TRUE"/>\n+ <param name="outFS" value="FALSE"/>\n+ <param name="penFS" value="200"/>\n+ <param name="sideFM" value="both"/>\n+ <param name="highQ_FCS" value="TRUE"/>\n+ <param name="lowQ_FCS" value="FALSE"/>\n+ <param name="QC_FCS" value="FALSE"/>\n+ <output name="full_rep" file="std/QCreport.html" compare="sim_size"/>\n+ <output name="highfcs" file="std/hqdata.fcs" compare="sim_size"/>\n+ </test>\n+ <test>\n+ <param name="input" value="input.fcs"/>\n+ <param name="remove" v'..b'="std/alldata.fcs" compare="sim_size"/>\n+ </test>\n+ <test>\n+ <param name="input" value="input.fcs"/>\n+ <param name="remove" value="all"/>\n+ <param name="alphaFR" value="0.01"/>\n+ <param name="chremFS" value="TRUE"/>\n+ <param name="outFS" value="TRUE"/>\n+ <param name="penFS" value="200"/>\n+ <param name="sideFM" value="both"/>\n+ <param name="highQ_FCS" value="TRUE"/>\n+ <param name="lowQ_FCS" value="FALSE"/>\n+ <param name="QC_FCS" value="FALSE"/>\n+ <output name="full_rep" file="nooutliers/QCreport_nooutliers.html" compare="sim_size"/>\n+ <output name="highfcs" file="nooutliers/hqdata_nooutliers.fcs" compare="sim_size"/>\n+ </test>\n+ <test>\n+ <param name="input" value="input.fcs"/>\n+ <param name="remove" value="all"/>\n+ <param name="alphaFR" value="0.01"/>\n+ <param name="chremFS" value="FALSE"/>\n+ <param name="outFS" value="FALSE"/>\n+ <param name="penFS" value="200"/>\n+ <param name="sideFM" value="both"/>\n+ <param name="highQ_FCS" value="TRUE"/>\n+ <param name="lowQ_FCS" value="FALSE"/>\n+ <param name="QC_FCS" value="FALSE"/>\n+ <output name="full_rep" file="withsfsc/QCreport_sfsc.html" compare="sim_size"/>\n+ <output name="highfcs" file="withsfsc/hqdata_sfsc.fcs" compare="sim_size"/>\n+ </test>\n+ </tests>\n+ <help><![CDATA[\n+ This tool automatically performs quality control of flow cytometry data.\n+\n+-----\n+\n+**Input files**\n+\n+ \xe2\x80\xa2 One or more FCS files.\n+\n+**Output files**\n+\n+ \xe2\x80\xa2 full HTML report\n+ \xe2\x80\xa2 new FCS file containing only high quality events (default)\n+ \xe2\x80\xa2 new FCS file containing only low quality events (optional)\n+ \xe2\x80\xa2 original FCS file containing an additional parameter where the low quality events have a value higher than 10,000 (optional)\n+\n+\n+The files generated will be FCS 3.0.\n+\n+----\n+\n+Description of the approach\n+\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\n+This tool identifies anomalies from three fundamental properties of flow cytometry data:\n+\n+ - *Flow rate*. Surges and substantial shifts of the rate of the cells passing through the capillary tube are detected.\n+\n+ - *Signal acquisition*. Instability in the signal acquired for each channel are detected. In most cases it corresponds to flow rate surges and shifts.\n+\n+ - *Dynamic range*. Values recorded in the upper limit (margin events) and negative outliers are removed.\n+\n+.. class:: infomark\n+\n+An HTML report with informative plots is generated. Users are advised to review the report and also::\n+\n+ 1. Eventually adjust the quality control parameters\n+ 2. Discard the entire FCS file because of an unacceptable number of anomalies\n+ 3. Program a flow cytometry maintenance because of recurrent issues\n+\n+\n+Parameters\n+\'\'\'\'\'\'\'\'\'\'\n+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.\n+\n+Example\n+\'\'\'\'\'\'\'\n+This section provides an example of a flowAI quality control html report with plots:\n+\n+\n+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.\n+\n+.. image:: ./static/images/flowtools/autoflowrate.png\n+\n+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.\n+\n+.. image:: ./static/images/flowtools/autosignal.png\n+\n+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.\n+\n+.. image:: ./static/images/flowtools/margins.png\n+\n+ ]]>\n+ </help>\n+ <citations>\n+ <citation type="doi">10.1093/bioinformatics/btw191</citation>\n+ </citations>\n+</tool>\n' |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/FCSflowAI.R --- a/flowai/FCSflowAI.R Mon Feb 27 12:55:30 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
@@ -1,41 +0,0 @@ -# -# -# Authors: Gianni Monaco -# -# Reference: flowAI: automatic and interactive anomaly discerning -# tools for flow cytometry data. -# Gianni Monaco, Hao Chen, Michael Poidinger, Jinmiao Chen, -# Joao Pedro de Magalhaes and Anis Larbi -# Bioinformatics (2016) -# doi: 10.1093/bioinformatics/btw191 -# - -library(flowAI) -library(methods) - -# parse arguments - -args <- commandArgs(trailingOnly = TRUE) - -remFS <- if(args[5]) c("FSC", "SSC") else NULL - -flow_auto_qc( - fcsfiles = args[2], - remove_from = args[3], - alphaFR = as.numeric(args[4]), - ChRemoveFS = remFS, - outlierFS = args[6], - pen_valueFS = as.numeric(args[7]), - sideFM = args[8], - fcs_QC = ifelse(args[10] == "None", FALSE, "_QC"), - fcs_highQ = ifelse(args[11] == "None", FALSE, "_highQ"), - fcs_lowQ = ifelse(args[12] == "None", FALSE, "_lowQ"), - folder_results = FALSE) - -try(file.rename(dir(".", pattern = ".*_QC.html"), args[9]), silent =TRUE) -try(file.rename(dir(".", pattern = ".*_QC.fcs"), args[10]), silent =TRUE) -try(file.rename(dir(".", pattern = ".*_highQ.fcs"), args[11]), silent =TRUE) -try(file.rename(dir(".", pattern = ".*_lowQ.fcs"), args[12]), silent =TRUE) - - - |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/FCSflowAI.xml --- a/flowai/FCSflowAI.xml Mon Feb 27 12:55:30 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
b'@@ -1,178 +0,0 @@\n-<tool id="flowAI" name="flowAI" version="1.0">\n- <description> automatic quality control </description>\n- <requirements>\n- <requirement type="package" version="3.3.0">r</requirement>\n- <requirement type="package" version="1.38.2">bioconductor-flowcore</requirement>\n- <requirement type="package" version="1.2.9">bioconductor-flowai</requirement>\n- </requirements>\n- <stdio>\n- <exit_code range="2:" level="fatal" description="See stderr for more details." />\n- </stdio>\n- <command><![CDATA[\n- Rscript --slave --vanilla $GALAXY_ROOT_DIR/tools/flowtools/FCSflowAI.R --args "${input}" "${remove}" $alphaFR $chremFS $outFS $penFS "${sideFM}" "${full_rep}" $highfcs $lowfcs $qcfcs\n- ]]>\n- </command>\n- <inputs>\n- <param format="fcs" name="input" type="data" label="FCS file"/>\n- <param name="remove" type="select" label="Remove low quality cells from:">\n- <option value="all">Flow rate, Signal acquisition and Dynamic range</option>\n- <option value="FR_FS">Flow rate and Signal acquisition</option>\n- <option value="FR_FM">Flow rate and Dynamic range</option>\n- <option value="FS_FM">Signal acquisition and Dynamic range</option>\n- <option value="FR">Flow rate</option>\n- <option value="FS">Signal acquisition</option>\n- <option value="FM">Dynamic range</option>\n- </param>\n- <param name="alphaFR" type="float" label="Significance threshold for flow rate check:" value="0.01"/>\n- <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."/>\n- <param name="outFS" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Do you want to remove outliers before the signal acquisition check?"/>\n- <param name="penFS" type="integer" label="Stringency of signal acquisition check (higher tolerance with higher values):" value="200"/>\n- <param name="sideFM" type="select" label="Include in dynamic range check:">\n- <option value="both">Both limits</option>\n- <option value="upper">Upper limit only</option>\n- <option value="lower">Lower limit only</option>\n- </param>\n- <param name="highQ_FCS" type="boolean" checked="true" truevalue="TRUE" falsevalue="FALSE" label="Create FCS file with only high quality events?"/>\n- <param name="lowQ_FCS" type="boolean" checked="false" truevalue="TRUE" falsevalue="FALSE" label="Create FCS file with only low quality events?"/>\n- <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?"/>\n- </inputs>\n- <outputs>\n- <data format="html" name="full_rep" label="QC of ${input.name}">\n- </data>\n- <data format="fcs" name="highfcs" label="High quality events only from ${input.name}">\n- <filter>(highQ_FCS)</filter>\n- </data>\n- <data format="fcs" name="lowfcs" label="Low quality events only from ${input.name}">\n- <filter>(lowQ_FCS)</filter>\n- </data>\n- <data format="fcs" name="qcfcs" label="All events (low quality event marked up) from ${input.name}">\n- <filter>(QC_FCS)</filter>\n- </data>\n- </outputs>\n- <tests>\n- <test>\n- <param name="input" value="input.fcs"/>\n- <param name="remove" value="all"/>\n- <param name="alphaFR" value="0.01"/>\n- <param name="chremFS" value="TRUE"/>\n- <param name="outFS" value="FALSE"/>\n- <param name="penFS" value="200"/>\n- <param name="sideFM" value="both"/>\n- <param name="highQ_FCS" value="TRUE"/>\n- <param name="lowQ_FCS" value="FALSE"/>\n- <param name="QC_FCS" value="FALSE"/>\n- <output name="full_rep" file="std/QCreport.html" lines_diff="2"/>\n- <output name="highfcs" file="std/hqdata.fcs" compare="sim_size"/>\n- </te'..b'sim_size"/>\n- <output name="qcfcs" file="std/alldata.fcs" compare="sim_size"/>\n- </test>\n- <test>\n- <param name="input" value="input.fcs"/>\n- <param name="remove" value="all"/>\n- <param name="alphaFR" value="0.01"/>\n- <param name="chremFS" value="TRUE"/>\n- <param name="outFS" value="TRUE"/>\n- <param name="penFS" value="200"/>\n- <param name="sideFM" value="both"/>\n- <param name="highQ_FCS" value="TRUE"/>\n- <param name="lowQ_FCS" value="FALSE"/>\n- <param name="QC_FCS" value="FALSE"/>\n- <output name="full_rep" file="nooutliers/QCreport_nooutliers.html" lines_diff="2"/>\n- <output name="highfcs" file="nooutliers/hqdata_nooutliers.fcs" compare="sim_size"/>\n- </test>\n- <test>\n- <param name="input" value="input.fcs"/>\n- <param name="remove" value="all"/>\n- <param name="alphaFR" value="0.01"/>\n- <param name="chremFS" value="FALSE"/>\n- <param name="outFS" value="FALSE"/>\n- <param name="penFS" value="200"/>\n- <param name="sideFM" value="both"/>\n- <param name="highQ_FCS" value="TRUE"/>\n- <param name="lowQ_FCS" value="FALSE"/>\n- <param name="QC_FCS" value="FALSE"/>\n- <output name="full_rep" file="withsfsc/QCreport_sfsc.html" lines_diff="2"/>\n- <output name="highfcs" file="withsfsc/hqdata_sfsc.fcs" compare="sim_size"/>\n- </test>\n- </tests>\n- <help><![CDATA[\n- This tool automatically performs quality control of flow cytometry data.\n-\n------\n-\n-**Input files**\n-\n- \xe2\x80\xa2 One or more FCS files.\n-\n-**Output files**\n-\n- \xe2\x80\xa2 full HTML report\n- \xe2\x80\xa2 new FCS file containing only high quality events (default)\n- \xe2\x80\xa2 new FCS file containing only low quality events (optional)\n- \xe2\x80\xa2 original FCS file containing an additional parameter where the low quality events have a value higher than 10,000 (optional)\n-\n-\n-The files generated will be FCS 3.0.\n-\n-----\n-\n-Description of the approach\n-\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\n-This tool identifies anomalies from three fundamental properties of flow cytometry data:\n-\n- - *Flow rate*. Surges and substantial shifts of the rate of the cells passing through the capillary tube are detected.\n-\n- - *Signal acquisition*. Instability in the signal acquired for each channel are detected. In most cases it corresponds to flow rate surges and shifts.\n-\n- - *Dynamic range*. Values recorded in the upper limit (margin events) and negative outliers are removed.\n-\n-.. class:: infomark\n-\n-An HTML report with informative plots is generated. Users are advised to review the report and also::\n-\n- 1. Eventually adjust the quality control parameters\n- 2. Discard the entire FCS file because of an unacceptable number of anomalies\n- 3. Program a flow cytometry maintenance because of recurrent issues\n-\n-\n-Parameters\n-\'\'\'\'\'\'\'\'\'\'\n-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.\n-\n-Example\n-\'\'\'\'\'\'\'\n-This section provides an example of a flowAI quality control html report with plots:\n-\n-\n-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.\n-\n-.. image:: static/images/autoflowrate.png\n-\n-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.\n-\n-.. image:: static/images/autosignal.png\n-\n-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.\n-\n-.. image:: static/images/margins.png\n-\n- ]]>\n- </help>\n- <citations>\n- <citation type="doi">10.1093/bioinformatics/btw191</citation>\n- </citations>\n-</tool>\n' |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/static/images/flowtools/autoflowrate.png |
b |
Binary file flowai/static/images/flowtools/autoflowrate.png has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/static/images/flowtools/autosignal.png |
b |
Binary file flowai/static/images/flowtools/autosignal.png has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/static/images/flowtools/margins.png |
b |
Binary file flowai/static/images/flowtools/margins.png has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/test-data/input.fcs |
b |
Binary file flowai/test-data/input.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/test-data/nooutliers/QCreport_nooutliers.html --- a/flowai/test-data/nooutliers/QCreport_nooutliers.html Mon Feb 27 12:55:30 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
b'@@ -1,240 +0,0 @@\n-<!DOCTYPE html>\n-<html>\n-<head>\n-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n-\n-<title>FCS file information</title>\n-\n-<script type="text/javascript">\n-window.onload = function() {\n- var imgs = document.getElementsByTagName(\'img\'), i, img;\n- for (i = 0; i < imgs.length; i++) {\n- img = imgs[i];\n- // center an image if it is the only element of its parent\n- if (img.parentElement.childElementCount === 1)\n- img.parentElement.style.textAlign = \'center\';\n- }\n-};\n-</script>\n-\n-\n-\n-\n-\n-<style type="text/css">\n-body, td {\n- font-family: sans-serif;\n- background-color: white;\n- font-size: 13px;\n-}\n-\n-body {\n- max-width: 800px;\n- margin: auto;\n- padding: 1em;\n- line-height: 20px;\n-}\n-\n-tt, code, pre {\n- font-family: \'DejaVu Sans Mono\', \'Droid Sans Mono\', \'Lucida Console\', Consolas, Monaco, monospace;\n-}\n-\n-h1 {\n- font-size:2.2em;\n-}\n-\n-h2 {\n- font-size:1.8em;\n-}\n-\n-h3 {\n- font-size:1.4em;\n-}\n-\n-h4 {\n- font-size:1.0em;\n-}\n-\n-h5 {\n- font-size:0.9em;\n-}\n-\n-h6 {\n- font-size:0.8em;\n-}\n-\n-a:visited {\n- color: rgb(50%, 0%, 50%);\n-}\n-\n-pre, img {\n- max-width: 100%;\n-}\n-pre {\n- overflow-x: auto;\n-}\n-pre code {\n- display: block; padding: 0.5em;\n-}\n-\n-code {\n- font-size: 92%;\n- border: 1px solid #ccc;\n-}\n-\n-code[class] {\n- background-color: #F8F8F8;\n-}\n-\n-table, td, th {\n- border: none;\n-}\n-\n-blockquote {\n- color:#666666;\n- margin:0;\n- padding-left: 1em;\n- border-left: 0.5em #EEE solid;\n-}\n-\n-hr {\n- height: 0px;\n- border-bottom: none;\n- border-top-width: thin;\n- border-top-style: dotted;\n- border-top-color: #999999;\n-}\n-\n-@media print {\n- * {\n- background: transparent !important;\n- color: black !important;\n- filter:none !important;\n- -ms-filter: none !important;\n- }\n-\n- body {\n- font-size:12pt;\n- max-width:100%;\n- }\n-\n- a, a:visited {\n- text-decoration: underline;\n- }\n-\n- hr {\n- visibility: hidden;\n- page-break-before: always;\n- }\n-\n- pre, blockquote {\n- padding-right: 1em;\n- page-break-inside: avoid;\n- }\n-\n- tr, img {\n- page-break-inside: avoid;\n- }\n-\n- img {\n- max-width: 100% !important;\n- }\n-\n- @page :left {\n- margin: 15mm 20mm 15mm 10mm;\n- }\n-\n- @page :right {\n- margin: 15mm 10mm 15mm 20mm;\n- }\n-\n- p, h2, h3 {\n- orphans: 3; widows: 3;\n- }\n-\n- h2, h3 {\n- page-break-after: avoid;\n- }\n-}\n-</style>\n-\n-\n-\n-</head>\n-\n-<body>\n-<h2>FCS file information</h2>\n-\n-<blockquote>\n-<p>Input file name: dataset_934<br/>\n-Number of events: 20000</p>\n-</blockquote>\n-\n-<h2>Quality control analysis</h2>\n-\n-<h3>Summary</h3>\n-\n-<blockquote>\n-<p>The anomalies were removed from: Flow Rate, Flow Signal and Flow Margin<br/>\n-Anomalies detected in total: <strong>25.11</strong> %<br/>\n-Number of high quality events: 14978 </p>\n-</blockquote>\n-\n-<h3>Flow rate check</h3>\n-\n-<blockquote>\n-<p><strong>0</strong> % anomalies detected in the flow rate check.</p>\n-</blockquote>\n-\n-<p>It was not possible to analyze the flow rate since the time channel is missing. </p>\n-\n-<h3>Signals acquisition check</h3>\n-\n-<blockquote>\n-<p><strong>0</strong> % anomalies detected in the signal aquisition check. </p>\n-</blockquote>\n-\n-<p>Outliers were removed before the changepoint analysis.0% of anomalies were detected as outliers and 0 of anomalies were detected in the changepoint analysis. </p>\n-\n-<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXgAAAHgCAIAAACQE5JdAAAACXBIWXMAAB7CAAAewgFu0HU+AAAgAElEQVR4nOy9e5QjZZ3//36eqkpSne5Od/reE4EdYbg4HIHBFRhvKF5QERRFzoGZFRDX488bHjjrlzkisCoXXfHuKrrrwhyXRY+IIIoKCpwBhosgAoM63NOX9CWddLpTSaqe5/n9UUl1Op1OJ91JJz18XmfOnHSlUvnkU/XcPs/nwpRSIAiCIAiCIAiCIAiCqAe82QIQBEEQBEEQBEEQBHHgQIYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG2RoIAiCIAiCIAiCIAiibpChgSAIgiAIgiAIgiCIukGGBoIgCIIgCIIgCIIg6gYZGgiCIAiCIAiCIAiCqBtkaCAIgiAIgiAIgiAIom6QoYEgCIIgCIIgCIIgiLpBhgaCIAiCIAiCIAiCIOoGGRoIgiAIgiAIgiAIgqgbZGggCIIgCIIgCIIgCKJukKGBIAiCIAiCIAiCII'..b'gI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAIHONGTMmq3DZ2dm1a9fu1KnTD3/4w7lz5x7wFbp27RpNLoVqBw4cGL3Xgw8+WPD6jh07ivhT5ObmNmnSpFevXvfff/+CBQtKoU4AACghAncAACirEonEhg0bZs+e/fjjj7dv3/6ee+5JJBLpLuqQ7dmzZ+nSpVOmTLnrrruOP/74m2++efPmzekuCgAAUlEh3QUAAAAHV6tWrY4dOxa8kkgk1q1bt3LlyjVr1kRf3nfffbm5uXfffXeaaiyWk08+uUKF//4zJPrMYMmSJevXrw8h7N279ze/+c2UKVPeeuutOnXqpK9MAABIhcAdAADKgC5duvzzn//c/3oikZg8efLw4cNnzpwZQrjvvvuGDBnSrFmz5IRrrrmmb9++pVfowYwbN65WrVr7XMzPz582bdqvfvWr//3f/w0hTJs2rV+/fhMnTszJyUlHjQAAkCJHygAAQBmWlZXVu3fvcePGHXXUUSGE3bt3v/TSSwUn3HjjjT//+c9//vOfp6nAYsnOzj7xxBNfeuml5557Ljs7O4Tw3nvv/fa3v013XQAAcGgE7gAAUOY1bNiwX79+0XjOnDkpvMKCBQv+9Kc/Pfjgg88888zkyZN37doVa4HFdeWVVyaPxBk5cuSOHTvSUgYAAKRG4A4AAOVBq1atosE+z03t1atXVlZWVlZWwYsDBw7MysqqX79+CGH16tUXXHBBy5Ytv/e97915553XXHNN796927Zt+/rrr5da8QXdcccdDRs2DCGsXbt27NixaakBAABSI3AHAIDy4LPPPosGzZs3L/6qFStWdOvW7Y033gghFDwwfeHChQMGDBg/fny8RRZHpUqVLr/88micrtAfAABSI3AHAIAyb+XKlePGjYvGl112WTFX7d27d/DgwYsXL77wwgsnTZq0adOmTZs2vfbaa9EzVxOJxNChQ0uq4iIln/I6derUtBQAAACpEbgDAEDZ9v777/fr12/VqlUhhFtuueX4448v5sI1a9ZMmDDhlltueeWVV3r16lWlSpXq1av379//rbfeqly5cghhwYIFa9asKcHSC9GxY8dosHjx4g0bNpR+AQAAkJoK6S4AAAA4uBkzZvTp06fglUQisX79+hUrVqxcuTKEkJOT86Mf/ej+++8/pJdt0KDByJEjs7O/sRGnRYsWZ511VnScy/z584844ojDLv/Q1KlTp1KlStETU9euXVurVq1SLgAAAFIjcAcAgDJg/fr177zzThETevTocdVVV+0TnR/UjTfeGG1m38dxxx0XDfLz8w/pBeNSs2bNKHBfv359WgoAAIAUOFIGAADKgylTprRt2/a22247pIi8ffv2B7xeoUKmbM3JyspKdwkAAFBcAncAACgDzjzzzMSBbN26ddasWSNGjMjNzc3Pz//lL385bNiw4r9s9HzUDLRp06ZoULt27fRWAgAAxSdwBwCAMqxKlSodO3a8995733jjjejK6NGjZ8+eXczl1atXL7HSUrd+/frt27dH47p166a3GAAAKD6BOwAAlAdnnXXWhRdeGI2ff/759BZzmGbNmhUNmjZtWrNmzfQWAwAAxSdwBwCAcqJnz57RYNGiRemt5DC99dZb0aB79+7prQQAAA6JwB0AAMqJ5PkwmzdvTm8lh2Pnzp3JHfr9+/dPbzEAAHBIBO4AAFBOJE9iadKkSXorORwPPvjg8uXLQwh169a95JJL0l0OAAAcAoE7AACUB1988UVyY3ifPn3SW0zKxowZ87Of/Swa33333RUrVkxvPQAAcEgE7gAAUOa99957ffv23b59ewihUaNGF198cborOjSJRGLmzJlDhgy54oor8vPzQwi9evX6wQ9+kO66AADg0FRIdwEAAMDBzZgx44D71rdt27Zw4cKvv/46+jIrK+sPf/hDpUqVSre6Q3DhhRfm5uYmv0wkEps2bVq8ePHq1auTF0888cTXX389JycnHQUCAEDqBO4AAFAGrF+//p133il6TpUqVZ577rlzzjmndEpKzcSJE4u4m5OT84Mf/OC+++5LPgAWAADKEIE7AACUbTVr1mzWrFnfvn1/+MMfNmjQYJ+711xzzf5b4wcNGtSuXbsQQq1atQ74mn369Im2yR999NElUPI3VKhQoV69esccc8y555773e9+97jjjivpdwQAgBKSlUgk0l0DAABQHkyePHnp0qUhhA4dOrRp0ybd5QAAQGkTuAMAAAAAQAyy010AAAAAAACUBwJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIwf8HUOoHNKnhlKkAAAAASUVORK5CYII=" title="plot of chunk unnamed-chunk-11" alt="plot of chunk unnamed-chunk-11" width="750px" style="display: block; margin: auto;" /></p>\n-\n-<p>The plot shows where the anomalies occured the most. The x-axis scale is complementary to the one of the signal acquisition plot. </p>\n-\n-<h5>More info on the anomalies detected in the dynamic range check:</h5>\n-\n-<p>for each channel, The table shows the number of events that did not pass the dynamic range check:</p>\n-\n-<pre><code>## lower_range upper_range\n-## FSC-H 0 217\n-## SSC-H 0 4990\n-## FL1-H 0 0\n-## FL2-H 0 0\n-## FL3-H 0 0\n-## FL4-H 0 0\n-## total_SUM 0 5207\n-## total_UNIQUE 0 5022\n-</code></pre>\n-\n-</body>\n-\n-</html>\n' |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/test-data/nooutliers/hqdata_nooutliers.fcs |
b |
Binary file flowai/test-data/nooutliers/hqdata_nooutliers.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/test-data/std/QCreport.html --- a/flowai/test-data/std/QCreport.html Mon Feb 27 12:55:30 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
b'@@ -1,238 +0,0 @@\n-<!DOCTYPE html>\n-<html>\n-<head>\n-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n-\n-<title>FCS file information</title>\n-\n-<script type="text/javascript">\n-window.onload = function() {\n- var imgs = document.getElementsByTagName(\'img\'), i, img;\n- for (i = 0; i < imgs.length; i++) {\n- img = imgs[i];\n- // center an image if it is the only element of its parent\n- if (img.parentElement.childElementCount === 1)\n- img.parentElement.style.textAlign = \'center\';\n- }\n-};\n-</script>\n-\n-\n-\n-\n-\n-<style type="text/css">\n-body, td {\n- font-family: sans-serif;\n- background-color: white;\n- font-size: 13px;\n-}\n-\n-body {\n- max-width: 800px;\n- margin: auto;\n- padding: 1em;\n- line-height: 20px;\n-}\n-\n-tt, code, pre {\n- font-family: \'DejaVu Sans Mono\', \'Droid Sans Mono\', \'Lucida Console\', Consolas, Monaco, monospace;\n-}\n-\n-h1 {\n- font-size:2.2em;\n-}\n-\n-h2 {\n- font-size:1.8em;\n-}\n-\n-h3 {\n- font-size:1.4em;\n-}\n-\n-h4 {\n- font-size:1.0em;\n-}\n-\n-h5 {\n- font-size:0.9em;\n-}\n-\n-h6 {\n- font-size:0.8em;\n-}\n-\n-a:visited {\n- color: rgb(50%, 0%, 50%);\n-}\n-\n-pre, img {\n- max-width: 100%;\n-}\n-pre {\n- overflow-x: auto;\n-}\n-pre code {\n- display: block; padding: 0.5em;\n-}\n-\n-code {\n- font-size: 92%;\n- border: 1px solid #ccc;\n-}\n-\n-code[class] {\n- background-color: #F8F8F8;\n-}\n-\n-table, td, th {\n- border: none;\n-}\n-\n-blockquote {\n- color:#666666;\n- margin:0;\n- padding-left: 1em;\n- border-left: 0.5em #EEE solid;\n-}\n-\n-hr {\n- height: 0px;\n- border-bottom: none;\n- border-top-width: thin;\n- border-top-style: dotted;\n- border-top-color: #999999;\n-}\n-\n-@media print {\n- * {\n- background: transparent !important;\n- color: black !important;\n- filter:none !important;\n- -ms-filter: none !important;\n- }\n-\n- body {\n- font-size:12pt;\n- max-width:100%;\n- }\n-\n- a, a:visited {\n- text-decoration: underline;\n- }\n-\n- hr {\n- visibility: hidden;\n- page-break-before: always;\n- }\n-\n- pre, blockquote {\n- padding-right: 1em;\n- page-break-inside: avoid;\n- }\n-\n- tr, img {\n- page-break-inside: avoid;\n- }\n-\n- img {\n- max-width: 100% !important;\n- }\n-\n- @page :left {\n- margin: 15mm 20mm 15mm 10mm;\n- }\n-\n- @page :right {\n- margin: 15mm 10mm 15mm 20mm;\n- }\n-\n- p, h2, h3 {\n- orphans: 3; widows: 3;\n- }\n-\n- h2, h3 {\n- page-break-after: avoid;\n- }\n-}\n-</style>\n-\n-\n-\n-</head>\n-\n-<body>\n-<h2>FCS file information</h2>\n-\n-<blockquote>\n-<p>Input file name: dataset_934<br/>\n-Number of events: 20000</p>\n-</blockquote>\n-\n-<h2>Quality control analysis</h2>\n-\n-<h3>Summary</h3>\n-\n-<blockquote>\n-<p>The anomalies were removed from: Flow Rate, Flow Signal and Flow Margin<br/>\n-Anomalies detected in total: <strong>25.11</strong> %<br/>\n-Number of high quality events: 14978 </p>\n-</blockquote>\n-\n-<h3>Flow rate check</h3>\n-\n-<blockquote>\n-<p><strong>0</strong> % anomalies detected in the flow rate check.</p>\n-</blockquote>\n-\n-<p>It was not possible to analyze the flow rate since the time channel is missing. </p>\n-\n-<h3>Signals acquisition check</h3>\n-\n-<blockquote>\n-<p><strong>0</strong> % anomalies detected in the signal aquisition check. </p>\n-</blockquote>\n-\n-<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXgAAAHgCAIAAACQE5JdAAAACXBIWXMAAB7CAAAewgFu0HU+AAAgAElEQVR4nOy9e5QjZZ3//36eqkpSne5Od/reE4EdYbg4HIHBFRhvKF5QERRFzoGZFRDX488bHjjrlzkisCoXXfHuKrrrwhyXRY+IIIoKCpwBhosgAoM63NOX9CWddLpTSaqe5/n9UUl1Op1OJ91JJz18XmfOnHSlUvnkU/XcPs/nwpRSIAiCIAiCIAiCIAiCqAe82QIQBEEQBEEQBEEQBHHgQIYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG2RoIAiCIAiCIAiCIAiibpChgSAIgiAIgiAIgiCIukGGBoIgCIIgCIIgCIIg6gYZGgiCIAiCIAiCIAiCqBtkaCAIgiAIgiAIgiAIom6QoYEgCIIgCIIgCIIgiLpBhgaCIAiCIAiCIAiCIOoGGRoIgiAIgiAIgiAIgqgbZGggCIIgCIIgCIIgCKJukKGBIAiCIAiCIAiCIIi6QYYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG3qzBdh4jIyMjI+PN+vbbdvWNI3zVrQQKaW814yxJkpSgVwup+s6KXDV5HI5wzBaUzxS4BppfQUqpWzbJgWuGlLgGnEV6PP5mi1IeUiBa6T1FSildByHFLhqpJRCCMM'..b'gI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAIHONGTMmq3DZ2dm1a9fu1KnTD3/4w7lz5x7wFbp27RpNLoVqBw4cGL3Xgw8+WPD6jh07ivhT5ObmNmnSpFevXvfff/+CBQtKoU4AACghAncAACirEonEhg0bZs+e/fjjj7dv3/6ee+5JJBLpLuqQ7dmzZ+nSpVOmTLnrrruOP/74m2++efPmzekuCgAAUlEh3QUAAAAHV6tWrY4dOxa8kkgk1q1bt3LlyjVr1kRf3nfffbm5uXfffXeaaiyWk08+uUKF//4zJPrMYMmSJevXrw8h7N279ze/+c2UKVPeeuutOnXqpK9MAABIhcAdAADKgC5duvzzn//c/3oikZg8efLw4cNnzpwZQrjvvvuGDBnSrFmz5IRrrrmmb9++pVfowYwbN65WrVr7XMzPz582bdqvfvWr//3f/w0hTJs2rV+/fhMnTszJyUlHjQAAkCJHygAAQBmWlZXVu3fvcePGHXXUUSGE3bt3v/TSSwUn3HjjjT//+c9//vOfp6nAYsnOzj7xxBNfeuml5557Ljs7O4Tw3nvv/fa3v013XQAAcGgE7gAAUOY1bNiwX79+0XjOnDkpvMKCBQv+9Kc/Pfjgg88888zkyZN37doVa4HFdeWVVyaPxBk5cuSOHTvSUgYAAKRG4A4AAOVBq1atosE+z03t1atXVlZWVlZWwYsDBw7MysqqX79+CGH16tUXXHBBy5Ytv/e97915553XXHNN796927Zt+/rrr5da8QXdcccdDRs2DCGsXbt27NixaakBAABSI3AHAIDy4LPPPosGzZs3L/6qFStWdOvW7Y033gghFDwwfeHChQMGDBg/fny8RRZHpUqVLr/88micrtAfAABSI3AHAIAyb+XKlePGjYvGl112WTFX7d27d/DgwYsXL77wwgsnTZq0adOmTZs2vfbaa9EzVxOJxNChQ0uq4iIln/I6derUtBQAAACpEbgDAEDZ9v777/fr12/VqlUhhFtuueX4448v5sI1a9ZMmDDhlltueeWVV3r16lWlSpXq1av379//rbfeqly5cghhwYIFa9asKcHSC9GxY8dosHjx4g0bNpR+AQAAkJoK6S4AAAA4uBkzZvTp06fglUQisX79+hUrVqxcuTKEkJOT86Mf/ej+++8/pJdt0KDByJEjs7O/sRGnRYsWZ511VnScy/z584844ojDLv/Q1KlTp1KlStETU9euXVurVq1SLgAAAFIjcAcAgDJg/fr177zzThETevTocdVVV+0TnR/UjTfeGG1m38dxxx0XDfLz8w/pBeNSs2bNKHBfv359WgoAAIAUOFIGAADKgylTprRt2/a22247pIi8ffv2B7xeoUKmbM3JyspKdwkAAFBcAncAACgDzjzzzMSBbN26ddasWSNGjMjNzc3Pz//lL385bNiw4r9s9HzUDLRp06ZoULt27fRWAgAAxSdwBwCAMqxKlSodO3a8995733jjjejK6NGjZ8+eXczl1atXL7HSUrd+/frt27dH47p166a3GAAAKD6BOwAAlAdnnXXWhRdeGI2ff/759BZzmGbNmhUNmjZtWrNmzfQWAwAAxSdwBwCAcqJnz57RYNGiRemt5DC99dZb0aB79+7prQQAAA6JwB0AAMqJ5PkwmzdvTm8lh2Pnzp3JHfr9+/dPbzEAAHBIBO4AAFBOJE9iadKkSXorORwPPvjg8uXLQwh169a95JJL0l0OAAAcAoE7AACUB1988UVyY3ifPn3SW0zKxowZ87Of/Swa33333RUrVkxvPQAAcEgE7gAAUOa99957ffv23b59ewihUaNGF198cborOjSJRGLmzJlDhgy54oor8vPzQwi9evX6wQ9+kO66AADg0FRIdwEAAMDBzZgx44D71rdt27Zw4cKvv/46+jIrK+sPf/hDpUqVSre6Q3DhhRfm5uYmv0wkEps2bVq8ePHq1auTF0888cTXX389JycnHQUCAEDqBO4AAFAGrF+//p133il6TpUqVZ577rlzzjmndEpKzcSJE4u4m5OT84Mf/OC+++5LPgAWAADKEIE7AACUbTVr1mzWrFnfvn1/+MMfNmjQYJ+711xzzf5b4wcNGtSuXbsQQq1atQ74mn369Im2yR999NElUPI3VKhQoV69esccc8y555773e9+97jjjivpdwQAgBKSlUgk0l0DAABQHkyePHnp0qUhhA4dOrRp0ybd5QAAQGkTuAMAAAAAQAyy010AAAAAAACUBwJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIwf8HUOoHNKnhlKkAAAAASUVORK5CYII=" title="plot of chunk unnamed-chunk-11" alt="plot of chunk unnamed-chunk-11" width="750px" style="display: block; margin: auto;" /></p>\n-\n-<p>The plot shows where the anomalies occured the most. The x-axis scale is complementary to the one of the signal acquisition plot. </p>\n-\n-<h5>More info on the anomalies detected in the dynamic range check:</h5>\n-\n-<p>for each channel, The table shows the number of events that did not pass the dynamic range check:</p>\n-\n-<pre><code>## lower_range upper_range\n-## FSC-H 0 217\n-## SSC-H 0 4990\n-## FL1-H 0 0\n-## FL2-H 0 0\n-## FL3-H 0 0\n-## FL4-H 0 0\n-## total_SUM 0 5207\n-## total_UNIQUE 0 5022\n-</code></pre>\n-\n-</body>\n-\n-</html>\n' |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/test-data/std/alldata.fcs |
b |
Binary file flowai/test-data/std/alldata.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/test-data/std/hqdata.fcs |
b |
Binary file flowai/test-data/std/hqdata.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/test-data/std/lqdata.fcs |
b |
Binary file flowai/test-data/std/lqdata.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/test-data/withsfsc/QCreport_sfsc.html --- a/flowai/test-data/withsfsc/QCreport_sfsc.html Mon Feb 27 12:55:30 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 |
[ |
b'@@ -1,236 +0,0 @@\n-<!DOCTYPE html>\n-<html>\n-<head>\n-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n-\n-<title>FCS file information</title>\n-\n-<script type="text/javascript">\n-window.onload = function() {\n- var imgs = document.getElementsByTagName(\'img\'), i, img;\n- for (i = 0; i < imgs.length; i++) {\n- img = imgs[i];\n- // center an image if it is the only element of its parent\n- if (img.parentElement.childElementCount === 1)\n- img.parentElement.style.textAlign = \'center\';\n- }\n-};\n-</script>\n-\n-\n-\n-\n-\n-<style type="text/css">\n-body, td {\n- font-family: sans-serif;\n- background-color: white;\n- font-size: 13px;\n-}\n-\n-body {\n- max-width: 800px;\n- margin: auto;\n- padding: 1em;\n- line-height: 20px;\n-}\n-\n-tt, code, pre {\n- font-family: \'DejaVu Sans Mono\', \'Droid Sans Mono\', \'Lucida Console\', Consolas, Monaco, monospace;\n-}\n-\n-h1 {\n- font-size:2.2em;\n-}\n-\n-h2 {\n- font-size:1.8em;\n-}\n-\n-h3 {\n- font-size:1.4em;\n-}\n-\n-h4 {\n- font-size:1.0em;\n-}\n-\n-h5 {\n- font-size:0.9em;\n-}\n-\n-h6 {\n- font-size:0.8em;\n-}\n-\n-a:visited {\n- color: rgb(50%, 0%, 50%);\n-}\n-\n-pre, img {\n- max-width: 100%;\n-}\n-pre {\n- overflow-x: auto;\n-}\n-pre code {\n- display: block; padding: 0.5em;\n-}\n-\n-code {\n- font-size: 92%;\n- border: 1px solid #ccc;\n-}\n-\n-code[class] {\n- background-color: #F8F8F8;\n-}\n-\n-table, td, th {\n- border: none;\n-}\n-\n-blockquote {\n- color:#666666;\n- margin:0;\n- padding-left: 1em;\n- border-left: 0.5em #EEE solid;\n-}\n-\n-hr {\n- height: 0px;\n- border-bottom: none;\n- border-top-width: thin;\n- border-top-style: dotted;\n- border-top-color: #999999;\n-}\n-\n-@media print {\n- * {\n- background: transparent !important;\n- color: black !important;\n- filter:none !important;\n- -ms-filter: none !important;\n- }\n-\n- body {\n- font-size:12pt;\n- max-width:100%;\n- }\n-\n- a, a:visited {\n- text-decoration: underline;\n- }\n-\n- hr {\n- visibility: hidden;\n- page-break-before: always;\n- }\n-\n- pre, blockquote {\n- padding-right: 1em;\n- page-break-inside: avoid;\n- }\n-\n- tr, img {\n- page-break-inside: avoid;\n- }\n-\n- img {\n- max-width: 100% !important;\n- }\n-\n- @page :left {\n- margin: 15mm 20mm 15mm 10mm;\n- }\n-\n- @page :right {\n- margin: 15mm 10mm 15mm 20mm;\n- }\n-\n- p, h2, h3 {\n- orphans: 3; widows: 3;\n- }\n-\n- h2, h3 {\n- page-break-after: avoid;\n- }\n-}\n-</style>\n-\n-\n-\n-</head>\n-\n-<body>\n-<h2>FCS file information</h2>\n-\n-<blockquote>\n-<p>Input file name: dataset_934<br/>\n-Number of events: 20000</p>\n-</blockquote>\n-\n-<h2>Quality control analysis</h2>\n-\n-<h3>Summary</h3>\n-\n-<blockquote>\n-<p>The anomalies were removed from: Flow Rate, Flow Signal and Flow Margin<br/>\n-Anomalies detected in total: <strong>25.11</strong> %<br/>\n-Number of high quality events: 14978 </p>\n-</blockquote>\n-\n-<h3>Flow rate check</h3>\n-\n-<blockquote>\n-<p><strong>0</strong> % anomalies detected in the flow rate check.</p>\n-</blockquote>\n-\n-<p>It was not possible to analyze the flow rate since the time channel is missing. </p>\n-\n-<h3>Signals acquisition check</h3>\n-\n-<blockquote>\n-<p><strong>0</strong> % anomalies detected in the signal aquisition check. </p>\n-</blockquote>\n-\n-<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXgAAAHgCAIAAACQE5JdAAAACXBIWXMAAB7CAAAewgFu0HU+AAAgAElEQVR4nOy9e5QjZZ3//36eqkpSne5Od/reE4EdYbg4HIHBFRhvKF5QERRFzoGZFRDX488bHjjrlzkisCoXXfHuKrrrwhyXRY+IIIoKCpwBhosgAoM63NOX9CWddLpTSaqe5/n9UUl1Op1OJ91JJz18XmfOnHSlUvnkU/XcPs/nwpRSIAiCIAiCIAiCIAiCqAe82QIQBEEQBEEQBEEQBHHgQIYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG2RoIAiCIAiCIAiCIAiibpChgSAIgiAIgiAIgiCIukGGBoIgCIIgCIIgCIIg6gYZGgiCIAiCIAiCIAiCqBtkaCAIgiAIgiAIgiAIom6QoYEgCIIgCIIgCIIgiLpBhgaCIAiCIAiCIAiCIOoGGRoIgiAIgiAIgiAIgqgbZGggCIIgCIIgCIIgCKJukKGBIAiCIAiCIAiCIIi6QYYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG3qzBdh4jIyMjI+PN+vbbdvWNI3zVrQQKaW814yxJkpSgVwup+s6KXDV5HI5wzBaUzxS4BppfQUqpWzbJgWuGlLgGnEV6PP5mi1IeUiBa6T1FSildByHFLhqpJRCCMM'..b'gI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAIHONGTMmq3DZ2dm1a9fu1KnTD3/4w7lz5x7wFbp27RpNLoVqBw4cGL3Xgw8+WPD6jh07ivhT5ObmNmnSpFevXvfff/+CBQtKoU4AACghAncAACirEonEhg0bZs+e/fjjj7dv3/6ee+5JJBLpLuqQ7dmzZ+nSpVOmTLnrrruOP/74m2++efPmzekuCgAAUlEh3QUAAAAHV6tWrY4dOxa8kkgk1q1bt3LlyjVr1kRf3nfffbm5uXfffXeaaiyWk08+uUKF//4zJPrMYMmSJevXrw8h7N279ze/+c2UKVPeeuutOnXqpK9MAABIhcAdAADKgC5duvzzn//c/3oikZg8efLw4cNnzpwZQrjvvvuGDBnSrFmz5IRrrrmmb9++pVfowYwbN65WrVr7XMzPz582bdqvfvWr//3f/w0hTJs2rV+/fhMnTszJyUlHjQAAkCJHygAAQBmWlZXVu3fvcePGHXXUUSGE3bt3v/TSSwUn3HjjjT//+c9//vOfp6nAYsnOzj7xxBNfeuml5557Ljs7O4Tw3nvv/fa3v013XQAAcGgE7gAAUOY1bNiwX79+0XjOnDkpvMKCBQv+9Kc/Pfjgg88888zkyZN37doVa4HFdeWVVyaPxBk5cuSOHTvSUgYAAKRG4A4AAOVBq1atosE+z03t1atXVlZWVlZWwYsDBw7MysqqX79+CGH16tUXXHBBy5Ytv/e97915553XXHNN796927Zt+/rrr5da8QXdcccdDRs2DCGsXbt27NixaakBAABSI3AHAIDy4LPPPosGzZs3L/6qFStWdOvW7Y033gghFDwwfeHChQMGDBg/fny8RRZHpUqVLr/88micrtAfAABSI3AHAIAyb+XKlePGjYvGl112WTFX7d27d/DgwYsXL77wwgsnTZq0adOmTZs2vfbaa9EzVxOJxNChQ0uq4iIln/I6derUtBQAAACpEbgDAEDZ9v777/fr12/VqlUhhFtuueX4448v5sI1a9ZMmDDhlltueeWVV3r16lWlSpXq1av379//rbfeqly5cghhwYIFa9asKcHSC9GxY8dosHjx4g0bNpR+AQAAkJoK6S4AAAA4uBkzZvTp06fglUQisX79+hUrVqxcuTKEkJOT86Mf/ej+++8/pJdt0KDByJEjs7O/sRGnRYsWZ511VnScy/z584844ojDLv/Q1KlTp1KlStETU9euXVurVq1SLgAAAFIjcAcAgDJg/fr177zzThETevTocdVVV+0TnR/UjTfeGG1m38dxxx0XDfLz8w/pBeNSs2bNKHBfv359WgoAAIAUOFIGAADKgylTprRt2/a22247pIi8ffv2B7xeoUKmbM3JyspKdwkAAFBcAncAACgDzjzzzMSBbN26ddasWSNGjMjNzc3Pz//lL385bNiw4r9s9HzUDLRp06ZoULt27fRWAgAAxSdwBwCAMqxKlSodO3a8995733jjjejK6NGjZ8+eXczl1atXL7HSUrd+/frt27dH47p166a3GAAAKD6BOwAAlAdnnXXWhRdeGI2ff/759BZzmGbNmhUNmjZtWrNmzfQWAwAAxSdwBwCAcqJnz57RYNGiRemt5DC99dZb0aB79+7prQQAAA6JwB0AAMqJ5PkwmzdvTm8lh2Pnzp3JHfr9+/dPbzEAAHBIBO4AAFBOJE9iadKkSXorORwPPvjg8uXLQwh169a95JJL0l0OAAAcAoE7AACUB1988UVyY3ifPn3SW0zKxowZ87Of/Swa33333RUrVkxvPQAAcEgE7gAAUOa99957ffv23b59ewihUaNGF198cborOjSJRGLmzJlDhgy54oor8vPzQwi9evX6wQ9+kO66AADg0FRIdwEAAMDBzZgx44D71rdt27Zw4cKvv/46+jIrK+sPf/hDpUqVSre6Q3DhhRfm5uYmv0wkEps2bVq8ePHq1auTF0888cTXX389JycnHQUCAEDqBO4AAFAGrF+//p133il6TpUqVZ577rlzzjmndEpKzcSJE4u4m5OT84Mf/OC+++5LPgAWAADKEIE7AACUbTVr1mzWrFnfvn1/+MMfNmjQYJ+711xzzf5b4wcNGtSuXbsQQq1atQ74mn369Im2yR999NElUPI3VKhQoV69esccc8y555773e9+97jjjivpdwQAgBKSlUgk0l0DAABQHkyePHnp0qUhhA4dOrRp0ybd5QAAQGkTuAMAAAAAQAyy010AAAAAAACUBwJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIwf8HUOoHNKnhlKkAAAAASUVORK5CYII=" title="plot of chunk unnamed-chunk-11" alt="plot of chunk unnamed-chunk-11" width="750px" style="display: block; margin: auto;" /></p>\n-\n-<p>The plot shows where the anomalies occured the most. The x-axis scale is complementary to the one of the signal acquisition plot. </p>\n-\n-<h5>More info on the anomalies detected in the dynamic range check:</h5>\n-\n-<p>for each channel, The table shows the number of events that did not pass the dynamic range check:</p>\n-\n-<pre><code>## lower_range upper_range\n-## FSC-H 0 217\n-## SSC-H 0 4990\n-## FL1-H 0 0\n-## FL2-H 0 0\n-## FL3-H 0 0\n-## FL4-H 0 0\n-## total_SUM 0 5207\n-## total_UNIQUE 0 5022\n-</code></pre>\n-\n-</body>\n-\n-</html>\n' |
b |
diff -r 60aa5e56531a -r 34397a84faf1 flowai/test-data/withsfsc/hqdata_sfsc.fcs |
b |
Binary file flowai/test-data/withsfsc/hqdata_sfsc.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 static/images/flowtools/autoflowrate.png |
b |
Binary file static/images/flowtools/autoflowrate.png has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 static/images/flowtools/autosignal.png |
b |
Binary file static/images/flowtools/autosignal.png has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 static/images/flowtools/margins.png |
b |
Binary file static/images/flowtools/margins.png has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 test-data/input.fcs |
b |
Binary file test-data/input.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 test-data/nooutliers/QCreport_nooutliers.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/nooutliers/QCreport_nooutliers.html Tue Jun 23 18:34:02 2020 -0400 |
[ |
b'@@ -0,0 +1,240 @@\n+<!DOCTYPE html>\n+<html>\n+<head>\n+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n+\n+<title>FCS file information</title>\n+\n+<script type="text/javascript">\n+window.onload = function() {\n+ var imgs = document.getElementsByTagName(\'img\'), i, img;\n+ for (i = 0; i < imgs.length; i++) {\n+ img = imgs[i];\n+ // center an image if it is the only element of its parent\n+ if (img.parentElement.childElementCount === 1)\n+ img.parentElement.style.textAlign = \'center\';\n+ }\n+};\n+</script>\n+\n+\n+\n+\n+\n+<style type="text/css">\n+body, td {\n+ font-family: sans-serif;\n+ background-color: white;\n+ font-size: 13px;\n+}\n+\n+body {\n+ max-width: 800px;\n+ margin: auto;\n+ padding: 1em;\n+ line-height: 20px;\n+}\n+\n+tt, code, pre {\n+ font-family: \'DejaVu Sans Mono\', \'Droid Sans Mono\', \'Lucida Console\', Consolas, Monaco, monospace;\n+}\n+\n+h1 {\n+ font-size:2.2em;\n+}\n+\n+h2 {\n+ font-size:1.8em;\n+}\n+\n+h3 {\n+ font-size:1.4em;\n+}\n+\n+h4 {\n+ font-size:1.0em;\n+}\n+\n+h5 {\n+ font-size:0.9em;\n+}\n+\n+h6 {\n+ font-size:0.8em;\n+}\n+\n+a:visited {\n+ color: rgb(50%, 0%, 50%);\n+}\n+\n+pre, img {\n+ max-width: 100%;\n+}\n+pre {\n+ overflow-x: auto;\n+}\n+pre code {\n+ display: block; padding: 0.5em;\n+}\n+\n+code {\n+ font-size: 92%;\n+ border: 1px solid #ccc;\n+}\n+\n+code[class] {\n+ background-color: #F8F8F8;\n+}\n+\n+table, td, th {\n+ border: none;\n+}\n+\n+blockquote {\n+ color:#666666;\n+ margin:0;\n+ padding-left: 1em;\n+ border-left: 0.5em #EEE solid;\n+}\n+\n+hr {\n+ height: 0px;\n+ border-bottom: none;\n+ border-top-width: thin;\n+ border-top-style: dotted;\n+ border-top-color: #999999;\n+}\n+\n+@media print {\n+ * {\n+ background: transparent !important;\n+ color: black !important;\n+ filter:none !important;\n+ -ms-filter: none !important;\n+ }\n+\n+ body {\n+ font-size:12pt;\n+ max-width:100%;\n+ }\n+\n+ a, a:visited {\n+ text-decoration: underline;\n+ }\n+\n+ hr {\n+ visibility: hidden;\n+ page-break-before: always;\n+ }\n+\n+ pre, blockquote {\n+ padding-right: 1em;\n+ page-break-inside: avoid;\n+ }\n+\n+ tr, img {\n+ page-break-inside: avoid;\n+ }\n+\n+ img {\n+ max-width: 100% !important;\n+ }\n+\n+ @page :left {\n+ margin: 15mm 20mm 15mm 10mm;\n+ }\n+\n+ @page :right {\n+ margin: 15mm 10mm 15mm 20mm;\n+ }\n+\n+ p, h2, h3 {\n+ orphans: 3; widows: 3;\n+ }\n+\n+ h2, h3 {\n+ page-break-after: avoid;\n+ }\n+}\n+</style>\n+\n+\n+\n+</head>\n+\n+<body>\n+<h2>FCS file information</h2>\n+\n+<blockquote>\n+<p>Input file name: dataset_934<br/>\n+Number of events: 20000</p>\n+</blockquote>\n+\n+<h2>Quality control analysis</h2>\n+\n+<h3>Summary</h3>\n+\n+<blockquote>\n+<p>The anomalies were removed from: Flow Rate, Flow Signal and Flow Margin<br/>\n+Anomalies detected in total: <strong>25.11</strong> %<br/>\n+Number of high quality events: 14978 </p>\n+</blockquote>\n+\n+<h3>Flow rate check</h3>\n+\n+<blockquote>\n+<p><strong>0</strong> % anomalies detected in the flow rate check.</p>\n+</blockquote>\n+\n+<p>It was not possible to analyze the flow rate since the time channel is missing. </p>\n+\n+<h3>Signals acquisition check</h3>\n+\n+<blockquote>\n+<p><strong>0</strong> % anomalies detected in the signal aquisition check. </p>\n+</blockquote>\n+\n+<p>Outliers were removed before the changepoint analysis.0% of anomalies were detected as outliers and 0 of anomalies were detected in the changepoint analysis. </p>\n+\n+<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXgAAAHgCAIAAACQE5JdAAAACXBIWXMAAB7CAAAewgFu0HU+AAAgAElEQVR4nOy9e5QjZZ3//36eqkpSne5Od/reE4EdYbg4HIHBFRhvKF5QERRFzoGZFRDX488bHjjrlzkisCoXXfHuKrrrwhyXRY+IIIoKCpwBhosgAoM63NOX9CWddLpTSaqe5/n9UUl1Op1OJ91JJz18XmfOnHSlUvnkU/XcPs/nwpRSIAiCIAiCIAiCIAiCqAe82QIQBEEQBEEQBEEQBHHgQIYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG2RoIAiCIAiCIAiCIAiibpChgSAIgiAIgiAIgiCIukGGBoIgCIIgCIIgCIIg6gYZGgiCIAiCIAiCIAiCqBtkaCAIgiAIgiAIgiAIom6QoYEgCIIgCIIgCIIgiLpBhgaCIAiCIAiCIAiCIOoGGRoIgiAIgiAIgiAIgqgbZGggCIIgCIIgCIIgCKJukKGBIAiCIAiCIAiCII'..b'gI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAIHONGTMmq3DZ2dm1a9fu1KnTD3/4w7lz5x7wFbp27RpNLoVqBw4cGL3Xgw8+WPD6jh07ivhT5ObmNmnSpFevXvfff/+CBQtKoU4AACghAncAACirEonEhg0bZs+e/fjjj7dv3/6ee+5JJBLpLuqQ7dmzZ+nSpVOmTLnrrruOP/74m2++efPmzekuCgAAUlEh3QUAAAAHV6tWrY4dOxa8kkgk1q1bt3LlyjVr1kRf3nfffbm5uXfffXeaaiyWk08+uUKF//4zJPrMYMmSJevXrw8h7N279ze/+c2UKVPeeuutOnXqpK9MAABIhcAdAADKgC5duvzzn//c/3oikZg8efLw4cNnzpwZQrjvvvuGDBnSrFmz5IRrrrmmb9++pVfowYwbN65WrVr7XMzPz582bdqvfvWr//3f/w0hTJs2rV+/fhMnTszJyUlHjQAAkCJHygAAQBmWlZXVu3fvcePGHXXUUSGE3bt3v/TSSwUn3HjjjT//+c9//vOfp6nAYsnOzj7xxBNfeuml5557Ljs7O4Tw3nvv/fa3v013XQAAcGgE7gAAUOY1bNiwX79+0XjOnDkpvMKCBQv+9Kc/Pfjgg88888zkyZN37doVa4HFdeWVVyaPxBk5cuSOHTvSUgYAAKRG4A4AAOVBq1atosE+z03t1atXVlZWVlZWwYsDBw7MysqqX79+CGH16tUXXHBBy5Ytv/e97915553XXHNN796927Zt+/rrr5da8QXdcccdDRs2DCGsXbt27NixaakBAABSI3AHAIDy4LPPPosGzZs3L/6qFStWdOvW7Y033gghFDwwfeHChQMGDBg/fny8RRZHpUqVLr/88micrtAfAABSI3AHAIAyb+XKlePGjYvGl112WTFX7d27d/DgwYsXL77wwgsnTZq0adOmTZs2vfbaa9EzVxOJxNChQ0uq4iIln/I6derUtBQAAACpEbgDAEDZ9v777/fr12/VqlUhhFtuueX4448v5sI1a9ZMmDDhlltueeWVV3r16lWlSpXq1av379//rbfeqly5cghhwYIFa9asKcHSC9GxY8dosHjx4g0bNpR+AQAAkJoK6S4AAAA4uBkzZvTp06fglUQisX79+hUrVqxcuTKEkJOT86Mf/ej+++8/pJdt0KDByJEjs7O/sRGnRYsWZ511VnScy/z584844ojDLv/Q1KlTp1KlStETU9euXVurVq1SLgAAAFIjcAcAgDJg/fr177zzThETevTocdVVV+0TnR/UjTfeGG1m38dxxx0XDfLz8w/pBeNSs2bNKHBfv359WgoAAIAUOFIGAADKgylTprRt2/a22247pIi8ffv2B7xeoUKmbM3JyspKdwkAAFBcAncAACgDzjzzzMSBbN26ddasWSNGjMjNzc3Pz//lL385bNiw4r9s9HzUDLRp06ZoULt27fRWAgAAxSdwBwCAMqxKlSodO3a8995733jjjejK6NGjZ8+eXczl1atXL7HSUrd+/frt27dH47p166a3GAAAKD6BOwAAlAdnnXXWhRdeGI2ff/759BZzmGbNmhUNmjZtWrNmzfQWAwAAxSdwBwCAcqJnz57RYNGiRemt5DC99dZb0aB79+7prQQAAA6JwB0AAMqJ5PkwmzdvTm8lh2Pnzp3JHfr9+/dPbzEAAHBIBO4AAFBOJE9iadKkSXorORwPPvjg8uXLQwh169a95JJL0l0OAAAcAoE7AACUB1988UVyY3ifPn3SW0zKxowZ87Of/Swa33333RUrVkxvPQAAcEgE7gAAUOa99957ffv23b59ewihUaNGF198cborOjSJRGLmzJlDhgy54oor8vPzQwi9evX6wQ9+kO66AADg0FRIdwEAAMDBzZgx44D71rdt27Zw4cKvv/46+jIrK+sPf/hDpUqVSre6Q3DhhRfm5uYmv0wkEps2bVq8ePHq1auTF0888cTXX389JycnHQUCAEDqBO4AAFAGrF+//p133il6TpUqVZ577rlzzjmndEpKzcSJE4u4m5OT84Mf/OC+++5LPgAWAADKEIE7AACUbTVr1mzWrFnfvn1/+MMfNmjQYJ+711xzzf5b4wcNGtSuXbsQQq1atQ74mn369Im2yR999NElUPI3VKhQoV69esccc8y555773e9+97jjjivpdwQAgBKSlUgk0l0DAABQHkyePHnp0qUhhA4dOrRp0ybd5QAAQGkTuAMAAAAAQAyy010AAAAAAACUBwJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIwf8HUOoHNKnhlKkAAAAASUVORK5CYII=" title="plot of chunk unnamed-chunk-11" alt="plot of chunk unnamed-chunk-11" width="750px" style="display: block; margin: auto;" /></p>\n+\n+<p>The plot shows where the anomalies occured the most. The x-axis scale is complementary to the one of the signal acquisition plot. </p>\n+\n+<h5>More info on the anomalies detected in the dynamic range check:</h5>\n+\n+<p>for each channel, The table shows the number of events that did not pass the dynamic range check:</p>\n+\n+<pre><code>## lower_range upper_range\n+## FSC-H 0 217\n+## SSC-H 0 4990\n+## FL1-H 0 0\n+## FL2-H 0 0\n+## FL3-H 0 0\n+## FL4-H 0 0\n+## total_SUM 0 5207\n+## total_UNIQUE 0 5022\n+</code></pre>\n+\n+</body>\n+\n+</html>\n' |
b |
diff -r 60aa5e56531a -r 34397a84faf1 test-data/nooutliers/hqdata_nooutliers.fcs |
b |
Binary file test-data/nooutliers/hqdata_nooutliers.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 test-data/std/QCreport.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/std/QCreport.html Tue Jun 23 18:34:02 2020 -0400 |
[ |
b'@@ -0,0 +1,238 @@\n+<!DOCTYPE html>\n+<html>\n+<head>\n+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n+\n+<title>FCS file information</title>\n+\n+<script type="text/javascript">\n+window.onload = function() {\n+ var imgs = document.getElementsByTagName(\'img\'), i, img;\n+ for (i = 0; i < imgs.length; i++) {\n+ img = imgs[i];\n+ // center an image if it is the only element of its parent\n+ if (img.parentElement.childElementCount === 1)\n+ img.parentElement.style.textAlign = \'center\';\n+ }\n+};\n+</script>\n+\n+\n+\n+\n+\n+<style type="text/css">\n+body, td {\n+ font-family: sans-serif;\n+ background-color: white;\n+ font-size: 13px;\n+}\n+\n+body {\n+ max-width: 800px;\n+ margin: auto;\n+ padding: 1em;\n+ line-height: 20px;\n+}\n+\n+tt, code, pre {\n+ font-family: \'DejaVu Sans Mono\', \'Droid Sans Mono\', \'Lucida Console\', Consolas, Monaco, monospace;\n+}\n+\n+h1 {\n+ font-size:2.2em;\n+}\n+\n+h2 {\n+ font-size:1.8em;\n+}\n+\n+h3 {\n+ font-size:1.4em;\n+}\n+\n+h4 {\n+ font-size:1.0em;\n+}\n+\n+h5 {\n+ font-size:0.9em;\n+}\n+\n+h6 {\n+ font-size:0.8em;\n+}\n+\n+a:visited {\n+ color: rgb(50%, 0%, 50%);\n+}\n+\n+pre, img {\n+ max-width: 100%;\n+}\n+pre {\n+ overflow-x: auto;\n+}\n+pre code {\n+ display: block; padding: 0.5em;\n+}\n+\n+code {\n+ font-size: 92%;\n+ border: 1px solid #ccc;\n+}\n+\n+code[class] {\n+ background-color: #F8F8F8;\n+}\n+\n+table, td, th {\n+ border: none;\n+}\n+\n+blockquote {\n+ color:#666666;\n+ margin:0;\n+ padding-left: 1em;\n+ border-left: 0.5em #EEE solid;\n+}\n+\n+hr {\n+ height: 0px;\n+ border-bottom: none;\n+ border-top-width: thin;\n+ border-top-style: dotted;\n+ border-top-color: #999999;\n+}\n+\n+@media print {\n+ * {\n+ background: transparent !important;\n+ color: black !important;\n+ filter:none !important;\n+ -ms-filter: none !important;\n+ }\n+\n+ body {\n+ font-size:12pt;\n+ max-width:100%;\n+ }\n+\n+ a, a:visited {\n+ text-decoration: underline;\n+ }\n+\n+ hr {\n+ visibility: hidden;\n+ page-break-before: always;\n+ }\n+\n+ pre, blockquote {\n+ padding-right: 1em;\n+ page-break-inside: avoid;\n+ }\n+\n+ tr, img {\n+ page-break-inside: avoid;\n+ }\n+\n+ img {\n+ max-width: 100% !important;\n+ }\n+\n+ @page :left {\n+ margin: 15mm 20mm 15mm 10mm;\n+ }\n+\n+ @page :right {\n+ margin: 15mm 10mm 15mm 20mm;\n+ }\n+\n+ p, h2, h3 {\n+ orphans: 3; widows: 3;\n+ }\n+\n+ h2, h3 {\n+ page-break-after: avoid;\n+ }\n+}\n+</style>\n+\n+\n+\n+</head>\n+\n+<body>\n+<h2>FCS file information</h2>\n+\n+<blockquote>\n+<p>Input file name: dataset_934<br/>\n+Number of events: 20000</p>\n+</blockquote>\n+\n+<h2>Quality control analysis</h2>\n+\n+<h3>Summary</h3>\n+\n+<blockquote>\n+<p>The anomalies were removed from: Flow Rate, Flow Signal and Flow Margin<br/>\n+Anomalies detected in total: <strong>25.11</strong> %<br/>\n+Number of high quality events: 14978 </p>\n+</blockquote>\n+\n+<h3>Flow rate check</h3>\n+\n+<blockquote>\n+<p><strong>0</strong> % anomalies detected in the flow rate check.</p>\n+</blockquote>\n+\n+<p>It was not possible to analyze the flow rate since the time channel is missing. </p>\n+\n+<h3>Signals acquisition check</h3>\n+\n+<blockquote>\n+<p><strong>0</strong> % anomalies detected in the signal aquisition check. </p>\n+</blockquote>\n+\n+<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXgAAAHgCAIAAACQE5JdAAAACXBIWXMAAB7CAAAewgFu0HU+AAAgAElEQVR4nOy9e5QjZZ3//36eqkpSne5Od/reE4EdYbg4HIHBFRhvKF5QERRFzoGZFRDX488bHjjrlzkisCoXXfHuKrrrwhyXRY+IIIoKCpwBhosgAoM63NOX9CWddLpTSaqe5/n9UUl1Op1OJ91JJz18XmfOnHSlUvnkU/XcPs/nwpRSIAiCIAiCIAiCIAiCqAe82QIQBEEQBEEQBEEQBHHgQIYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG2RoIAiCIAiCIAiCIAiibpChgSAIgiAIgiAIgiCIukGGBoIgCIIgCIIgCIIg6gYZGgiCIAiCIAiCIAiCqBtkaCAIgiAIgiAIgiAIom6QoYEgCIIgCIIgCIIgiLpBhgaCIAiCIAiCIAiCIOoGGRoIgiAIgiAIgiAIgqgbZGggCIIgCIIgCIIgCKJukKGBIAiCIAiCIAiCIIi6QYYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG3qzBdh4jIyMjI+PN+vbbdvWNI3zVrQQKaW814yxJkpSgVwup+s6KXDV5HI5wzBaUzxS4BppfQUqpWzbJgWuGlLgGnEV6PP5mi1IeUiBa6T1FSildByHFLhqpJRCCMM'..b'gI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAIHONGTMmq3DZ2dm1a9fu1KnTD3/4w7lz5x7wFbp27RpNLoVqBw4cGL3Xgw8+WPD6jh07ivhT5ObmNmnSpFevXvfff/+CBQtKoU4AACghAncAACirEonEhg0bZs+e/fjjj7dv3/6ee+5JJBLpLuqQ7dmzZ+nSpVOmTLnrrruOP/74m2++efPmzekuCgAAUlEh3QUAAAAHV6tWrY4dOxa8kkgk1q1bt3LlyjVr1kRf3nfffbm5uXfffXeaaiyWk08+uUKF//4zJPrMYMmSJevXrw8h7N279ze/+c2UKVPeeuutOnXqpK9MAABIhcAdAADKgC5duvzzn//c/3oikZg8efLw4cNnzpwZQrjvvvuGDBnSrFmz5IRrrrmmb9++pVfowYwbN65WrVr7XMzPz582bdqvfvWr//3f/w0hTJs2rV+/fhMnTszJyUlHjQAAkCJHygAAQBmWlZXVu3fvcePGHXXUUSGE3bt3v/TSSwUn3HjjjT//+c9//vOfp6nAYsnOzj7xxBNfeuml5557Ljs7O4Tw3nvv/fa3v013XQAAcGgE7gAAUOY1bNiwX79+0XjOnDkpvMKCBQv+9Kc/Pfjgg88888zkyZN37doVa4HFdeWVVyaPxBk5cuSOHTvSUgYAAKRG4A4AAOVBq1atosE+z03t1atXVlZWVlZWwYsDBw7MysqqX79+CGH16tUXXHBBy5Ytv/e97915553XXHNN796927Zt+/rrr5da8QXdcccdDRs2DCGsXbt27NixaakBAABSI3AHAIDy4LPPPosGzZs3L/6qFStWdOvW7Y033gghFDwwfeHChQMGDBg/fny8RRZHpUqVLr/88micrtAfAABSI3AHAIAyb+XKlePGjYvGl112WTFX7d27d/DgwYsXL77wwgsnTZq0adOmTZs2vfbaa9EzVxOJxNChQ0uq4iIln/I6derUtBQAAACpEbgDAEDZ9v777/fr12/VqlUhhFtuueX4448v5sI1a9ZMmDDhlltueeWVV3r16lWlSpXq1av379//rbfeqly5cghhwYIFa9asKcHSC9GxY8dosHjx4g0bNpR+AQAAkJoK6S4AAAA4uBkzZvTp06fglUQisX79+hUrVqxcuTKEkJOT86Mf/ej+++8/pJdt0KDByJEjs7O/sRGnRYsWZ511VnScy/z584844ojDLv/Q1KlTp1KlStETU9euXVurVq1SLgAAAFIjcAcAgDJg/fr177zzThETevTocdVVV+0TnR/UjTfeGG1m38dxxx0XDfLz8w/pBeNSs2bNKHBfv359WgoAAIAUOFIGAADKgylTprRt2/a22247pIi8ffv2B7xeoUKmbM3JyspKdwkAAFBcAncAACgDzjzzzMSBbN26ddasWSNGjMjNzc3Pz//lL385bNiw4r9s9HzUDLRp06ZoULt27fRWAgAAxSdwBwCAMqxKlSodO3a8995733jjjejK6NGjZ8+eXczl1atXL7HSUrd+/frt27dH47p166a3GAAAKD6BOwAAlAdnnXXWhRdeGI2ff/759BZzmGbNmhUNmjZtWrNmzfQWAwAAxSdwBwCAcqJnz57RYNGiRemt5DC99dZb0aB79+7prQQAAA6JwB0AAMqJ5PkwmzdvTm8lh2Pnzp3JHfr9+/dPbzEAAHBIBO4AAFBOJE9iadKkSXorORwPPvjg8uXLQwh169a95JJL0l0OAAAcAoE7AACUB1988UVyY3ifPn3SW0zKxowZ87Of/Swa33333RUrVkxvPQAAcEgE7gAAUOa99957ffv23b59ewihUaNGF198cborOjSJRGLmzJlDhgy54oor8vPzQwi9evX6wQ9+kO66AADg0FRIdwEAAMDBzZgx44D71rdt27Zw4cKvv/46+jIrK+sPf/hDpUqVSre6Q3DhhRfm5uYmv0wkEps2bVq8ePHq1auTF0888cTXX389JycnHQUCAEDqBO4AAFAGrF+//p133il6TpUqVZ577rlzzjmndEpKzcSJE4u4m5OT84Mf/OC+++5LPgAWAADKEIE7AACUbTVr1mzWrFnfvn1/+MMfNmjQYJ+711xzzf5b4wcNGtSuXbsQQq1atQ74mn369Im2yR999NElUPI3VKhQoV69esccc8y555773e9+97jjjivpdwQAgBKSlUgk0l0DAABQHkyePHnp0qUhhA4dOrRp0ybd5QAAQGkTuAMAAAAAQAyy010AAAAAAACUBwJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIwf8HUOoHNKnhlKkAAAAASUVORK5CYII=" title="plot of chunk unnamed-chunk-11" alt="plot of chunk unnamed-chunk-11" width="750px" style="display: block; margin: auto;" /></p>\n+\n+<p>The plot shows where the anomalies occured the most. The x-axis scale is complementary to the one of the signal acquisition plot. </p>\n+\n+<h5>More info on the anomalies detected in the dynamic range check:</h5>\n+\n+<p>for each channel, The table shows the number of events that did not pass the dynamic range check:</p>\n+\n+<pre><code>## lower_range upper_range\n+## FSC-H 0 217\n+## SSC-H 0 4990\n+## FL1-H 0 0\n+## FL2-H 0 0\n+## FL3-H 0 0\n+## FL4-H 0 0\n+## total_SUM 0 5207\n+## total_UNIQUE 0 5022\n+</code></pre>\n+\n+</body>\n+\n+</html>\n' |
b |
diff -r 60aa5e56531a -r 34397a84faf1 test-data/std/alldata.fcs |
b |
Binary file test-data/std/alldata.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 test-data/std/hqdata.fcs |
b |
Binary file test-data/std/hqdata.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 test-data/std/lqdata.fcs |
b |
Binary file test-data/std/lqdata.fcs has changed |
b |
diff -r 60aa5e56531a -r 34397a84faf1 test-data/withsfsc/QCreport_sfsc.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/withsfsc/QCreport_sfsc.html Tue Jun 23 18:34:02 2020 -0400 |
[ |
b'@@ -0,0 +1,236 @@\n+<!DOCTYPE html>\n+<html>\n+<head>\n+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n+\n+<title>FCS file information</title>\n+\n+<script type="text/javascript">\n+window.onload = function() {\n+ var imgs = document.getElementsByTagName(\'img\'), i, img;\n+ for (i = 0; i < imgs.length; i++) {\n+ img = imgs[i];\n+ // center an image if it is the only element of its parent\n+ if (img.parentElement.childElementCount === 1)\n+ img.parentElement.style.textAlign = \'center\';\n+ }\n+};\n+</script>\n+\n+\n+\n+\n+\n+<style type="text/css">\n+body, td {\n+ font-family: sans-serif;\n+ background-color: white;\n+ font-size: 13px;\n+}\n+\n+body {\n+ max-width: 800px;\n+ margin: auto;\n+ padding: 1em;\n+ line-height: 20px;\n+}\n+\n+tt, code, pre {\n+ font-family: \'DejaVu Sans Mono\', \'Droid Sans Mono\', \'Lucida Console\', Consolas, Monaco, monospace;\n+}\n+\n+h1 {\n+ font-size:2.2em;\n+}\n+\n+h2 {\n+ font-size:1.8em;\n+}\n+\n+h3 {\n+ font-size:1.4em;\n+}\n+\n+h4 {\n+ font-size:1.0em;\n+}\n+\n+h5 {\n+ font-size:0.9em;\n+}\n+\n+h6 {\n+ font-size:0.8em;\n+}\n+\n+a:visited {\n+ color: rgb(50%, 0%, 50%);\n+}\n+\n+pre, img {\n+ max-width: 100%;\n+}\n+pre {\n+ overflow-x: auto;\n+}\n+pre code {\n+ display: block; padding: 0.5em;\n+}\n+\n+code {\n+ font-size: 92%;\n+ border: 1px solid #ccc;\n+}\n+\n+code[class] {\n+ background-color: #F8F8F8;\n+}\n+\n+table, td, th {\n+ border: none;\n+}\n+\n+blockquote {\n+ color:#666666;\n+ margin:0;\n+ padding-left: 1em;\n+ border-left: 0.5em #EEE solid;\n+}\n+\n+hr {\n+ height: 0px;\n+ border-bottom: none;\n+ border-top-width: thin;\n+ border-top-style: dotted;\n+ border-top-color: #999999;\n+}\n+\n+@media print {\n+ * {\n+ background: transparent !important;\n+ color: black !important;\n+ filter:none !important;\n+ -ms-filter: none !important;\n+ }\n+\n+ body {\n+ font-size:12pt;\n+ max-width:100%;\n+ }\n+\n+ a, a:visited {\n+ text-decoration: underline;\n+ }\n+\n+ hr {\n+ visibility: hidden;\n+ page-break-before: always;\n+ }\n+\n+ pre, blockquote {\n+ padding-right: 1em;\n+ page-break-inside: avoid;\n+ }\n+\n+ tr, img {\n+ page-break-inside: avoid;\n+ }\n+\n+ img {\n+ max-width: 100% !important;\n+ }\n+\n+ @page :left {\n+ margin: 15mm 20mm 15mm 10mm;\n+ }\n+\n+ @page :right {\n+ margin: 15mm 10mm 15mm 20mm;\n+ }\n+\n+ p, h2, h3 {\n+ orphans: 3; widows: 3;\n+ }\n+\n+ h2, h3 {\n+ page-break-after: avoid;\n+ }\n+}\n+</style>\n+\n+\n+\n+</head>\n+\n+<body>\n+<h2>FCS file information</h2>\n+\n+<blockquote>\n+<p>Input file name: dataset_934<br/>\n+Number of events: 20000</p>\n+</blockquote>\n+\n+<h2>Quality control analysis</h2>\n+\n+<h3>Summary</h3>\n+\n+<blockquote>\n+<p>The anomalies were removed from: Flow Rate, Flow Signal and Flow Margin<br/>\n+Anomalies detected in total: <strong>25.11</strong> %<br/>\n+Number of high quality events: 14978 </p>\n+</blockquote>\n+\n+<h3>Flow rate check</h3>\n+\n+<blockquote>\n+<p><strong>0</strong> % anomalies detected in the flow rate check.</p>\n+</blockquote>\n+\n+<p>It was not possible to analyze the flow rate since the time channel is missing. </p>\n+\n+<h3>Signals acquisition check</h3>\n+\n+<blockquote>\n+<p><strong>0</strong> % anomalies detected in the signal aquisition check. </p>\n+</blockquote>\n+\n+<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXgAAAHgCAIAAACQE5JdAAAACXBIWXMAAB7CAAAewgFu0HU+AAAgAElEQVR4nOy9e5QjZZ3//36eqkpSne5Od/reE4EdYbg4HIHBFRhvKF5QERRFzoGZFRDX488bHjjrlzkisCoXXfHuKrrrwhyXRY+IIIoKCpwBhosgAoM63NOX9CWddLpTSaqe5/n9UUl1Op1OJ91JJz18XmfOnHSlUvnkU/XcPs/nwpRSIAiCIAiCIAiCIAiCqAe82QIQBEEQBEEQBEEQBHHgQIYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG2RoIAiCIAiCIAiCIAiibpChgSAIgiAIgiAIgiCIukGGBoIgCIIgCIIgCIIg6gYZGgiCIAiCIAiCIAiCqBtkaCAIgiAIgiAIgiAIom6QoYEgCIIgCIIgCIIgiLpBhgaCIAiCIAiCIAiCIOoGGRoIgiAIgiAIgiAIgqgbZGggCIIgCIIgCIIgCKJukKGBIAiCIAiCIAiCIIi6QYYGgiAIgiAIgiAIgiDqBhkaCIIgCIIgCIIgCIKoG3qzBdh4jIyMjI+PN+vbbdvWNI3zVrQQKaW814yxJkpSgVwup+s6KXDV5HI5wzBaUzxS4BppfQUqpWzbJgWuGlLgGnEV6PP5mi1IeUiBa6T1FSildByHFLhqpJRCCMM'..b'gI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAIHONGTMmq3DZ2dm1a9fu1KnTD3/4w7lz5x7wFbp27RpNLoVqBw4cGL3Xgw8+WPD6jh07ivhT5ObmNmnSpFevXvfff/+CBQtKoU4AACghAncAACirEonEhg0bZs+e/fjjj7dv3/6ee+5JJBLpLuqQ7dmzZ+nSpVOmTLnrrruOP/74m2++efPmzekuCgAAUlEh3QUAAAAHV6tWrY4dOxa8kkgk1q1bt3LlyjVr1kRf3nfffbm5uXfffXeaaiyWk08+uUKF//4zJPrMYMmSJevXrw8h7N279ze/+c2UKVPeeuutOnXqpK9MAABIhcAdAADKgC5duvzzn//c/3oikZg8efLw4cNnzpwZQrjvvvuGDBnSrFmz5IRrrrmmb9++pVfowYwbN65WrVr7XMzPz582bdqvfvWr//3f/w0hTJs2rV+/fhMnTszJyUlHjQAAkCJHygAAQBmWlZXVu3fvcePGHXXUUSGE3bt3v/TSSwUn3HjjjT//+c9//vOfp6nAYsnOzj7xxBNfeuml5557Ljs7O4Tw3nvv/fa3v013XQAAcGgE7gAAUOY1bNiwX79+0XjOnDkpvMKCBQv+9Kc/Pfjgg88888zkyZN37doVa4HFdeWVVyaPxBk5cuSOHTvSUgYAAKRG4A4AAOVBq1atosE+z03t1atXVlZWVlZWwYsDBw7MysqqX79+CGH16tUXXHBBy5Ytv/e97915553XXHNN796927Zt+/rrr5da8QXdcccdDRs2DCGsXbt27NixaakBAABSI3AHAIDy4LPPPosGzZs3L/6qFStWdOvW7Y033gghFDwwfeHChQMGDBg/fny8RRZHpUqVLr/88micrtAfAABSI3AHAIAyb+XKlePGjYvGl112WTFX7d27d/DgwYsXL77wwgsnTZq0adOmTZs2vfbaa9EzVxOJxNChQ0uq4iIln/I6derUtBQAAACpEbgDAEDZ9v777/fr12/VqlUhhFtuueX4448v5sI1a9ZMmDDhlltueeWVV3r16lWlSpXq1av379//rbfeqly5cghhwYIFa9asKcHSC9GxY8dosHjx4g0bNpR+AQAAkJoK6S4AAAA4uBkzZvTp06fglUQisX79+hUrVqxcuTKEkJOT86Mf/ej+++8/pJdt0KDByJEjs7O/sRGnRYsWZ511VnScy/z584844ojDLv/Q1KlTp1KlStETU9euXVurVq1SLgAAAFIjcAcAgDJg/fr177zzThETevTocdVVV+0TnR/UjTfeGG1m38dxxx0XDfLz8w/pBeNSs2bNKHBfv359WgoAAIAUOFIGAADKgylTprRt2/a22247pIi8ffv2B7xeoUKmbM3JyspKdwkAAFBcAncAACgDzjzzzMSBbN26ddasWSNGjMjNzc3Pz//lL385bNiw4r9s9HzUDLRp06ZoULt27fRWAgAAxSdwBwCAMqxKlSodO3a8995733jjjejK6NGjZ8+eXczl1atXL7HSUrd+/frt27dH47p166a3GAAAKD6BOwAAlAdnnXXWhRdeGI2ff/759BZzmGbNmhUNmjZtWrNmzfQWAwAAxSdwBwCAcqJnz57RYNGiRemt5DC99dZb0aB79+7prQQAAA6JwB0AAMqJ5PkwmzdvTm8lh2Pnzp3JHfr9+/dPbzEAAHBIBO4AAFBOJE9iadKkSXorORwPPvjg8uXLQwh169a95JJL0l0OAAAcAoE7AACUB1988UVyY3ifPn3SW0zKxowZ87Of/Swa33333RUrVkxvPQAAcEgE7gAAUOa99957ffv23b59ewihUaNGF198cborOjSJRGLmzJlDhgy54oor8vPzQwi9evX6wQ9+kO66AADg0FRIdwEAAMDBzZgx44D71rdt27Zw4cKvv/46+jIrK+sPf/hDpUqVSre6Q3DhhRfm5uYmv0wkEps2bVq8ePHq1auTF0888cTXX389JycnHQUCAEDqBO4AAFAGrF+//p133il6TpUqVZ577rlzzjmndEpKzcSJE4u4m5OT84Mf/OC+++5LPgAWAADKEIE7AACUbTVr1mzWrFnfvn1/+MMfNmjQYJ+711xzzf5b4wcNGtSuXbsQQq1atQ74mn369Im2yR999NElUPI3VKhQoV69esccc8y555773e9+97jjjivpdwQAgBKSlUgk0l0DAABQHkyePHnp0qUhhA4dOrRp0ybd5QAAQGkTuAMAAAAAQAyy010AAAAAAACUBwJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIgcAdAAAAAABiIHAHAAAAAIAYCNwBAAAAACAGAncAAAAAAIiBwB0AAAAAAGIgcAcAAAAAgBgI3AEAAAAAIAYCdwAAAAAAiIHAHQAAAAAAYiBwBwAAAACAGAjcAQAAAAAgBgJ3AAAAAACIwf8HUOoHNKnhlKkAAAAASUVORK5CYII=" title="plot of chunk unnamed-chunk-11" alt="plot of chunk unnamed-chunk-11" width="750px" style="display: block; margin: auto;" /></p>\n+\n+<p>The plot shows where the anomalies occured the most. The x-axis scale is complementary to the one of the signal acquisition plot. </p>\n+\n+<h5>More info on the anomalies detected in the dynamic range check:</h5>\n+\n+<p>for each channel, The table shows the number of events that did not pass the dynamic range check:</p>\n+\n+<pre><code>## lower_range upper_range\n+## FSC-H 0 217\n+## SSC-H 0 4990\n+## FL1-H 0 0\n+## FL2-H 0 0\n+## FL3-H 0 0\n+## FL4-H 0 0\n+## total_SUM 0 5207\n+## total_UNIQUE 0 5022\n+</code></pre>\n+\n+</body>\n+\n+</html>\n' |
b |
diff -r 60aa5e56531a -r 34397a84faf1 test-data/withsfsc/hqdata_sfsc.fcs |
b |
Binary file test-data/withsfsc/hqdata_sfsc.fcs has changed |