4 ms·
It's likely that most people here are not up to date with just how quickly the field of biology has changed in the last decade. Last year I somehow bumbled my w
by vanderZwan 9y ago
It's likely that most people here are not up to date with just how quickly the field of biology has changed in the last decade. Last year I somehow bumbled my way into programming for Sten Linnarsson's group[0], via a HN who's hiring thread, no less! That group turned out to be Kind Of A Big Deal in this field (I mean, I was just impressed by how well-written Sten's code was, especially for a professor, and liked the idea of programming for scientists). The stuff I learned about this field is pretty mindblowing.
Think of the wall of text below as context for this article, as explained by someone not inhibited by proper knowledge of what he's talking about.
We start with a tiny biology refresher. Every cell in your body is essentially a clone: barring mutations, they all have the same genetic information encoded in their DNA. We often think of DNA as nature's code. To build on this metaphor, think of your stem cells as freshly installed PCs with all possible software you could need, pre-loaded on a gigantic HDD: your genome. And just like a program on your disk, genes don't do anything until they're activated. To "run" the code in a gene, the cell makes active copies of it: RNA. In oversimplified terms, a copies of RNA represents loading a genetic program into RAM and running it. The rest of the cell is basically the wetware required to run that code, which is important too: a PC is kinda useless without IO (just look at the struggles early nerds had with simply finding a use for the Altair 8800 if you don't believe me[1]).
Anyway, going from stem cell to a specific cell-type is like setting up those identical PCs for the different things that we use PCs for by opening different programs. Unlike PCs our wetware is massively parallel: to get more performance in a specific task our cell just creates more RNA copies, "loads many copies of the same program". Because of this, we can measure the activity of a gene by measuring the number of RNA copies of it in a cell.
Now imagine we're trying to reverse engineer an alien computer, and unlike Independence Day[2], we're not dealing with Mac-compatible hardware here. In programming, when you try to reverse engineer what someone else's code does, a disassembly probably won't cut it. Similarly, knowing the genome will not be enough: to really make sense of all it all, to "debug" the DNA, we need to see that "running code" in context, in relation to the whole organism.
What molecular biologists have been doing in recent years is measure the gene expression (the number of RNA molecules) of individual genes in individual cells, across as many cells as possible, at various stages of cell development. Then they compare the gene expression levels with various algorithms to organise them. Combined with extra meta-data, like what tissue the cells came from, what cell-type we know the cell belonged to based on morphology (in plain English: its visible shape in a microscope), and at which point in development cell was harvested, we can then start painting a picture of cell development and cell types.
They take cell tissues, separate it into individual cells, then measure the expression of each gene in each cell. The techniques they have figured out techniques, like droplet-based approaches[3], to do this in bulk are mind-blowing. When given the budget, and in the hands of appropriately skilled molecular biologists, you can now "easily" measure the expression of all genes in hundreds of thousands of cells.
Doing this you can figure out the different cell types, which genes are involved them, and which stage of development cell types start (dis)appearing. But remember that we separated all of the cells, so we lost the context of the original tissue. To fix this, you can take new tissue samples, and apply techniques like smFISH or MERFISH[4] to to attach fluorescent markers to individual copies of RNA of a specific gene. Gene expression is measured just by counting the number fluorescent dots on microscope slide, each representing an individual RNA molecule. Yes, biologists actually do this (with software help of course), and it works. You end up with a map of gene expression in the tissue. Also the pictures look beautiful.
This is, in a nutshell, single-cell transcriptomics[5]. Or at least the part I am exposed to through the research group I work for. It's mind-boggling and awesome to see what has become possible in the span of just a few years, and the field hasn't plateaued yet.
Thanks to all of this data we can discover all kinds of wonderful things that were invisible before. A simple example: last year it was discovered that one type of neuron in the sympathetic nervous system turned out to have seven sub-types from the genetic point of view[6]. The hypothesis is that having many sub-types makes sure they "wire up" correctly; you wouldn't want to have goosebumps whenever your heart beats. Of course, the part of the article that went viral was that we have a type of neuron solely responsible for goose bumps and nipple erections...
Anyway, the speed and size at which data is being gathered is rapidly growing. The article even mentions this explicitly. New techniques for dealing with this growing mountain of data are developed rapidly too. For example, the research group I work for just co-published a paper with Peter Kharchenko's group, describing a technique to estimate in which direction a cell's RNA expression is moving[7]. So instead of just having scalar tSNE scatter plots, we get tSNE vector fields, showing us the direction in which cell development is moving. And the coolest part is that it can be applied to existing data sets, because it relies of various types of measurements that were already being done anyway.
I'm just standing at the sidelines of all this, being incredibly impressed and humbled that I get to try to contribute a little bit to all of this. I'm just a programmer/interaction designer. Sten Linnarsson hired me to develop a user-friendly, flexible and fast web-based data browser, the Loom Viewer, for his new Loom data format. But this post is long enough as is, to I'll reply to myself with a comment explaining that.
Anyway, this is an exciting, ambitious project, that probably will have an enormous impact on biology and medical research, on a much shorter time-scale than you think.
[0] http://linnarssonlab.org/ http://linnarssonlab.org/
[1] https://en.wikipedia.org/wiki/Altair_8800 https://en.wikipedia.org/wiki/Altair_8800, https://www.youtube.com/watch?v=1FDigtF0dRQ https://www.youtube.com/watch?v=1FDigtF0dRQ
[2] https://scifi.stackexchange.com/questions/15141/how-did-the-computer-virus-get-uploaded-into-the-mothership-in-independence-day#15143 https://scifi.stackexchange.com/questions/15141/how-did-the-...
[3] http://mccarrolllab.com/dropseq/ http://mccarrolllab.com/dropseq/, https://directorsblog.nih.gov/2015/06/02/single-cell-analysis-powerful-drops-in-the-bucket/#more-4718 https://directorsblog.nih.gov/2015/06/02/single-cell-analysi...
[4] http://thenode.biologists.com/fishing-fish-2/resources/ http://thenode.biologists.com/fishing-fish-2/resources/, https://www.youtube.com/watch?v=-jIZ3bH-rAE https://www.youtube.com/watch?v=-jIZ3bH-rAE
[5] https://en.wikipedia.org/wiki/Single-cell_transcriptomics https://en.wikipedia.org/wiki/Single-cell_transcriptomics
[6] http://ki.se/en/news/special-nerve-cells-cause-goose-bumps-and-nipple-erection http://ki.se/en/news/special-nerve-cells-cause-goose-bumps-a..., http://www.nature.com/neuro/journal/v19/n10/full/nn.4376.html http://www.nature.com/neuro/journal/v19/n10/full/nn.4376.htm...
[7] https://www.biorxiv.org/content/early/2017/10/19/206052 https://www.biorxiv.org/content/early/2017/10/19/206052, http://velocyto.org/ http://velocyto.org/
- vanderZwan 9y agoSo believe it or not, a lot of genomic research uses text-based formats. When I first heard that my jaw dropped to the floor - we're talking about an alphabet with four letters, and you're using ASCII? Really? Similarly, for gene expression, CSV files were pretty common, probably because it's the most "neutral" format for tabular data. Obviously, this doesn't scale if you are going to measure so much data that your table consists of tens of thousands of genes by hundreds of thousands of cells. So my boss, professor Sten Linnarsson decided that his group needed a more efficient file format. And ideally, it would become adopted by other labs, so that everyone could easily exchange information. The result is the .loom file format[0]. It's open source, BSD licensed, and it comes with a SciPy support library out of the box. It is HDF5-based[1], which has the benefit of being an old, battle-tested system, and platform-independent. Another problem to address is that a lot of gene data is out there, but when it comes to asking simple questions you need to do a lot of work. Researchers have to "anticipate" what kind of questions people might ask about their data and put in the effort of creating a website for it. For example, for one of the groups recent papers, they created a simple website that lets you explore the gene expression of a single gene[2]. It turned out to be very popular. So he wanted a more generic viewer for the Loom format, that lets you quickly explore the metadata en gene data and ask simple questions (for complicated stuff you will always need to download the whole dataset). That is what I have been building. The Loom Viewer[0] is an SPA lets you explore Loom files without having to download the whole data set. If, for example, you are interested in a few dozen genes, but the data set is a hundred thousands cells and tens of thousands of genes in size, it is both wasteful and time-consuming to have to download all of that. You can run it off-line with Loom files you created yourself, and you can use it to serve loom files to others. The app is still very rough around the edges, but feel free to have a look. It's a really fun project, my first dive into web-dev, which was a bit frustrating at times because I basically had to teach myself everything without any guidance or help. But I learned all kinds of cool things: the app makes use of the canvas and typed arrays for relatively fast rendering[3] and minimal bandwidth overhead (most comparable viewers download image data from the server), has off-line storage for fast gene retrieval, stores the state regarding the "view settings" in the URL so you can inherently share links, etc. The great thing about working for a professor is that he lets you indulge in building cool stuff for them. [0] https://github.com/linnarsson-lab/loompy https://github.com/linnarsson-lab/loompy [1] https://en.wikipedia.org/wiki/Hierarchical_Data_Format https://en.wikipedia.org/wiki/Hierarchical_Data_Format [2] http://linnarssonlab.org/cortex/ http://linnarssonlab.org/cortex/ [2] https://github.com/linnarsson-lab/loom-viewer https://github.com/linnarsson-lab/loom-viewer [3] In case you're wondering: "why not WebGL?" Well, because my target audience includes old professors who print out websites. I actually need to render 100 separate canvases; faking it with one WebGL overlay like regl does here: http://idyll-lang.org/idyll-regl-component/ http://idyll-lang.org/idyll-regl-component/ would not survive the print command.