Sneak preview: MMDS lookup of assays via OpenPHACTS

openphacts_assay1One of the features that’s slated for the next major version of the Mobile Molecular DataSheet (MMDS) is integration with OpenPHACTS pharmacological assay data. The feature is not quite ready yet, but the user interface is taking form, and is almost functional. The basic idea is that you start with a datasheet, with some number of molecules. Then, select the assay lookup feature, and a webservice intermediary cross references each of the molecular structures to the OpenPHACTS service, to pull out every available pharmacology datum, in a form that’s ready to insert into your data sheet as a new column. Looking up the data is quite easy, since OpenPHACTS is preassembled and has a very no-nonsense API, but reconciling a large number of datapoints into one or several columns of numbers is an interesting user interface workflow challenge.

Right now the intermediate webservice prototype is functional, as are most of the features in MMDS used to access the data. The screenshot shown above is what you see before going fishing for content: there is the obligatory warning about sending your data over an unsecured internet connection, which is a problem if your molecular structures are valuable enough that you can’t afford to take the risk of getting them snooped. Because OpenPHACTS is closely integrated with ChemSpider, the easiest way to find a molecule reference is to search ChemSpider first, then pass on the ID codes to the OpenPHACTS API, which means that a total of 3 services are involved in each operation.

Once the middleware has a ChemSpider ID for each molecule, the pharmacological data for each is pulled down. Some very well studied molecules (e.g. caffeine or aspirin) have literally thousands of recorded properties that are accumulated, but most of them can be filtered out by a simple whitelist of units and measurement types (e.g. IC50 and nM is good, but Fubars per Wotsits don’t make the cut). Most of what passes through are measurements of biological properties, often binding affinities, with associated assay information, such as target name, description, organism assayed against, etc.

The basic premise of this feature is that you, the user, would like to annotate your data with at least one extra column, containing data such as activity against a target, ability to kill a microbe, measured log P, etc. As we all know, not all measurements are created equal, nor are they the same if they are equally good; but the requirements vary, too. If you are starting out with a structure-activity campaign, and you just want some rough reference points for what response data is out there, you might be willing to match up data from various studies quite promiscuously, e.g. maybe combine rat + human data, in vivo with in vitro, IC50 and Ki, etc. Or if you are supplementing your own carefully measured data, you may prefer to be very choosy, and only bring in assay data where the measurement technique is consistent with yours.

When the webservice operation is complete, the results screen looks something like this, on an iPad:


On the tablet form factor, the interface uses a 2-column layout, both of which are scrollable: on the left is shown a control panel at the beginning, allowing the list of assays to be filtered or sorted. On the right are the assays that came down. The display style is not finalised, but the buttons of interest are called Assign: hitting this prompts to enter a column name (or reuse an existing one). The assay may include multiple measurements, and multiple compounds; each of them will be moved over into the assigned column, and the display will take a slightly different form:


The assigned assays have been removed from the right hand side, and for each one, a new block is shown on the left, underneath the control section: the assignments can be undone by removing them. Underneath these are shown the molecules, and for each one, the corresponding assignments thus far.

In this way, the user can pick and choose which assays to bring in, and how to reconcile them together into specific columns. The intention is to make it as easy as possible to scroll down the list, find the things of interest, meld them in, review the status, then hit the import button.

It will take a bit more work to get it to my own liking for the so-called minimum viable feature release, and no doubt a few more iterations in the hands of users before it starts to exert its full potential. Keep an eye out for future releases, or more interim blog posts on the subject.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s