# Fly Fitness Matrix
Gould, AL; Zhang, V; Lamberti, L; Jones, EW; Obadia, B; Gavryushkin, A; Carlso, JM; Beerenwinkel, N; Ludington, WB
# Setup
```r id=ef95918d-5552-4baf-9c7a-b2702f6db4ad
install.packages("popbio")
library(popbio)
```
[FlyFitnessRawData.csv][nextjournal#file#f9b85c95-ee07-49ca-8638-850f31462794]
[DevelopmentData.csv][nextjournal#file#f4c56edb-857d-42af-a2ba-689b40724af1]
## Raw Data Procesing
```r id=54949bb7-f009-4d98-927b-924e7ce63db0
# iterate through treatments
for(m in 1:length(uniq)){
trt<-subset(fitdat, treat == uniq[m])
# iterate through vials
for(n in 1:length(uniq1)){
vial<-subset(trt, vial == uniq1[n])
fecund<-vector("numeric", 39)
surv<-vector("numeric", 39)
# select development time within treatment to use
for (i in 1:100){
trt2<-subset(devdat, treatment == uniq1[n])
uniq2<-unique(unlist(trt2$replicate))
r<-sample(uniq2, 1, replace=TRUE)
rep<-subset(trt2, replicate==r)
dev<-rep$development
fecund<-vial$fecundity_adj
f_add<-rep(0,dev+6)
fecundity<-c(f_add, fecund)
time<-seq(0, length(fecundity)-1, by=1)
surv<-vial$survival
s_add<-rep(1,dev+5)
survival<-c(s_add, surv)
#create matrix of all zeros
fitM<-matrix(0, nrow=length(fecundity), length(fecundity), byrow=T)
#populate matirx with fecundity and survival values
for (k in 1:length(fecundity)){
fitM[1,k]<-fecundity[k]
for (l in 1:length(survival)){
fitM[l+1,l] <- survival[l]
}
}
#calculate dominant eigenvalue
fit<-lambda(fitM)
#store results in vector
fit_rep[i]<-fit
}
fit_vial[n]<-mean(fit_rep)
}
#store results in dataframe
d[,m]<-fit_vial
}
d
```
[FlyFitness.csv][nextjournal#file#5c7ede94-8d04-4e86-8a8b-abdc62708c09]
```r id=cdb5e046-973b-4861-9298-01627ee8960a
check <- read.csv([reference][nextjournal#reference#e5c45890-24f1-4cbe-91f1-95313e386ba9])
```
# Plot Fly Fitness
```r id=89ffb3f3-f3f8-4658-9145-4a096385ea8f
# PLOT FLY FITNESS (from fitness dataframe above (d) modified in Excel)
mydata<-read.csv([reference][nextjournal#reference#1f180a8f-d67b-409c-b781-5d67d826946d], header=TRUE, sep=",")
data<-subset(mydata, treat != "33")
sterr <- function(x) {
sd(x)/sqrt(length(x))
}
stderr<-aggregate(fitness, by=list(treat), FUN="sterr")
meanFit<-aggregate(fitness, by=list(treat), FUN="mean")
spacing<-c(0.92, 1.08, 0.85, 1, 1.15, 1.62, 1.59, 2.28, 1.75, 2.19, 2.05, 1.95, 2.11, 1.71, 1.87, 2.78, 2.94, 3.02, 3.1, 3.2, 3.28, 2.66, 3.375, 2.56, 3.55, 3.9, 3.99, 4.08, 4.17, 4.33, 5, 0)
points<-c(1:32)
points<-as.character(points)
par(mar=c(5,5,2,2))
plot(spacing, meanFit$x, ylim=c(1.15, 1.25), ylab="Fitness", xlab="Number of species", pch=21, cex=3.5, cex.axis=1.4, cex.lab=1.6)
text(spacing, meanFit$x, labels=points)
arrows(spacing,meanFit$x-stderr$x,spacing,meanFit$x+stderr$x, code=3, length=0.02, angle = 90)
```
![__out-0][nextjournal#output#89ffb3f3-f3f8-4658-9145-4a096385ea8f#__out-0]
# Fitness Matrix with Variable Development time per vial
```r id=9d9cb887-1dbd-46c4-ba37-5acefb75908b
# FITNESS MATRIX WITH VARIABLE DEVELOPMENT TIME PER VIAL (100x)
fitdat<-read.csv([reference][nextjournal#reference#ffeeb225-bb4d-4f4f-a985-6bd384f377b8], header=TRUE, sep=",")
devdat<-read.csv([reference][nextjournal#reference#ac369d69-f1a7-4c2d-9094-22d977f401bb], header=TRUE, sep=",")
uniq <- unique(unlist(fitdat$treat))
uniq1 <- unique(unlist(fitdat$vial))
fit_rep<-vector("numeric", 100)
fit_vial<-vector("numeric", 5)
d<-matrix(0, nrow=5, length(uniq), byrow=F)
d<-as.data.frame(d)
```
[nextjournal#file#f9b85c95-ee07-49ca-8638-850f31462794]:
[nextjournal#file#f4c56edb-857d-42af-a2ba-689b40724af1]:
[nextjournal#file#5c7ede94-8d04-4e86-8a8b-abdc62708c09]:
[nextjournal#reference#e5c45890-24f1-4cbe-91f1-95313e386ba9]:
<#nextjournal#reference#e5c45890-24f1-4cbe-91f1-95313e386ba9>
[nextjournal#reference#1f180a8f-d67b-409c-b781-5d67d826946d]:
<#nextjournal#reference#1f180a8f-d67b-409c-b781-5d67d826946d>
[nextjournal#output#89ffb3f3-f3f8-4658-9145-4a096385ea8f#__out-0]:
[nextjournal#reference#ffeeb225-bb4d-4f4f-a985-6bd384f377b8]:
<#nextjournal#reference#ffeeb225-bb4d-4f4f-a985-6bd384f377b8>
[nextjournal#reference#ac369d69-f1a7-4c2d-9094-22d977f401bb]:
<#nextjournal#reference#ac369d69-f1a7-4c2d-9094-22d977f401bb>
This notebook was exported from https://nextjournal.com/a/Kj59UboXG6Q6DuoUEYrJj?change-id=CPSGcS1pC83LtWuDPTujc7
```edn nextjournal-metadata
{:article
{:settings
{:numbered? false, :sidebar? true, :authors? true, :subtitle? false},
:nodes
{"1f180a8f-d67b-409c-b781-5d67d826946d"
{:id "1f180a8f-d67b-409c-b781-5d67d826946d",
:kind "reference",
:link
[:output "5c7ede94-8d04-4e86-8a8b-abdc62708c09" "FlyFitness.csv"]},
"54949bb7-f009-4d98-927b-924e7ce63db0"
{:collapsed? true,
:compute-ref #uuid "f7c93ee0-d78a-11e8-9ccc-f9d758563541",
:exec-duration 52297,
:id "54949bb7-f009-4d98-927b-924e7ce63db0",
:kind "code",
:output-log-lines {},
:runtime [:runtime "66b028e7-89ba-4013-bf79-4711e5f617d0"]},
"5c7ede94-8d04-4e86-8a8b-abdc62708c09"
{:id "5c7ede94-8d04-4e86-8a8b-abdc62708c09", :kind "file"},
"66b028e7-89ba-4013-bf79-4711e5f617d0"
{:environment
[:environment
{:article/nextjournal.id
#uuid "5b45e6f7-fe51-488a-b89b-1c8f74dfb387",
:change/nextjournal.id
#uuid "5b751e08-cc0f-4e29-8944-bd8f3056cdc6",
:node/id "e8cb826f-2c7d-4cdd-b45b-0ad4282c5394"}],
:id "66b028e7-89ba-4013-bf79-4711e5f617d0",
:kind "runtime",
:language "r",
:type :nextjournal},
"89ffb3f3-f3f8-4658-9145-4a096385ea8f"
{:compute-ref #uuid "888fdbd0-d78d-11e8-9ccc-f9d758563541",
:exec-duration 57,
:id "89ffb3f3-f3f8-4658-9145-4a096385ea8f",
:kind "code",
:output-log-lines {},
:runtime [:runtime "66b028e7-89ba-4013-bf79-4711e5f617d0"],
:stdout-collapsed? true},
"9d9cb887-1dbd-46c4-ba37-5acefb75908b"
{:compute-ref #uuid "a3660130-d78a-11e8-9ccc-f9d758563541",
:exec-duration 1203,
:id "9d9cb887-1dbd-46c4-ba37-5acefb75908b",
:kind "code",
:output-log-lines {},
:runtime [:runtime "66b028e7-89ba-4013-bf79-4711e5f617d0"]},
"ac369d69-f1a7-4c2d-9094-22d977f401bb"
{:id "ac369d69-f1a7-4c2d-9094-22d977f401bb",
:kind "reference",
:link
[:output
"f4c56edb-857d-42af-a2ba-689b40724af1"
"DevelopmentData.csv"]},
"cdb5e046-973b-4861-9298-01627ee8960a"
{:compute-ref #uuid "40b09360-d78b-11e8-9ccc-f9d758563541",
:exec-duration 819,
:id "cdb5e046-973b-4861-9298-01627ee8960a",
:kind "code",
:output-log-lines {},
:runtime [:runtime "66b028e7-89ba-4013-bf79-4711e5f617d0"]},
"e5c45890-24f1-4cbe-91f1-95313e386ba9"
{:id "e5c45890-24f1-4cbe-91f1-95313e386ba9",
:kind "reference",
:link
[:output "5c7ede94-8d04-4e86-8a8b-abdc62708c09" "FlyFitness.csv"]},
"ef95918d-5552-4baf-9c7a-b2702f6db4ad"
{:compute-ref #uuid "a0a90410-d78a-11e8-9ccc-f9d758563541",
:exec-duration 4592,
:id "ef95918d-5552-4baf-9c7a-b2702f6db4ad",
:kind "code",
:output-log-lines {:stdout 22},
:runtime [:runtime "66b028e7-89ba-4013-bf79-4711e5f617d0"]},
"f4c56edb-857d-42af-a2ba-689b40724af1"
{:id "f4c56edb-857d-42af-a2ba-689b40724af1", :kind "file"},
"f9b85c95-ee07-49ca-8638-850f31462794"
{:id "f9b85c95-ee07-49ca-8638-850f31462794", :kind "file"},
"ffeeb225-bb4d-4f4f-a985-6bd384f377b8"
{:id "ffeeb225-bb4d-4f4f-a985-6bd384f377b8",
:kind "reference",
:link
[:output
"f9b85c95-ee07-49ca-8638-850f31462794"
"FlyFitnessRawData.csv"]}},
:nextjournal/id #uuid "029d50b9-b913-4fa7-a515-2adcfacb67f0",
:article/change
{:nextjournal/id #uuid "5c3675fb-7fdf-44a9-a089-23635919b35c"}}}
```