barcode

R 배워보기-번외편: R로 standard curve 그리기

Coding/R

https://blog.naver.com/pokemonms/222606583751

 

Bradford assay

이게 뭐 하는거냐면 단백질 농도 보는 실험이다. 1. 뭐야 이거 어케해요 이게 Bradford assay용 시약이다....

blog.naver.com

Bradford assay는 단백질의 무게를 확인하기 위해 진행하는 실험이다. Bradford assay용 시약을 섞고 OD595를 재면 되는데, 그러기 위해서 Standard curve가 필요하다. 일정한 무게의 단백질(BSA; Bovine serum albumin)을 용해한 다음 Bradford assay용 시약을 섞고 OD595를 측정하고, 

이런 식으로 standard curve를 그린다. 이게 없으면 OD595를 재도 무게가 어느 정도인지 모른다. 


실험수업을 듣는 제육쌈밥(대짱이)군, 이번 주 실험 주제는 Bradford assay였다. standard curve를 그리고 미지 시료의 단백질 농도까지 정량하는 게 이번 과제였다. 그런데 양을 측정하려면 먼저 standard curve를 그리고, 선형 회귀분석을 통해(엑셀에서는 추세선) R^2와 일차식을 구해야 하지 않겠는가? 하지만 제육쌈밥군의 컴퓨터는 리눅스였고, 하필 그날따라 리브레오피스가 버벅거리는 것이었다. (이거 생각보다 버벅거림) 

그리고 이걸로도 어떻게든 되겠지, 하면서 제육쌈밥군은 R을 켰다. 

근데 왜 이름이 제육쌈밥이죠 아니 그냥 그게 생각나서요 이름 진짜 막 지으시네 


그래프 그리기 전단계

> library(ggplot2)
> setwd('/home/koreanraichu/')

어디가요 ggplot2 불러야지 

setwd는 working directory 설정하는건데, 본인은 저기에 파일이 있어서 저기로 고정해두고 쓴다. 고정 안 해두면 '/home/koreanraichu/파일.csv'로 열어야 하지만, 고정하게 되면 '파일명.csv' 한방이면 끝. 

 

> data=read.csv('bradford.csv')
> data
  BSA OD595_1 OD595_2 OD595_3
1   0   0.001   0.000   0.000
2  10   0.005   0.006   0.004
3  50   0.035   0.030   0.027
4 100   0.050   0.051   0.055
5 200   0.089   0.091   0.095

불러서 일단 평균부터 구해야 한다. 

 

> data$AVR=rowMeans(data[,c('OD595_1','OD595_2','OD595_3')])
> data
  BSA OD595_1 OD595_2 OD595_3          AVR
1   0   0.001   0.000   0.000 0.0003333333
2  10   0.005   0.006   0.004 0.0050000000
3  50   0.035   0.030   0.027 0.0306666667
4 100   0.050   0.051   0.055 0.0520000000
5 200   0.089   0.091   0.095 0.0916666667

(마른세수)

 

> data$AVR=round(rowMeans(data[,c('OD595_1','OD595_2','OD595_3')]),3)
> data
  BSA OD595_1 OD595_2 OD595_3   AVR
1   0   0.001   0.000   0.000 0.000
2  10   0.005   0.006   0.004 0.005
3  50   0.035   0.030   0.027 0.031
4 100   0.050   0.051   0.055 0.052
5 200   0.089   0.091   0.095 0.092

(대충 개비스콘 아저씨 편안 짤)

 

꺾은선그래프

> ggplot(data=data,aes(x=BSA,y=AVR,group=1))+geom_line()

씁 근데 색이 좀 그래... 

 

> ggplot(data=data,aes(x=BSA,y=AVR,group=1))+geom_line(colour="#939597")

아 얼티메이트 그레이는 킹정이죠 

 

이모 여기 추세선 1인분! 

> ggplot(data=data,aes(x=BSA,y=AVR,group=1))+geom_line(colour="#939597")+geom_smooth(method=lm,se=FALSE)
`geom_smooth()` using formula 'y ~ x'

method=lm으로 하면 직선형이 나온다. 아무튼 그렸으면 봅시다... 

 

> ggplot(data=data,aes(x=BSA,y=AVR,group=1))+geom_line(colour="#939597")+geom_smooth(method=lm,se=FALSE,colour="#000000")
`geom_smooth()` using formula 'y ~ x'

뭐야 이거 왜 돼요 

 

추세선 식과 R^2

> summary(lm(AVR~BSA,data))

Call:
lm(formula = AVR ~ BSA, data = data)

Residuals:
        1         2         3         4         5 
-0.002969 -0.002556  0.005093  0.003154 -0.002723 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.969e-03  2.776e-03   1.069 0.363366    
BSA         4.588e-04  2.707e-05  16.948 0.000447 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.004421 on 3 degrees of freedom
Multiple R-squared:  0.9897,	Adjusted R-squared:  0.9862 
F-statistic: 287.2 on 1 and 3 DF,  p-value: 0.0004474

BSA가 X축, Intercept는 절편(Y절편)이다. R^2는 Multiple R-squared에 있다. 

 

> 4.588e-04
[1] 0.0004588
> 2.969e-03
[1] 0.002969

표시형식 왜저래요... 아무튼 이 추세선의 식은 y=0.0004588x+0.002969 되시겠다. 

 

> ggplot(data=data,aes(x=BSA,y=AVR,group=1))+geom_line(colour="#939597")+geom_smooth(method=lm,se=FALSE,colour="#000000")+geom_text(x=100,y=0.08,label="y=0.0004588x+0.002969")+geom_text(x=100,y=0.077,label="R^2=0.9897")
`geom_smooth()` using formula 'y ~ x'

그래프에 넣을거면 geom_text()를 쓰자. ...아니 자꾸 점으로 읽어... 

 

축 제목과 그래프 제목

여기까지 다 그린 제육쌈밥군. 됐다! 하고 그래프를 저장하고 R을 끄려다가 생각해보니, 축 제목이 좀 그렇다? 

 

> ggplot(data=data,aes(x=BSA,y=AVR,group=1))+geom_line(colour="#939597")+geom_smooth(method=lm,se=FALSE,colour="#000000")+geom_text(x=100,y=0.08,label="y=0.0004588x+0.002969")+geom_text(x=100,y=0.077,label="R^2=0.9897")+xlab("BSA conc. (ug/ul)")+ylab("OD 595")+ggtitle("Standard curve")
`geom_smooth()` using formula 'y ~ x'

축 제목을 바꿔주고 그래프 제목을 추가했다.