Thursday 25 July 2013

So shall we be social?

In case you are upset that I ignore your LinkedIn requests, don't follow you back on G+, do not RT your Ts, won't answer your Open Babel emails, mark your blog comments as spam, throw your letters into the recycling bin, and never buy you flowers, let me explain:

  • If we have never met in person, I will ignore your LinkedIn request. I use LinkedIn to remember the names/faces/bios of people I've met.
  • I only follow people with public posts on Google Plus. Non-public posts cannot be reshared publicly, so it's just a pain to follow people who only generate content for Google.
  • I don't log into Twitter very often.
  • Anyone who emails me personally (even if I know you) with questions about Open Babel is politely requested to resend to the mailing list. Open Babel has a lot of users and I don't scale.
  • If I spammed your blog comment by mistake, get in touch. Like, you know, leaving a non-spammy comment below.
  • Any communications from the ACS marked Important, Very Important, Your Eyes Only, This Week Only, or Find-a-Member-and-Get-a-Periodic-Table-Thing will automatically be recycled without opening.

None of these social media requests upset me though - don't get me wrong. I'm just trying to keep my digital life manageable.

A new home for Linux4Chemistry - Part II

Back in February, I was looking for someone to take over Linux4Chemistry. Thanks to those of you who got in touch.

I'm happy to announce that Riccardo Vianello and Gianluca Sforna have stepped forward to take over the site, and have established a new home for it at

I wish them all the best. Good luck guys!

Saturday 20 July 2013

Cheminformatics in Science Fiction

Ever read a science fiction story, or indeed any story, that featured cheminformatics as a major plot point?

I've just come across a short story by Asimov that involves a murder mystery in a chemistry library where the Beilstein catalogue plays a major role. Stricly speaking this isn't science fiction, but let's go with science-based fiction. The story in question is Asimov's "What's in a name?". Since it's a mystery story, better not to google the plot unless you like spoilers. It's available as part of a collection, Asimov's Mysteries.

(And a shout out to last year's Alpha Shock by Murcko and Walters - there's a bit of cheminformatics in there too.)

Sunday 14 July 2013

Using Open Babel to package chemistry software

Let's suppose you want to write a piece of C++ code that manipulates molecules to do something or other, and generates an output, either more molecules (or indeed the original molecules filtered), some descriptors, or some text (a report, or table, or something).

I'm going to propose that you should write or adapt this code as an Open Babel plugin. I've just done this for Confab, the conformer generator I wrote some time back.

If you do this, you don't need to consider how to put together the build infrastructure, write the code for reading/writing file formats, or for handling command-line options and arguments (in fact, you get a lot of additional functionality for free). More generally, the software will compile cross-platform, be included in every major Linux distribution and be available to a very large number of people. It will also have a lifetime beyond the end of the grant that funded it.

I'm by no means the first to see the advantages of this. For example, Jiahao Chen added the QTPIE charge model he developed as one of Open Babel's charge model plugins.

Coming back to Confab, the original code was written as a modified version of Open Babel. I don't quite know what I was thinking but I meant to integrate it properly with the main Open Babel code at some point. In the end, the required push was provided by David Hall, who started off this integration early this year.

If you want to try it out now, clone the development version of Open Babel on github. The "--confab" option to obabel will invoke the Confab operation and "-oconfabreport" will replace calcrmsd in the original release. For command-line help on either, use "obabel -L confab" or " obabel -L confabreport".

Image credit: Plug In by Sebastian Anthony (Mr Seb) on Flickr (CC-BY ND)