Monthly Archives: September 2012

I think is time to blow this thing, get everybody the stuff together.
Okay 3, 2, 1 Let’s Jam!
My friend’s then-groom/now-husband breakdanced to Cowboy Bebop music at their wedding two weeks ago.

It was super surreal being at her wedding. She was a good middle school friend, and someone I hadn’t seen in ages.
She looked amazing, and her wedding was a lot of fun.

One of the most memorable moments of the night, aside from the official wedding ceremonies, was when Gangnam Style came on during the dance.

It was an awesome time.


A plankton sticker arrived in my mailbox yesterday, from Bigelow Laboratory for Ocean Sciences. It brought back all the wonderful memories of a trip my friends and I took to see their public opening.

During the last breath of summer, my friends and I went on an epic weekend adventure to the lovely state of Maine.

We drove up on sun-beamy Friday, savored the spreads and Peasant Bread sandwiches of Stonewall Kitchen, and headed for the Bigelow Laboratory for Ocean Sciences.
After a tour of the facilities, we drove to Red’s Eats, for a feast of giant lobster rolls.
lobster roll
The afternoon ended with watching the sunset over the waters of Wiscasset and walking along the railroad tracks. It had a rustic charm that fueled my agrarian fantasies.
rail road tracks
When darkness finally fell, we made our way to the sleepy town of Camden, and promptly drifted off to sleep.
Mt. Battie
The next day started with a climb to Mount Battie. The view up there was gorgeous. From the ruins of a castle, we looked out into the bay, gawking at the stretches of water peppered with islands.


image courtesy of Dan

After a snack at the 3 Dogs Cafe, and under the setting sun, we ventured to a local lighthouse, trekking over jagged rocks to the middle of the bay.

Saturday night ended with delicious Mexican fare and oodles of our new favorite show: Adventure Time.

Adventure Time

We ended our trip at Pemaquid lighthouse, admiring the strange rocks that formed the coast. We looked out from the light housing lookout, portrayed in Maine’s state quarter.
It was a marvelous weekend, an excellent conclusion to a eventful summer, and a perfect trip. I got to explore new lands, eat delicious goods, all with the awesome company of my friends.

I only hope there’s many more like this one to come.

[updated: 3D-Printed Enzyme – Proof of Concept]


While animating a short for the 2011 MIT iGem team, I came up with the idea to 3D print enzymes from the vast number of structure-characterized proteins in the RCSB Protein Data Bank (PDB). There are lots of slick software out there to render the PDB files into gorgeous 3D models. Exporting those models to be 3D-printing compatible is only a few clicks away.




The simplest approach is to use USCF Chimera to render a protein from PDB. Chimera can export the protein into an STL file, which can be uploaded to Shapeways or other 3D printing vendors to print.

While Chimera renders ribbon diagrams very beautifully, it lacks more sophisticated mesh-based renderings and user customization. Molecular Maya can be a good alternative. It harnesses all the customization power of Maya, while easily importing PDB files. To go the Molecular Maya route, proteins can be exported into OBJ files to upload to Shapeways. Currently, Molecular Maya does not render ribbon diagrams or secondary structure.


ecoRV rendered with mMaya [PDB ID: 1RVA]


DNA ligase

DNA ligase [PDB ID: 1DGS]




My recent order of funky socks came with an awesome gift from the lovely folks of Modcloth.
wire headband
I could not figure out what it was. It was similar to a soft clothes hanger but lacked the hook and the structural integrity. Its beautiful cloth exterior concealed thing wiry structure underneath.

I was so ready to ask my more fashionable roommate, when the aha moment came. It was a wire headband!
I can see!
Nowadays, I wear it in my daily busing about. It does a wonderful job of keeping my now-too-long bangs at bay.


And I’m back!

By back, I meant, I switched my name back to Jenny.

I changed it for a few days, and experienced a interesting identity dissonance.
Originally, I decided to change my name out of spontaneity. I’ve been Jenny for a while, and thought it would be a fun change. I picked Iorek because of its sheer awesomeness. Who wouldn’t want to be king of the armored bears?

A few days into my name change experiment, I felt a weird discomfort. I was neither Iorek nor Jenny, but limboed somewhere in-between. Perhaps it was due to my non-enforcing of the name change or perhaps it was due the letting go of a time-built identity, but I oscillated between two personas, in a rather unpleasant way.

So, I switched back back.
While being a Panserbjørn is super cool, my current name is awesome as well.



Graphviz now has SBOLv 1.0 support!

I implemented the Synthetic Biology Open Language (SBOLv) symbols for Graphviz to easily generate SBOLv compliant diagrams.

see my original post on using Graphviz to draw genetic circuits

Gene Expression Symbols:

digraph G {

promoter -> operator [arrowhead=none];
operator -> cds [arrowhead=none];
cds -> utr [arrowhead=none];
utr -> terminator [arrowhead=none];

promoter [shape=promoter labelloc="b"];
operator [shape=square width=0.2 label=""];
cds [shape=cds];
utr [shape=utr labelloc="b"];
terminator [shape=terminator labelloc="b"];


digraph G {

insulator -> ribosite [arrowhead=none];
ribosite -> rnastab [arrowhead=none];
rnastab -> proteasesite [arrowhead=none];
proteasesite -> proteinstab [arrowhead=none];

insulator [shape=insulator label=""];
ribosite [shape=ribosite label="ribonuclease site" labelloc="b"];
rnastab [shape=rnastab label="rna stability" labelloc="b"];
proteasesite [shape=proteasesite label="protease site" labelloc="b"];
proteinstab [shape=proteinstab label="protein stability" labelloc="b"];


DNA Construction Symbols:

digraph G {

origin -> primersite [arrowhead=none];
primersite -> restrictionsite [arrowhead=none];
restrictionsite -> noverhang [arrowhead=none];
noverhang -> assembly [arrowhead=none];

origin [shape=circle width=0.2 label=""];
primersite [shape=primersite label="primer site" labelloc="b"];
restrictionsite [shape=restrictionsite label="restriction site" labelloc="b"];
noverhang [shape=noverhang label=""];
assembly [shape=assembly label=""];


digraph G {
rankdir = LR;

fivepoverhang -> signature [arrowhead=none];
signature -> threepoverhang [arrowhead=none];

fivepoverhang [shape=fivepoverhang label=""];
signature [shape=signature];
threepoverhang [shape=threepoverhang label=""];



Download from the official Graphviz site

All the development snapshots newer than 2.29.20120924 should have SBOLv compliant symbols, as well as the non-SBOLv circuit symbols (lpromoter, rarrow, etc.).

Example Diagrams:

digraph a {

subgraph cluster0 {
node [style=filled fillcolor=white];
a -> b [arrowhead=none];
b -> c [arrowhead=none];

a [shape=promoter label=""];
b [shape=cds label="rtTA"];
c [shape=terminator label=""];

Dox -> rtTA;
b -> rtTA;

subgraph cluster1 {
node [style=filled fillcolor=white];
d -> e [arrowhead=none];
e -> f [arrowhead=none];

d [shape=promoter label=""];
e [shape=cds label="Alfa"];
f [shape=terminator label=""];

rtTA -> d;
e -> Alfa;

subgraph cluster2 {
node [style=filled fillcolor=white];
g -> h [arrowhead=none];
h -> i [arrowhead=none];

g [shape=promoter label=""];
h [shape=cds label="Alfa"];
i [shape=terminator label=""];

Alfa -> g;
h -> Alfa;


digraph G {

subgraph cluster0 {
node [style=filled fillcolor=white];
a -> b [arrowhead=none];
b -> c [arrowhead=none];
c -> d [arrowhead=none];

a [shape=promoter label=""];
b [shape=cds label="rtTA"];
c [shape=cds label="LacI"];
d [shape=terminator label=""];

Dox -> rtTA;
b -> rtTA;

subgraph cluster1 {
node [style=filled fillcolor=white];
e -> f [arrowhead=none];
f -> g [arrowhead=none];
g -> h [arrowhead=none];

e [shape=promoter label=""];
f [shape=cds label="Charlie"];
g [shape=cds label="Alfa"];
h [shape=terminator label=""];

rtTA -> e;

c -> LacI;
IPTG -> LacI [arrowhead=tee];

subgraph cluster2 {
node [style=filled fillcolor=white];
i -> j [arrowhead=none];
j -> k [arrowhead=none];
k -> l [arrowhead=none];

i [shape=promoter label=""];
j [shape=cds label="India"];
k [shape=cds label="Bravo"];
l [shape=terminator label=""];

LacI -> i [arrowhead=tee];

f -> Charlie;
g -> Alfa;
j -> India;
k -> Bravo;

subgraph cluster3 {
node [style=filled fillcolor=white];
m -> n [arrowhead=none];
n -> o [arrowhead=none];
o -> p [arrowhead=none];

m [shape=promoter label=""];
n [shape=cds label="Charlie"];
o [shape=cds label="Alfa"];
p [shape=terminator label=""];

n -> Charlie;
o -> Alfa;
Alfa -> m;

subgraph cluster4 {
node [style=filled fillcolor=white];
q -> r [arrowhead=none];
r -> s [arrowhead=none];
s -> t [arrowhead=none];
t -> u [arrowhead=none];

q [shape=promoter label=""];
r [shape=cds label="India"];
s [shape=cds label="Bravo"];
t [shape=cds label="EYFP"];
u [shape=terminator label=""];

r -> India;
s -> Bravo;
t -> EYFP;

subgraph cluster5 {
node [style=filled fillcolor=white];
v -> w [arrowhead=none];
w -> x [arrowhead=none];

v [shape=promoter label=""];
w [shape=cds label="Hotel"];
x [shape=terminator label=""];

Charlie -> v [arrowhead=tee];
w -> Hotel;

subgraph cluster6 {
node [style=filled fillcolor=white];
y -> z [arrowhead=none];
z -> aa [arrowhead=none];

y [shape=promoter label=""];
z [shape=cds label="Foxtrot"];
aa [shape=terminator label=""];

Hotel -> y [arrowhead=tee];
India -> y [arrowhead=tee];

z -> Foxtrot;

subgraph cluster7 {
node [style=filled fillcolor=white];
bb -> cc [arrowhead=none];
cc -> dd [arrowhead=none];
dd -> ee [arrowhead=none];

bb [shape=promoter label=""];
cc [shape=cds label="EBFP2"];
dd [shape=cds label="Foxtrot"];
ee [shape=terminator label=""];

Foxtrot -> bb;
dd -> Foxtrot;

cc -> EBFP2;



Color and labelling doesn’t work as nicely as the non-SBOLv symbols.

Labels that include a double-stranded DNA line, such as the promoter, has to have labelloc set to “b”. This is to avoid the intersection of the label and the double-stranded DNA line, since labels are automatically placed in the center of the nodes.

Hef1a [shape=promoter];

Hef1a [shape=promoter labelloc="b"];

Also, for the aforementioned shapes, colorfill has to be specified instead of color. color will color the outline of the node shape, potentially causing non-consistent colorations of the double-stranded DNA line between connected nodes.

Hef1a [shape=promoter labelloc="b" style=filled colorscheme=greens3 color=3];

Hef1a [shape=promoter labelloc="b" style=filled colorscheme=greens3 fillcolor=3];


Thanks to Reshma Shetty and Jake Beal for the inspiration.