In Bioconductor, the core infrastructure for loading and representing flow cytometry data is the flowCore package. It contains some very useful structures, most notably the flowFrame and flowSet classes, as well as read.FCS, which loads the (somewhat complicated, binary) FCS file format.
However, at some stage flowCore gained functionality for performing automated gating, and a dependency on the feature package from CRAN. Feature depends on the tcltk C++ libraries, which in turn depend on C++ libraries for a windowing system (X11 on *nix). This can make compiling flowCore a massive pain on a headless server or compute cluster. It can also be somewhat painful to more naive users on, say, Ubuntu, who would have to install a number of development header packages. I believe this would also be a problem on OSX. I wrote about this issue on the list about a year ago, mostly as an aside. But I am now in the position of reviewing a new flow cytometry package, where the author does not want to use flowCore to represent flow cytometry data. Their reasoning is that their package is very basic, and they don't want to create complicated dependencies and installation issues for their end users. I'm at least halfway inclined to agree, but the guidelines do state that packages should "re-use existing S4 classes and generics where possible". And so I have a dilemma, which has two likely solutions: 1. The maintainers of flowCore change the package so it no longer has Byzantine dependencies that include a windowing system. 2. The developer of the new package submits to CRAN instead. I would very much prefer the first solution (not least of all because it would make my and other flowCore users' lives much easier). An easy way of handling it would be to remove the density gating functionality in flowCore, which I believe is the culprit in terms of dependencies, and which certainly goes beyond flowCore's purpose of providing "vasic structures for flow cytometry data" and into the realm of analysis. This density gating would probably exist better in its own package. This could be tricky, given that flowCore has over 30 downstream packages now, but I suspect that few if any of them actually use the density gating functionality, and that those which do could be identified and their own dependencies changed concurrently with splitting flowCore up. _______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel