Using R: Two plots of principal component analysis

PCA is a very common method for exploration and reduction of high-dimensional data. It works by making linear combinations of the variables that are orthogonal, and is thus a way to change basis to better see patterns in data. You either do spectral decomposition of the correlation matrix or singular value decomposition of the data matrix and get linear combinations that are called principal components, where the weights of each original variable in the principal component are called loadings and the transformed data are called scores. Spurred by this question, I thought I’d share my favourite PCA plots. Of course, this example uses R and ggplot2, but you could use anything you like.

First, let us generate some nonsense data — 50 samples and 70 variables in groups of ten. Variables in the same group are related, and there is relationship between values of the variables and sample group numbers. I didn’t worry too much about the features of the data, except I wanted some patterns and quite a bit of noise. The first principal component explains approximately 20% of the variance.

sample.groups <- c(rep(1, 10), rep(2, 10), rep(3, 10),
  rep(4, 10), rep(5, 10))
variable.groups <- c(rep(1, 10), rep(2, 10), rep(3, 10),
  rep(4, 10), rep(5, 10), rep(6, 10),
  rep(7, 10))

data <- matrix(nrow=length(sample.groups), ncol=70)
base.data <- matrix(nrow=length(sample.groups), ncol=7)

for (j in 1:ncol(base.data)) {
  mu <- rnorm(1, 0, 4)
  sigma <- runif(1, 5, 10)
  base.data[,j] <- sample.groups*mu +
  rnorm(length(sample.groups), 0, sigma)
}

for (j in 1:ncol(data)) {
  mu <- runif(1, 0, 4)
  data[,j] <- base.data[,variable.groups[j]] +
  rnorm(length(sample.groups), mu, 10)
}

Here is the typical correlation heatmap of the variables:

pca_heatmap

heatmap <- qplot(x=Var1, y=Var2, data=melt(cor(data)), geom="tile",
fill=value)

Maybe what we want to know is what variables go together, and if we can use a few of the principal components to capture some aspect of the data. So we want to know which variables have high loading in which principal components. I think that small multiples of barplots (or dotplots) of the first few principal components does this pretty well:

library(reshape2)
library(ggplot2)

pca <- prcomp(data, scale=T)
melted <- cbind(variable.group, melt(pca$rotation[,1:9]))

barplot <- ggplot(data=melted) +
  geom_bar(aes(x=Var1, y=value, fill=variable.group), stat="identity") +
  facet_wrap(~Var2)

pca_barplot

As usual, I haven’t put that much effort into the look. If you were to publish this plot, you’d probably want to use something other than ggplot2 defaults, and give your axes sensible names. In cases where we don’t have a priori variable groupings we can just omit the fill colour. Maybe sorting the bars by loading could be useful to quickly identify the most influential variables.

In other applications we’re more interested in graphically looking for similarities between samples, and then we have more use for the scores. For instance, in genetics a scatterplot of the first principal components is typically used to show for patterns of genetic similarity between individuals drawn from different populations. This is a component of the so-called biplot.

scores <- data.frame(sample.groups, pca$x[,1:3])
pc1.2 <- qplot(x=PC1, y=PC2, data=scores, colour=factor(sample.groups)) +
  theme(legend.position="none")
pc1.3 <- qplot(x=PC1, y=PC3, data=scores, colour=factor(sample.groups)) +
  theme(legend.position="none")
pc2.3 <- qplot(x=PC2, y=PC3, data=scores, colour=factor(sample.groups)) +
  theme(legend.position="none")

pca_scatterplots

In this case, small multiples are not as easily made with facets, but I used the multiplot function by Winston Chang.

Öppna data, kunskap och #sverigeligger

Trogna läsare, i den mån min blogg har sådant, har nog lagt märke till att jag tittat lite närmare på Aftonbladet och United minds undersökning om svenskarnas sexvanor och kom till lite andra slutsatser om förhållandet mellan sex och partisympatier. Men oavsett det så finns det två saker jag vill passa på att påpeka lite starkare:

1. Jag är åter igen inte en av dem som tycker att en stor undersökning om sex är onödig, fånig, ointressant eller vad gnällspikarna nu säger. Tvärtom! Sex är intressant, sex är viktigt och det finns inget annat sätt att få veta när folk har sex, hur de har sex och vad de känner inför det än att fråga dem. Och det finns inget annat sätt att bringa ordning i stora mängder data än statistisk analys. Jag instämmer helt när Aftonbladets skribenter frågar efter en vetenskaplig undersökning. Jag har på mitt bord den tidigare undersökningen från 1997 (Bo Lewin (red). ”Sex i Sverige. Om sexuallivet i Sverige 1996”,  Uppsala) och jag tänkte citera en passage från följebrevet som gavs till dem som deltog, som jag tycker fint illustrerar värdet av sådana undersökningar:

Några resultat av undersökningen 1967

Detta trodde forskare och myndigheter före undersökningen

1. Ungdomars första sexuella erfarenhet sker ofta efter en danstillställning där man druckit sprit och knutit tillfälliga intima bekantskaper. (…)

2. Mycket få ungdomar använder preventivmedel vid sitt första samlag. (…)

3. Jordbrukare har stor kunskap om sex och har också en friare inställning. (…)

Detta tyckte man var helt rimliga antaganden, ja rent av självklara, som stämde med sunt förnuft och med vad lärda män sa. En sak hade de gemensamt: De var alla felaktiga!

2. Det är värt att upprepa hur coolt det är att Aftonbladet och United minds släppt data från undersökningen! Den här skärmbilden visar min favoritgrej med undersökningen (min inringning):

ladda_ner_undersokning

Hur häftigt är inte det? Fritt tillgängliga öppna data är en stor grej både inom vetenskap och offentliga organisationer, och jag är väldigt glad att Aftonbladet och United minds inte bara släpper sina data — de lägger dessutom en länk till datafilen på kampanjsidan, som om det vore den självklaraste sak i världen. Att de gör det möjliggör oberoende analys (som mina små diagram). Föredömligt!

Using R: drawing several regression lines with ggplot2

Occasionally I find myself wanting to draw several regression lines on the same plot, and of course ggplot2 has convenient facilities for this. As usual, don’t expect anything profound from this post, just a quick tip!

There are several reasons we might end up with a table of  regression coefficients connecting two variables in different ways. For instance, see the previous post about ordinary and orthogonal regression lines, or as a commenter suggested: quantile regression. I’ve never used quantile regression myself, but another example might be plotting simulations from a regression or multiple regression lines for different combinations of predictors.

Let’s start with a couple of quantile regressions. Ordinary regression compares the mean difference in a response variable between different values of the predictors, while quantile regression models some chosen quantiles of the response variable. The rq function of Roger Koenker’s quantreg package does quantile regression. We extract the coefficient matrix and make a dataframe:

library(quantreg)
model.rq <- rq(Temp ~ Wind, airquality, tau=c(0.25, 0.5, 0.75))
quantile.regressions <- data.frame(t(coef(model.rq)))
colnames(quantile.regressions) <- c("intercept", "slope")
quantile.regressions$quantile <- rownames(quantile.regressions)
quantile.regressions
         intercept     slope  quantile
tau= 0.25 85.63636 -1.363636 tau= 0.25
tau= 0.50 93.03448 -1.379310 tau= 0.50
tau= 0.75 94.50000 -1.086957 tau= 0.75

The addition of the quantile column is optional if you don’t feel the need to colour the lines.

library(ggplot2)
scatterplot <- qplot(x=Wind, y=Temp, data=airquality)
scatterplot + geom_abline(aes(intercept=intercept, slope=slope,
  colour=quantile), data=quantile.regressions)

We use the fact that ggplot2 returns the plot as an object that we can play with and add the regression line layer, supplying not the raw data frame but the data frame of regression coefficients.

quantile_scatter

”How to draw the line” with ggplot2

In a recent tutorial in the eLife journal, Huang, Rattner, Liu & Nathans suggested that researchers who draw scatterplots should start providing not one but three regression lines. I quote,

Plotting both regression lines gives a fuller picture of the data, and comparing their slopes provides a simple graphical assessment of the correlation coefficient. Plotting the orthogonal regression line (red) provides additional information because it makes no assumptions about the dependence or independence of the variables; as such, it appears to more accurately describe the trend in the data compared to either of the ordinary least squares regression lines.

eLife_regressions

Not that new, but I do love a good scatterplot, so I decided to try drawing some lines. I use the temperature and wind variables in the air quality data set (NA values removed). We will  need Hadley Wickham’s ggplot2 and Bendix Carstensen’s, Lyle Gurrin’s and Claus Ekstrom’s MethComp.

library(ggplot2)
library(MethComp)

data(airquality)
data <- na.exclude(airquality)

Let’s first make the regular old scatterplot with a regression (temperature as response; wind as predictor):

plot.y <- qplot(y=Temp, x=Wind, data=data)
model.y <- lm(Temp ~ Wind, data)
coef.y <- coef(model.y)
plot.y + geom_abline(intercept=coef.y[1],
  slope=coef.y[2])

drawing_the_line_y

And then, a regular old scatterplot of the other regression:

plot.x <- qplot(y=Wind, x=Temp, data=data)
model.x <- lm(Wind ~ Temp, data)
coef(model.x)
plot.x + geom_abline(intercept=coef(model.x)[1],
  slope=coef(model.x)[2])

drawing_the_line_x

So far, everything is normal. To put both lines in the same plot, we’ll need to rearrange the coefficients a little. From the above regression we get the equation x = a + by, and we rearrange it to y = – a / b + (1 / b) x.

rearrange.coef <- function(coef) {
  alpha <- coef[1]
  beta <- coef[2]
  new.coef <- c(-alpha/beta, 1/beta)
  names(new.coef) <- c("intercept", "slope")
  return(new.coef)
}
coef.x <- rearrange.coef(coef(model.x))

The third regression line is different: orthogonal, total least squares or Deming regression. There is a function for that in the MethComp package.

deming <- Deming(y=airquality$Temp, x=airquality$Wind)
deming

We can even use the rearrange.coef function above to see that the coefficients of Deming regression does not depend on which variable is taken as the response or predictor:

rearrange.coef(deming)
 intercept      slope 
24.8083259 -0.1906826
Deming(y=airquality$Wind, x=airquality$Temp)[1:2]
 Intercept      Slope 
24.8083259 -0.1906826

So, here is the final plot with all three lines:

plot.y + geom_abline(intercept=coef.y[1],
  slope=coef.y[2], colour="red") +
  geom_abline(intercept=coef.x[1],
  slope=coef.x[2], colour="blue") +
  geom_abline(intercept=deming[1],
  slope=deming[2], colour="purple")

drawing_the_line_3

Now for the dénouement of this post. Of course, there’s already an R function for doing this. It’s even in the same package as I used for the Deming regression; I just didn’t immediately rtfm. It uses base R graphics, though, and I tend to prefer ggplot2:

plot(x=data$Wind, y=data$Temp)
bothlines(x=data$Wind, y=data$Temp, Dem=T, col=c("red", "blue", "purple"))

This is the resulting plot (and one can even check out the source code of bothlines and see that I did my algebra correctly).

drawing_the_line_bothlines

In this case, as well as in a few others that I tried, it seems like one of the ordinary regression lines (in this case the one with wind as response and temperature as predictor) is much closer to the Deming regression line than the other. I wonder under what circumstances that is the case, and if it tells anything useful about the variables. I welcome any thoughts on this matter from you, dear reader.

Literature

Huang L, Rattner A, Liu H, Nathans J. (2013) Tutorial: How to draw the line in biomedical research. eLife e00638 doi:10.7554/eLife.00638

Mer om Aftonbladets sexundersökning

Igår kväll var jag dryg på Twitter men ikväll känner jag ett behov att komma med något lite mer konstruktivt (fast bara lite), det vill säga rita några fler diagram och säga ett par sensmoraler.

dryg_tweet

Aftonbladet och United minds har alltså gjort en enkät om sex som tidningen försöker krama fram det mesta ur. Jag läste först om den när det började handla om skillnader i sexvanor mellan folk som röstar på olika partier, men Aftonbladet har tidigare påstått att den visar någon sorts ”bottenrekord” i sexuell aktivitet. I gårdagens post visade jag ett diagram över de som i undersökningen svarat på vilket parti de skulle rösta på om det var val idag och hur många gånger de uppgav att de haft sex de senaste 30 dagarna. Det är en ganska rörig bild, men den gör i alla fall tydligt att Aftonbladets rubrik, ”Kristdemokrater har mest sex” är snömos. Underrubriken, ”stora skillnader mellan partiväljarna” är inte heller sann. Vad som är sant är att medelvärdet i antalet ligg är högst bland de som kryssat kristdemokraterna. Här är diagrammet igen:

Rplot02

På den horisontala axeln ser vi alltså vilket parti de svarade och på den vertikala antalet gånger de haft sex de senaste 30 dagarna. (Någon undrade hur det kommer sig att punkter kan hamna strax under noll? För att alla punkter inte ska hamna ovanpå varandra har vi lagt på ett lite slumpvis brus.) Allra längst upp vid femtio (fler än femtio var det största alternativet) finns två punkter: två deltagare i undersökningen som svarat att de haft sex fler än femtio gånger senaste månaden och skulle rösta på KD. Dessa två extrempunkter drar upp medelvärdet för KD-gruppen, som är jämförelsevis liten och får den att verka extremare än den egentligen är. Så — första sensmoralen: Rita diagram och se efter om de numeriska resultaten verkar rimliga!

Men undersökningen innehåller massor av andra frågor. En av dem föranledde Ivar Arpi, ledarskribent på Svenska dagbladet, att också vara dryg på Twitter.

dryg_tweet_2

Ligger det något i det då? Aftonbladets graf visar, åter igen, i medeltal mer onani för de som kryssat SD och V. Men medelvärdet är som sagt känsligt för extrema värden. Och, som det här diagrammet visar, precis som sex med andra så har onanifrekvensen en väldigt ojämn fördelning. Det är många som uppger att de onanerar lite och några få som onanerar mycket. Här kommer samma typ av prickdiagram men med onanifrekvensen på den vertikala axeln (och punkter som är färgade efter kön, för här är en variabel där det faktiskt verkar finnas en märkbar könsskillnad):

onani1

Det är en ganska rörig bild, som sagt. Men den visar i alla fall ett liknande mönster som ovan. Här ser SD och V inte särskilt speciella ut, eller hur? Men Aftonbladet visar inte alla data, utan bara medelvärden. Medelvärden är som sagt känsliga för extrema värden. Det mittersta värdet, medianen, är ett annat lägesmått som inte är lika känsligt. Låt oss titta på medianer och medelvärden:

onani_prickdiagram

Så, medelvärdet (den röda pricken) är hela tiden högre än medianen (den turkosa) — det tyder på att fördelningen är sned och att de flesta observationerna har låga värden. Inget nytt. Om vi tittar på medianerna verkar inte V och SD lika extrema. SD får median på två gånger per månad, precis som nästan alla partier. V och MP har medianen tre. Inte ens om vi tar medelvärdena för vad de är så blir det någon vidare imponerande skillnad. Medelvärdet för onani bland de som kryssat V och SD är ungefär sju. Medelvärdet för M är ungefär 5.5. Att onanera en och en halv gång mer eller mindre i månaden, är det en skillnad att twittra om? Andra sensmoralen: Titta på siffrorna och fundera på om skillnaden är stor (eller liten) nog för att vara meningsfull.

Tyvärr är det ganska lätt att lura sig själv med dataanalys och se saker som inte finns där. Aftonbladets artiklar innehåller flera pinsamma citat av forskare, politiker med flera som resonerar om varför folk nuförtiden eller folk som röstar si eller så har sex på olika sätt. De kan tjäna som exempel på hur lätt det alltid är att hitta på en rimlig historia sådär i efterhand som förklarar de siffror som råkade trilla ut ur analysen. Till sist: jag tillhör inte de som tycker att undersökningens ämne är fånigt och onödigt i sig. En undersökning av sex i Sverige kan definitivt vara nyttig och intressant. Så tack Aftonbladet och United minds för att ni gjort era data fritt tillgängliga! På den fronten är ni verkligen ett föredöme. Men inga tack för att ni sprider dåliga tolkningar utan vidare stöd i ert data.

Fotnot

Tanja Suhinina har också bloggat förtjänstfullt om undersökningen (och länkat till mitt lilla diagram! woho!) och kritiserar inte bara delen om politiska sympatier utan också själva huvudnyheten om ”bottenrekordet”. Det resultatet verkar också sådär lagom pålitligt.

Så kristdemokrater har mest sex, säger ni?

Nja. Två som röstar på kristdemokraterna har mycket sex.

Rplot02

Aftonbladet har köpt någon sorts undersökning om svenskarnas sexvanor. Hoppas det var en god investering; jag tror i alla fall den har genererat löpsedlar ett par dagar. Nu har turen kommit till politiska sympatier och sex. Data finns på United minds hemsida. Kristdemokraterna har alltså minst stickprovsstorlek, men hela två som uppgivit att de haft sex fler än femtio gånger de sista 30 dagarna. Sådana extrema värden kan dra iväg medelvärdet ganska ordentligt, som till exempel i Aftonbladets diagram, vilket därför är rätt missvisande.

Fler gyckelblommor och deras cis- och transreglerade färger

Detta har hänt: Det finns röda och gula gyckelblommor som bor i olika delar av Californien. I ett område där de möts, en så kallad hybridzon, kan de korsa sig, men populationerna är ändå till största del separerade bland annat för att röda och gula blommor pollineras av olika djur som föredrar blommor av respektive färg. Det vore alltså extra kul att veta vilka genetiska varianter som skiljer röda och gula blommor, eftersom de också är varianter som påverkar reproduktiv isolering mellan olika populationer av gyckelblommor. Anthocyaniner är röda och lila färgämnen i växter; gener inblandade i anthocyaninhantering är såklart huvudmisstänkta. Därför gjorde Streisfeld & Rauscher (2009) en genuttrycksundersökning av de gener som kodar för de proteiner som tillverkar anthocyanin i de här blommorna. Mycket riktigt: regleringen av anthocyaninsyntes skiljer sig mellan blommorna, och genetisk kartläggning ledde Streisfeld & Rauscher till två regioner i genomet. I en av dem ligger genen Dfr, som kodar ett av enzymerna i kedjan. Det var en väldigt rimlig hypotes att någon variant i Dfr skulle vara inblandad, men så verkar inte vara fallet. Tillbaka till ritbordet: finns det någon annan gen, nära Dfr, som kan vara inblandad istället? Där står vi när den dagens artikel börjar.

Det är inte meningen att den här bloggen ska handla helt om gyckelblommor, men det är var också för bra att inte skriva om: genetisk kartläggning, genuttryck, naturligt förekommande varianter som påverkar egenskaper. Växter eller djur spelar mindre roll: den här artikeln är ett typiskt exempel på genetisk forskning jag är intresserad av. (Det är i alla fall inte precis samma art som förra gångerna: Mimulus aurantiacus istället för guttatus …) Även om jag är förtjust i diagram och grafer för egen del är jag ganska usel på att titta noga på dem. Därför tänkte jag presentera den här artikeln i form av några av dess figurer. Det är också en anledning att jag föredrar att skriva om open access-artiklar, där det är fritt fram att återanvända bilder. Alla figurerna kommer från Streisfeld, Young & Sobel (2013) och omfattas av Creative Commons Attribution-licensen.

Figur 1 — en karta över hybridzonen och ett par fotografier av blommorna. Gula blommor finns åt öster och de röda åt väster.

journal.pgen.1003385.g001

Det här är en karikatyr av hur det röda färgämnet anthocyanin tillverkas i en växt: en serie kemiska rekationer som katalyseras av olika enzymer och som regleras av ett gäng transkriptionsfaktorer (delvis oklart vilka de alla är). Flera av generna i den här kedjan uttrycks olika mycket i röda och gula blommor — de reglerande transkriptionfaktorerna är de geometriska formerna till höger, och det är bland dem som den eftersökta genen (antaligen) finns. Det här är vad som på fikonspråk heter trans-reglering. Trans betyder typ ”på andra sidan”, och det betyder i det här sammanhanget att en gen regleras från någonannanstans i genomet, av en annan gen. Motsatsen är cis-reglering: reglering på nära håll. En transreglerande genetisk variant är något som påverkar en gen så att den i sin tur påverkar de andra gener som den reglerar.

journal.pgen.1003385.g002

Så de gav sig ut på jakt efter den saknade transreglerande genen. Anthocyaninsyntes är rätt väl beskrivet i en del andra växter, så de började med att leta upp potentiella transkriptionsfaktorer. Det finns ingen referenssekvens för Mimulus aurantiacus, så de vände sig mot släktingen M. guttatus och fann tre lovande kandidater som de kunde hitta uttryckta i blommorna.

Nästa figur är ett släktträd men inte av arter utan av gener, baserat på hur lika proteinernas aminosyrasekvenser är varandra. Pilarna pekar ut de tre misstänkta transkriptionsfaktorerna MaMyb1, 2 och 3. Generna heter alltså Myb1, 2 och 3 och de två första bokstäverna står för Mimulus aurantiacus. De jämförs med andra gener från andra arter, bland annat några ”Mg” (Mimulus guttatus) och ”At” (Arabidopsis thaliana; backtrav). MaMyb1 och MaMyb2 hamnar på samma gren som andra gener som är kända för att reglera anthocyanin i M. guttatus.

journal.pgen.1003385.g003

Tre gener alltså… Dags för lite genetisk kartläggning. Den misstänkta genen måste ligga ganska nära Dfr, på fikonspråk: vara länkad till Dfr. Hur avgör en det? Jo, genom att typa genetiska markörer nära MaMyb1, MaMyb2, MaMyb3 och Dfr, och se hur ofta det förekommer rekombinationer emellan dem; rekombinationsfrekvens är ju ett mått på genetiskt avstånd. De tittade i en experimentkorsning mellan röda och gula blommor, och MaMyb1 och 3 var inte länkad till Dfr, men avståndet till MaMyb2 var ungefär 11 cM (vilket är typ 11% rekombinationsfrekvens). Okej, har genotyp på MaMyb2 någon effekt på anthocyanin? Panel A visar effekten av genotyp hos MaMyb2 (svart stapel) och Dfr (vit stapel) i samma korsning — och mycket riktigt, MaMyb2 är associerat med anthocyanin. Dfr är det inte!

Panel B visar samma typ av resultat, men i naturligt förekommande hybrider från hybridzonen ovan. Det finns ett tydligt mönster där en viss genotyp (färg i diagrammet) på markörer i MaMyb2-genen överensstämmer med gul respektive röd färg. Markörer nära Dfr har inget tydligt mönster.

journal.pgen.1003385.g004

Okej, så om en vill veta ifall en gen utför en viss funktion, i det här fallet gör blommor röda, vad är ett bra experiment? Slå ut genen och se om funktionen också går sönder! Virus-induced gene silencing är en metod som lite liknar genterapi. Växter tolererar naturligtvis ogärna virus, och metoden går ut på att sätta in en kopia av en växtgen i ett virus, så att växten överreagerar och stänger ner uttrycket av den egna genen av bara farten. Nästa bild, panel A, visar ett exempel på resultatet. När MaMyb2 tystas blir en blomma som normalt skulle bli röd (om inte helt så delvis) gul:

journal.pgen.1003385.g006

Panel B visar att den synliga effekten också är där på molekylär nivå. De svarta visar genuttryck i normala blommor och de vita genuttryck i de virusbehandlade: Inte bara MaMyb2 utan också andra gener i anthocyaninsystemet är nedreglerade — vilket pekar på att MaMyb2 reglerar dem.

Så, MaMyb2 är definitivt inblandad i färg. Om den stängs av har det en effekt både på genuttryck och färg. Panel C — och det är den sista bilden vi ska titta på idag — visar resultatet av ett experiment för att pröva om det är just detta som händer med en naturligt förekommande genetisk variant i de röda och gula blommorna.

Tricket är att med pyrosekvensering (en sekvenseringsteknik som är lite annorlunda den den jag brukar prata om, men den har sin speciella roll) går det faktiskt att mäta genuttryck på allelnivå — i heterozygota individer (blommor som har både allelen för röda och för gula blommor), vilken av allelerna är det som uttrycks mest? De grå staplarna visar andelen av den röda allelen — och den är nära 1. Den gula allelen uttrycks nästan inte alls.

Det här är ett utmärkt tillfälle att introducera en teknisk term att skrämma vänner och bekanta med: detta betyder att MaMyb2 har en så kallad cis-eQTL. QTL står för quantitative trait locus — en plats i genomet (ett locus) som påverkar en kvantitativ egenskap. e:et står för expression — alltså genuttryck. Cis betyder som sagt att varianten är nära. Panel C tyder på att det finns en genetisk variant i närheten som påverkar regleringen av MaMyb2 och i sin tur blommornas färg. Sammantaget ger den här artikeln utmärkt stöd för en (ännu okänd) variant nära MaMyb2 som en av de två generna som förklarar skillnaden i färg mellan gula och röda blommor. Och där slutar vi för idag.

Litteratur

Streisfeld MA, Rausher MD. (2009) Altered trans-Regulatory Control of Gene Expression in Multiple Anthocyanin Genes  Contributes to Adaptive Flower Color Evolution in Mimulus aurantiacus. Molecular biology and evolution 26 ss. 433-44 doi: 10.1093/molbev/msn268

Streisfeld MA, Young WN, Sobel JM (2013) Divergent Selection Drives Genetic Differentiation in an R2R3-MYB Transcription Factor That Contributes to Incipient Speciation in Mimulus aurantiacus. PLoS Genet 9 e1003385 doi:10.1371/journal.pgen.1003385

Slides and exercise from my second R intro seminar

This week I held the second introductory seminar on R, and I think it went pretty well — though I guess you really should ask my colleagues if you want to know. The first seminar was a lecture, and this seminar was a tutorial where we made some plots and calculated a few of the usual statistics. Of course the only real way to learn R is to play with it, but I hope this couple of hours provided a decent opening to getting started with R.

I actually think RStudio made it quite a bit easier. One important thing that I certainly should’ve stressed more, though, is organising code into scripts. I mentioned it in the first seminar, but I should have included it into the exercise. Maybe the first section should be something like ”Start a new script file for your analysis: Select File > New > R script to open the editor area. Save the script as unicorn_analysis.R, and for the rest of the tutorial, write your code in that window.”

Files from the seminar:

Slides about common statistical functions in R (again, ugly walls of text meant more as notes for future reference than actual slides)

Exercises for the tutorial and the associated dataset

My suggested solutions to the exercises

Att tolka agarosgel

Några ord och bilder om att tolka och tyda resultaten av agarosgelelektrofores:

tolka_gel

I bilden står det:

Martins guide till att tolka agarosgel

Vanlig gel efter pcr (för sekvensering eller dylikt): produkt av förväntad längd; ett band från specifik pcr. Inget band i negativ kontroll. Korta svaga primer dimer-band kan vara acceptabelt. Stege.

Storleksbestämning (t.ex. gentypning med mikrosatelliter): Olika alleler ger olika lång produkt (ofta en liten skillnad). Två band — heterozygot. Det behövs en negativ kontroll här också, men jag ritade en för liten gel.

Den ökända fruktade tomma gelen: Kolla dina anteckningar och beräkningar! Gör om pcr-reaktionen minst en gång innan du blir förtvivlad! Avsaknad av band betyder inte att sekvensen saknas. För att visa avsaknad av den sökta sekvensen krävs smarta positiva kontroller.

Lycka till i labbet!

Undervisning: agarosgelelektrofores

agarosgelelektrofores

Typa mikrosatelliter med pcr och agarosgelelektrofores: pedagogiskt exempel på hur molekylärbiologi är väntetidernas biologi. Det är ju ganska komiskt att de två (jämförelsevis) komplicerade stegen dna-isolering och pcr hinns med på kanske tre timmar medan att köra en gel tar fyra. Ändå var separationen lite sådär. Vi kan dra till med högre agaroskoncentration, men då kommer det ta ännu mer tid.