Fork me on GitHub

  1. Teaching Python by the (Note)Book

    tl;dr: I tried out a modified Python lesson and I think it was successful at balancing learner motivation with teaching foundational (and sometimes boring) concepts.

    This stuff is hard

    In many ways, teaching Python to scientists is easier than just about every other audience. The learning objective is clear: write code to make my science more accurate, more efficient, and more impactful. The motivation is apparent: data is increasingly plentiful and increasingly complex. The learners are both engaged and prepared to put in the effort required to develop new skills.

    But, despite all of the advantages, teaching anybody to program is hard.

    In my experience, one of the most challenging trade-offs for lesson planners is between motivating the material and teaching a mental model for code execution. For example, scientists are easily motivated by simple data munging and plotting using pandas and matplotlib; these are features of the Python …

  2. Take five minutes to simplify your life with Make

    I use GNU Make to automate my data processing pipelines. I’ve written a tutorial 1 for novices on the basics of using Make for reproducible analysis and I think that everyone who writes more than one script, or runs more than one shell command to process their data can benefit from automating that process. I’m not alone.

    However, the investment required to learn Make and to convert an entire project can seem daunting to many time-strapped researchers. Even if you aren’t living the dream—rebuilding a paper from raw data with a single invocation of make paper—I still think you can benefit from adding a simple Makefile to your project root.

    When done right, scripting the tedious parts of your job can save you time in the long run2. But the time savings aren’t the only reason to do it. For me, a bigger …

  3. Software carpentry instructor training

    A survival analysis in python

    Edit (2016-05-31): Added a hypothesis for why my results differ somewhat from Erin Becker’s. Briefly: I removed individuals who taught before they were officially certified.

    A couple weeks ago, Greg Wilson asked the Software Carpentry community for feedback on a collection of data about the organization’s instructors, when they were certified, and when they taught. Having dabbled in survival analysis, I was excited to explore the data within that context.

    Survival analysis is focused on time-to-event data, for example time from birth until death, but also time to failure of engineered systems, or in this case, time from instructor certification to first teaching a workshop. The language is somewhat morbid, but helps with talking precisely about models that can easily be applied to a variety of data, only sometimes involving death or failure. The power of modern survival analysis is the ability to include results from subjects who …

  4. Tutorial: Reproducible bioinformatics pipelines using GNU Make

    For most projects with moderate to intense data analysis you should consider using Make. Some day I’ll write a post telling you why, but for now check out this post by Zachary M. Jones1. If you’re already convinced, or just want to see what it’s all about, read on.

    This post is the clone of a tutorial that I wrote for Titus Brown’s week-long Bioinformatics Workshop at UC Davis’s Bodega Marine Laboratory in February, 2016. For now, the live tutorial lives in a Github repository, although I eventually want to merge all of the good parts into the Software Carpentry Make lesson (repository).

    I’m posting this tutorial because I think it’s a good introduction to the analysis pipeline approach I have been slowly adopting over the last several years. This approach is even more deeply enshrined in a project template that I …

  5. Not all carbs are bad

    Getting enough fiber might do more than keep you regular.

    This brief post was written as a popular science article for a class on science communication. My own research is currently focused on exactly this topic: describing microbial community dynamics associated with acarbose treatment and the production of butyrate.

    A quick internet search search for “low-carb diets” comes back filled with promises to make you sleek, spry, and slim just by cutting out this entire category of foods. The popularity of these diets shouldn’t surprise you. Recent research has implicated overconsumption of sugars, the simplest form of carbohydrates, and starchy foods, which can quickly be broken down into sugars, in the increased risk of heart disease, obesity, even some forms of dementia. Americans have responded quickly, with 50% trying to limit their intake of sugars and carbohydrates according to a 2014 survey. That same survey found only 74% of respondents believe that a healthy diet can include moderate amounts …

  6. First time teaching Python to novices

    This July I co-instructed with Jennifer Shelton a Software Carpentry workshop at Stanford University, targeted to researchers with genomic or evolutionary datasets. Jennifer taught the shell (Bash) and version control with Git, while I taught the general programming language Python. I’ve been aware of the organization, which teaches software development and computational methods to scientists, since attending a workshop in 2012. Since then I’ve served as a helper at one workshop (troubleshooting individual learner’s problems and helping catch them up with the rest of the class), and gone through the “accelerated”, two day, instructor training at Michigan State University. After the Stanford workshop, I took part in new-instructor debriefing on August 4th, during which I mentioned that I had to greatly pare down the community-written lesson plan, python-novice-inflammation, to fit into the two half-day session we allotted it.

    Karin and Tiffany, who were running the debriefing, asked …

  7. Do bacterial species exist?

    Any of my friends or colleagues who have had the “pleasure” of talking about science with me for more than a few hours know that I am prepared, at the drop of a hat, to rant extensively about several standing debates in biology which I consider merely semantic. For instance:

    Q: Are viruses alive?

    A: Who CARES!? Viruses do what they do. Cellular organisms do something else. What difference does it make if we decide to allow our middle-schoolers to draw little dotted lines around animals, bacteria, and viruses? And I don’t even want to hear the word “prion”.

    I have a similar level of disdain for people who try to decide on a single definition for “species”. Ultimately I am a pluralist: the definition should be tailored to the scientific question. Paleontologists, you have your morphological species concept, because what else do stony fossils allow? Are you studying …

  8. You, too, can host this website

    Loyal readers of this blog (of which I am sure there are exactly zero) might have noticed that things are looking a little different since yesterday. That’s because I’ve finally developed my own Pelican theme to the point that it’s functional, and not too embaressing to look at.

    It doesn’t appear too different—it’s certainly still inspired by the sample theme—but now I understand 95% of the code, instead of 5%. My goal was to simplify the template files and css to the point that I could customize just about anything with a minimum of work. I also attempted to maintain compatability with all of the configuration options supported by the default theme.

    Not that I know why you would want to, but you can read and copy the content and configuration files on Github. The theme source code is there as well.

    By …

  9. Even pathogens hate a cheater

    I would like to apologize for the long delay since my last post. The excuse (I keep telling myself) is that, having already written too many computational articles, it was time to prove that I could write about biology too. Unfortunately I’m not nearly as good at reading the literature as I should be. Anyway, it’s done. You can stop complaining now.

    One barrier to engineering bacteria for biofuel production or any other human endeavor is that evolutionary rates are scaled by population sizes and growth rates. For an organism with massive population sizes (trillions of individuals or more) and doubling times on the order of hours, evolution can occur quite quickly. Genetic variants within the population which are capable of growing faster will quickly take over. For an organism which is, for example, wasting a huge fraction of its energy producing your future gasoline, you can bet …

  10. Compiling SciPy on RHEL6

    Within the past two years I’ve discovered something interesting about myself (…actually really, really boring about myself): I can be happily entertained for hours on end setting up my computational environment just right. I find that it gives me a similar type of satisfaction to cataloguing my music collection. I guess you could call it a hobby.

    Usually this entails installing the usual suspects (NumPy, Pandas, IPython, matplotlib, etc.) in a python virtual environment. When I’m particularly into it (which is always), I’ll also compile the python distribution itself. I’ve had several opportunities to indulge this pasttime, most recently in setting up my research pipeline on the Flux high-performance compute cluster at The University of Michigan.

    Installing NumPy is usually no trouble at all, but for some reason (if you know, please tell me), SciPy has always given me a “BlasNotFoundError” when installing on the Red …

  11. PyMake I: Another GNU Make clone

    (Edit 1): This is the first of two posts about my program PyMake. I’ll post the link to Part II here when I’ve written it. While I still agree with some of the many of the views expressed in this piece, I have changed my thinking on Makefiles.

    (Edit 2): I’ll post a new post about the topic when I take the time to write it. I’ve written a tutorial on using Make for reproducible data analysis.

    I am an aspiring but unskilled (not yet skilled?) computer geek. You can observe this for yourself by watching me fumble my way through vim configuration, multi-threading/processing in Python, and git merges.

    Rarely do I actually feel like my products are worth sharing with the wider world. The only reason I have a GitHub account is personal convenience and absolute confidence that no one else will ever look …

  12. Hello World!


    This is mostly a test post and a chance to get some real content on my brand-new blog.

    Inspired by C. Titus Brown’s tireless pressure to make more graduate student clones of himself—and the fact that a pretty damn good domain name was still available—I started this website/blog over the weekend.

    I hope that it will turn into a place for me to share my excitement and views on microbiology, microbial ecology, mathematical ecology, bioinformatics, python, (very) amateur software development, etc. But I will be satisfied if it turns out to just be writing practice. Heaven knows I need that.

    In case you’re curious, setup took me about 3 hours (plus some waiting for DNS updates). Largely, this is because I’m shamelessly mirroring Titus’s well trafficked blog by using a nifty python application called Pelican. And at $15/year for the domain …

Page 1 / 1