Expression pattern images are some of the most information-rich data housed at model organism databases. They are time consuming to generate. They are time consuming to collect and annotate.
Moreover, copyright restrictions mean that many images remain captive at publisher’s websites, unable to be placed within the rich intellectual framework that exists at sites like WormBase and FlyBase. How many near identical images are stashed away in darkened confocal rooms? How many possibly informative rejects are tossed out due to the puny limitations of publication? Gabijillions?
I wanted to build an easy to use expression pattern image resource that got around these limitations. The system would allow people to add their own photos for display within a broader intellectual context, comment on photos, add tags, search for a variety of criteria, etc. The problem? Developer cycles. This is a lower than low priority project and there aren’t enough hands to go around as it is.
I started wondering if I could leverage a site like Flickr to create a Poor Man’s Expression Pattern Database. Flickr is a key exemplar for Web 2.0 community style features. Tags, contacts, comments, an API.
I took approximately 6000 public, highly curated expression pattern images from WormBase. We display these on Expression Pattern Summary pages.
I wrote a script exploiting Flickr’s REST-like API to programmatically upload images.
For each image, the script added a text description of the expression pattern with hyperlinks back to WormBase genes, anatomy ontology terms, gene ontology terms, strains, transgenes, etc. Images were posted to a dedicated user named, ahem, wormbase.
Tags were added to each image corresponding to the unique gene ID, public gene names, and anatomy ontology terms.
Here’s an example image on Flickr.
I wasn’t happy with the current Perl interfaces to the Flickr API so I wrote my own (Flickr::API::Simple; note that I haven’t released this to CPAN yet and probably never will).
To pull the correct images, tags, and comments from Flickr, individual expression pattern pages levy a query for images at Flickr from the wormbase user with tags corresponding to either the expression pattern ID or the current gene being displayed. Information is displayed inline on the page but served from Flickr.
Since the goal of this project is to allow *anyone* with images to post them for display at WormBase, we needed a open account or group to do that. But since people are nuts, I wanted to constrain it a bit to people who I knew. Attribution is critical. To do this, I created an invite-only group on Flickr called, erm, WormBase.
If a user has an image that they would like to share on the WormBase site proper, all they need to do is:
* Upload the image to their account
* Post the image to the WormBase group on Flickr
* Tag the image with the unique gene ID
These images will automatically be displayed on WormBase Expression Pattern pages using the exact mechanism as above: Expression Pattern pages search Flickr for images belonging to the WormBase group (instead of user), tagged with the current gene.
That’s it! A Poor Man’s Expression Pattern database with integration and cross links to a public genomics repository.
We get tagging, searching (clustered tag analysis), social features like commenting and blog integration for (nearly) free. We don’t have to spend six months time in development.
Cost: $24 bucks a year for a Flickr Pro account. This gives 24 GB of storage. Ridiculous. No electricty costs. No sysadmin. No maintenance. $24 dollars or 6 pints.
Time: about 2 hours of programming time to figure out the Flickr REST-like API. About 2 days of running time to upload images (I’m on a slow link).
{ 2 comments… read them below or add one }
Maybe you should consider formatting your tags using machine tags.
A tag as ifg-1 has not much meaning in itself, but a tag in the format wormbase:gene=ifg-1 has already a lot of semantic meaning, allows for other machine tags in the same style, like wormbase:strain=UL912 or flybase:gene=CG42321, and allows for more precise querrying via the API.
Jeroen -
Great suggestion! I’ll update our tags to reflect this.