【研究】RNA-seq04:発現比較解析準備編(RとRStudioの導入)
こんにちは、あるいは、こんばんは。
相変わらずの山積みの雑務をこなしつつ、ようやく発現比較解析に手を付けています。
マッピング後のカウント処理(【研究】RNA-seq03)は、実行できていないため記述できておりません。
カウントデータファイルがありますので、統計ソフト「R」を統合開発環境(IDE)の「RStudio」を用いて解析しています。
PCスペック
RとRStudio
生命科学の分野に携わると、いつか手を出す時期がくるのが「R」と思います。もちろん、「Python」にも触ることがあると思います。
今回は「RStudio」を用いて、RNA-seqのカウントデータの解析を進めてみたいと思います。
Rのインストール
公式サイトからインストーラーをダウンロードし、インストールします。
バージョンによって、ライブラリが使用できない場合もあるため、解析が実行できる環境が構築できた場合には、バージョンを控えておくと良いようです。
RStudioのインストール
Rの統合開発環境(IDE)を利用すると、Rスクリプトの管理、データの読み書き、解析経過で作成されたデータの確認などが簡便になります。
公式サイトからインストーラーをダウンロードし、インストールします。
これで、Rでの解析準備ができましたね。
Rの実行
「R」と「RStudio」をインストールしたら、「RStudio」を起動します。
基本的な使い方は、「R入門」などで検索すると学習できるサイトがたくさんヒットすると思います。
最近では、「ChatGPT」を教師として、質問を投げかけると教えてくれると思いますよ。
Rの練習
ChatGPTに教えていただきます。
# 遺伝子発現データのサンプル作成
gene_symbols <- c("Gene1", "Gene2", "Gene3", "Gene4", "Gene5")
group1_counts <- c(100, 150, 80, 200, 120)
group2_counts <- c(90, 160, 70, 180, 110)
group3_counts <- c(110, 140, 90, 190, 130)
annotation_info <- c("Function1", "Function2", "Function3", "Function4", "Function5")
# データフレームの作成
gene_expression_data <- data.frame(GeneSymbol = gene_symbols,
Group1_Counts = group1_counts,
Group2_Counts = group2_counts,
Group3_Counts = group3_counts,
Annotation = annotation_info)
ここまでを左上ペイン「Untitled1*(Rスクリプトのこと)」にコピペして、実行したいコード部分を選択し、「Run」をクリック(または「⌘ + ↩️」)して実行します。
同様に、以下のコードを左上ペインにコピーして、実行します。
# 1)基本的な情報の表示
print("基本的な情報の表示:")
print(summary(gene_expression_data))
print(head(gene_expression_data))
続けて、以下のコードを左上ペインにコピーして、実行します。
# 2)データの操作と抽出
print("\nデータの操作と抽出:")
# Gene1のデータを抽出
print("Gene1のデータ:")
print(gene_expression_data[gene_expression_data$GeneSymbol == "Gene1", ])
# グループ1のカウント値が150以上の遺伝子を抽出
print("グループ1のカウント値が150以上の遺伝子:")
print(gene_expression_data[gene_expression_data$Group1_Counts >= 150, ])
以下、同様に以下のコードを左上ペインにコピーして、実行していきます。
# 3)データの集計
print("\nデータの集計:")
# 各グループの平均カウント値を計算
average_counts <- colMeans(gene_expression_data[, 2:4])
print("各グループの平均カウント値:")
print(average_counts)
続けます。
# 4)データの統計解析
print("\nデータの統計解析:")
# グループ間のt検定を行う
t_test_result <- t.test(gene_expression_data$Group1_Counts, gene_expression_data$Group2_Counts)
print("グループ1とグループ2のt検定結果:")
print(t_test_result)
グラフを描画します。
# 5)データの可視化
print("\nデータの可視化:")
# グループ間の発現量の比較をボックスプロットで表示
boxplot(gene_expression_data[, 2:4], col = c("red", "blue", "green"), main = "Gene Expression Comparison")
最後にデータの解釈です。これは「R」の機能というより、「ChatGPT」によるデータの解釈(?)を表示させるコードです。
# 6)データの解釈
print("\nデータの解釈:")
print("グループ1とグループ2の間に有意な遺伝子発現量の差が見られることが示唆されました。")
「4)データの統計解析」で確認したように(p > 0.05)、「グループ1とグループ2の間に有意な遺伝子発現量の差が見られることが示唆されました。」というのは誤った情報となります。
まとめ
いかがでしょうか。
コードの作成をリクエストすると、ある程度、処理可能な内容で提案してくれます。
望み通りのコードになっていなくても、少し修正すると使える内容になることもありますので、困ったときに相談してみると良いかもしれません。
ただし、嘘(誤り)の情報をあたかも真(正解)の情報として返してきたり、作動しないコードや複雑難解なコードを返してきたりもします。
Google先生にも聞いて、自分自身で情報を整理・取捨選択することも重要です。
更新
20240228:初版