RGLab / CytoML

A GatingML Interface for Cross Platform Cytometry Data Sharing
GNU Affero General Public License v3.0
30 stars 14 forks source link

channel inconsistency error in flowjo_to_gatingset #98

Closed masato-ogishi closed 4 years ago

masato-ogishi commented 4 years ago

Hi,

I encountered an error when I ran something like below when the underlying FCS files contain inconsistent sets of channels. For example, "Found channel inconsistency across samples. 'SampleID' is missing from XXX.fcs". gs <- CytoML::flowjo_to_gatingset( ws, path=path, name="All Samples", keywords=k, includeGates=T )

Before ver 2.0.0, I did not get the same error most likely because the underlying code relies on ncdfFlow, in which only a consistent subset of channels is imported.

Can you kindly fix the issue, or simply provide an option to use the previous ncdfFlow-based importation??

Thanks a lot!

Masato

mikejiang commented 4 years ago

The recommended workflow is to clean up the inconsistency within FCS files with dedicated qc tool https://github.com/RGLab/cytoqc before run the flowJo parser. cytoqc is pretty straightforward and self-explanatory, basically follow the check-->match-->fix 3-step workflow to fix the channel inconsistency and then output the cleaned data through cqc_write_fcs. Please read the package vignette and post questions there in cytoqc repo if you run into any issue with that.

masato-ogishi commented 4 years ago

Thank you for your suggestions. However, since we have multiple batches of large-scale flow and CyTOF datasets and their channel names (or even panel designs) are not always identical, I'd be happy if I can keep the original files and parse them programmatically (focusing only on common channels across files). It is not really nice for me to routinely copy large FCS files (~30GB in total) each time I do meta-analysis with different combinations of panels... In the meantime I wrote a small loop to import one FCS file at a time and later merge the GatingSet objects, but then I encountered another issue, which I posted in issue #99. Thank you for your help in any way!!

mikejiang commented 4 years ago

You can save them as h5 through cqc_write_h5, which can be directly fed to flowJo parser without the extra data copy since h5 files will be created anyway during the parsing. But we will need to add that support to flowjo_to_gatingset, which is tracked by #100

mikejiang commented 4 years ago

addressed by #100