How do you get an academic job in biology?

You have published your research, figured out how to apply for grants, identified some absorbing big ideas to spend a few years or a lifetime on, but now you want that coveted academic job to put this all together. It will entail research, teaching, becoming part of a community of scholars, teachers, and researchers. How do you do it? I’ve written a bit on this before, so this post largely compiles those earlier ones. But first, just apply broadly. Don’t overthink each application, just get them out there. Have a system and just do it as you see the job ads. Have your referees ready. We don’t mind sending the letter to lots of places.

Make your application stand out, as described here. This is important, because hiring fairly is hard, described here. And, no, I don’t think a rubric would help, here.  Here are some reasons we will hire you, here.

Just send your job application to the official address, not to anyone else generally, see here.  Think about your cover letter and keep it pithy and to the point, see here. Do not name possible collaborators here. This could work against you, see here.

If your publications include many multiple-author papers lots of which you are middle author, please describe your contributions, perhaps with a sentence below the reference, see here.

Here is one on how I read your file on first pass, here.

Once you get a job interview, there are some things you should not do, covered here. And here is some advice for the chalk talk. After all, they are very challenging, see here.

If you get a phone interview, do this.

Do not worry too much about the order in which you are interviewed and never agree to an interview on a very short time line unless you are ready, read more here.

The process of deciding whom to hire is complex. It covers area, collegiality, and how we agree or do not on the candidates. Here are some guidelines to the process at our institution, with details from a search from a few years ago. We won’t necessarily agree on the top candidates for these reasons. Ranking into categories, not one by one is better, but it is not often done, unfortunately, more information here. Ultimately we hire someone, like this.

Remember, there are questions you cannot be asked legally. This covers them. If you are asked them, you can demur, perhaps turn it into a joke, change the subject, or answer. Keep track of illegal things you are asked, but I’m not sure it will help.

Have fun, don’t stress, keep doing research and mentoring and remember why you are in this in the first place! And lots of others have written on these topics. Go find them too!

IMG_2024

Fred Inglis (back second from left) and Longfei Shu (back right end) got faculty positions this year!

Advertisements
Posted in Interviewing, Jobs | Tagged , , | Leave a comment

Get your undergrads thinking about analysis from the start

The last post talked about making sure undergrads get the big picture of their questions. This is essential, but it is not the end. All too often analysis is left for the end and there is no exploring. Ideally, students learn their analytical techniques right from the start. One of my grad students, Tyler Larsen, is doing a great job of this.

Here is something he sent Cara Jefferson who is working on a project that is an extension of his. The details will be different for everyone, so this might not mean a lot to others, but there are things to get out of it.

First, Tyler encourages graphic exploration of the data.

Second, he does not give everything in detail to Cara but instead gives his scripts and encourages her to think about how her data differ from his and modify the analyses. It is too easy to turn off your brain if you are given everything. But he makes it clear he is available for help.

Third, Tyler suggests ways to explore the data, things she might look for. Cara is fairly new on the project so this is a really good idea. But he doesn’t tell her exactly how to do it.

Fourth, Tyler’s questions lead to the important questions of the research project.

Fifth, Tyler makes it clear that science has variation and we have to worry when it is caused by things like date of experiment and helps her see how to look for that.

Sixth, Tyler gives Cara the R code necessary to start the work. The sooner students get comfortable with R, the better, and getting code for one’s project is a good way to start. He gave her the R code in an R format, but I appended it to this post.

What you see below is all the stuff Tyler thought hard about and gave Cara. It is an wonderful example of a careful grad student mentor working with an excellent undergrad.

Cara,

It is valuable when you’ve collected a bunch of data to take the time to play with it and look for patterns.  Obviously we will ultimately do statistics to test any hypotheses we ultimately want to test, but in the meantime it is worthwhile to graph things every which way to Sunday and see what pops out.

Here is a non-exhaustive list of questions to answer about your data.  Some of these may be easy to tackle in Excel on the spreadsheet itself, while some others will require some R.  Consult the R script (attached) for guidance.  The first part of it restructures the data, calculates growth rates, and further annotates it with a few columns that will be useful for pulling out specific subsets to graph.  If you’ve set up your data correctly you should be able to run it as is (though you’ll have to specify the ‘mainpath’, ‘todaysdate’, and ‘filename’ variables).  If you have any trouble running the first part please let me know and I’ll help you sort it out.  The second part makes graphs of various sorts and is more fluid.  You may find the code as written helpful but it was written for my experiments, not yours, and so some simple modifications will be necessary.  See if you can figure them out.  Think carefully about what specific question you are hoping a graph will answer.  It can be helpful to draw on paper what the final graph would look like if your hypotheses were correct, just to work out what should be on the x axis, y axis, etc.

  1. In Excel, take a look at the growth curves themselves.  Plot at least a few of them as scatter or line graphs.  Do they take the shape we talked about, with a flat beginning, an exponential rise, a plateau, and then a slow decline?  Take note of any you see that don’t look like this and try to think about why.
  2. Look at the final OD values reached by different strains.  This is the yield.  It isn’t as informative as the growth rate (it’s very sensitive to the specific growth conditions), but it may differ between strains.
  3. Plot the data from the negative control wells.  The media only wells should not grow at all (ie just a flat line at around 0).  If they do the media was contaminated and that plate is likely not usable. Ideally the Dicty negative controls (the wells with Dicty but not Burk) should not grow either but past experience tells me this is wishful thinking and many often do show some growth, presumably from KP that survived the antibiotic treatment.  Take note of how long it took these wells to grow – if it’s later than the Burk strains (as it often is), it probably isn’t a concern.  If it’s earlier it is something we need to look more carefully at, lest we accidentally measure the wrong strain’s growth rate.
  4. Run the first part of the script to calculate growth rates.  Note that growth curves with aberrant shapes are hard to calculate growth rate from.  The script will notice most of these and refuse to calculate growth rates for them, but it does miss some of them.  If you get a number that seems really weird, go back and plot that well’s growth curve.  Chances are it’ll be screwy and you’ll know it’s not to be trusted.
  5. In Excel or R, convert all of the growth rates into doubling times.  Doubling time = ln(2)/µ, and is usually expressed in growth per hour.  Remember our time points are 15 minutes apart.
  6. Now compare growth rates or doubling times between strains.  Do this first just by eye on the spreadsheet, and then try to produce a graph to answer these questions (one graph may be able to address more than one question at a time).
    1. How do the ancestor strains’ growth rates compare?  (No Dicty present)
    2. How do evolved strains compare to ancestor strains?  (No Dicty present)  Are they faster or slower?  Does it vary by strain?  Why?
    3. How does adding Dicty change growth rates of ancestor strains?  Is it faster or slower?  Does it vary by strain?  Why?
    4. How does adding Dicty change growth rates of evolved strains?  Are evolved Burk strains more or less sensitive to the effects of adding Dicty?  Does it vary by strain?  Why?
  1. How consistent are your results between days?  Do you get the same answers?  If not, why not?

If you get stuck on any of the initial part (setting up data, calculating growth rates, etc), come find me and I’ll help you.  For the interpretation part I encourage you to take a sincere whack at it yourself before you seek help.  We’ll go over it once you’ve had the chance to give it some thought.

And he gave her the R code to use:

##Here is a script for analyzing growth rates from the Tecan

##Useful link:  https://www.r-bloggers.com/analyzing-microbial-growth-with-r/

##This version of the script was modified on 03/21/18 improve usability and incorporate some statistics

 

##############################################################################################################

 

#Install packages – this should only be necessary once per computer.

#install.packages(“ggplot2”)

install.packages(“reshape2”)

#install.packages(“dplyr”)

#install.packages(“readr”)

#install.packages(“devtools”)

#library(devtools)

#install_github(“dcangst/fitr”)

 

rm(list=ls()) # clear memory and start fresh

#Load packages into memory (will need to be downloaded and installed first)

library(ggplot2) #For plotting

library(reshape2)  #For converting data between wide and long forms

library(dplyr)  #For grouping and manipulating data

library(readr)  #For importing CSV files

library(fitr)  #For the actual growth rate analysis

 

###############################################################################################################

 

#Set some strings for file naming

mainpath<-“C:/Users/Tyler/Google Drive/School/QSLab/ExperimentalEvolution/Platereaderdata/”

todaysdate<-“042018”

filename<-“combineddata”

 

##Import data.  Data should have columns Date, Well, Bstrain, Bline, Dstrain, Dline, Dtreatment, and Notes (case sensitive)

simpledata <- read_csv(paste(mainpath,”combineddata_042018.csv”,sep=””))

backup<-simpledata #make a backup

 

#convert the data to long form.  The id argument defines which columns are categories identifying the

#data points.  Everything else is the data.  Variable.name and value.name arguments name the two new columns in the resultant data

meltdata<-melt(simpledata, id=c(“Date”,”Well”,”Bstrain”,”Bline”,”Dstrain”,”Dline”,”Dtreatment”,”Notes”),variable.name=”Time”,value.name=”OD600″)

meltdata$Time<-as.numeric(meltdata$Time) #Convert time from a factor into a number

meltdata$OD600<-as.numeric(meltdata$OD600) #Convert OD600 from a character into a number

meltdata$Bstrain[which(meltdata$Bstrain==”None”)]<-NA

#Save data

write.csv(meltdata, paste(mainpath,filename,”_”,todaysdate,”_”,”melted.csv”,sep=””))

 

#Read in the cleaned up data

mydata <- meltdata

mydata<-mydata[which(mydata$Bstrain != “NA”),]  #Remove blanks

mydata$ID<-paste(mydata$Date,mydata$Well,mydata$Bstrain,mydata$Bline,mydata$Dstrain,mydata$Dline,mydata$Dtreatment, sep=”_”) #add ID column that is a string of all of the columns(except Notes).  This is intended to give each line a unique name.

 

#Read the help for the fitr script

#?d_gcfit

 

#Run the script, finding mu max values for each, and saving everything into an object called ‘rates’

rates <- d_gcfit(data=mydata,    #The growth curve data in long form

w_size=6,       #How many data points the script should use for each line fitting

od_name=”OD600″,#The column name containing the absorbance data (y axis)

time_name=”Time”,#The column name containing the time data (x axis)

trafo=”log”,

logBase=2,

RsqCutoff=0.95, #This is the cutoff of how accurate the regression line must be without being rejected

growthCheck=”none”,

parallel=FALSE,

progress=”text”,

.inform=TRUE)

#rates #view the rates object

fitsforexport<-rates$bestfits #save the line fits (but not the rest of the script’s outputs) into a subobject called fitsforexport

 

#Copy all of the identifying columns and merge them into the fits

mydata2<-mydata[which(mydata$Time == 1),]

mergedata<-merge(mydata2,fitsforexport,by.x=c(“ID”),by.y=c(“ID”))

write.csv(mergedata, paste(mainpath,filename,”_”,todaysdate,”_”,”fit.csv”,sep=””))

#Remove unnecessary columns

drops<-c(“X1″,”Time”,”OD600″,”trafo”,”logBase”,”growth”,”comment”,”numP”,”nTime”,”minT”,”maxT”,”intercept”,”adj.r.sq”,”dt”,”maxOD”,”minOD”)

mergedata<-mergedata[ , !(names(mergedata) %in% drops)]

 

#Remove lines that the script could not find clean fits for (ie rsq>.95) or lines in which there was no growth

mergedata<-mergedata[which(mergedata$mumax != “NA”),]

#Add a column, Bclade, which specifies which clade/category each Burk strain belongs to (will be useful for stats comparing between clades)

mergedata$Bclade<-mergedata$Bstrain

mergedata$Bclade[which(mergedata$Bclade ==”KP”)]<-NA

mergedata$Bclade[which(mergedata$Bclade %in% c(“Bf”,”BD66″,”soil99″))]<-“nonsymbiont”

mergedata$Bclade[which(mergedata$Bclade %in% c(“bQS70″,”bQS159″,”bQS161”))]<-“B1”

mergedata$Bclade[which(mergedata$Bclade %in% c(“bQS11″,”bQS21″,”bQS69”))]<-“B2”

#Add a column, Bevolved, which specifies if a Burk strain is evolved or not

mergedata$Bevolved<-FALSE

mergedata$Bevolved[which(mergedata$Bline %in% c(“E1″,”E2″,”E3”))]<-TRUE

#Add a column, Devolved, which specifies if a Dicty strain is evolved or not

mergedata$Devolved<-NA

mergedata$Devolved[which(mergedata$Dline %in% c(“E1″,”E2″,”E3″))]<-TRUE

mergedata$Devolved[which(mergedata$Dline ==”Anc”)]<-FALSE

#add a new column, Matched, which indicates whether a B and D strain belong to one another

mergedata$Matched<-FALSE

mergedata$Matched[which(mergedata$Bstrain==”Bf” & mergedata$Dstrain==”QS6″)]<-TRUE

mergedata$Matched[which(mergedata$Bstrain==”BD66″ & mergedata$Dstrain==”QS9″)]<-TRUE

mergedata$Matched[which(mergedata$Bstrain==”soil99″ & mergedata$Dstrain==”QS18″)]<-TRUE

mergedata$Matched[which(mergedata$Bstrain==”bQS70″ & mergedata$Dstrain==”QS70″)]<-TRUE

mergedata$Matched[which(mergedata$Bstrain==”bQS159″ & mergedata$Dstrain==”QS159″)]<-TRUE

mergedata$Matched[which(mergedata$Bstrain==”bQS161″ & mergedata$Dstrain==”QS161″)]<-TRUE

mergedata$Matched[which(mergedata$Bstrain==”bQS11″ & mergedata$Dstrain==”QS11″)]<-TRUE

mergedata$Matched[which(mergedata$Bstrain==”bQS21″ & mergedata$Dstrain==”QS21″)]<-TRUE

mergedata$Matched[which(mergedata$Bstrain==”bQS69″ & mergedata$Dstrain==”QS69″)]<-TRUE

mergedata$Matched[is.na(mergedata$Dstrain)]<-NA

#add a new column, Dictystatus, which indicates whether a Dicty strain is evolved or ancestral (ie collapses E1, E2, and E3)

mergedata$Dictystatus<-“None”

mergedata$Dictystatus[which(mergedata$Devolved ==FALSE)]<-“Anc”

mergedata$Dictystatus[which(mergedata$Devolved ==TRUE)]<-“Evolved”

 

#Save final dataset

write.csv(mergedata, paste(mainpath,filename,”_”,todaysdate,”_”,”annotated.csv”,sep=””))

finaldata<-mergedata

 

#finaldata <- read_csv(paste(mainpath,filename,”_”,todaysdate,”_”,”annotated.csv”,sep=””))

 

 

 

 

 

###############################################################################################################

####Plotting for runs including Dicty##########################################################################

###############################################################################################################

 

matcheddata<-finaldata[which(finaldata$Matched %in% c(TRUE, NA)),]

matcheddata<-matcheddata[which(matcheddata$Bstrain!=”KP”),]

#matcheddata<-matcheddata[which(matcheddata$Date != “102217”),] #remove the 102217 run, which was HK and probably shouldn’t have gone in there in the first place

matcheddata<-matcheddata[which(!(matcheddata$Date %in% c(“102217″,”30818″,”22818″,”30918”))),]

 

#Set the order of the points correctly

matcheddata$Bstrain<-factor(matcheddata$Bstrain, levels=c(“Bf”,”BD66″,”soil99″,”bQS70″,”bQS159″,”bQS161″,”bQS11″,”bQS21″,”bQS69″))

matcheddata$Dline[is.na(matcheddata$Dline)]<-“None”

matcheddata$Dline<-factor(matcheddata$Dline, levels=c(“None”,”Anc”,”E1″,”E2″,”E3″))

matcheddata$Dictystatus<-factor(matcheddata$Dictystatus, levels=c(“None”,”Anc”,”Evolved”))

matcheddata$Bclade<-factor(matcheddata$Bclade, levels=c(“nonsymbiont”,”B1″,”B2″))

matcheddata$Doublingtime<-(0.69314718056/matcheddata$mumax)/4

 

#Boxplot for growth rate

plot1<-ggplot(data=matcheddata, aes(x=Dline, y=mumax, fill=Dictystatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#999999″,”#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=”both”) +

theme(legend.position=’none’) +

labs(y=”Specific growth rate (mu)”,x=””) +

ggtitle(“Growth rate by line”)

plot1

 

#Boxplot for growth rate (collapsed by strain)

plot2<-ggplot(data=matcheddata, aes(x=Dictystatus, y=mumax, fill=Dictystatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#999999″,”#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=”both”) +

theme(legend.position=’none’) +

labs(y=”Specific growth rate (mu)”,x=””) +

ggtitle(“Growth rate by strain”)

plot2

 

#Boxplot for growth rate (collapsed by clade)

plot3<-ggplot(data=matcheddata, aes(x=Dictystatus, y=mumax, fill=Dictystatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#999999″,”#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bclade, switch=’both’) +

theme(legend.position=’none’) +

labs(y=”Specific growth rate (mu)”,x=””) +

ggtitle(“Growth rate by clade”)

plot3

 

 

##################

#Do some math to change it into fold changes

 

#Calculate as fold change

grouped1<-group_by(matcheddata, Dstrain, Dline, Bstrain)

stats1<-summarise(grouped1, N=length(mumax),Average=mean(mumax),StDev=sd(mumax))

stats1$ID<-paste(stats1$Bstrain,stats1$Dstrain,stats1$Dline, sep=”_”)

matcheddata$ID<-paste(matcheddata$Bstrain,”NA”,”None”, sep=”_”)

mergedata<-merge(matcheddata,stats1[,c(5,7)],by.x=c(“ID”),by.y=c(“ID”))

mergedata$Foldchange<-mergedata$mumax/mergedata$Average

 

#Boxplot for growth rate (scaled)

plot4<-ggplot(data=mergedata, aes(x=Dline, y=Foldchange, fill=Dictystatus)) +

geom_boxplot() +

geom_hline(yintercept=1) +

scale_fill_manual(values=c(“#999999″,”#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=”both”) +

theme(legend.position=’none’) +

labs(y=”Fold change of specific growth rate (mu)”, x=””) +

ggtitle(“Growth rate (scaled) by line”)

plot4

 

#Boxplot for growth rate (scaled) (collapsed by strain)

plot5<-ggplot(data=mergedata, aes(x=Dictystatus, y=Foldchange, fill=Dictystatus)) +

geom_boxplot() +

geom_hline(yintercept=1) +

scale_fill_manual(values=c(“#999999″,”#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=”both”) +

theme(legend.position=’none’) +

labs(y=”Fold change of specific growth rate (mu)”, x=””) +

ggtitle(“Growth rate (scaled) by strain”)

plot5

 

#Boxplot for growth rate (scaled) (collapsed by clade)

plot6<-ggplot(data=mergedata, aes(x=Dictystatus, y=Foldchange, fill=Dictystatus)) +

geom_boxplot() +

geom_hline(yintercept=1) +

scale_fill_manual(values=c(“#999999″,”#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bclade, switch=”both”) +

theme(legend.position=’none’) +

labs(y=”Fold change of specific growth rate (mu)”, x=””) +

ggtitle(“Growth rate (scaled) by clade”)

plot6

 

 

 

 

 

 

 

 

 

 

#############

############################################################################

#Doin some stats

########

#STATS STUFF:

 

 

#Use non parametric test to see if Anc differ from evolved

wilcox.test(mergedata$Foldchange[which(mergedata$Dictystatus==”Anc”)], mergedata$Foldchange[which(mergedata$Dictystatus==”Evolved”)])

#They do.

 

 

 

teststats<-aov(mumax~Dictystatus*Bclade,data=matcheddata)

summary(teststats)

#Status (whether D is evolved or not), clade, and status*clade are all quite significant

 

#Try again with fold change

teststats<-aov(Foldchange~Dictystatus*Bclade,data=mergedata)

summary(teststats)

#Status (whether D is evolved or not) and status*clade are quite significant

 

 

 

 

 

 

 

 

 

 

#################################

 

#Boxplot for doubling time

plot4<-ggplot(data=matcheddata, aes(x=Dline, y=Doublingtime, fill=Dictystatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#999999″,”#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=’both’) +

ylim(0,15) +

theme(legend.position=’none’) +

labs(y=”Doubling time (hours)”) +

ggtitle(“Doubling time by line”)

plot4

 

#Boxplot for doubling time (collapsed by strain)

plot5<-ggplot(data=matcheddata, aes(x=Dictystatus, y=Doublingtime, fill=Dictystatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#999999″,”#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=’both’) +

ylim(0,15) +

theme(legend.position=’none’) +

labs(y=”Doubling time (hours)”) +

ggtitle(“Doubling time by strain”)

plot5

 

#Boxplot for doubling time (collapsed by clade)

plot6<-ggplot(data=matcheddata, aes(x=Dictystatus, y=Doublingtime, fill=Dictystatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#999999″,”#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bclade, switch=’both’) +

ylim(0,15) +

theme(legend.position=’none’) +

labs(y=”Doubling time (hours)”) +

ggtitle(“Doubling time by clade”)

plot6

 

 

 

###############################################################################################################

####Plotting for runs without Dicty##########################################################################

###############################################################################################################

 

#Remove lines with Dicty present

matcheddata2<-finaldata[which(is.na(finaldata$Dstrain)),]

matcheddata2<-matcheddata2[which(matcheddata2$Date %in% c(“30918″,”31618″,”30818”)),]

 

#Set the order of the points correctly

matcheddata2$Bstrain<-factor(matcheddata2$Bstrain, levels=c(“KP”,”Bf”,”BD66″,”soil99″,”bQS70″,”bQS159″,”bQS161″,”bQS11″,”bQS21″,”bQS69″))

matcheddata2$Bline[is.na(matcheddata2$Bline)]<-“Anc”

matcheddata2$Bclade[is.na(matcheddata2$Bclade)]<-“KP”

matcheddata2$Bclade<-factor(matcheddata2$Bclade, levels=c(“KP”,”nonsymbiont”,”B1″,”B2″))

matcheddata2$Doublingtime<-(0.69314718056/matcheddata2$mumax)/4

matcheddata2$Bstatus<-“None”

matcheddata2$Bstatus[which(matcheddata2$Bevolved ==FALSE)]<-“Anc”

matcheddata2$Bstatus[which(matcheddata2$Bevolved ==TRUE)]<-“Evolved”

 

#Boxplot for growth rate

plot7<-ggplot(data=matcheddata2, aes(x=Bline, y=mumax, fill=Bline)) +

geom_boxplot() +

scale_fill_manual(values=c(“#F8666D”,”#00BFC4″,”#00BFC4″,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=’both’) +

theme(legend.position=’none’) +

labs(y=”Specific growth rate (mu)”, x=””) +

ggtitle(“Growth rate (Dictyostelium absent) by line”)

plot7

 

#Boxplot for growth rate (collapsed by strain)

plot8<-ggplot(data=matcheddata2, aes(x=Bstatus, y=mumax, fill=Bstatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=’both’) +

theme(legend.position=’none’) +

labs(y=”Specific growth rate (mu)”, x=””) +

ggtitle(“Growth rate (Dictyostelium absent) by strain”)

plot8

 

#Boxplot for growth rate (collapsed by clade)

plot9<-ggplot(data=matcheddata2, aes(x=Bstatus, y=mumax, fill=Bstatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bclade, switch=’both’) +

theme(legend.position=’none’) +

labs(y=”Specific growth rate (mu)”, x=””) +

ggtitle(“Growth rate (Dictyostelium absent) by clade”)

plot9

 

#Boxplot for doubling time

plot10<-ggplot(data=matcheddata2, aes(x=Bline, y=Doublingtime, fill=Bline)) +

geom_boxplot() +

scale_fill_manual(values=c(“#F8666D”,”#00BFC4″,”#00BFC4″,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=’both’) +

theme(legend.position=’none’) +

labs(y=”Doubling time (hours)”, x=””) +

ggtitle(“Doubling time (Dictyostelium absent) by line”)

plot10

 

#Boxplot for doubling time (collapsed by strain)

plot11<-ggplot(data=matcheddata2, aes(x=Bstatus, y=Doublingtime, fill=Bstatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bstrain, switch=’both’) +

theme(legend.position=’none’) +

labs(y=”Doubling time (hours)”, x=””) +

ggtitle(“Doubling time (Dictyostelium absent) by strain”)

plot11

 

#Boxplot for doubling time (collapsed by clade)

plot12<-ggplot(data=matcheddata2, aes(x=Bstatus, y=Doublingtime, fill=Bstatus)) +

geom_boxplot() +

scale_fill_manual(values=c(“#F8666D”,”#00BFC4″)) +

geom_point() +

facet_grid(.~Bclade, switch=’both’) +

theme(legend.position=’none’) +

labs(y=”Doubling time (hours)”, x=””) +

ggtitle(“Doubling time (Dictyostelium absent) by clade”)

plot12

 

 

 

Posted in Data and analysis, The joy of teaching, Undergraduates | Tagged , , | Leave a comment

Do your undergrads actually understand their summer research project?

Cara Jefferson, undergrad extraordinaire

All over the country, undergraduates are embarking on research projects. They are banding birds, squeezing ticks for parasites, culturing bacteria, seining streams, cutting open mice, and many other things. If you ask them what they are doing, they will be able to tell you. They can probably go over their methods in some detail. They will have learned techniques, how to measure properly, perhaps to use a fancy microscope, or how to untangle a bird from a net.

But do they understand why they are doing this particular project? Could they explain to their congressperson or their friend what questions they will answer and why these questions are important? If they were given a list of 5 projects could they pick out the one that is best for asking and anwering a big question? The answer to this is all too often no. But why?

In a way it is simple. The things that matter on a day to day basis are what they know. They may not have been there when the project was devised. They may have had it explained at the beginning and not again. So it is up to their mentors, the PI of the lab and their bench or field mentors to explain the project, to provide readings on it, and then to listen to the students tell it back to them so it is clear they understand. This should be done orally and in writing. It should be reinforced frequently.

This came up in a different way this week with one of our undergraduates. She is very ambitious and eager to do the best possible work this summer.  Her project is going very well so far. She is very organized and has figured out exactly how much time her project will take and would like another one to fill her time.  So what did we do?

Instead of taking her word for it and moving on to discussing different projects, we had her meet with us and explain the existing project in detail. This gave her another chance to show us she understood it. It gave us a chance to remember in detail exactly what it was since it is a project that spins off of a graduate student project. Of course he was also present. With that refreshed understanding, we were then able to guide her not to a side project, but to ways to augment the existing project. Sometimes this involves additional replicates. Sometimes it involves growing things on their own and just looking at them. Sometimes, for our work which is on a population of evolved bacteria, it involves plating them out clonally and looking for morphological variation in the population. These additional parts of the existing project are the best approach in this case. This will give our marvelous student a better understanding of the project, a way of discovering new angles herself, and a way to fill her research time.

What is the main message? It is that students should be given lots of opportunities to explain the point of their main projects. They should grow with the project, adding dimensions as they find time. It isn’t that a second project is never all right, but in a short summer, doing the best on the main project, from the daily work to writing and analysis, will likely take all the time. Even beginning with a dummy dataset for practicing analysis can be a good idea.

Pay attention to your undergrads and be sure they get the point of the research project, not once, but daily having to remind you and themselves what it is all about and how it can be enhanced. After all, pipetting can get old if you don’t remember the point of it all.

 

Posted in Research, Undergraduates, Your lab group | Tagged , , , | Leave a comment

We have a position for a postdoc on amoeba-bacteria symbiosis available immediately!

The fabulous Queller-Strassmann lab group!

Finally we got the call from NSF that our grant proposal was being recommended for funding in full. This new funding uses the social amoeba bacteria symbiosis to tease out exactly how mutualisms work, with both empirical work and theory. I am the PI on this grant. We have another one funded last year that David Queller is PI on. A new postdoc can work on a variety of topics since some on each grant will be covered by existing postdocs and graduate students. Join us! We have a very collegial group excited to have someone new!  Here is the full ad, below. Please spread it around since we are ready to hire now.

One word of warning is that Dave and I will be in Berlin or elsewhere in Europe from 22 August 2018 to 25 August 2019. Ideally someone would start before we go, but we can still communicate electronically and leave a very capable team behind who know more of the bench work than we do.

Postdoctoral position on amoeba – bacteria symbiosis available immediately

This position is for research on the farming symbiosis between the social amoeba Dictyostelium discoideum and certain Burkholderia bacteria. Specifically, we have funding for work on the existence and effect of partner choice, the effect of symbiont kin selection and kin recognition on the symbiosis, finding genes underlying the symbiosis in both partners, the molecular evolution of these genes, the theory and measurement of mutualistic selection, and co-evolutionary specialization at the level of species and clone between an existing NSF grant, a newly funded one, and other resources. We are seeking an energetic postdoc with interests in some of these topics and a strong background in one or more of the following: evolutionary biology, social behavior, mutualism, microbial evolution, genomics, molecular genetics, and coevolution theory.  The position is in the biology department at Washington University in St. Louis and is available immediately but the start date is negotiable.

David Queller and Joan Strassmann lead a friendly and interactive team of highly motivated, creative, and smart investigators. They are committed to diversity, to the career success of their team members, and to a collaborative and productive approach to research and mentoring.  Check out our website, (http://strassmannandquellerlab.wordpress.com/) for more information on our lab, or Strassmann’s blog (https://sociobiology.wordpress.com).

If you are interested in joining our group, please send an email to Joan Strassmann (strassmann@wustl.edu) with a single file including CV, statement of research interests, and the names, phone numbers, and email addresses of three references. Please specify which of the research areas appeal to you.  Women and underrepresented minorities are particularly encouraged to apply.  We will begin reviewing applications by 15 June 2018 and will continue to accept them until the position is filled.

 

Posted in Jobs, Postdocs | Tagged , , , , | Leave a comment

What professors really want from graduating students

It is that happy-sad time of year when students I cherish move on to the next step. They have been in our research lab for one year or for four. They have taken classes from us and have learned from us just as we have learned from them. And now they are mostly gone.

It was wonderful to meet their parents on Friday after graduation and see where our precious students came from. I suppose it is also good for the parents to meet us, often for the first time.

Some students want to memorialize our bond with a gift, particularly if their parents are from cultures where this is common. Gifts can be awkward, should not be worth much, and are entirely unnecessary.

But there is one kind of gift we will always love. It is a note from the student reflecting on their time in our group. It can be emailed, handwritten, or printed. We don’t care. We just love to get such memories. In fact, I keep them forever in a special place and I look at them when feeling overwhelmed.

So, if you are wondering what on earth to get your professors, remember, the best gift is that note. Let us know what your time here meant and we’ll be happy.

Oh, and stay in touch!

Posted in Uncategorized | Leave a comment

Send in a title the minute you agree to give a talk!

All the talks at the Dictyostelium meeting had titles well in advance

There are lists of talks for the semester on our department web page. There are compiled lists for the university, weekly blasts, summer lists, and more. All too often most of these talks have an author listed with the talk title as TBD, to be determined. If we don’t know the author, it could be about gating channels in neurons, fire ecology, or fish development. Even for talks generally targeted at ecology and evolution folks, there is a huge spread.

The titles would not matter so much if we simply went to all the talks no matter what they are about. I tend to do that for our Thursday Evolution, Ecology, and Population Biology (EEPB) talks, but less so for the other series. Titles help!

I think the reason people hesitate on turning in the title is that they have not decided which of their wonderful stories they will share with us. They are anxious to please and want the title to be perfect. Please stop. Just give us a title that covers the general area of study. It doesn’t have to be different from your other titles. It doesn’t even have to have a close match to the subject you ultimately choose. But it will give us an idea as to what we will hear. It is a bonus if it is fun, of course.

And if you are the person inviting rather than the person talking, insist on a title. If your speaker does not give one, make one up. If you have invited the person, you have a general idea of what they do. Once they see your invented title, they may simply like it and use it, or it will inspire them to give a better title. And the rest of us will have a clue.

Posted in Uncategorized | Leave a comment

Why vacations matter for work excellence

Everyone says that vacations refresh. But what do they mean by that? Are vacations just good for the person and the spirit or do they actually improve work? Here, I’ll discuss one point for the latter. It may even apply to those stressful vacations where keeping the family fed and happy seems like more work than non-vacation days.

Determination!

This is the point where I should vacation rather broadly as anything that gets you into a strongly different mindset for a week or more, though this could be flexible. Another essential feature of a vacation is you don’t keep up with everything flowing in on your email, though you may not necessarily shut it off entirely.  So a vacation could be a trip somewhere, camping, or even a scientific meeting if it is a real break from the normal obligations.

So the last week Dave and I spent at the American Ornithological Society counts as a vacation, though we went to most of the talks and learned a lot. I did check email, but couldn’t figure it out at first, then was in the field, so little got dealt with until today, the day we travel home.

What I found on going through several hundred emails, Facebook posts, and Twitter news was a sudden clarity as to what was important to me. Against this metric I accepted and rejected tasks with an alacrity that I had lost. The longer time you go without a vacation, the more you lose the ability to see what is and is not important to you. It is like a ship encrusting with barnacles and moving ever more slowly. A long time without vacations and you might feel you have no time for even the important things because you are less good at sorting out the unimportant.

Right now I relish a certain clarity and hope I get a lot done before it fades away. I say yes to a lot of tasks, but will also say no to those that are not in my profile. After all, only I know how much is asked of me. Only I know what commitments I can make and what I must reject. With this extra focus, I hope to do the things that are important.

Posted in Creativity, efficiency, Travel, Uncategorized, Vacations | 1 Comment