There is grandeur in this view of life

martins bioblogg

Finding the distance from ChIP signals to genes

with one comment

I’ve had a couple of months off from blogging. Time for some computer-assisted biology! Robert Griffin asks on Stack Exchange about finding the distance between HP1 binding sites and genes in Drosophila melanogaster.  We can get a rough idea with some public chromatin immunoprecipitation data, R and the wonderful BEDTools.

Finding some binding sites

There are indeed some ChIP-seq datasets on HP1 available. I looked up these ones from modENCODE: modENCODE_3391 and modENCODE_3392, using two different antibodies for Hp1b in 16-24 h old embroys. I’m not sure since the modENCODE site doesn’t seem to link datasets to publications, but I think this is the paper where the results are reported: A cis-regulatory map of the Drosophila genome (Nègre & al 2011).

What they’ve done, in short, is cross-linking with formaldehyde, sonicate DNA into fragments, capture fragments with either of the two antibodies and sequence those fragments. They aligned reads with Eland (Illumina’s old proprietary aligner) and called peaks (i.e. regions where there is a lot of reads, which should reflect regions bound by Hp1b) with MACS. We can download their peaks in general feature format.

I don’t know whether there is any way to make completely computation predictions of Hp1 binding sites but I doubt it.

Some data cleaning

The files are available from ftp, and for the below analysis I’ve unzipped them and called them modENCODE_3391.gff3 and modENCODE_3392.gff3. GFF is one of all those tab separated text files that people use for genomic coordinates. If you do any bioinformatics type work you will have to convert back and forth between them and I suggest bookmarking the UCSC Genome Browser Format FAQ.

Even when we trust in their analysis, some processing of files is always required. In this case, MACS sometimes outputs peaks with negative start coordinates in the beginning of a chromosome. BEDTools will have none of that, because ”malformed GFF entry at line … Start was greater than end”. In this case, it happens only at a few lines, and I decided to set those start coordinates to 1 instead.

We need a small script to solve that. As I’ve written before, any language will do, but I like R and tend to do my utility scripting in R (and bash). If the files were incredibly huge and didn’t fit in memory, we’d have to work through the files line by line or chunk by chunk. But in this case we can just read everything at once and operate on it with vectorised R commands, and then write the table again.

modENCODE_3391 <- read.table("modENCODE_3391.gff3", stringsAsFactors=F, sep="\t")
modENCODE_3392 <- read.table("modENCODE_3392.gff3", stringsAsFactors=F, sep="\t")

fix.coord <- function(gff) {
  gff$V4[which(gff$V4 < 1)] <- 1

write.gff <- function(gff, file) {
  write.table(gff, file=file, row.names=F, col.names=F,
              quote=F, sep="\t")

write.gff(fix.coord(modENCODE_3391), file="cleaned_3391.gff3")
write.gff(fix.coord(modENCODE_3392), file="cleaned_3392.gff3")

Flybase transcripts

To find the distance to genes, we need to know where the genes are. The best source is probably the annotation made by Flybase, which I downloaded from the Ensembl ftp in General transfer format (GTF, which is close enough to GFF that we don’t have to care about the differences right now).

This file contains a lot of different features. We extract the transcripts and find where the transcript model starts, taking into account whether the transcript is in the forward or reverse direction (this information is stored in columns 4, 5 and 7 of the GTF file). We store this in a new GTF file of transcript start positions, which is the one we will feed to BEDTools:

ensembl <- read.table("Drosophila_melanogaster.BDGP5.75.gtf",
                      stringsAsFactors=F, sep="\t")

transcript <- subset(ensembl, V3=="transcript")
transcript.start <- transcript
transcript.start$V3 <- "transcript_start"
transcript.start$V4 <- transcript.start$V5 <- ifelse(transcript.start$V7 == "+",
                                                     transcript$V4, transcript$V5)

write.gff(transcript.start, file="ensembl_transcript_start.gtf")

Finding distance with BEDTools

Time to find the closest feature to each transcript start! You could do this in R with GenomicRanges, but I like BEDTools. It’s a command line tool, and if you haven’t already you will need to download and compile it, which I recall being painless.

bedtools closest is the command that finds, for each feature in one file, the closest feature in the other file. The -a and -b flags tells BEDTools which files to operate on, and the -d flag that we also want it to output the distance. BEDTools writes output to standard out, so we use ”>” to capture it in a text file.

Here is the bash script. I put the above R code in clean_files.R and added it as an Rscript line at the beginning, so I could run it all with one file.

Rscript clean_files.R

bedtools closest -d -a ensembl_transcript_start.gtf -b cleaned_3391.gff3 \
    > closest_element_3391.txt
bedtools closest -d -a ensembl_transcript_start.gtf -b cleaned_3392.gff3 \
    > closest_element_3392.txt

Some results

With the resulting file we can go back to R and ggplot2 and draw cute graphs like this, which shows the distribution of distances from transcript to Hp1b peak for protein coding and noncoding transcripts separately. Note the different y-scales (there are way more protein coding genes in the annotation) and the 10-logarithm plus one transformation on the x-axis. The plus one is to show the zeroes; BEDTools returns a distance of 0 for transcripts that overlap a Hp1b site.

closest_3391 <- read.table("~/blogg/dmel_hp1/closest_element_3391.txt", header=F, sep="\t")

qplot(x=log10(V19 + 1), data=subset(closest_3391, V2 %in% c("protein_coding", "ncRNA"))) +
  facet_wrap(~V2, scale="free_y")


Or by merging the datasets from different antibodies, we can draw this strange beauty, which pretty much tells us that the antibodies do not give the same result in terms of the closest feature. To figure out how they differ, one would have to look more closely into the genomic distribution of the peaks.

closest_3392 <- read.table("~/blogg/dmel_hp1/closest_element_3392.txt", header=F, sep="\t")

combined <- merge(closest_3391, closest_3392,
                  by.x=c("V1", "V2","V4", "V5", "V9"),
                  by.y=c("V1", "V2","V4", "V5", "V9"))

qplot(x=log10(V19.x+1), y=log10(V19.y+1), data=combined)


(If you’re wondering about the points that end up below 0, those are transcripts where there are no peaks called on that chromosome in one of the datasets. BEDTools returns -1 for those that lack matching features on the same chromosome and R will helpfully transform them to -Inf.)

About the DGRP

The question mentioned the DGRP. I don’t know that anyone has looked at ChIP in the DGRP lines, but wouldn’t that be fun? Quantitative genetics of DNA binding protein variation in DGRP and integration with eQTL … What one could do already, though, is take the interesting sites of Hp1 binding and overlap them with the genetic variants of the DGRP lines. I don’t know if that would tell you much — does anyone know what kind of variant would affect Hp1 binding?

Happy hacking!

Written by mrtnj

4 juli, 2014 at 20:08

”Forskaren är fri”

leave a comment »

Politiska ideologier
eländets filosofi
etablissemangets kotterier
men forskaren är fri
dogmatiska religiösa sekter
vetenskapens trolleri
materialismens effekter
men forskaren är fri

Kjell Höglund, Forskaren är fri

En behöver egentligen inte ens veta att Kjell Höglund skrivit böcker med någon sorts esoteriskt innehåll. Det räcker med att lyssna på texten för att förstå att forskaren i det här fallet inte är en akademisk forskare. Men ändå.


Written by mrtnj

1 maj, 2014 at 23:26

Publicerat i citerat

Tagged with ,

Journal club of one: ”Genome-wide association of foraging behavior in Drosophila melanogaster fails to support large-effect alleles at the foraging gene” (preprint)

with 4 comments

This preprint was posted on bioRxiv and Haldane’s sieve. It tells the story of one of the best known genetic variants affecting behaviour, the foraging gene in Drosophila melanogaster. for is still a nice example of a large-effect variant causing (developmentally) pleiotropic effects. However, Turner & al present evidence questioning whether for has any substantial effect in natural populations of flies. I think it’s self-evident why I’m interested.

They look at previous evidence for foraging as a quantitative trait gene in files sampled from natural populations and perform genome-wide association and population genetic tests with 35 DGRP lines, finding nothing at the for locus.


(Since this is a preprint, I will feel free to suggest what I think could be improvements to the manuscript. Obviously, these are just my opinions.)

I’m not convinced one can really separate a unimodal from a bimodal distribution with 36 data points? Below are a few histograms simulated from a mixture of two normal distributions where 25 samples are ”rovers” and 11 ”sitters”.


For fun, I also tested for normality with the Shapiro-Wilks’ test as the authors did, and about half of 1000 tests reject. My histograms should not be overinterpreted; I just generated two normal distributions with means log10(2.66) and log10(1.3) with standard deviations 0.1. I don’t know the actual standard deviations of the forS and forR reference strains. Of course, when the standard deviation is small enough, the distributions clearly separate and Shapiro-Wilks’ test will reject.

Power is difficult, but in this case the authors are looking at a well-known effect. They should be able to postulate some reasonable effect-sizes given the literature and the difference between the reference strains and make sure that they’re actually powered to detect it. 35 individuals for a GWAS is not much. They may still have good power to detect a effect of the size expected at for, at least in the single-point test, but it would be nice to demonstrate it. Power feels particularly pertinent as the authors claim to find evidence of absence. The same thing should apply to the population genetic tests, though it’s probably harder to know what effects to expect there.

The authors discuss alternative interpretations, and mention  the fact that in their hands the reference strains did not travel nearly as long as in previous experiments. How likely is it, though, that the variant isn’t segregating in Raleigh but in the populations previously sampled?


Thomas Turner, Christopher C Giauque, Daniel R Schrider, Andrew D Kern. (2014) Genome-wide association of foraging behavior in Drosophila melanogaster fails to support large-effect alleles at the foraging gene. Preprint on bioaRxiv. doi: 10.1101/004325

Written by mrtnj

30 april, 2014 at 19:59

Dagens rekommendation: Hans Rosling

leave a comment »

TED talks är ofta inget vidare men det finns lysande undantag. Hans Roslings tal är några av dem. Ed Yong, som jag rekommenderade häromveckan, ett annat.

Se inte bara den här videon, utan leta runt lite på Youtube.

Några saker att lägga märke till:

Rosling använder inte vilken visualisering som helst; han använder en visualisering som är en polerad variant av ett enkelt diagram med prickar.

Han drar slutsatser från modeller, inte bara grafik. Dels lutar han sig på demografiska modeller, som såvitt jag förstår är mekanistiska modeller över hur populationen av människor kommer växa. Dels extrapolerar han trender i sina diagram. Utan att han säger det skulle jag tro att det skulle motsvara linjära modeller.

Förutom att han uppenbarligen funderat mycket på vilka illustrationer han ska använda, så är han bra på att kalibrera sina jämförelser och ställa dem i relation till begripliga saker. Det är inget som kommer ur siffrorna, utan en fråga om tolkning.

Och, viktig: Rosling tolkar sina modeller som orsakssamband, inte bara som associationer. Han är intresserad av frågor om vad människor borde göra och vad som kommer hända då. Det är inte heller något som går att utläsa ur siffrorna. Det kräver tolkning och antaganden om orsakssamband, men är en oumbärlig del av Roslings argument.

Written by mrtnj

29 april, 2014 at 19:52

Publicerat i med mera

Tagged with , , ,

Könsurval: Propellrar, Batemangradient och operationell könskvot

leave a comment »

Könsurval är den del av evolution genom naturligt urval som handlar om att hitta en partner att fortplanta sig med. Sexuellt reproducerande organismer kan ha olika anpassningar för att attrahera en partner av motsatt kön eller konkurrera med andra individer av samma kön. De formas av könsurval, men exakt hur de formas beror på organismens livsstil, ekologi och historia. Kokko, Klug & Jennisons (2012) har publicerat en teoretisk modell för att illustrera när anpassningar till könsurval kan uppstå, och i somras hörde jag Hanna Kokko presentera den. Föreställ er en organism, vilken som helst, som ska till att fortplanta sig. Tänk att individerna rör sig på måfå tills de stöter på någon av motsatt kön. De parar sig, får ungar, och är upptagna med det ett tag; de är alltså borta från poolen av tillgängliga individer som kan para sig ett tag innan det är dags igen. Än så länge är detta en (något) förenklad sammanfattning av livet som sexuellt reproducerande organism. Tänk sedan att någon individ utvecklar en ärftlig egenskap som ökar sannolikheten att träffa på en partner. Kokko illustrerade det med en propeller som får dem att färdas omkring fortare. Under vilka förhållanden kommer propellern att främjas av könsurval och spridas i populationen under generationernas gång?

Nu är det frågan om en annan sorts modeller än de modeller jag ibland bloggar om. När jag skriver ”modell” menar jag oftast en statistisk modell som är ett hjälpmedel för att analysera empiriska data. Ett enkelt exempel är om jag mätt någon egenskap hos en population individer och är intresserad av medelvärdet. Då är det rimligt att använda någon sorts statistisk modell för att beskriva variationen inom populationen och få en uppfattning om osäkerheten i min uppskattning av medelvärdet. Men här är det frågan om mekanistiska modeller som gör anspråk på att beskriva någon generell egenskap hos ett fenomen (här: könsurval i en sexuellt reproducerande population), för att sedan dra slutsatser om hur sådana system beter sig. Det är inte en modell av data från en viss population, utan en modell av ett förenklat idealiserat system. I teoretisk biologi använder en ofta matematiska modeller som en sorts logiska argument kring hur biologiska fenomen fungerar.

Operationell könskvot är antalet hanar som är redo att para sig dividerat med antalet honor som är redo att para sig. De som är upptagna med annat och för tillfället inte kan reproducera sig räknas inte. Tanken är att när det är fler som är redo av det ena könet än det andra så blir det konkurrens emellan dem där fler är redo. Beroende på olika arters livsstil kan det vara fler eller färre honor och hanar som är redo att para sig vid en given tid. Det kanske till exempel tar väldigt lång tid att föda upp en kull ungar innan en har tid att skaffa och ta hand om en ny. På så sätt borde den operationella könskvoten påverka utrymmet för könsurval. Om det, till exempel, finns många hanar och få honor finns det stort utrymme för hanarna att utveckla olika anpassningar för att stå sig bra i konkurrensen. Om den operationella könskvoten är ungefär lika finns det ingen större konkurrens om partners och ingen vidare nytta med att lägga energi på det.

Nu till en gammal favorit: Batemangradienten! Vad den mäter är hur mycket det lönar sig att para sig med ännu en partner. Det vill säga: hur många fler ungar får en individ per extra partner. Batemans klassiska hypotes är att gradienten ska vara nära noll för honor, vilket betyder att de begränsas av resurserna de investerar i avkomman, och positiv för hanar, som investerar mindre i avkomman. Men det beror naturligtvis på hur organismen ifråga lever och hur dess könsroller ser ut.

De två ovanstående begreppen används ofta för att beskriva olika arters sociala system kring fortplantning. Men de mäter olika saker: den operationella könskvoten visar hur svårt eller lätt det är att hitta en partner till; Batemangradienten mäter hur mycket det skulle höja ens reproduktiva framgång. Sammantaget: det är mer lönsamt med anpassningar till könsurval om det finns en positiv Batemangradient (så att fler parningar betyder fler överlevande ungar) och en sned operationell könskvot (så att en faktiskt måste anstränga sig för att få para sig flera gånger), men räcker inte att titta på bara det ena eller det andra. Se Hanna Kokko själv prata bland annat om detta på ESEB2013 förra sommaren. Ja, videon är bitvis inget vidare men presentationsbilderna är mestadels läsbara och talarens röst är klar och tydlig! Jag gillar särskilt bilden med vattenglaset, som sammanfattar det tillstånd som ofta råder i biologi. Optimisten tycker att naturen är spännande med all sin komplexitet och pessimisten att den är en enda svårtolkad röra.


Kokko, H., Klug, H., & Jennions, M. D. (2012). Unifying cornerstones of sexual selection: operational sex ratio, Bateman gradient and the scope for competitive investment. Ecology letters, 15(11), 1340-1351.

Jag påmindes om presentationen när jag såg en bloggpost om ämnet av Lilly Herridge.

Written by mrtnj

28 april, 2014 at 19:48

Interactions between genetic and epigenetic

leave a comment »

More speculation about epigenetics and ways that epigenetic mechanisms of gene regulation could contribute to differences between individuals. Many cases, both in plants and animals, have to do with transposable elements, which makes a lot of sense since DNA methylation is involved in silencing the expression of transposable elements. Think about genetical genomics studies such as Gibbs & al (2010), where gene expression and DNA methylation is mapped to genomic regions. First, when expression QTL and methylation QTL coincide, it might be a good idea to start looking for transposable element insertions. Finding them are not as easy as finding SNPs, but hopefully, there will be SNPs tagging the actual variant and DNA methylation will spread outside of the inserted element to CpGs that are being typed. The element itself could of course work as a promoter, but it could also spread methylation into regulatory sequences of the gene, suppressing expression, or increase expression by changing the effect of an insulator.

Second, apparently the DNA methylation of transposable elements can sometimes be variable. This is the case with axin fused, Cabp-IAP and the agouti epialleles (Druker & al 2004; Vasicek & al 1997; Morgan & al 1999); among mice that carry the insertion there is DNA methylation variation causing phenotypic differences. This means that in populations where the insertion segregates, there should be a DNA methylation by gene interaction in the effect on the phenotype. I think that is fun, and I’d like to see someone find that in a mapping study. It might make things more difficult, though. The methylation–gene expression association might be hard to detect because it only exists in one of the alleles.

Third, maybe that is actually how a DNA methylation variant might escape reprogramming. Since some transposable elements are among the sequences that are not demethylated after fertilisation, and if that effect also applies to the newly inserted copy of the transposable element, our hypothetical regulatory methylation difference might be preserved through meiosis that way.


Gibbs, J. R., van der Brug, M. P., Hernandez, D. G., Traynor, B. J., Nalls, M. A., Lai, S. L., … & Singleton, A. B. (2010). Abundant quantitative trait loci exist for DNA methylation and gene expression in human brain. PLoS genetics, 6(5), e1000952.

Morgan, H. D., Sutherland, H. G., Martin, D. I., & Whitelaw, E. (1999). Epigenetic inheritance at the agouti locus in the mouse. Nature genetics, 23(3), 314-318.

Vasicek, T. J., Zeng, L. I., Guan, X. J., Zhang, T., Costantini, F., & Tilghman, S. M. (1997). Two dominant mutations in the mouse fused gene are the result of transposon insertions. Genetics, 147(2), 777-786.

Druker, R., Bruxner, T. J., Lehrbach, N. J., & Whitelaw, E. (2004). Complex patterns of transcription at the insertion site of a retrotransposon in the mouse. Nucleic acids research, 32(19), 5800-5808.

Written by mrtnj

27 april, 2014 at 12:08

Publicerat i Uncategorized

Tagged with , ,

”Made obvious by our use of contraceptives”

leave a comment »

I recently reread part of The Selfish Gene. The introduction to the 30th anniversary edition is great fun. For one thing, Dawkins expresses doubts about the word ”selfish” in the title, and ponders whether he should have called it the Immortal or Cooperative gene instead. That feels very ironic, and I for one think that he made the right choice. It also contains this nugget:

Our brains have evolved to a point where we are capable of rebelling against our selfish genes. The fact that we can do so is made obvious by our use of contraceptives. The same principle can and should work on a larger scale.

Written by mrtnj

26 april, 2014 at 11:55

Publicerat i citerat, english

Tagged with , ,


Få meddelanden om nya inlägg via e-post.

Gör sällskap med 1 136 andra följare