FLOW CYTOMETRY – DATA COMPRESSION
A.E. Bras PhD Student
Erasmus University, Rotterdam, the Netherlands Flow Cytometry Flow Cytometry Flow Cytometry Flow Cytometry Flow Cytometry Flow Cytometry Older Systems Older Systems Newer Systems Newer Systems Newer Systems Newer Systems
FLOATING POINT DATA ------Newer Systems
FLOATING POINT DATA ------
MILLIONS ------Storage
FLOATING POINT DATA ------
MILLIONS ------Storage
.FCS
FLOATING POINT DATA ------
MILLIONS ------Storage
FLOW CYTOMETRY STRANDARD .FCS
FLOATING POINT DATA ------
MILLIONS ------Storage
FLOW CYTOMETRY STRANDARD .FCS
PRO WIDELEY USED FLOATING POINT DATA ------
MILLIONS ------Storage
FLOW CYTOMETRY STRANDARD .FCS
PRO WIDELEY USED FLOATING POINT DATA ------CON ------NO COMPRESSION ------
MILLIONS ------Lossless Compression
.FCS Lossless Compression
.FCS
≈ 70 % .ZIP Lossless Compression
.FCS
≈ 70 % .ZIP
Better alternative? Lossless Compression - Benchmark Lossless Compression - Benchmark
.FCS
167.131 Lossless Compression Compression Lossless - Benchmark 167.131 .FCS RANDOM Lossless Compression Compression Lossless - Benchmark 167.131 .FCS RANDOM Lossless Compression Compression Lossless ... LZ4HC LZO1B LZO2A DENSITY LIZARD LZSSE2 LZO1Y LZSSE8 LZO1Z LZO1X UCL_NRV2B UCL_NRV2E UCL_NRV2D ZLIB CRUSH LZFSE LIBDEFLATE ZLING XPACK ZSTD TORNADO BROTLI CSC LZHAM GLZA XZ LZMA LZIP CODEC 0.695 0.692 0.690 0.676 0.665 0.637 0.626 0.622 0.598 0.590 0.568 0.558 0.533 0.533 0.533 ... 0.777 0.775 0.774 0.771 0.770 0.768 0.768 0.758 0.757 0.755 0.734 0.725 0.725 RATIO - Benchmark 167.131 .FCS RANDOM ... ZLIBH FASTAC SUBOTIN LZG LZSSE4 LZ4 LZSSE2 BSCQLFC LZSSE8 DOBOZ BRIEFLZ ZLIB CRUSH LZFSE LIBDEFLATE ZOPFLI ZSTD XPACK BALZ CSC BZIP2 BROTLI LZHAM FLZMA2 LZMA LZIP BCM ZPAQ CODEC ... 0.823 0.819 0.819 0.803 0.781 0.777 0.768 0.763 0.758 0.750 0.727 0.695 0.692 0.690 0.676 0.674 0.625 0.612 0.598 0.590 0.580 0.571 0.569 0.539 0.533 0.533 0.510 0.460 RATIO Lossless Compression Compression Lossless ... LZ4HC LZO1B LZO2A DENSITY LIZARD LZSSE2 LZO1Y LZSSE8 LZO1Z LZO1X UCL_NRV2B UCL_NRV2E UCL_NRV2D ZLIB CRUSH LZFSE LIBDEFLATE ZLING XPACK ZSTD TORNADO BROTLI CSC LZHAM GLZA XZ LZMA LZIP CODEC 0.695 0.692 0.690 0.676 0.665 0.637 0.626 0.622 0.598 0.590 0.568 0.558 0.533 0.533 0.533 ... 0.777 0.775 0.774 0.771 0.770 0.768 0.768 0.758 0.757 0.755 0.734 0.725 0.725 RATIO - Benchmark 167.131 .FCS RANDOM ... ZLIBH FASTAC SUBOTIN LZG LZSSE4 LZ4 LZSSE2 BSCQLFC LZSSE8 DOBOZ BRIEFLZ ZLIB CRUSH LZFSE LIBDEFLATE ZOPFLI ZSTD XPACK BALZ CSC BZIP2 BROTLI LZHAM FLZMA2 LZMA LZIP BCM ZPAQ CODEC ... 0.823 0.819 0.819 0.803 0.781 0.777 0.768 0.763 0.758 0.750 0.727 0.695 0.692 0.690 0.676 0.674 0.625 0.612 0.598 0.590 0.580 0.571 0.569 0.539 0.533 0.533 0.510 0.460 RATIO Lossless Compression - Benchmark
CODEC RATIO CODEC RATIO LZIP 0.533 ZPAQ 0.460 LZMA 0.533 BCM 0.510 XZ 0.533 LZIP 0.533 GLZA 0.558 LZMA 0.533 LZHAM 0.568 FLZMA2 0.539 CSC 0.590 LZHAM 0.569 BROTLI 0.598 BROTLI 0.571 TORNADO 0.622 BZIP2 0.580 ZSTD 0.626 CSC 0.590 XPACK 0.637 BALZ 0.598 ZLING 0.665 XPACK 0.612 LIBDEFLATE 0.676 ZSTD 0.625 LZFSE 0.690 ZOPFLI 0.674 CRUSH 0.692 LIBDEFLATE 0.676 ZLIB 0.695 LZFSE 0.690 UCL_NRV2D 0.725 CRUSH 0.692 UCL_NRV2E 0.725 ZLIB 0.695 UCL_NRV2B 0.734 BRIEFLZ 0.727 LZO1X 0.755 DOBOZ 0.750 LZO1Z 0.757 LZSSE8 0.758 LZSSE8 0.758 BSCQLFC 0.763 LZO1Y 0.768 LZSSE2 0.768 LZSSE2 0.768 LZ4 0.777 LIZARD 0.770 LZSSE4 0.781 DENSITY 0.771 LZG 0.803 LZO2A 0.774 .FCS SUBOTIN 0.819 LZO1B 0.775 FASTAC 0.819 LZ4HC 0.777 ZLIBH 0.823 ...... 167.131 ...... Lossless Compression - Benchmark Lossless Compression - Benchmark
≈ 0.45 Implementation in R Implementation in R
base::memCompress(type="XZ") Implementation in R
base::memCompress(type="XZ") Bioconductor - flowCore Bioconductor - flowCore Bioconductor - flowCore
C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS
C:\output.fcs Bioconductor - flowCore
base::readBin C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS
C:\output.fcs Bioconductor - flowCore
base::readBin C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS
base::writeBin C:\output.fcs Bioconductor - flowCore
base::readBin C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS
base::memCompress base::writeBin C:\output.fcs Bioconductor - flowCore
base::readBin C:\input.fcs base::memDecompress
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS
base::memCompress base::writeBin C:\output.fcs Bioconductor - flowCore
C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS .TAR.GZ
C:\output.fcs Bioconductor - flowCore
C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS .TAR.GZ
C:\output.fcs Bioconductor - flowCore
C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS .TAR.GZ
C:\output.fcs Bioconductor - flowCore
C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS .FCS.XZ
C:\output.fcs Bioconductor - flowCore
C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS .FCS.XZ
C:\output.fcs Bioconductor - flowCore
C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS .FCS.XZ
C:\output.fcs Bioconductor - flowCore
C:\input.fcs
flowCore::read.FCS flowSom::FlowSOM flowCore::write.FCS .FCS.XZ
C:\output.fcs Bioconductor – flowCore - Pipelines Bioconductor – flowCore - Pipeline
C:\input\01.fcs C:\input\02.fcs
flowCore::read.flowSet flowCore::write.flowSet
C:\output\01.fcs C:\output\02.fcs Bioconductor – flowCore - Pipeline C:\input.zip base::unzip
C:\input\01.fcs C:\input\02.fcs
flowCore::read.flowSet flowCore::write.flowSet
C:\output\01.fcs C:\output\02.fcs Bioconductor – flowCore - Pipeline C:\input.zip base::unzip
C:\input\01.fcs C:\input\02.fcs
flowCore::read.flowSet flowCore::write.flowSet
C:\output\01.fcs C:\output\02.fcs
base::zip
C:\output.zip Bioconductor – flowCore - Pipeline C:\input.zip base::unzip
C:\input\01.fcs C:\input\02.fcs
flowCore::read.flowSet flowCore::write.flowSet
C:\output\01.fcs C:\output\02.fcs
base::zip
C:\output.zip Bioconductor – flowCore - Pipeline C:\input.zip base::unzip
C:\input\01.fcs C:\input\02.fcs
flowCore::read.flowSet ARCHIVAL flowCore::write.flowSet CYTOMETRY STANDARD C:\output\01.fcs C:\output\02.fcs .ACS base::zip C:\output.zip Bioconductor – flowCore - Pipeline
ARCHIVAL CYTOMETRY = STANDARD .ACS .ZIP Bioconductor – flowCore - Pipeline
ARCHIVAL CYTOMETRY = STANDARD .FCS .FCS .FCS .ACS .ZIP Bioconductor – flowCore - Pipeline
.TXT ARCHIVAL CYTOMETRY = STANDARD .FCS .FCS .FCS .ACS .ZIP Bioconductor – flowCore - Pipeline C:\input.zip base::unzip
C:\input\01.fcs C:\input\01.fcs
flowCore::read.flowSet flowCore::write.flowSet
C:\output\01.fcs C:\output\01.fcs
base::zip
C:\output.zip Bioconductor – flowCore - Pipeline
C:\input.acs
flowCore::read.flowSet flowCore::write.flowSet
C:\output.acs Bioconductor – flowCore - Pipeline
base::unzip C:\input.acs flowCore::read.flowSet flowCore::write.flowSet
C:\output.acs Bioconductor – flowCore - Pipeline
base::unzip C:\input.acs flowCore::read.flowSet flowCore::write.flowSet
base::zip C:\output.acs C:\input.fcs.xz flowCore::read.FCS flowCore::write.FCS
C:\output.fcs.xz
C:\input.acs flowCore::read.flowSet flowCore::write.flowSet
C:\output.acs C:\input.fcs.xz flowCore::read.FCS PRO flowCore::write.FCS PERFORMANCE
C:\output.fcs.xz
C:\input.acs flowCore::read.flowSet flowCore::write.flowSet
C:\output.acs C:\input.fcs.xz flowCore::read.FCS PRO CON flowCore::write.FCS PERFORMANCE COMPATIBILITY
C:\output.fcs.xz
C:\input.acs flowCore::read.flowSet flowCore::write.flowSet
C:\output.acs C:\input.fcs.xz flowCore::read.FCS PRO CON flowCore::write.FCS PERFORMANCE COMPATIBILITY
C:\output.fcs.xz
C:\input.acs flowCore::read.flowSet PRO flowCore::write.flowSet COMPATIBILITY
C:\output.acs C:\input.fcs.xz flowCore::read.FCS PRO CON flowCore::write.FCS PERFORMANCE COMPATIBILITY
C:\output.fcs.xz
C:\input.acs flowCore::read.flowSet PRO CON flowCore::write.flowSet COMPATIBILITY PERFORMANCE
C:\output.acs C:\input.fcs.xz flowCore::read.FCS PRO CON flowCore::write.FCS PERFORMANCE COMPATIBILITY EASY C:\output.fcs.xz
C:\input.acs flowCore::read.flowSet PRO CON flowCore::write.flowSet COMPATIBILITY PERFORMANCE EASY C:\output.acs C:\input.fcs.xz flowCore::read.FCS PRO CON flowCore::write.FCS PERFORMANCE COMPATIBILITY EASY C:\output.fcs.xz BENIFIT
C:\input.acs flowCore::read.flowSet PRO CON flowCore::write.flowSet COMPATIBILITY PERFORMANCE EASY C:\output.acs BENIFIT Questions?
Lossless Compression of Cytometric Data Anne E. Bras & Vincent H. J. van der Velden