Why?
Why was CellMC written?
CellMC began life as a set of Makefiles and XSL-T transformations to make it easier to test different models on the Sony PlayStation 3 (PS3).
The motivation for implementing SSA on the PS3 was to evaluate Cell/BE as a potentially cost-effective and energy-efficient platform for SSA.
The motivation for producing yet another implementation of SSA on PC was to provide a fair basis for comparison, since it is plainly invalid to compare a micro-optimized code on an exotic platform (be it Cell/BE, GPU, or FPGA) to a very naïve implementation on a PC.
Why isn't there a real Microsoft Windows version?
CellMC compiles and runs on Microsoft Windows under Cygwin (v1.7 beta).
There are no plans to produce a Windows version that does not depend on a Unix emulation layer because:
- Microsoft Windows doesn't run on Cell/BE
- Microsoft Windows isn't used much in large-scale scientific computing
- Microsoft Windows is so different from Linux or OS-X that it would be a lot of effort for little or no gain
Why is compiling from source recommended?
Because CellMC works by using gcc, there is little or nothing to be gained by installing a binary, since the compiler is needed at runtime in any case. The Autotools make compilation and installation very simple, but offer the configure script the opportunity to check dependencies in a manner that doesn't depend on a particular packaging scheme (e.g. RPM, DEB).
As I move around, my access to various systems changes, so I can't guarantee that I'll always have access to all of the nominally supported platforms for test and package generation.
Why SBML L2V3 not L1V2?
Unfortunately, SBML L2V3 is not a superset of L1V2, and they have a few incompatible features. CellMC does nothing that couldn't be done with L1V2, so the main reason for using L2V3 is its use of MathML to express formulas in kineticLaw elements (much easier to handle in XSL-T than the formula attribute, which we'd have to parse for numeric literals to replace with vectorized equivalents). Secondly, L2 provides modifier elements, rather than having modifiers (e.g. catalysts) appearing on both sides of the reaction, which is rather painful to handle properly in XSL-T or, if treated naïvely, leads to unnecessary operations (admittedly, these might be optimized away by the compiler). Finally, L2 simply has more features to add — we're unlikely to run into the limitations of L2 any time soon.
The distribution now includes an XSL-T transformation that can down-convert our SBML L2V3 models to L1V2. We don't claim that it's universally useful, but it appears to work for our models.