cellPACK has been around since 2012 — originally Graham Johnson and Ludovic Autin's tool for translating David Goodsell's mesoscale paintings into 3D models. It was useful for creating visualizations, but was time consuming to update for all the different software programs. This month we took the first big step toward fixing that.

cellPACK was built as a plugin for 3D animation software, such as Cinema 4D and Maya. Some plugins were stale; some features were broken; the underlying Python depended on packages that had been deprecated for years. The code wasn't open source in any meaningful sense, and it wasn't up to the Allen Institute engineering standards.

Re-housing the engine

Over the last few months Saurabh Mogre, Ryan Spangler, and I have been doing the slow work of bringing cellPACK out of its plugin shell. We pulled the packing algorithm into a Python package template so the code can run independent of any 3D animation software. We brought it under version control, wrote documentation, and aligned it with AICS code standards. We added a converter from cellPACK output to simulariumio, which means cellPACK models can now be opened directly in the Simularium web viewer with no install, and we added Simularium output as a first-class export target from cellPACK itself.

cellPACK is no longer just an illustration tool for artists — it can be the spatial-initialization layer for actual biological simulations. We're already integrating with the vivarium multi-modal simulation framework (Eran Agmon, Ryan Spangler et al., Bioinformatics 38-7, 2022). The next post will be about pointing the modernized engine at a real question: are peroxisomes in hiPS cells randomly distributed, or do they follow some spatial rule? But none of that was possible until we got the engine running outside the plugin.