Save time, vote for me

 

3quarksdaily are running their annual competition for best science blog entry. There are 87 really great blog posts competing there for the votes of  3QD readers. But who has the time to read through all of them? So let me make it easy for you: vote for me.

This blog’s “Dead Salmon” blog post has been nominated. To get the prize, I need your help. Only the top 20 entries out of 87 nominees will be considered for the final prizes. Please vote for Byte Size Biology: but did you check your results using a dead salmon? If you vote for me, you don’t waste time going through all the other posts, you know you voted for a great post (read it, it’s totally cool. Seriously). And you get to do you civic duty. Or something.

So vote. Then have your family members vote. Your work mates. Your lovers. Your pets. Your car mechanic, your dentist, your hairdresser, your haberdasher, your dog walker, your parole officer, your tattoo artist, your chauffeur and your bartender. Spread the word. Retweet, and share!

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Free science books!

 

The National Academies Press are offering all their books in PDF format for free. The announcement yesterday created a serious traffic surge on their site. But the books are still there, and are still free. Got to buy that new 5Tb external disk now….



Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Grant Opportunities from Agilent

 

Two funding opportunities, available worldwide. Read below and visit  www.Agilent.com/lifesciences/emerginginsights for more details and application forms.

 

Agilent’s eMerging Insights Grant Program

Fostering integrated, whole-systems approaches to biological research with two $75K grants for open source data-integration tool development

The different omics platforms—genomics, transcriptomics, proteomics and metabolomics—are generating new insights into how biological systems work at a molecular level. Although each individual omics approach provides a global view of a specific cellular process, this view is limited to only one aspect of the biological system. In order to gain a comprehensive understanding of the system as a whole, researchers are faced with the challenge of merging these very different data sets.

Agilent is supporting scientists who are taking on this challenge through our eMerging Insights Grant Program. We currently have two open initiatives for academic and non-profit researchers developing and/or improving open source, Agilent-compatible software tools to integrate multi-omics data. Each initiative will provide $75,000 to a single academic or non-profit research lab in fiscal year 2011. A proof-of-concept prototype or working solution must be demonstrated at the end of one year, using either existing data sets from the investigator’s own lab or institution, or from new or existing data sets produced at Agilent.

One of the most important outcomes of our eMerging Insights Grant Program is the development of open source* solutions for the analytical life science community. Any tools developed with this funding will be freely available, open source tools for the research community.

The submission deadline for these two initiatives is August 12, 2011. Application forms and instructions can be found at Agilent.com/lifesciences/emerginginsights. Awards will be announced September 30, 2011, 2011.

* All free or open-source licenses are acceptable except “any license requiring, as a condition of use, modification and/or distribution of the software subject to the license, that the software or other software combined and/or distributed with it be (i) disclosed or distributed in source code form; (ii) licensed for the purpose of making derivative works; or (iii) redistributable at no charge. Excluded Licenses include, but are not limited to the GPLv3 Licenses.“

 

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

In defense of ‘prokaryotes’

Fine, I get it. “Prokaryotes” is a wrong taxonomic term. It’s wrong to lump bacteria and archaea together. That would be like saying “eutoichic” to lump all bacteria, archaea, plants and fungi together because they have cell walls. (“τοίχος” =wall in Greek. My Google Translate-foo is STRONG!)  Still, there are so many things in common among bacteria and archaea: small, unicellular, cell wall (most), no well-defined organelles (but see this), fission (most), compact genomes, few introns, prophages, genomic islands… and the list goes on.

Not a cell wall

So, for example, when I am developing computational metagenomics analysis tools, they invariably tend to target both bacteria and archaea. However, these tools are usually not good for microbial eukaryotes, due to different rRNA size, the larger genomes with more non-coding regions, lack of operons, organelles genomes, introns, etc. So for this utilitarian purpose, “prokaryotes” would be a good verbal shortcut to the cumbersome “bacteria and archaea” when describing or documenting the software. So can we all agree on “prokaryotes” as a verbal shortcut of necessity but not as a taxonomic definition? Or am I missing something substantial here?

An illustrative example of the rational, cool-headed debate that may ensue:

Herpetology Credit: xkcd.com

 

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Music Monday: the Grand Rapids Lipdub

5,000 people in Grand Rapids Michigan USA were involved in this project. From the YouTube Comments:

The Grand Rapids LipDub Video was filmed May 22nd, with 5,000 people, and involved a major shutdown of downtown Grand Rapids, which was filled with marching bands, parades, weddings, motorcades, bridges on fire, and helicopter take offs. It is the largest and longest LipDub video, to date.

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Quick Fix: ssh timeouts

 

It is very annoying when you leave an ssh window open to your server with something running, go to lunch, come back to see this:

Read from remote host my.stupid.server.uni.edu: Connection reset by peer.
Connection to  my.stupid.server.uni.edu closed.

 

So here are two fixes. The first is server side.

  1. ssh to your server, and as root or sudo edit the file /etc/ssh/sshd_config then add the line:
    ClientAliveInterval 60

    This will send a timeout signal to the client every 60 seconds. The client (your desktop/laptop) is expected to be alive and answer. If it does, all is well. If not, the signals will continue every 60 seconds until a maximum count is reached (default is 3). Then the server will disconnect. So: if your client is connected and live, even if it is idle, this line in /etc/ssh/sshd_config will ensure no timeout happens. The maximum count can be set with:
    ClientAliveCountMax 3 (default is 3). But you don’t really need to do that. You will now need to restart your ssh server:

    sudo /etc/ssh/ssh restart

    or:

    sudo service ssh restart
    
  2. Alternatively, on the client side (your own desktop/laptop) edit the /etc/ssh/ssh_config (again, as root or sudo) and add the following line:
    ServerAliveInterval 60

    This is good for when you either don’t have root on your server, or you just don’t want to mess around with configuration files on the server itself.

Happy ssh-ing!

 

 

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Psychedelic Monday: Half Full Glass of Wine

Tame Impala

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Crowdsourcing genomics

 

Miami University has  joined the National Genomics Research Initiative (NGRI) offered by HHMI Science Education Alliance (SEA) in their Phage Genomics course. The students go directly into the lab, participating in an authentic research experience. In a full-year academic course they:

  • isolate and characterize bacterial viruses from their local soil
  • prepare the viral DNA for sequencing
  • annotate and compare the sequenced genome

ResearchBlogging.org

The Department of Microbiology at Miami University is offering this course in the upcoming year: four of our faculty will be teaching it. Phage isolation, electron microscopy, DNA sequencing in the first semester, annotation and comparative genomics in the second. And I get to teach the bioinformatics bit: annotation and comparative genomics. Woo-hoo! The great thing about this course, is that unlike most lab courses, the students (and faculty) will be setting up experiments intended not only to teach, but also to discover something new.  Also, the results of the research are meaningful. Genomics data generated by student participants will be used by other researchers to answer medical, ecological, and evolutionary scientific questions. Bacteriophages (viruses that infect bacteria) affect the biopsphere so profoundly, it is almost impossible to imagine. Their sheer biomass is equal to that of 75 million blue whales, and marine bacteriophages  kill about half of marine microbes every day. Bacteriophages have a huge host range, mind-boggling number of particles in the biosphere (1030) and, above all, the genetic diversity is unmatched by all other life combined. Participating students will see how their data may be used by other researchers in the SEA network — truly collaborative, crowdsourced science. Here are the genomic sequences of SEA-sequenced bacteriophages already in GenBank.

If you are an incoming Miami freshman, and want to jump in and do some real science, it doesn’t get much better than this. Check out our course page, and ask about the Bacteriophage Biology course in your orientation. You may even get your name on a paper like these students from other participating universities.

Pope, W., Jacobs-Sera, D., Russell, D., Peebles, C., Al-Atrache, Z., Alcoser, T., Alexander, L., Alfano, M., Alford, S., Amy, N., Anderson, M., Anderson, A., Ang, A., Ares, M., Barber, A., Barker, L., Barrett, J., Barshop, W., Bauerle, C., Bayles, I., Belfield, K., Best, A., Borjon, A., Bowman, C., Boyer, C., Bradley, K., Bradley, V., Broadway, L., Budwal, K., Busby, K., Campbell, I., Campbell, A., Carey, A., Caruso, S., Chew, R., Cockburn, C., Cohen, L., Corajod, J., Cresawn, S., Davis, K., Deng, L., Denver, D., Dixon, B., Ekram, S., Elgin, S., Engelsen, A., English, B., Erb, M., Estrada, C., Filliger, L., Findley, A., Forbes, L., Forsyth, M., Fox, T., Fritz, M., Garcia, R., George, Z., Georges, A., Gissendanner, C., Goff, S., Goldstein, R., Gordon, K., Green, R., Guerra, S., Guiney-Olsen, K., Guiza, B., Haghighat, L., Hagopian, G., Harmon, C., Harmson, J., Hartzog, G., Harvey, S., He, S., He, K., Healy, K., Higinbotham, E., Hildebrandt, E., Ho, J., Hogan, G., Hohenstein, V., Holz, N., Huang, V., Hufford, E., Hynes, P., Jackson, A., Jansen, E., Jarvik, J., Jasinto, P., Jordan, T., Kasza, T., Katelyn, M., Kelsey, J., Kerrigan, L., Khaw, D., Kim, J., Knutter, J., Ko, C., Larkin, G., Laroche, J., Latif, A., Leuba, K., Leuba, S., Lewis, L., Loesser-Casey, K., Long, C., Lopez, A., Lowery, N., Lu, T., Mac, V., Masters, I., McCloud, J., McDonough, M., Medenbach, A., Menon, A., Miller, R., Morgan, B., Ng, P., Nguyen, E., Nguyen, K., Nguyen, E., Nicholson, K., Parnell, L., Peirce, C., Perz, A., Peterson, L., Pferdehirt, R., Philip, S., Pogliano, K., Pogliano, J., Polley, T., Puopolo, E., Rabinowitz, H., Resiss, M., Rhyan, C., Robinson, Y., Rodriguez, L., Rose, A., Rubin, J., Ruby, J., Saha, M., Sandoz, J., Savitskaya, J., Schipper, D., Schnitzler, C., Schott, A., Segal, J., Shaffer, C., Sheldon, K., Shepard, E., Shepardson, J., Shroff, M., Simmons, J., Simms, E., Simpson, B., Sinclair, K., Sjoholm, R., Slette, I., Spaulding, B., Straub, C., Stukey, J., Sughrue, T., Tang, T., Tatyana, L., Taylor, S., Taylor, B., Temple, L., Thompson, J., Tokarz, M., Trapani, S., Troum, A., Tsay, J., Tubbs, A., Walton, J., Wang, D., Wang, H., Warner, J., Weisser, E., Wendler, S., Weston-Hafer, K., Whelan, H., Williamson, K., Willis, A., Wirtshafter, H., Wong, T., Wu, P., Yang, Y., Yee, B., Zaidins, D., Zhang, B., Zúniga, M., Hendrix, R., & Hatfull, G. (2011). Expanding the Diversity of Mycobacteriophages: Insights into Genome Architecture and Evolution PLoS ONE, 6 (1) DOI: 10.1371/journal.pone.0016329

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Psychedelic Monday: Sploosh!

Music: Ozric Tentacles. Featuring marine life. Mix by Bonci.

Highlights:

  • 0:33 Dolphin chasing ring bubble
  • 2:02 Humpback(?) tailfin
  • 2:58 Whale shark swimming with dolphins
  • 3:44 & 4:07 Humpback baleen-syncing
  • 4:11 Manta Ray
  • 5:58 Human and dolphin kiss

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Bio-Linux. Now available in the Cloud

For some time now, NERC has been providing us with Bio-Linux. If you don’t want to be bothered with installing all the essential bioinformatic software for your Ubuntu box, you can install Bio-Linux, either as a a Linux distro for installation from scratch, or as a set of packages for an already existing Debian or Ubuntu workstation. Biolinux comes complete with EMBOSS, NCBI Tools (BLAST and BLAST+ included) , various nextgen and metagenomic sequence processing software (ampliconoise, fastqc, MIRA, mothur), annotation pipelines (glimmer3, yamap), tree building and visualization (forester, phylip. treeview, njplot), bio{python|perl|ruby|java}, and an incredible amount of many more goodies.

Now, from the people who brought you Bio-Linux, there is CloudBioLinux. I haven’t checked it out yet, but it sounds pretty cool. If you need cloud computing resources, and you don’t have your own cluster (or you do and you just want to supplement it), you have a read-made package for massive data analysis. All under an open-source license, with the ability to fork your own in their GitHub repository. From the CloudBioLinux.org page:

Motivation

Many bioinformatics workflows involve large datasets in which high performance computing is needed. Cloud computing provides researchers with the ability to perform computations using a practically unlimited pool of virtual machines, using platforms such as Amazon EC2Eucalyptus or VirtualBox. CloudBioLinux utilizes these resources to enable instant access to biological software, programming libraries and data.

CloudBioLinux is a community project and we welcome contributors and feedback. Software and data are built using Fabric for fully automated installation and deployment. Packages are specified in simpleconfiguration files for both Linux packages and programming language libraries. Please fork our code on GitHub and suggest improvements and additions.

These resources are designed for biologists as well as programmers. With the help of the NEBC Bio-Linux development team, images include the biological software and libraries available in local installations along with a FreeNX desktop environment designed to ease the transition to remote computational analysis.

 

Enjoy!

Of course, there is this prescient and insightful song about cloud computing resource management:


 

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Psychedelic Monday: Interstellar Overdrive

Pink Floyd, with Syd Barrett.

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Psychedelic Monday: White Rabbit

The classic from Jefferson Airplane.

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Social media used to track disease outbreak

 

There are some interesting developments regarding the February outbreak of Legionelliosis which was traced to the Playboy mansion. Reminder: over 120 delegates of the DOMAINFest in Santa Monica, California came down with symptoms of a respiratory illness. The convention included a trip to the Playboy mansion, which later was suspected as the outbreak source. The convention was held Feb 1-4, 2011. The first inquiry to the  LA County Department of Health (LAC DPH) of a suspected legionellesis outbreak was made by the media on February 11. When tracing the outbreak, LAC DPH and CDC scientists discovered a trail of reports preceding February 11 in social media,  including Facebook and Twitter. The Wikipedia entry was updated almost at the same time when the LAC DPH inquiry was made.

Source: LA Times. From a presentation by Dr. Caitlin Reed

 

Note that there is quite a bit of information in this entry already!

The scientists identified several risk factors: staying at either one of the hotels, and two parties. They assessed the exposure risk based on the fraction of people who were in those venues and who became sick. To do so, they circulated questionnaires, via email and a Facebook list. They came up with this:

 

Source: LA Times. From a presentation by Dr. Caitlin Reed

 

The February 3 “Venue A” party seemed to hold the largest relative risk (RR), by far.  That was the Playboy mansion. Indeed, checking the water at the grotto where the party was held:

Source: LA Times. From a presentation by Dr. Caitlin Reed

 

The scientists concluded that use of social media to trace outbreaks has its pros and cons. The biggest pro was the ability to contact all conference attendees quickly, even though they are geographically dispersed. Also, the Facebook list, tweets and email encouraged a fast response to the survey. They did have some red herrings, and had to put effort into rumor control. I am not sure how much the last two were amplified by the social media effect.

 

The full slide presentation, and more information are at the Los Angeles Times.

 

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

Shakespeare’s Birthday and Evolution

William Shakespeare was baptized April 26, 1564. His birthday is traditionally commemorated on April 23 (incidentally, that is also the date of his death, in 1616). One interesting connection between Shakespeare and evolution was made by Richard Dawkins in his book The Blind Watchmaker: I am talking about the Weasel program. Weasel is an elegant illustration of the process that drives evolution by natural selection: random variation in offspring, coupled with non-random selection. The connection to Shakespeare is in the quote from Hamlet: “Methinks it is like a weasel”. Achieving this exact sentence through random processes alone (a monkey hacking away at a typewriter)  would take and estimated 1040 generations. But achieving it through random mutations coupled with targeted selection makes for a much shorter number of generations: less than 100, usually.

If you are unfamiliar with the Weasel program, read the Wikipedia entry before reading on.

In honor of The Bard’s birthday, I have penned a short Python program which performs Weasel. You may need to tweak it for Windows (remove the first #! line which is a Linux thing). When running the program, the user selects 3 parameters: the target net result (in the form of a string), the number of offspring per generation, and the mutation rate.

Here is a demo run, with 300 offspring per generation, and a mutation rate of 0.05 per position:

 

   ./weasel.py "methinks it is like a weasel" 300 0.05
   1 `,<o?[}= g!yq[}?*v=.+ :y<<:g
   2 `,<o?[}= gjyq[}?*v=.m :y<<eg
   3 `,<o?[}= gjyq[ ?*v=.m :y<<eg
   4 `,<o?[}= ijyq[ ?*v=.m :y<<eg
   5 `,<o?[k= ijyq[ ?*v=.m :y<<eg
   6 `g<o?[k= ijyq[ l*v=.m :y<<eg
   7 `g<o?[k= ijyq[ l*ve.m :y<<eg
   8 `g<o?[k= ij q[ l*ve.m :y<<eg
   9 `v<o?[k= ij qs l*ve.m :p<<eg
  10 ev<o?[k= ij qs l*ve.v :paieg
  11 ev<o?[k( ij qs l*ke.v :paieg
  12 ev<o?[k( it qs l*ke.v :paieg
  13 ev<o?[k( it qs l_ke.v wpaieg
  14 ev<oi[k( it qs l_ke.v wpaieg
  15 ev<oi[k( it qs l_ke.a wpaieg
  16 ev<oi[k( it [s l_ke.a wpaiel
  17 ev<oi[k( it is l_ke.a wpaiel
  18 ev<oi[k( it is l_ke.a wea*el
  19 ev<oi[k( it is l_ke.a wea*el
  20 mv<oi[k( it is l_ke.a wea*el
  21 mv<oi[k( it is llke\a weasel
  22 mv<,i[k( it is llke\a weasel
  23 mv<hi[k( it is llke\a weasel
  24 mvzhi[k( it is like\a weasel
  25 mvzhi[k( it is like\a weasel
  26 mv(hi[k( it is like\a weasel
  27 mv(hi[ks it is like\a weasel
  28 mv(hi[ks it is like\a weasel
  29 mv(hi[ks it is like\a weasel
  30 mvthi[ks it is like&a weasel
  31 mvthi[ks it is like&a weasel
  32 mvthimks it is like&a weasel
  33 mvthimks it is like&a weasel
  34 mvthimks it is like&a weasel
  35 mvthimks it is like&a weasel
  36 mvthimks it is like&a weasel
  37 mxthimks it is like&a weasel
  38 mxthimks it is like&a weasel
  39 mxthimks it is like&a weasel
  40 mxthimks it is like&a weasel
  41 mxthimks it is like&a weasel
  42 mxthimks it is like&a weasel
  43 mxthimks it is like a weasel
  44 mxthimks it is like a weasel
  45 mxthilks it is like a weasel
  46 mxthilks it is like a weasel
  47 mxthilks it is like a weasel
  48 mxthinks it is like a weasel
  49 mxthinks it is like a weasel
  50 mxthinks it is like a weasel
  51 mxthinks it is like a weasel
  52 mxthinks it is like a weasel
  53 mxthinks it is like a weasel
  54 mxthinks it is like a weasel
  55 mxthinks it is like a weasel
  56 mxthinks it is like a weasel
  57 mxthinks it is like a weasel
  58 methinks it is like a weasel

And here is the Python code:

#!/usr/bin/python
import string
import random
import sys
import copy
# Copyright(C) 2011 Iddo Friedberg
# Released under Biopython license. http://www.biopython.org/DIST/LICENSE
# Do not remove this comment

ALLCHARS = string.lowercase+' '+string.punctuation
def loopweasel(target_string,n_offspring,mut_rate):
    i = 1
    target_string = target_string.lower()
    current_string = list(''.join(random.choice(ALLCHARS)
                        for i in range(len(target_string))))
    print "    %s" % target_string
    while target_string != ''.join(current_string):
        print "%4d %s" % (i,''.join(current_string))
        i += 1
        offsprings = create_offspring(current_string,
                                    n_offspring,mut_rate)
        current_string = evolve_string(offsprings, target_string)
    print "%4d %s" % (i,''.join(current_string))

def create_offspring(current_string,n_offspring,mut_rate):
    offspring_list = []
    for i in (range(n_offspring)):
        offspring = []
        for c in current_string:
            if random.random() < mut_rate:
                offspring.append(random.choice(ALLCHARS))
            else:
                offspring.append(c)
        offspring_list.append(offspring)
    return offspring_list

def diffseq(a,b):
    diffcount = 0
    for i,j in zip(a,b):
        if i != j:
            diffcount += 1
    return diffcount

def evolve_string(offspring_list, target_string):
    best_match = (2000,'')
    for offspring in offspring_list:
        diffscore = diffseq(offspring, target_string)
        if diffscore < best_match[0]:
            best_match = (diffscore,offspring)
    return best_match[1]

if __name__ == '__main__':
    if len(sys.argv) < 4:
        print "Usage: weasel target_string n_offspring mutation_rate"
        print
        print "target_string: the string you would eventually evolve into"
        print "n_offspring: number of offspring per generation"
        print "mutation_rate rate of mutation per position, 0=< m <1"
        sys.exit(1)
    target_string = sys.argv[1]
    n_offspring = int(sys.argv[2])
    mut_rate = float(sys.argv[3])
    for i in target_string:
        if i not in ALLCHARS:
            print "Error, string can only contain %s" % ALLCHARS
            sys.exit(1)
    if mut_rate >= 1.0 or mut_rate < 0:
        print "Error: 0 =< mutation rate < 1"
        sys.exit(1)
    loopweasel(target_string,n_offspring, mut_rate)

A quick guide: “loopweasel” (line 11) is the main bit that loops through generations. In each loop iteration it first calls “create_offspring” (line 25) which creates a list with the “offspring” strings (300 in the above example). Mutations are inserted (or not) in line 30. Control returns to loopweasel, which calls evolve_string (line 44). All offspring strings are score to the target (“methinks it is like a weasel”) string, using the “diffseq” code (line 37). (Is there a built-in way in Python for doing that? I could not find any.) The best scoring match is not he chosen offspring. It is printed, and the loop is repeated. Repeat until best-fitted offspring matches the target string.

It is actually quite fun to play with different mutation rates and offspring / generation numbers. Try it. Then rent a good Shakespeare movie. As a horror fan, I’m going to watch Titus tonight.

Titus Andronicus. Source: Wikipedia

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks

What I learned from teaching a seminar class

I have been teaching a seminar course this semester, and through coaching students I think I learned more about what makes a good presentation than by reading “5 useful tips” type of articles or attending any number of  “Improve Your Speaking Skills” classes. By coaching and watching students give research seminars I became acutely aware of common mistakes, some of which I am also guilty of, most of which are easily fixed.

For the record, I do not consider myself to be a remarkable speaker, and I can use improvement. However, I do not think I am a poor one either. These tips are not primarily for you, they are for me. They are basically a collection of dos and don’ts which bubbled up over the past few weeks. Most are obvious and have been talked about by many others. Some are less obvious. As this tips collection is for myself, they are very eclectic, just like your presentation should not be.

1. Know your audience. Who are you going to give a talk to? Then tailor every bit of your presentation to that audience. If you are speaking to a crowd of bioinformaticians, you probably do not need to introduce MrBayes, or what HMM stands for and what it is good for. If you are talking to experimental biologists, then yes, you do.On the other hand, do not dwell on common molecular biology assays. Your goal here is to be clear and engaging. We all know that visiting seminar speaker who is coming from a tangentially-related department (i.e. a biophysics speaker in a molecular biology department), and who fails to engage his audience because the first two equation-filled slides (perfectly acceptable in her department) triggered the audience’s mathophobia.

2. Familiarity breeds comfort. Start with something you are sure most of your audience already knows. Many speakers fear doing that, because, if the audience already knows this stuff, why bother telling them again? Won’t they be bored? Well, if your entire seminar covers what they already know, then the answer would be yes. But if it’s only the first five or 10 minutes, then your audience will love you for placing them on familiar grounds as a staging area for their foray into uncharted (for them) territories.

3. First motivation, then outline. Many speakers start with an outline. Probably not a good idea. The reasons for why you created such an outline would be lost on your audience. Start with a motivation: what is the scientific question you are asking? Why is it important? If you have a brief story that bolsters that motivation then tell it. This could be anything from an interesting clinical case for a health-related seminar to a counter-intuitive or surprising bit of logic for a computational seminar. An initial compelling story with an unresolved problem will create the audience engagement you want. Like any good  campfire storyteller, your goal here is to get your audience to want to hear more. Now that you have hooked them with a motivation and an unresolved story, present your outline.

 

A laudable goal. You could be more specific though.

 

4. <cliche>Say what you are going to say, say it, then say what you have just said</cliche>. If you have attended any kind of “improve your public speaking” seminar, this point must have been stated 1,000 times. So for the 1,001st time: yes, do it. Your audience is not familiar with this material as you are. You need to state things several times, without seeming repetitive. This rule can (and should) be used in a nested fashion: apply it to your whole talk, and then apply it to every important sub-section of your talk.

For your entire talk. Say what you are going to say: “Today, I am going to talk about how to survive the zombie apocalypse”.

Say it: (your talk: acquiring food, water, guns, securing the perimeter, etc. etc.)

Then say what you’ve just said: “Therefore, you have to be very determined, have a good aim, travel in groups and don’t make noise at night”.

5. Use new jargon/abbreviations/acronyms/initialisms sparingly. Generally, only use abbreviations if they are (1) common jargon for you and your audience (2) they really are essential to save time. Other than that, avoid them. When introducing new abbreviation/jargon, make sure that you repeat the components and the acronym several times, over several slides. In that way, even your most inattentive audience member should have got it. That being said, do use the jargon common to you and your audience. This will make everyone more comfortable.

6. Explain the graph. When you present a figure with a graph, explain exactly what the X-axis represents, and what the Y-axis represents. Remember: you spent a long time generating this graph and poring over its meaning, but your audience may be seeing it for one minute tops To them it is completely new. Give them time to take it in, and walk them gently through it, holding heir hand. If the graph shows the results of an experiment, make sure to say something like: “if the flies were all expressing the stinky gene, then we should expect the red line to look like this, and the blue dots like that. If  none of the flies were expressing the stinky gene, then the red line would be here, and the blue dots there. BUT BECAUSE (raise voice) the red line is here, and the blue dots are scattered, it means that only this batch of flies expressed Stinky”. (Replace flies with Raccoons where appropriate.)

This may take some time to explain

6. When outlining methods, cartoons work best. When explaining the methods, a flowchart with graphics beats bullet-point sentences every time. ‘Nuff said.

Gene W Yeo, Nicole G Coufal, Tiffany Y Liang, Grace E Peng, Xiang-Dong Fu & Fred H Gage Nature Structural & Molecular Biology 16, 130 – 137 (2009)

 

7. Spell out the conclusions. Don’t expect your audience to infer the conclusions themselves. It took you weeks to understand your mess of a lab notebook, so how can you expect them to do that in fifty minutes?

8. Be aggressively hesitant. All research talks have that “sketchy bit” in them, where you are not really sure if these results mean anything, or mean what you think they do. Many speakers try to sweep that part under the carpet, or downplay the problem. Don’t do that. On the contrary,  highlight the problem. Everybody has this type of problem in their lab, and you will create and instant bonding by saying: “hey, I’m not sure what is going on here either”. Another consideration is that, if you attempt to hide or downplay your “sketchy bit”, someone from the audience will call you out. That may unravel the good part of your presentation together with the part you tried to hide. Not good.

9. You should have listened to your mom. Poise may be less important in academia than in a business setting. Still, wear a clean shirt, don’t fidget, stand straight, don’t mumble, enunciate and maintain eye contact.  Also, take your finger off the laser pointer trigger unless you are aiming it at the screen. While on the subject, use the pointer sparingly. It’s not a security blanket.

10. Less is more: Don’t read your seminar from slides. Your slides are not  the place to put the stuff you are supposed to say, that’s what your gray matter is for, or if you have to, index cards. Words on your slides should be kept to a minimum. Slides are for explanatory figures, graphs, and very brief statements.

11. Keep to the time. Shoot for five minutes less time than you are allotted. When rehearsing if you are going overtime, there is only one solution. No, speaking faster is not it. No, combining slides is not it either. Killing some of your material is. Yes, that material is precious, and important, and you worked very hard to get these data. It all amounts to a hill of beans if your audience is fidgeting in their chairs 15 minutes after the seminar was supposed to have ended. Newsflash: at this point you are not the brilliant scientist anymore (if you ever were), you are that tiresome nag that is keeping them from lunch, or uncollegially cutting into the next speaker.

12. Rehearse, rehearse rehearse. Boring, yeah. Do it anyway. A lot. Rehearse in front of your cat, your wall, your spouse, your lover, your drinking buddies, anyone you can get a hold of. You will be bored, they will be bored, and you will improve.

 

 

 

 

Share and Enjoy:
  • Fark
  • Digg
  • Technorati
  • del.icio.us
  • StumbleUpon
  • Facebook
  • Reddit
  • Twitter
  • FriendFeed
  • PDF
  • email
  • Print
  • Google Bookmarks