Author Archives: Floyd A. Reed

Nothing in biology makes sense...or does it?

Theodosius Dobzhansky (1900-1975) was a very influential geneticist and one of the architects of the modern synthesis of genetics and evolutionary biology; I heard that he also liked to make French-toast for breakfast.  He is in my academic lineage as my Ph.D. advisor's advisor's advisor's advisor---sort of my academic great-great-grandfather.

There is a famous essay he wrote in 1973 that is widely quoted and referenced; "Nothing in Biology Makes Sense Except in the Light of Evolution" (The American Biology Teacher 35:125-129).  This is repeated over and over in the literature, grant applications, department and lab websites, and class teaching materials, etc., dare I say it, ad nauseum (e.g., Varki, A. (2006). Nothing in glycobiology makes sense, except in the light of evolution. Cell, 126(5), 841-845; Valas, R. E., Yang, S., & Bourne, P. E. (2009). Nothing about protein structure classification makes sense except in the light of evolution. Current Opinion in Structural Biology, 19(3), 329-334; Seyfried, T. N. (2012). Nothing in cancer biology makes sense except in the light of evolution. Cancer as a Metabolic Disease: On the Origin, Management and Prevention of Cancer, 261-275).

However, there is odd and little known historical detail behind this that Fred Gould (NCSU) pointed out to me in a conversation we had last year.  Almost 10 years before, in 1964, Dobzhansky published an address entitled "Biology, Molecular and Organismic" (American Zoologist 4:443-452).  If you scan through it there is a familiar line in an unfamiliar context (p. 449) "I venture another, and perhaps equally reckless, generalization---nothing makes sense in biology except in the light of evolution."  To put this into perspective, in the article he is arguing against a reductionist hierarchy in science, "the proposition that chemistry and physics are sciences more 'advanced'" and that "the aim of biology is, then, to describe life in terms of first of chemistry, and eventually of physics."  Dobzhansky goes on to argue that biology should proceed on two fronts, one a mechanistic reductionism and another that studies higher order emergent properties of the evolutionary process.  "Both the mechanistic and evolutionary explanations are pertinent to, and are made use of, in molecular as well as in organismic biology. These explanations are not alternative or competing; they are complementary, without, however, being either deducible from or reducible to each other. ... To treat molecular biology instead as a bludgeon with which to destroy, or to reduce to insignificance, the organismic biology is to basically misunderstand the nature of life."

So, Dobzhansky first made the statement "nothing makes sense in biology except in the light of evolution" as an example of an argumentum ad absurdum, a ridiculous extreme that was not true.  Rather, he seemed to intend that not everything in biology makes sense when only considering evolution or molecular biology independently; they must be both considered together for a more realistic understanding of biology.

In this light it is odd that he then used the statement as the title of his 1973 essay, without the balanced arguments made earlier.  The line then became famous and his earlier address faded into obscurity.  I guess it goes to show that to be successful it often pays to make an extreme and simple statement rather than a more accurate and complete statement.  "Nothing succeeds like success" (Dobzhansky 1964).

Genetic drift with a beta approximation

There are several ways to model or simulate genetic drift (random changes in allele frequencies) in a population over time.  Some of the simplest and most direct are 1) binomial sampling and 2) forward simulations, where every allele copy is kept track of in every generation.  However, these more complete approaches can be very slow (computationally intensive) with large populations over many generations.  Another approach is a 3) diffusion approximation that generates a probability distribution of allele frequencies at a given time point.  Yet another widely used approach is the 4) coalescent.  Coalescent simulations are very efficient because they only track the ancestral lineages of a sample of allele from the population (most allele transmission events can be ignored because they do not contribute to the last generation).

I have worked with all of these approaches in one form or another and they all have pluses and minuses that depend on the question being asked.  The diffusion approximation has generated many insights into population genetics; however, in generating outcomes (say for simulation) it can be inefficient.  The probability distribution is generated by a sum of a series of Gegenbauer polynomials, and these are slow to converge.  I was thinking about this recently and wondered if the diffusion approximation could itself be approximated by a beta distribution.  This might be more computationally efficient.

Beta distributions have two parameters, \alpha and \beta.  The mean (expectation) of a beta distribution is E\left[x\right]=\frac{\alpha}{\alpha+\beta}.  In genetic drift, if we imagine a large number of populations drifting away from the same starting allele frequency, the average allele frequency across all of these populations is not expected to change.  Genetic drift does not push allele frequency change in a direction.  Alleles are just as likely to increase or decrease in frequency.  So, if we have p_0 as the initial allele frequency then we expect p_0=E\left[x\right]=\frac{\alpha}{\alpha+\beta} and that this remains constant over time.  Incidentally, you might also see that 1-p_0=\frac{\beta}{\alpha+\beta} because these are both fractions out of the total.

On the other hand, the variance in allele frequencies between replicate populations is expected to increase over time as the populations diverge due to genetic drift.  The variance of a beta distribution is var\left[x\right]=\frac{\alpha \beta}{\left(\alpha+\beta\right)^2\left(\alpha + \beta + 1\right)}.  Right away we can rewrite this as

var\left[x\right]=\frac{\alpha}{\alpha+\beta} \frac{\beta}{\alpha+\beta}\frac{1}{\alpha + \beta + 1}

var\left[x\right]=p \left(1-p\right) \frac{1}{\alpha + \beta + 1}

Under the diffusion approximation the variance in allele frequencies after t generations in a population of size N diploid individuals is

var\left[x\right]=p \left(1-p\right) \left(1-e^{-\frac{t}{2N}}\right)

We want to match the variance of a beta distribution to the variance of the diffusion approximation so we can generate beta distributions in terms of the spread of allele frequencies after t/N=\tau generations have passed.

p \left(1-p\right) \left(1-e^{-\frac{\tau}{2}}\right)=p \left(1-p\right)\frac{1}{\alpha + \beta + 1}

We can cancel out  p \left(1-p\right) to get

 1-e^{-\frac{\tau}{2}}= \frac{1}{\alpha + \beta + 1}

Then rearrange

 \frac{1}{1-e^{-\frac{\tau}{2}}} -1= \alpha + \beta

Realizing again that \alpha and \beta are fractions out of a total we can define them as

\alpha =p \left(\frac{1}{1-e^{-\frac{\tau}{2}}} -1\right)

\beta =\left(1-p\right) \left(\frac{1}{1-e^{-\frac{\tau}{2}}} -1 \right)

And now we have a beta distribution that is defined in population genetic terms as an approximation to a diffusion approximation.  As a side note, sometimes very "bad" distributions can be used as approximations in population genetics and be surprisingly reasonable.  For example, Kimura used a uniform distribution to model binomial changes in allele frequencies between populations and it works well.  Sometimes a process can be relatively insensitive to underlying distributions.  In another example, Crow worked on a problem of truncating selection and the shape of the area (of the state space) exposed to selection had little effect. (I'll add in some references here later.)

Does this beta approximation work?

Here is a classical result plotted by Kimura (1955, PNAS 41, 144).  It shows the distribution of allele frequencies at a range of N generations after starting from p_0=0.5.

Kimura1955a

And here is the corresponding beta approximation.

betadiffusionp0p5

Right away you can see that is is a very good match, especially for short times and intermediate allele frequencies.  The big difference is at the edges.  The diffusion approximation allows for complete loss or fixation of an allele in a finite population.  The beta approximation does not.  An allele frequency can get arbitrarily close to zero or one but variation is never completely lost.  This is why the distribution "stacks up" near the edges.

By the way, I am still learning R and used an R script to generate these plots.  Here is the code if you are interested.

driftcoefficient<-function(tau){
  z<-1/(1-exp(-tau/2))-1
  return(z)
}

p<-1/2 # allele frequency
h<-3.8 # upper plot limit

x <- seq(0, 1, length = 1001)

tau<-0.1 # t/N generations
y<-dbeta(x, p*driftcoefficient(tau), (1-p)*driftcoefficient(tau))
plot(x,y,type='l', ylim=c(0,h),xlab='allele frequency',ylab='density')
text(0.5,3.62,'t=N/10')
par(new=TRUE)
tau<-0.2 # t/N generations
y<-dbeta(x, p*driftcoefficient(tau), (1-p)*driftcoefficient(tau))
plot(x,y,type='l', ylim=c(0,h),xlab='allele frequency',ylab='density')
text(0.5,2.53,'t=N/5')
par(new=TRUE)
tau<-0.5 # t/N generations
y<-dbeta(x, p*driftcoefficient(tau), (1-p)*driftcoefficient(tau))
plot(x,y,type='l', ylim=c(0,h),xlab='allele frequency',ylab='density')
text(0.5,1.55,'t=N/2')
par(new=TRUE)
tau<-1 # t/N generations
y<-dbeta(x, p*driftcoefficient(tau), (1-p)*driftcoefficient(tau))
plot(x,y,type='l', ylim=c(0,h),xlab='allele frequency',ylab='density')
text(0.5,1,'t=N')
par(new=TRUE)
tau<-2 # t/N generations
y<-dbeta(x, p*driftcoefficient(tau), (1-p)*driftcoefficient(tau))
plot(x,y,type='l', ylim=c(0,h),xlab='allele frequency',ylab='density')
text(0.5,0.55,'t=2N')
par(new=TRUE)
tau<-3 # t/N generations
y<-dbeta(x, p*driftcoefficient(tau), (1-p)*driftcoefficient(tau))
plot(x,y,type='l', ylim=c(0,h),xlab='allele frequency',ylab='density')
text(0.5,0.35,'t=3N')

Here is another example starting from an initial allele frequency of p_0=0.1.

Kimura1955b

And the beta approximation.

zeropone

Again, you can see that it does well in the intermediate frequencies and diverges near the boundaries of the distribution.

Okay, lets use this beta approximation to play with a model of two populations splitting and evolving over time.  Time is measured in terms of N generations after the splitting event.

popsplitequal

Here is an example of what we might expect to see over time.  The plot below is just 0.01N generations after the splitting event.  (In human terms we have an effective population size of 10,000 and a generation time of 30 years, so this is about 3,000 years.)

twopoptau0p01

This is from 10,000 randomly generated SNPs (assuming beta-distributed standing variation in the original population).  Most SNPs are near a frequency of zero or one, which is what is typically seen in natural populations.  However, some are at intermediate frequencies.  The SNPs are highly correlated in frequency between the two populations but have begun to diverge.

Here is a plot at 0.1N generations (30,000 years on a human timescale).

tauzeropone

Then 0.2N generations.

zeroptwo

Then 0.5N generations.

zeropfive

And 1N generations after the division.

one

A common theme in population genetics is that after N generations of genetic drift the initial starting point is essentially lost and an allele that is variable (not fixed or lost) can be at essentially any frequency (a uniform distribution).  You can see this in the distribution plots earlier in this post and can get a feeling for this in the interior of the plot above.

Below is the plot at 2N generations (600,000 years in human time).  Many of the alleles have reached fixation or loss in at least one of the populations.  We are also starting to see alleles that are reciprocally fixed and lost between the two populations (in the upper left and lower right corners).

two

Okay, logically following this we get 4N generations.

four

Then 8N, where no allele is polymorphic in both populations simultaneously.

eight

Then 16N, where the starting polymorphism is almost completely lost.

sixteen

And finally 32N generations results in complete fixation or loss for all 10,000 simulated SNPs.

thirtytwo

However, this simulation ignores new mutations that occur over time (which in general will be unique to a population) and gene flow by migration between populations (which will dramatically slow down the divergence between the populations even with small numbers of migrants each generation).  All of these can be added in to elaborate the model.  However, I am pleased that this beta approximation tends to fit general population genetic expectations well.  The problem is with alleles that have almost lost all polymorphism (near the edges of the distribution); however, there is a strong ascertainment bias in population genetic datasets.  For various reasons, we tend to ignore alleles with little variation in favor of alleles that are highly variable across populations, and this is precisely where the beta approximation tends to behave well.  Furthermore, in populations that are connected by gene flow, if an allele is polymorphic in one population it is never really lost (over the long term) in another population.  So perhaps the beta approximation could work well in more realistic scenarios.

Here is the code for the SNP plots in the second half of this post.

driftcoefficient<-function(tau){
  z<-1/(1-exp(-tau/2))-1
  return(z)
}

tau1<-0.01 # t/N generations
tau2<-0.01
snps=10000
thetau=0.05
thetav=0.05
initial<-rbeta(snps, thetau, thetav)
y<-rbeta(snps, initial*driftcoefficient(tau1), (1-initial)*driftcoefficient(tau1))
z<-rbeta(snps, initial*driftcoefficient(tau2), (1-initial)*driftcoefficient(tau2))
plot(y,z,xlab='population 1',ylab='population 2')

Sea urchin eggs and early divisions

Aki's project has brought some fun elements to the lab that I have not been directly involved in before.  He is sequencing RNA from across the genome from various male and female urchin tissues and needed some larvae to get RNA early in development before the urchins have settled out to the sea floor and are dispersed in the plankton.

So, how do you find microscopic sea urchins larvae in the ocean, much less, how do you know if they are the right species?  It is practically impossible, instead it is simple to make your own---sea urchins are a classic model organism to study early animal development in the lab.  We went out on two different weekends to collect adult urchins and bring them back to the lab.  It tuns out that if you inject them with potassium chloride, or even easier, give them a good shake so they think they are being eaten, they panic and release their gametes.  You can collect them and mix them together.  We also added some heat killed sea water (brought to boiling them back down to room temperature) and took a look at the eggs a day later under a compound microscope.

urchineggs-2014-12-22-08-47-04

In the image above are several fertilized eggs at the initial stages of division.  Slightly up and right from the center (about 1 o'clock) is a single undivided cell.  Just down from that near the center is a cell that has divided into two.  In the upper left is an zygote that has divided again into four cells (one is on top of the others, stacked like a tetrahedron).  Moving down from there to the lower left of the image, is a zygote that has divided again into 8 cells.  The initial cell divisions follow a power of two, n=2^d (where n is the cell number and d is the number of divisions), before the cells become specialized and divisions proceed at different rates.

Below is a closer view of an embryo that has divided into at least 8 cells.  If you look closely you can make out the cell nuclei.  The upper left one is the best defined in the image; it is a smaller circle within the cell.  And there are also hints of sperm flagella in the sea water around the cell (they look like faint lines like individual fibers that are out of focus in various directions).

urchineggs-2014-12-22-09-02-48

And below is an embryo that is entering the blastula stage.  The cell nuclei appear slightly more purple in the image.

urchineggs-2014-12-22-09-20-05

And a close up at two different focal planes.

urchineggs-2014-12-22-09-18-41

urchineggs-2014-12-22-09-19-21

In the next  images the cover slip pressed down too hard and the egg coat (egg shell?) has ruptured and spilled out some of the individual cells.  Interestingly, urchins zygotes can loose up to 3/4 of their starting cells and still develop into normal adults.

urchineggs-2014-12-22-09-21-19

urchineggs-2014-12-22-09-22-27

 

Mosquito Injections!

We've taken another big step forward recently.  We are now microinjecting Culex mosquito embryos with genetically modified transposable elements that can potentially integrate into their genome.  We are starting with a test system to save time.  I cloned, grew, and isolated two plasmids (kind of like small artificial chromosomes) in E. coli bacteria that have a piggyBac transposable element system (originally from a species of moth, Trichoplusia ni).  One plasmid (the "helper" plasmid) is immobilized but produces the transposase enzyme that can integrate DNA into the genome.  The other "donor" plasmid is mobile with flanking piggyBac sequences but does not produce its own transposase (Wimmer 2003).  Instead it contains GFP (green fluorescent protein, originally from Aequorea victoria jellyfish) under an artificial 3xP3 "eyeless" promoter that should express in the eyes (which may be occluded by pigments) and larval optic nerve (Sheng et al. 1997; Berghammer et al. 1999).  Here is an image of the two isolated plasmids run on a gel.

IMG_1573

The first two lanes to the left show the plasmids and the third lane is a "ladder" to measure sizes.  The lowest band is a supercoiled plasmid.  The higher bands are plasmids that have single strand or double strand breaks in the DNA sequence (and so are less compacted and run slower through the gel).

We loaded the plasmids in the microinjection needle and injected newly laid eggs.  This was a trial run to get the system worked out (injection pressure, egg age timing, slide set up, etc.).  Some of the mosquitoes survived the procedure and were large enough for us to take a good look at them this week under the microscope.  We don't really expect this first batch to contain any genetically modified individuals, although it is possible.  However, even if some cells contained insertions the individual would be a genetic mosaic and may not be transformed in the germ line.  The next generation offspring are the real test.  At this point we are establishing more of a baseline of what the larvae look like.

First of all, here is a larvae under normal light.

GFPscoreLarvae-2014-11-19-11-12-47

We are interested in the pattern of fluorescence under higher energy / bluer light.  This is what they look like in that case.

GFPscoreLarvae-2014-11-19-11-26-00

GFPscoreLarvae-2014-11-19-11-31-38

GFPscoreLarvae-2014-11-19-11-33-49

You can see some red and green autofluorescence.  Part of this probably results from the food we give the larvae which shows up as flecks of green and red in the water---the reason to establish this kind of baseline.  Here is the type of pattern (from another mosquito species) behind the eyes (green lines) that we would expect with a 3xP3-EGFP transformation:

Aedes3xP3EGFP

In the following images I turned up the regular light a bit so that they are under both light sources.

GFPscoreLarvae-2014-11-19-11-35-43

GFPscoreLarvae-2014-11-19-11-36-42

GFPscoreLarvae-2014-11-19-11-37-27

We will let you know how the next generation turns out...


Berghammer, A. J., Klingler, M., & Wimmer, E. A. (1999). Genetic techniques: a universal marker for transgenic insects. Nature, 402(6760), 370-371

Sheng, G., Thouvenot, E., Schmucker, D., Wilson, D. S., & Desplan, C. (1997). Direct regulation of rhodopsin 1 by Pax-6/eyeless in Drosophila: evidence for a conserved function in photoreceptors. Genes & Development, 11(9), 1122-1131.

Wimmer, E. A. (2003). Applications of insect transgenesis. Nature reviews genetics, 4(3), 225-232.

Cloning: Results May Vary

This post is two weeks out of order but Brian Deis had a surprise for us on Halloween.

BrianClone

Brian came as my twin "Loyd Reed" on his name tag.  He had a fake beard, glasses, Hawaiian shirt, shorts, belt and flip-flops ("slippers" here in Hawai'i) to match and even tried to part his hair in a similar way.  He was in one of my classes later in the day so I sat in the audience at first and he was up "on the stage" when people walked in.  He created a lot of smiles around the department.

I have to apologize for stealing the photo from one of Jolene's blog posts:

https://sites.google.com/site/jolenesutton/current-research/Research-Blog/itisntallworkandnoplayinthebiologydepartment

The irony to this is that, unkown to Brian, I am named after my grandfather Floyd that in fact had an identical twin named Lloyd.

Our Sea Urchin Work on TV

Our own Aki Laruson and Caitlyn Genovese from the Moran lab were interviewed yesterday by Jay Fidell in a "Research at UH Manoa" segment on "ThinkTech Hawai'i".  Here is the YouTube link

and the descriptive blurb:

Research at UH Manoa
Understanding Urchins
Research at UH Manoa, with graduate students Aki Laruson and Caitlyn Genovese

Sea urchins, called wana in Hawaiian, are common on the rocks and reefs surrounding our islands. UH Manoa graduate student Aki Laruson is working to identify patterns of genomic divergence in so-called "collector" urchins, Tripneustes sp. These are the urchins that have been put to task to help control invasive seaweed growing in Kaneohe Bay. Caitlyn Genovese is studying growth energetics in marine invertebrate larvae including the local urchin population. Together they are using a variety of techniques ranging from phylogenetics to ecology to population genetics to bring new light to the evolutionary relationships of this pantropical species.
When
Mon Nov 10, 2014 1pm – 2pm Hawaii Time

To be honest, I was troubled by the hosts references to homeless children, "urchins," at the beginning of the interview, but Aki and Caitlyn both did a great job!

Some more info about urchin etymology from Google:

urchin

Evolution and the Monkey Typewriter Problem

I have been teaching myself R lately and had an idea for a simulation the other night so I've been working on this...

Many of us are familiar with the idea that eventually a room full of monkeys with typewriters will type the complete works of Shakespeare (the so-called infinite monkey theorem).  This has been used as an argument to illustrate ideas of biological evolution.  However, it falls far short.  The infinite monkey theorem works well for the intuition of random mutations, but it does not illustrate the power of selection and recombination to enrich the frequency of closer matches to a given text in a population (for mutation then to act upon).

I wrote a script to try to illustrate this and evolved seven random letters to the word "Brevity."  This used random mutation, assigned relative fitness values to the sequences based on how many letters matched "Brevity," and recombined sequences randomly in the population.  Here is a plot of how the simulation preformed.  The average fitness in the population is shown by the blue line, the maximum fitness over all sequences is the upper line in the plot and the minimum fitness is the lower line.  Examples of the maximally and minimally fit sequences are given above and below the plot every ten generations.

n500mut50rec2genn50annotate

This simulation was based on 500 sequences (or the equivalent of 250 diploid individuals) with a per generation, per character mutation rate of 2% and a per generation, per sequence recombination rate of 50%.  In less than 40 generations the population contained perfectly matching individuals spelling out "Brevity" from a starting best match of "HevLitS" in the first generation.  However, the population appears to have reached an apparent fitness equilibrium of close to 80% and poorly matching (40% fitness) sequences such as "kqQLity" remain at generation 50.  This is much sorter than the complete works of Shakespeare; however, it is also clear that the target "Brevity" was arrived at much faster with selection in a population than by just random mutation.

In fact, the target sequence was arrived at a couple of times, even briefly before 20 generations, but then disappeared again before the longer term arrival at 40 generations.  This illustrates one result of population genetics, that even though a new mutation may be more fit than any other versions (alleles) in the population, it is actually more likely to be lost by genetic drift (evolutionary sampling error) in the following generations than to increase dramatically in frequency.

What would happen if the simulation were allowed to run for much longer, say 500, 5,000 or even five million generations?  Would the average fitness eventually reach 100% with the entire population made up of the target "Brevity" (with the occasional rare mutation of course)?  An easier way to answer this than running the simulation for a very long time is to start the population with all perfect matches and see how closely it remains at this peak starting point.  Here is the result (under the same parameter values as the simulation result above):

n500mut50rec2genn50topdownannotate

Immediately the average fitness drops dramatically with sequences like "jrpvVty" appearing by generation 10.  At generation 50 the population arrives at a fitness near 85% of the maximum possible with lower bound fitnesses of 40%.  This is not far away from the near 80% arrived at before (also with a lower bound of 40%).  This illustrates the concept of "mutational load" in a population---that the average fitness will be quite a bit less than the theoretical maximum at mutation-selection equilibrium.  It takes time for deleterious mutations to be purged by selection and the net effect is a sizable reduction in fitness, in the case an average reduction of 15% to 20% from the maximum possible.

I am planning to continue discussing this in a few more posts.  This simulation might be a good way to illuminate the effects of population size,  mutation rates, recombination rates, and genome size on the evolutionary trajectory of a population.

While making this post I also inadvertently learned about a similar simulation called the "weasel program" by Richard Dawkins.  However, there are some important differences in the algorithm.  I also plan on discussing some ways the process of selection can be simulated---I came across some alternatives to the way natural evolution is typically modeled that dramatically change the trajectory of average population fitness, including the framework used by Dawkins.

Here is the R source code if you want to play around with it yourself:

# output the results to a text file if printout set to 1, 0 otherwise
# you should change the path to match your directory structure
# (it runs faster without the text output)
printout=1
if(printout){
  sink("C:\\Users\\Floyd\\Desktop\\backup\\work\\typewriter\\monkey_type_7_out.txt", 
    append=TRUE, split=TRUE)
}

length=7 # sequence length
n=500 # number of seequences
mut=50 # inverse mutation rate, one out of #
rec=2 # inverse recombination rate, one out of #
step=n*50 # "generations" in a Moran model

# store the population of sequences
pop=matrix(0,nrow=n,ncol=length)
# a vector of sequences
fit=matrix(0,nrow=n,ncol=1)

# set initial random sequences
for(i in 1:n){
  x<- sample(c(0:9, letters, LETTERS," ",".",",",":"),
             length, replace=TRUE)
  pop[i, ]=x
}

# keep track of fitnesses and generations during the run
runbestfit<-numeric() # best fitness
runavefit<-numeric() # average fitness
runleastfit<-numeric() # least fit
rungen<-numeric() # generations

target<-"Brevity" # target sequence

# divide into characters in a matrix for testing
targ<-strsplit(target, "")
t<-matrix(unlist(targ))

# if(1) sets population to all match target for testing
# if(0) turns this off
if(0){
  for(j in 1:n){
    for(i in 1:length){
      pop[j,i]=t[i]
    }
  }
}

# loop through time steps
for(s in 1:step){

  rungen[s]=s/n # generations defined as n time steps

  badfit=length
  badfitind=1
  maxfit=0
  maxfitind=1
  matchsum=0
  # loop through each position and add up if a match exists
  for(j in 1:n){
    match=0
    for(i in 1:length){
      if(t[i]==pop[j,i]){match=match+1}
    }
    matchsum=matchsum+match
    if(match>maxfit){
      maxfit=match
      maxfitind=j
    }
    if(match<badfit){
      badfit=match
      badfitind=j
    }
  }
  bestexample<-paste(pop[maxfitind,], collapse="")
  worstexample<-paste(pop[badfitind,], collapse="")
  runavefit[s]=matchsum/(n*length)

  # report current status
  if(printout){
    print(paste(s/n, "best ", bestexample))
    print(paste(s/n, "worst", worstexample))
  }

  #pick random individual to copy from weighted by relative fitness
  randfitpoint=sample(matchsum,1)
  repind=1
  matchsum=0
  for(j in 1:n){
    match=0
    for(i in 1:length){
      if(t[i]==pop[j,i]){match=match+1}
    }
    matchsum=matchsum+match
    if(matchsum>=randfitpoint){
      repind=j
      break
    }
  }

  # pick random individual to be replaced
  pick=sample(n,1)
  for(i in 1:length){
    pop[pick,i]=pop[repind,i] # best way to represent natural population (?)
  }

  # add mutations to the replicating sequence
  for(i in 1:length){
    m=sample(mut,1)
    if(m==1){
      x<- sample(c(0:9, letters, LETTERS," ",".",",",":"),
                   1, replace=TRUE)
      pop[pick,i]=x
    }
  }

  # add recombination with another sequence to the replicating sequence
    r=sample(rec,1)
    if(r==1){
      another=sample(n,1)
      location=sample(length,1)
      for(i in location:length){
        temp=pop[pick,i]
        pop[pick,i]=pop[another,i]
        pop[another,i]=temp
      }
    }

  # update best and least fit
  runbestfit[s]=maxfit/length
  runleastfit[s]=badfit/length

  # update plot of results
  # only every 50 time steps so it doesn't run too slowly
  if(s%%50==0){
    plot(rungen,runbestfit,type="l",xlab="generation",ylab="fitness",ylim=c(0,1))
    par(new=T)
    plot(rungen,runavefit,type="l",col='blue',xlab=" ",ylab=" ",ylim=c(0,1))
    par(new=T)
    plot(rungen,runleastfit,type="l",lwd=0.1,xlab=" ",ylab=" ",ylim=c(0,1))
  }

  # report current average fitness
  if(printout){print(runavefit[s])}
}

Manipulating mosquito eggs

Now that we have stable caged populations of Culex mosquitoes and have worked out an egg laying on demand system the next incremental step is to separate the individual eggs from freshly laid egg rafts for microinjection.  (We have been advised that injecting them while together in an egg raft does not work well because of the pressure they put on each other during injections...)  Jolene worked out the timing to get fresh rafts, disassociated them, and lined them up on wet blotting paper (to keep them from drying out) on a microscope slide.

eggsforinjection-2014-10-22-09-21-42

To the immediate left of the eggs is an extra layer of paper to brace them for injection from the right.  They were very light in color at first but they got darker (and harden) quickly by the time the picture was taken.  She put this first set back into water to see if manipulating them affects survival.  (For more photos and news check out Jolene's research blog.)

In other related news, we have some of the plasmids we need cloned and I am working on cloning the last one this week (that contain the genetic modifications for injection), and my plasmid preps are working!  Fingers crossed, with any luck we can try serious microinjection to generate germ line Culex transformations three weeks from now during the next round of fresh egg production.  We are planning to generate the self docking system described (in Anopheles gambiae) by Meredith et al. 2013 in Culex.

We've been noticed!

It is no coincidence that my last post was in August.  Once classes started up I have had a very busy schedule and little time for anything else.

However, the thing that triggered this post is, I happened across an article that discussed one of our recent publications.  It is on the IGTRCN (insect genetic technology research coordination network) website in an article by Frank Crisione "Transgenic Underdominance: Pushing Transgenes into Populations".  It is good to know that people out there are reading our publications.

In a similar vein, a grad student here at UH in another lab (I am on his graduate committee) just published a nice article about his work for the general public, "Can a small fish answer the big question?" by Kirill Vinnikov.

Fluorescent Chromosomes

Kenton's project has progressed quickly.  We sorted out the issue with fluorescence (the light source was not aligned properly through the scope).

Here are some updated Drosophila chromosome images.  They have a stain that dyes the DNA and is causing it to glow so you can see the chromosomes.

mite-dmel-nyad-2014-07-30-16-07-02

mite-dmel-nyad-2014-07-30-16-11-03

You can see the banding in the close up above.

Take a look at this!

mite-dmel-nyad-2014-07-31-13-56-32

and the detail below.

mite-dmel-nyad-2014-07-31-13-56-32-detail

The spread isn't good but that's a clear banding pattern!

Now that this is working in Drosophila he has moved on to damselflies; his original interest.  He is trying different tissues at different life stages to see which ones give the best chromosomes.  The damsel fly chromosomes are smaller and there are many more of them so it is a bit challenging, but there are some more tricks up our sleeves to try out in order to increase resolution.  Kenton already has some promising images but I do not want to post them here yet because they are new and potentially publishable results.  However, expect an update on this topic in the future.