moving the lamppost

random musings of a molecular biologist turned code jockey in the era of big data and open science.

Speak, for the Cup of Hemlock is not yet on Your Lips


I am not eager to turn this blog toward religious/athiest discussions. I want it to avoid the distractions that flame wars and endless volleys of “Nu-Uh!!!” and “Ya-hunh!!” inevitably bring. However, this story needs to be told.

It is the horrible story of Bangladeshi atheist blogger Asif Mohiuddin, and how his government has silenced him for “hurting religious beliefs”. He has been detained without formal charges since the 3rd of April, and his blog shutdown. His health is failing, and this is a show of solidarity to him and all other voices that dare to risk their freedom and, as you will see, their very lives to speak what they believe to be the truth.

There has been a call to repost his final entry before being silenced by his government. I am participating. It is an act that symbolizes the futility of governments silencing dissent in this age. The interconnectivity of the internet is, if nothing else, a powerful modern embodiment of the Lernaean Hydra. This is the amplification of the voice they tried to silence. This is the failure of containing the situation. This is more attention and anger being focused on his complaints rather than less. This is what a global distributed network does when a whisper in one tiny corner of its web gets silenced.

That barely noticeable whisper gets 10,000 more voices.


The words that follow are not my own. I am posting a liberally excerpted text from a post by the International Humanist and Ethical Union that gives some background and includes Mohiuddin’s final post titled: Speak, for the Cup of Hemlock is not yet on Your Lips.

Bangladeshi atheist blogger Asif Mohiuddin has been in prison since 3 April for “hurting religious beliefs”.

The formal charges and a trial are still pending. A court order to release him on bail due to deteriorating health has at last been issued, but not yet enacted.

Below, we republish one of Asif’s final blog posts before his imprisonement.


Asif Mohiuddin

The blog was published originally in Bangla at, who have also provided this English translation by Allachalaina. Mukto-Mona describes Asif Mohiuddin as being known “as one of the most outspoken atheist and humanist bloggers of Bangladesh. His writing—which was heavily critical of religious dogma, bigotry and superstition—and his political activism including the Jagannath University protests angered the government, marked the beginning of the threats he received from fundamentalists.”

Published on March 8, 2013 this was his last post at Mukto-Mona Banglablog under the title ... “Speak, for the cup of hemlock is not yet on your lips”. The post contains some graphic images below.


Arthropod Genomics Symposium 2013 – Notre Dame

My notes on talks from the 7th Annual Arthropod Genomics Symposium If you are interested, you can follow live tweets from #13ArthGen.


  1. COMING SOON: links to or embedded versions of the recorded talks for each section. These will be added as soon as I can get the location of where they will be hosted.
  2. My Spelling: Obviously, my spelling is gonna suck on this. Please don’t hold it against me.
  3. Linking to Specific Sections: If you want to link to a specific person’s notes you can use ‘anchor’ notation as illustrated here for Jennifer Brisson:

General Session

Dan Lawson (EBI)

  • Federated curation and hosting of genomes plus standardized best practices and data formats needed for #i5k

Steven “Fringy” Richards (Baylor College of Medicine)

  • ND50 10kb basic bar to reach for good annotation through Maker

Terence Murphy (NCBI)

How to annotate 5000 genomes: lessons from NCBI genome annotation pipeline

Monica Munoz-Torres (Lawrence Berkeley National Laboratory)

Web Apollo web based annotation editing platform

  • first realtime genome collaborative annotation editor on the web
  • MANUAL annotation is NECESSARY not just desirable: without it many downstream experiments will be poisoned
  • democratization of genome assembly and annotation require a new model of collaborative annotation


Fundamentals of Gene Expression: the ‘Central Dogma’ of Molecular Biology


This is an adaptation/update of a post I wrote a long time ago on my other blog Here is the original post in case you would like to read it.

The purpose of this post is to serve as a background foundation for me to point to when I reference certain aspects of gene expression in posts on this blog, especially as related to descriptions in my ‘dissertation’ posts.

The “Dogma” of Gene Expression?

There is a concept in molecular biology that is referred to as “the central dogma”. I do not like this name as I feel that the language is too close to that of religion, but history has firmly cemented its use to describe the concept. In general, it is described as:

Genetic information flows from nucleic acid (DNA and RNA) to nucleic acid, or from nucleic acid to protein, but does not flow from protein to nucleic acid.

I believe that Francis Crick was one of the first to assert this. Figure 1 reproduces a diagram of the central dogma from circa 1958, as reconstructed by Francis Crick. There had been a strong debate at the time over what molecule was transferring the genetic information from old cell to new cell. The two types of molecules involved were proteins and nucleic acids. The legendary description of the double helix by Crick and Watson went a long way towards supporting DNA as the general data keeper, and the data has born this out.

In this post I will go over some of the implications of the central dogma, and provide an introduction into how DNA, RNA, and proteins interact to enable the life processes of our cells.


Figure 1


NEW RELEASE: Blacktie v0.2.1

I have released a new version of blacktie (0.2.1) which has a number of minor fixes and NOW INCLUDES cummeRbund SUPPORT!!!


Thanks and again please let me know what you think. I need your input to make blacktie better and easier to use.



One major change was introduced in v0.2.0rc1: the yaml config file was changed slightly to facilitate the inclusion of biological replicate data. So please take a look at the demo config file in the docs posted at:

This is the last time that this warning will be included.



Release date: 2013-05-15

  • git tag: ‘v0.2.1’
  • added new script named blacktie-cummerbund to run cummeRbund
  • added new class in CummerbundCall to use blacktie-cummerbund script to add cummeRbund plots to blacktie script
  • checks for R and rpy2 installations
  • if cummeRbund R library not found, it walks you through installing it
  • src/blacktie/utils/ - fixed _flag_out_dir() so that if the outdir has not been created yet it gracefully moves on
  • examples/blacktie_config_example.yaml: - added cummerbund_options
  • requirements.txt: - added rpy2
  • updated docs


Release date: 2013-04-19

  • git tag: ‘v0.2.0rc1’

  • Added support for handling biological replicates in cuffdiff runs.

  • Major changes to yaml config:
    • condition_queue[index].group_id –> condition_queue[index].experiment_id
    • addition of condition_queue[index].replicate_id to track replicate data
    • condition_queue[index].name now represents description of an ‘experiemental condition’ and will be shared by replicates.

R: it thinks it’s cooler than me; it’s not wrong

I do a lot of RNA-seq analysis for my research and we mostly run the popular “Tuxedo” suite of analysis programs (bowtie, tophat, cufflinks, and now the REALLY COOL cummeRbund). So cummeRbund, as the capitalization suggests, is written in the R programming language (meant mostly for doing statistics really well). So I have been working in R a bit more than usual lately and I realized something. But before I get into that, you should know something:

R and I have a *love:hate* relationship...

It really does have almost mind-blowing capabilities, and it has been thoroughly embraced by at least the gene expression and related wings of the bioinformatics community. This has resulted in the conglomerate family of R libraries housed under the umbrella of the bioconductor project. It’s data display capabilities are spectacular; to which anyone who has seen plots generated by the ggplot2 library can attest. Take a look.. Oh and did I mention does all of it’s world-class awesomeness completely pro bono? Suffice it to say that, R is plain awesome and this once niche language initially popular with academics who couldn’t or simply wouldn’t spring for expensive licenses for more mainstream stats software is actually starting to take the rest of the data-analysis world by storm [link1, link2].

So that was some of the love side of the relationship.

What I said I came to realize, at this beginning of the post, deals more with the other side of the relationship. Basically, R is like that athletic, pretty, popular kid at your high school. I know that sounds like an extraordinary claim, but bear with me. R, like that kid, knows that what it has is pretty darn awesome. And like that kid, it has grown up with people bending over backwards to ask it to the dance no matter how well or poorly it treated its suitors. But I gotta tell ya, as a Python-guy, it’s almost offensive to me to work in R. I do it. And don’t get me wrong, I am glad it is there. But it does not let you forget that you need it, not the other way around.

Now I must admit that if I started with R, instead of Perl and Python (hell, or even BASH), I might feel the opposite, but I am not sure about that. It also might be that I am just spoiled by working in Python most of my time since that language bends over backwards for me. But Holy Hell, it seems like R is the classic example of design by committee!

Here are some examples of things that drive me crazy. Please pipe in if you object to or can provide rebuttals that might change my mind about them.

Things that drive me crazy about R

  1. Object methods seem to live in the global namespace.
  2. Documentation is simply hit or miss at best and downright less-than-useless in many cases (and its not just the authors’ fault)
  3. Slicing arrays is overly complicated
  4. The convention of naming variables with a ‘.’ instead of an ‘_’
  5. Assignment operator is twice as many characters as it should be

Each point will probably end up getting its own short post.

Object methods seem to live in the global namespace.

This one might be me not being familiar enough with how R treats scope or namespace, but it sure seems that if I want to call an object method (objMethod) for an R object (rObj), I call objMethod like a global function:


That sure looks like it lives in the global namespace rather than in its object’s namespace. Here is how this would be done in Python for comparison:


You specify the local namespace (pyObj) then call the method that lives in that namespace. Its an object so it knows that it is operating on itself. That’s kinda the whole idea of objects.

Now this might sound like a trivial difference, and to some extent, it is. But it is also kinda dumb in my opinion. For one thing, it needlessly creates confusion when trying to learn a code library. There is nothing in the code that tells me that I can not call objectMethod on non-rObj variables: that it belongs to only objects of the same type as rObj.

In python this is unmistakable.

This is actually a major gripe of mine about R; it really doesn’t seem to want you to have an easy time learning new libraries. However, there is another problem. Because the objectMethod lives in global namespace, it can be overwritten if you load another library that has an object with a method of the same name. This is exactly why object methods live in the local namespace of their objects in most languages.

Anyway, if I am wrong about this, please set me straight. If nothing else, I will learn something new about R that will let me get better at it.