BioStream: a high-level programming language for biology protocols

83 views
Skip to first unread message

Jason Morrison

unread,
Nov 6, 2009, 2:13:52 PM11/6/09
to diybio

Bryan Bishop

unread,
Nov 6, 2009, 2:23:17 PM11/6/09
to diy...@googlegroups.com, kan...@gmail.com
On Fri, Nov 6, 2009 at 1:13 PM, Jason Morrison wrote:
> BioStream: a high-level programming language for biology protocols
> http://openwetware.org/images/5/55/IWBDA_presentation.pdf

Do they have any examples files? When we discussed an idea like this
on the list a while back, we basically came to the conclusion that the
only motivating factor in something like this would be whether or not
there's a large corpus of usable protocols. For that reason I wrote up
a PCR protocol into an XML format that was published in a clinical
medical informatics journal. Jonathan was working on a grammar to
convert from plain text into a computational representation of poorly
written protocols, but I haven't heard from him in a while on that
front. I have a scrape of the protocol-online.org dataset if anyone
wants it.

- Bryan
http://heybryan.org/
1 512 203 0507

Alec Nielsen

unread,
Nov 6, 2009, 2:23:41 PM11/6/09
to diy...@googlegroups.com
I had the pleasure of meeting the BioStream developers a few months
ago, and they were looking for collaborators to vet protocols for
them. It's a cool idea, and unfortunately there's precious little
documentation on the internet that I could find. It looks like there's
a lot of name collision going on with other products, too.

There's a few protocols on OWW with BioStream code:
E.g., http://openwetware.org/wiki/Miniprep/Kit-free_high-throughput_protocol#BioStream_version
and http://openwetware.org/wiki/Endy:Colony_PCR#BioStream_version

Enjoy,

Alec

Bryan Bishop

unread,
Nov 6, 2009, 2:27:46 PM11/6/09
to diy...@googlegroups.com, kan...@gmail.com
On Fri, Nov 6, 2009 at 1:23 PM, Alec Nielsen wrote:
> There's a few protocols on OWW with BioStream code:
> E.g., http://openwetware.org/wiki/Miniprep/Kit-free_high-throughput_protocol#BioStream_version
> and http://openwetware.org/wiki/Endy:Colony_PCR#BioStream_version

Here's one file they have up on there.. I think it looks a lot like my
"make a pie" example in skdb.

http://adl.serveftp.org/skdb/doc/proposals/action.py

This looks like valid C/C++, so I think I'll swig a wrapper up and
incorporate it into skdb. Thanks Jason!

#include "BioStream.h"

void main()
{

start_protocol("Miniprep - Kit-free high-throughput protocol");

Fluid culture = new_fluid("overnight culture containing your plasmid");
Fluid stet = new_fluid("STET buffer", "8% sucrose, 50 mM Tris-HCl (pH
8), 0.5% Triton X-100, 50 mM EDTA");
Fluid lysozyme = new_fluid("lysozyme (10mg/ml)");
Fluid isoprop = new_fluid("isopropanol", ICE_COLD);
Fluid eth80 = new_fluid("80% ethanol", ICE_COLD);
Fluid te = new_fluid("TE buffer", "10 mM Tris-HCl (pH 8), 1 mM EDTA ");

Container flask = new_container(FLASK);
Container eppendorf1 = new_container(EPPENDORF);

// 1. Transfer 1.5 mL of an overnight culture containing your plasmid
to an eppendorf tube and spin at 5000 rpm for 5 min in a tabletop
centrifuge to pellet the cells.
// 2. Remove and discard the supernatent.
first_step();
set_container(culture, flask);
measure_fluid(flask, vol(1.5, ML), eppendorf1);
centrifuge_pellet(eppendorf1, speed(5000, RPM), RT, time(5, MINS));

// 3. Add 300 μL STET buffer, and resuspend cells by vortexing.
next_step();
measure_and_add(eppendorf1, stet, vol(300, UL));
resuspend(eppendorf1);

// 4. Add 10 μL lysozyme (10 mg/mL), vortex, and submerse in boiling
water for 40 sec.
next_step();
measure_and_add(eppendorf1, lysozyme, vol(10, UL));
vortex(eppendorf1);
store_for(eppendorf1, 100, time(40, SECS));

// 5. Spin for 30 min in a tabletop centrifuge at maximum speed at 4 ˚C.
next_step();
centrifuge_pellet(eppendorf1, speed(SPEED_MAX, RPM), 4, time(30, MINS));

// 6. Remove pellet from each tube with a toothpick. The cellular
debris should stick well to the toothpick. Try to insert and remove
the toothpick from the center of the tube so you don't get any
cellular debris on the sides of the tube.
next_step();
comment("Remove pellet from each tube with a toothpick. The cellular
debris should stick well to the toothpick. Try to insert and remove
the toothpick from the center of the tube so you don't get any
cellular debris on the sides of the tube.");

// 7. Add 300 μL ice cold isopropanol to precipitate the DNA (or
300μL of 2:1 isopropanol:ammonium acetate, mixed just before you use
it. See this discussion of precipitating nucleic acids.)
next_step();
measure_and_add(eppendorf1, isoprop, vol(300, UL));
comment("This is done to precipitate the DNA.");

// 8. Spin for 10 min in a tabletop centrifuge at maximum speed at 4 ˚C.
// 9. Remove supernatent.
next_step();
centrifuge_pellet(eppendorf1, speed(SPEED_MAX, RPM), 4, time(10, MINS));

//10. Add 200 μL ice cold 80% ethanol to wash pellet and spin for 5
min in a tabletop centrifuge at maximum speed at 4 ˚C.
//11. Remove supernatent.
next_step();
measure_and_add(eppendorf1, eth80, vol(200, UL));
comment("This is to wash the pellet.");
centrifuge_pellet(eppendorf1, speed(SPEED_MAX, RPM), 4, time(5, MINS));

//12. Dry pellet (air dry at room temperature or 37 ˚C or dry in a speedvac).
next_step();
begin_option();
dry_pellet(eppendorf1, "in air");
next_option();
dry_pellet(eppendorf1,"in a speedvac");
end_option();

//13. Rehydrate in 50 μL TE.
next_step();
measure_and_add(eppendorf1, te, vol(50, UL));
resuspend(eppendorf1);

end_protocol();

Heath Matlock

unread,
Nov 6, 2009, 4:56:00 PM11/6/09
to diy...@googlegroups.com
Good timing in bringing this up, I was just getting on to share this
with others after watching the video that's been sitting on my
computer, which is also found on Youtube:

http://www.youtube.com/v/n0gmTc2wA3k
"Programmable Microfluidics"


--
Heath Matlock
+1 256 274 4225

Heath Matlock

unread,
Nov 6, 2009, 5:06:49 PM11/6/09
to diy...@googlegroups.com
On Fri, Nov 6, 2009 at 9:56 PM, Heath Matlock <heathm...@gmail.com> wrote:
> Good timing in bringing this up, I was just getting on to share this
> with others after watching the video...

A similar effort mentioned by Bill Thies was the AquaCore Programmable
Lab on a Chip (PLoC) project at Purdue:
https://engineering.purdue.edu/ploc/

Both take different approaches in handling regeneration of fluids.

Mackenzie Cowell

unread,
Nov 6, 2009, 5:12:46 PM11/6/09
to diy...@googlegroups.com
Interesting.  I'm checking out Bill Theis's lecture now.  Have you checked out the work of Manu Prakash?

Mac
--
p: 231.313.9062
e: m...@diybio.org
tw: @100ideas

Heath Matlock

unread,
Nov 6, 2009, 6:23:26 PM11/6/09
to diy...@googlegroups.com
On Fri, Nov 6, 2009 at 10:12 PM, Mackenzie Cowell <m...@diybio.org> wrote:
> Interesting.  I'm checking out Bill Theis's lecture now.  Have you checked
> out the work of Manu Prakash?

I haven't looked at in detail, yet, but his and Neil Gershenfeld's
paper was in the microfluidics zip file which Bryan Bishop linked to
from here awhile ago.

Here's a link to Manu's bubble logic page for anyone wondering what it is:
http://web.media.mit.edu/~manup/research/bubble-logic/

Vaishnavi. A

unread,
Nov 20, 2009, 5:35:52 AM11/20/09
to DIYbio
I am one of the developers of BioStream -- now "BioCoder". It's great
to know that BioCoder is gaining some momentum. We are in the process
of working out the release of BioCoder(+documentation), which should
be sometime in December. We do have a lot of example protocols on
OpenWetWare as mentioned. Suggestions/comments?
Vaishnavi.

Bryan Bishop

unread,
Nov 22, 2009, 12:53:36 PM11/22/09
to diy...@googlegroups.com, kan...@gmail.com
On Fri, Nov 20, 2009 at 4:35 AM, Vaishnavi wrote:
> I am one of the developers of BioStream -- now "BioCoder". It's great
> to know that BioCoder is gaining some momentum. We are in the process
> of working out the release of BioCoder(+documentation), which should
> be sometime in December. We do have a lot of example protocols on
> OpenWetWare as mentioned. Suggestions/comments?

Hello Vaishnavi.

I was wondering why you chose to use functions to represent actions in
biocoder. I have some open source code up on the web for doing
something very similar to biocoder- except it's also extended to
do-it-yourself instructions for building open source hardware,
cooking, lab protocols, etc.- and when I sat down to think about it, I
was thinking an object-oriented framework would have more advantages.
In particular, functions can't be extended without directly modifying
the source code; everyone writing a computational protocol must be a
programmer, and some other issues.

Mr. Gunn

unread,
Nov 23, 2009, 12:03:49 PM11/23/09
to DIYbio
On Nov 22, 9:53 am, Bryan Bishop <kanz...@gmail.com> wrote:

> cooking, lab protocols, etc.- and when I sat down to think about it, I
> was thinking an object-oriented framework would have more advantages.
> In particular, functions can't be extended without directly modifying
> the source code; everyone writing a computational protocol must be a
> programmer, and some other issues.

That's a good point. To achieve your purposes here, it seems like you
just need a machine readable format, but you don't actually need to
write the actions up as functions. Anyways, I don't want to sound
critical, I think you're doing a great job and it's awesome to see
activity in this area. My colleague Alexey and I are working on
systematizing stem cell assays and this sort of thing will be really
useful for us.

Bryan - How big is that bioprotocol-online scrape you've got? I'd like
to get it, if I could.

Thanks.

Bryan Bishop

unread,
Nov 23, 2009, 12:09:37 PM11/23/09
to diy...@googlegroups.com, kan...@gmail.com
On Mon, Nov 23, 2009 at 11:03 AM, William Gunn wrote:
> Bryan - How big is that bioprotocol-online scrape you've got? I'd like
> to get it, if I could.

59 MB http://adl.serveftp.org/~bryan/protocol-cache.zip

Vaishnavi. A

unread,
Nov 24, 2009, 3:37:10 AM11/24/09
to DIYbio
@ Bryan: Our target users are biologists who have limited/no knowledge
of programming. So, we chose C which is quite popular as the language
that almost everybody starts with for programming. For the same
reason, we did not want to burden biologists with the nuances of OOP.
@ Gunn:"To achieve your purposes here, it seems like you just need a
machine readable format"
On the contrary, we felt the need to retain all the advantages of
using a programming language -- parametrization, control flow,
modularity etc.
"I think you're doing a great job and it's awesome to see activity in
this area"
Thanks!


On Nov 23, 10:09 pm, Bryan Bishop <kanz...@gmail.com> wrote:
> On Mon, Nov 23, 2009 at 11:03 AM, William Gunn wrote:
> > Bryan - How big is that bioprotocol-online scrape you've got? I'd like
> > to get it, if I could.
>
> 59 MBhttp://adl.serveftp.org/~bryan/protocol-cache.zip
>
> - Bryanhttp://heybryan.org/
> 1 512 203 0507

Mr. Gunn

unread,
Nov 24, 2009, 1:59:45 PM11/24/09
to DIYbio
On Nov 24, 12:37 am, "Vaishnavi. A" <vaishana...@gmail.com> wrote:
> @ Bryan: Our target users are biologists who have limited/no knowledge
> of programming. So, we chose C which is quite popular as the language
> that almost everybody starts with for programming. For the same
> reason, we did not want to burden biologists with the nuances of OOP.
> @ Gunn:"To achieve your purposes here, it seems like you just need a
> machine readable format"
> On the contrary, we felt the need to retain all the advantages of
> using a programming language -- parametrization, control flow,
> modularity etc.
I hear you on this, but doesn't OOP make more intuitive sense for
someone naive to programming?

> > On Mon, Nov 23, 2009 at 11:03 AM, William Gunn wrote:
> > > Bryan - How big is that bioprotocol-online scrape you've got? I'd like
> > > to get it, if I could.

Thanks, Bryan!

Vaishnavi Ananth

unread,
Dec 9, 2009, 12:02:35 AM12/9/09
to diy...@googlegroups.com

Well, that may or may not be the case. This is our take on it - we felt that we would want to use an approach that a biologist with a little bit of experience in programming will be comfortable with. And when anyone starts learning a programming language, they usually start with a procedural programming language - the linear approach is quite easy to comprehend. So the C library.

We have come up with another survey to try and understand why most descriptions of protocols in
published papers are ambiguous and incomplete. It would be great if you could take this short 10-
question survey which tries to zero in on the problem. Results will be
made available on DIYbio when enough data points have been collected.

Please click on the link below to take the survey:
http://www.surveymonkey.com/s/SYJM23Q

2009/11/25 Mr. Gunn <willia...@gmail.com>

--

You received this message because you are subscribed to the Google Groups "DIYbio" group.
To post to this group, send email to diy...@googlegroups.com.
To unsubscribe from this group, send email to diybio+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/diybio?hl=en.



Reply all
Reply to author
Forward
0 new messages