スポンサーリンク

ELISAの測定結果からサンプルのタンパク質濃度をRを用いて計算する

2019年9月30日

以下のサイトを写経して、ELISAの計算の練習をしてみたいと思います。

https://www.pediatricsurgery.site/entry/2017/01/30/202953
2017-01-30
ELISAの測定結果をRで計算する 2. 4パラメーターロジスティック回帰で吸光度から濃度を求める

スポンサードリンク

開発環境

Windows 10 Pro (1803)
R 3.5.3
RStudio 1.1.463

蛇足ですが、ちょっとスピードがゆっくりですが、
https://rstudio.cloud/
というサイトが、2019年9月現在、メールアドレスとパスワード登録だけで無料で使用することができます。便利です。

新規RNotebookの作成と保存

RStudioを起動し、File > New File > R Notebook の順にクリックして、新規RNotebookを作成します。

図の『保存アイコン』をクリックして、RNotebookを保存します。
C:/r/ フォルダに、190929_elisa_001 という名前で保存します。

なお、以下の図を参考に、画面右下の “Files”タブで、C:/r/ フォルダを表示した状態にします。
また、その画面で、More > Set As Working Directory をクリックし、画面左下のConsoleの中で、”setwd(“C:/r”)” を実行しておきます。

tidyverse, drc, nplrパッケージのインストール

今回必要になる3つのパッケージをインストールします。

  • tidyverse
  • drc
  • nplr

RStudio左下のConsole画面に以下を入力します。

install.packages("drc", dependencies = TRUE)
install.packages("nplr")
install.packages("tidyverse")

ELISAデータ(疑似データ)をGItHubから入手する

写経元サイトの管理者さまが用意してくださったデータをダウンロードします。自分で実験したときは、ELISAの測定結果をcsvファイルにして、read.csv()関数で、取り込みます。
(参考: https://to-kei.net/r-beginner/r-2/ )

まず、画面左下のConsoleに以下を入力してRCurlパッケージをインストールします。

install.packages("RCurl", dependencies = TRUE)

次に、画面左上のRNotebookの画面、今回は、190929_elisa_001.Rmd となっているところの、グレーになっている、

plot(cars)

のところを以下のように書き換えます。

library("RCurl")
getURL("https://raw.githubusercontent.com/Razumall/NOPS/master/Data/ELISA.csv") %>%
  read.csv(text = ., header = TRUE) %>%
  tbl_df() -> df

(変更前)

(変更後)

Ctrl+S で保存した後、グレーの部分の右上の▲ボタンを押すと、以下のようになります。

さらに上図のように、画面右上のEnvironmentタブの、df のすぐ左側の▲ボタンをクリックすると、以下のように、dfの中身が表示されます。

ちなみに、
https://raw.githubusercontent.com/Razumall/NOPS/master/Data/ELISA.csv
をChromeで開くと、以下のような表示になります。

  • 8行12列の96 wellプレートに、
  • 吸光度の値が記載されています
  • 2列ずつduplicate (同じタンパク濃度のサンプルが2つずつ横に並んでいる)になっており、
  • 左の2列がstarndandになっており、
  • standardは上から順に1000, 500, 250, 125, 62.5, 31.25, 15.625, 0(blank)となっており、
  • 残りの右側の 5(サンプル)x 2(duplicate) = 10列が測定したいサンプルの吸光度

となっているそうです。

バックグラウンドの値を差し引く

何もいれなかった8行1列、8行2列のwellの吸光度をバックグラウンドとして、全体の値から差し引きます。

Rの式を入れたい場所(今回は20行目)を選択した状態で、”C”マークの “Insert” > R の順にクリックして、Rのコードを挿入します。

以下のコードをグレーの部分に記載して、Ctrl+Sで保存します。

df %>%
  mutate_all(funs(. - as.numeric((df[8,1]+df[8,2])/2 ))) -> df2

下図の▲ボタンを順にクリックしていきます。

スタンダード曲線を描く

横軸がタンパク室濃度、縦軸が吸光度の散布図を描きます。
25行目を選択した状態で 、”Insert” > R の順にクリックして、以下のRのコードを挿入します。

df2 %>%
  dplyr::select(X1, X2) %>%
  mutate(Concentration = c(1000*0.5^(0:6), 0)) %>%
  gather(Column, Absorbance, -Concentration) %>%
  filter(Concentration!=0) %>% # バックグラウンドは除去する
  dplyr::select(-Column) -> Standard

これをggplot2で散布図を描きます。
なお、x軸をlog scaleにします。

ggplot(Standard, aes(x=Concentration, y=Absorbance))+
  geom_point()+
  scale_x_log10()

4パラメーターロジスティック回帰の回帰式を求めて
(4-P logistic model)、サンプルのタンパク質濃度を計算する

以下のコードを入力して『モデルの作成』を行います。

library(nplr)
nplr <- nplr( x = Standard$Concentration,
        y = Standard$Absorbance )
nplr

回帰曲線をプロットします。

plot( nplr,
      xlab="Concenttration",
      ylab="Absorbance")

サンプルの吸光度から、タンパク質濃度を計算します

df2 %>%
  dplyr::select(-c(X1, X2)) %>%
  gather(Column, Absorbance) %>%
  mutate(Sample = c(rep(1:8, 2), rep(9:16, 2), rep(17:24, 2), rep(25:32, 2), rep(33:40, 2)) ) %>%
  mutate(Sample = as.factor(Sample)) %>%
  group_by(Sample) %>%
  summarise(Mean = mean(Absorbance), SD = sd(Absorbance)) -> Measured

96well から、一番左2列x8(スタンダード)を除いた、80well, duplicateなので、80/2 = 40 サンプルのタンパク質濃度を求めることになります。

Mean > 0 のものだけを残して(Filterをかけて)、Concentrationを予測します。

Measured %>%
  filter(Mean > 0) -> Measured2

getEstimates(nplr, Measured2$Mean) %>%
  tbl_df() %>%
  dplyr::rename(Absorbance=y, Concentration=x) -> Estimates_nplr

一部の値が小さすぎてestimateできませんというエラーが出てしまう。。。filterを Mean > 0 よりもある程度大きな値にするべきなのか?よくわからない。。。

しかし、一応、タンパク質の濃度はConcentrationとして計算はできたようです。。。

ソースコード

Rmdファイルは、以下となります。
あらかじめ、console画面で、3つのパッケージのインストールをしておく必要があります。

install.packages("drc", dependencies = TRUE)
install.packages("nplr")
install.packages("tidyverse")

参考文献

https://www.pediatricsurgery.site/entry/2017/01/30/202953

上記サイトのコードをコピペしただけなのですが、疲れました。。。自分のデータで計算できるだろうか。。。以下の本で、dplyrについて少し勉強しないといけなさそうです。。。

以下は英語のサイトですが、結構わかりやすいです。

http://www.cookbook-r.com/Graphs/

スポンサーリンク