CellProfiler, Embedded Platforms, FPGAs

Hello All,

I’m working on Personalized Health Monitoring (PHM) systems and I’m interested in screening red blood cells for diseases on portable platforms. I got introduced to CellProfiler a few weeks ago and I am exploring the possibility of using it on such a platform (to be implemented on an FPGA- most likely on a Xilinx FPGA). I would be glad to have any suggestions, ideas and/or links to any relevant articles. Thank you in anticipation.

Hi olufemi,
We’ve talked to others about using CellProfiler on embedded platforms and I think we see part of our mission as aiding these efforts. CellProfiler is designed to run on a computer with a reasonable amount of memory and disk storage and its general-purpose nature has led to the inclusion of a lot of libraries (for instance those that use pixel-based machine learning) that are used in just a few places and a lot of others (for instance Bio-formats) that could be replaced with something simpler for an application dedicated to a single assay.

Having said that, the algorithms that we’ve written are BSD-licensed and CellProfiler is a good tool for prototyping an analysis. Python is a small language that’s good for embedding. One strategy might be to create a pipeline that can work with your images, examine the modules being called and string the algorithms run by the modules together to create a program dedicated to your analysis. It might also be possible to call the pipeline runner in a headless mode and run your pipeline directly without a user interface and without many of the packages in full-blown CellProfiler.

I worked with FPGAs many years ago - I’m guessing that at this point, you can find open-source CPU cores that fit on an FPGA along with support for compiling with GCC. Theoretically, it should be possible to compile Python, Numpy and Scipy (the core components that CellProfiler depends on) for this sort of platform, but it will be difficult and you may run into problems that you’re the first to encounter. FPGAs would offer some ability to craft faster operations, for example for array operations, but much of CellProfiler’s code is typical linear computer logic best suited for a general-purpose CPU so it might be good to weigh the flexibility of an FPGA against the lesser development cost of using components with a larger user community and a well-tested set of software packages. An alternate direction would be to use a C / C++ imaging library such as ITK. ITK should have most of the pieces that you’d require to implement your assay and the resulting program could be compiled using a single toolchain. This is probably your most lightweight option and it avoids having to deal with some of the implicit assumptions in Python’s design (that you have an operating system / disk / console, etc.)

Good luck, and feel free to get back to us if you need further help.

–Lee

Hi Lee, thanks for your detailed reply! Like you alluded, the solution I have in mind will be targeted for a single assay and since it will be for a single patient and very few images, it will not have the traditional high storage requirements. I will explore using CellProfiler on a soft-core MicroBlaze processor and will also explore the other options you suggested. I will let you know if I run into any trouble. Thanks again.

– Femi