Here is a script to do a protein assay:
# Protein Concentrations
prot <- c(0.000, 0.016, 0.031, 0.063, 0.125, 0.250, 0.500, 1.000, 0.000, 0.016, 0.031, 0.063, 0.125, 0.250, 0.500, 1.000)
# Absorbance from my protein assay
abs <- c(0.329, 0.352, 0.349, 0.379, 0.417, 0.491, 0.668, 0.956, 0.327, 0.341, 0.355, 0.383, 0.417, 0.446, 0.655, 0.905)
#Plot the data simply
plot(abs~prot)
#Calculate the line using the linear model function
line <- lm(abs~prot)
#Draw the line
abline(line)
#Improve the graph:
plot(abs~prot,
xlab = "[Protein] (microg/ml)",
ylab = "Absorbance (570nm)",
main = "Protein Assay 20th April 2015")
abline(line)
r2 <- round(summary(line)$r.squared, 3)
mylabel = bquote(italic(R)^2 == .(format(r2, digits = 3)))
text(x = 0.2, y = 0.9, labels = mylabel)
#Equation of a line y = mx + c
#In our case abs = slope * prot + intercept
# ukn.prot = (abs - intercept)/slope
int <- summary(line)$coefficients[1]
slope <- summary(line)$coefficients[2]
mylabel = bquote(y == .(format(slope, digits = 3))*x + .(format(int, digits = 3)))
text(x = 0.2, y = 0.8, labels = mylabel)
#now calculate some unknown protein concs from absorbances
#put the unknowns into a vector
abs.unknowns <- c(0.554, 0.568, 0.705)
#rearrange the equation of the line to ukn.prot = (abs - intercept)/slope
prot.unknowns <- (abs.unknowns - int)/slope
#put the answers on the graph
text(x = 0.8, y = (0.6), "Abs")
text(x = 0.92, y = (0.6), "Prot")
for (i in 1:length(abs.unknowns)){
text(x = 0.8, y = (0.6 - i/20), abs.unknowns[i])
text(x = 0.92, y = (0.6 - i/20), round(prot.unknowns[i], 3))
}
# END OF SCRIPT
This can be copy and pasted into the script window of R-Studio.
Then each line can be run one by one by pressing the Run button:
This will generate the following output:
No comments:
Post a Comment
Comments and suggestions are welcome.