General
Installation
MirkE is a platform-independent Java application using Hibernate, HSQLDB and Colt designed to facilitate common but tedious calculations on spectrophotometric and colormetric data for molecular and cellular biology multiwell assays.
Spectrophotometric assays use absorption or emission of light by a sample at one or more wavelengths to identify the concentration of one or more indicators using a generalized form of the Beer-Lambert law.
Once the concentration of indicator(s) is known at one or more time points, further analysis may be applied to identify % change in concentration; rate constants or other measurements.
Two spectrophotometric metabolic assays that MirkE will be used for are MTT and Alamar Blue. MirkE will also be used for checkerboard assays.
The name 'MirkE' came about more or less by accident.
MirkE started as a simple calculator (called simply 'Alamar Blue Calculator') for a single indicator (Alamar Blue).
Alamar Blue Calculator was written in Objective C and would only run on a Mac but many of the members of the CRI have PCs so I rewrote it in Java ('Alamar Blue Java').
Almost immediately, we wanted to extend Alamar Blue Java to support other reagents, in addition to Alamar Blue, so it became 'Blue Java' then, briefly, BlueJ.
Unfortunately, there was already a Java program (IDE) called BlueJ so when I started writing MirkE, we spent some time considering what the name should be. We finally settled on MirkE because we thought it looked / sounded reasonably good and because it sounds like murky (one definition ~= 'cloudy liquid' (which is what spectrophotometry looks at) and another definition ~= unclear, cloudy or obscure (because MirkE hopes to simplify the unclear / obscure interpretation of spectrophotometric datasets)).
First, the analysis subsystem will have to perform complex queries on the data in memory. An earlier version of MirkE just used a custom class backed by a HashMap to store data but nontrivial selections required a significant amount of development. We could have just used a database, like HSQLDB, alone but Hibernate takes care of a lot of things for us (in particular, object oriented queries (in HQL), and automatic storage and instantiation of generic objects).
Second, eventually we want to be able to save/load MirkE's state. Since we're already using Hibernate to store most objects, implementing persistence is reduced to saving/loading the state of the internal database (there's a bit more to it than that but that's the bulk of it).