演習問題(Easy) - yoshida1983/protc2026 GitHub Wiki
実習で使った A1〜D8 のデータとスクリプトを、そのまま使います。 引数を1つ変えて、結果がどう変わるかを見る演習です。新しくコードを書く必要はありません。
- 実習用スクリプトを実行したあとの、同じRの画面で続けてください
- すべてやる必要はありません。気になったものから試してください
- ここには決まった正解はありません。「なぜそうなるか」を考えることが目的です
→ 予備データとの比較は 演習問題(Medium)、別の実験データを使う演習は 発展演習(Hard)にあります
目的: scale. パラメータの役割を理解する。
課題:
- コード中の
scale. = TRUEをFALSEに変更してPCAを実行する。 - 結果のスコアプロットを比較し、サンプル配置の違いを確認する。
- どちらが今回のデータに適しているか考察する。
- ヒント:今回は Mascot の Score を使っているので、全タンパク質を同じ重みで扱いたい場面です。
目的: 複数の主成分を理解し、データの多様性を探る。
課題:
- ggplot内の
aes(x = PC1, y = PC2)をPC1, PC3に変更する。 - 新たなスコアプロットを作成し、PC2とPC3でどのように分布が異なるかを観察する。
- ヒント:
summary(pca_res)で各PCがどれだけの分散を説明しているか確認できる。
- ヒント:
目的: ggplot2のテーマを使い分けて可視化の印象を理解する。
課題:
-
theme_minimal()を以下のいずれかに変更して比較する。theme_classic()theme_bw()theme_void()
- 違いを確認し、「どのテーマが見やすいか」考察する。
- ヒント:
theme()でフォントサイズや色も自分で細かく設定可能。
- ヒント:
目的: どの変数(タンパク質)が主成分に強く寄与しているか理解する。
課題:
-
pca_res$rotationを使って、各タンパク質のPC1、PC2へのローディングを確認する。 - 絶対値が大きい上位5つのタンパク質を抽出する。
head(sort(abs(pca_res$rotation[, 1]), decreasing = TRUE), 5) # PC1
head(sort(abs(pca_res$rotation[, 2]), decreasing = TRUE), 5) # PC2- それらがPC1での分離を決定づけていることを考察する。
目的: clustering_method の違いを理解する。
課題:
- 以下の手法を試して、ヒートマップのクラスタの形がどう変化するか比較する。
-
"single"(最短距離法) -
"complete"(最長距離法) -
"average"(群平均法:実習で使用) -
"ward.D2"(分散最小化法)
-
- それぞれの結果を比較し、クラスタのまとまり方の違いを理解する。
pheatmap(log_mat, clustering_method = "complete")目的: clustering_distance_rows と clustering_distance_cols を変えて、距離の定義を理解する。
課題:
- 実習で使った
"correlation"を"euclidean"に変更して比較する。 - 行方向と列方向で異なる距離計算を設定してみる。
- 例:行は
"correlation"、列は"euclidean"。
- 例:行は
pheatmap(
log_mat,
clustering_distance_rows = "euclidean",
clustering_distance_cols = "correlation"
)目的: カラースケールやラベル表示を調整して、見やすい図を作る。
課題:
-
color引数を使って配色を変える。- 例)青-白-赤のグラデーションにする
pheatmap(
log_mat,
color = colorRampPalette(c("blue", "white", "red"))(50)
)-
show_colnamesをFALSEにして列名を非表示にする。 -
fontsizeを調整してラベルサイズを変更する。
目的: データ前処理の条件が結果に与える影響を理解する。
課題:
-
mat_2を作るときのdet_cnt >= 2を変更し、- 「
>= 3」 - 「
>= 5」など、しきい値を変えてクラスタリングを行う。
- 「
- ヒートマップの見え方やクラスタの変化を比較し、フィルタの影響を考察する。
- ヒント:
dim(mat_2)で、残ったタンパク質の数を確認できる。
- ヒント:
目的: 背景(universe)の重要性を理解する。
課題:
- コード中の
universe = universe_agiの行をコメントアウト(行頭に「#」)して、背景を「指定なし」(=シロイヌナズナの全遺伝子)でGO解析を実行する。 - 2つの結果を比較し、有意なGO項目の数と内容がどう変化するかを確認する。
- どちらの条件が適切か、実習データの性質に合わせて考察する。
- ヒント:MSで検出されるタンパク質は、存在量の多いものに偏っています。
目的: Biological Process (BP)、Cellular Component (CC)、Molecular Function (MF) の違いを理解する。
課題:
-
ont = "BP"を"CC"や"MF"に変更して解析を実行。 - それぞれの上位5項目を比較して、どんな特徴があるかをまとめる。
- BP → 生物学的プロセス
- CC → 細胞内局在
- MF → 分子機能
- 今回の実習データを最もよく説明するのは、どのカテゴリーか考える。
- ヒント:複数のカテゴリーを一度に解析するならループを使う。
for (o in c("BP", "CC", "MF")) {
e <- enrichGO(
gene = gene_lists[[1]], # 1つ目のサンプルで試す
universe = universe_agi,
OrgDb = org.At.tair.db,
keyType = "TAIR",
ont = o
)
cat("----", o, ":", nrow(as.data.frame(e)), "terms ----\n")
print(head(as.data.frame(e)[, c("Description", "p.adjust")], 5))
}目的: p値フィルタリングの影響を理解する。
課題:
-
pvalueCutoffを以下に変更して結果を比較する。- 0.05(元の設定)
- 0.01(厳しめ)
- 0.10(緩め)
- 有意GO項目の数がどのように変化するかを記録する。
- 研究の目的に応じて、どのカットオフが適切か考察する。
目的: 結果を分かりやすく伝えるための可視化方法を学ぶ。
課題:
- 以下の関数を使い、それぞれの図を作成。
library(enrichplot)
ego <- ego_list[[1]] # 1つ目のサンプルの結果を使う
dotplot(ego) # ドットプロット
barplot(ego) # 棒グラフ
cnetplot(ego) # 遺伝子とGO項目のネットワーク
# GO項目間のネットワークは、先に類似度を計算しておく必要があります
emapplot(pairwise_termsim(ego))- どの可視化がどの場面に適しているか考える。
-
emapplot()をpairwise_termsim()なしで実行するとエラーになります。
-
目的: Rでの結果とWebツールの結果の違いを確認し、解析の再現性を理解する。
課題:
- スクリプトが書き出した
shinygo_<サンプル名>.txtとshinygo_background.txtを使って、Webツール(DAVID, PANTHER, ShinyGO)で同じリストを解析する。 -
enrichGOの結果と比較して、以下を考察する。- 上位項目が一致しているか
- p値やFDRの傾向
- 背景遺伝子の扱い(Webツール側で Background を指定した場合/しない場合)
- 結果が違った場合、その理由として何が考えられるか。
目的: STRINGの基本的な検索機能に慣れる。
課題:
- 自分が興味のある生物種を選び、その生物で注目している遺伝子・タンパク質を1つ検索する。
- 相互作用ネットワークを表示し、どの種類のエビデンス(実験、データベース、テキストマイニングなど)が相互作用を裏付けているかを確認する。
- 相互作用スコアの高い上位3つのタンパク質をリスト化し、それぞれの機能を簡単に調べて整理する。
目的: 実習で得たサンプルデータをSTRINGに入力し、ネットワーク構築から機能解析までを行う。
課題:
- 各サンプルについてSTRINGでネットワークを作成し、それぞれのネットワーク構造の特徴を比較する。
- 例:ノード数、接続の密度、強くつながっているクラスタ(モジュール)など
- STRINGの「Functional Enrichment」機能を用いてGO解析(Biological Process)を行い、
- それぞれのサンプルで上位に出てきたGO項目を抽出
- サンプル間で共通している項目と、差が見られる項目を整理
- 結果をまとめ、それぞれのサンプルがどのような生物学的特徴を示しているかを考察する。
- 注意:同じオルガネラに由来するタンパク質群は、もともと関連が知られているため、ネットワークが密に見えて当然です。
目的: Cytoscapeの基本的な操作に慣れる。
※ この演習だけ、Cytoscape のインストールが必要です。
課題:
- STRINGでネットワークを作成し、「Export」→「TSV形式」で結果を保存
- Cytoscapeを起動し、File → Import → Network from File でTSVを読み込む
- レイアウトを変更してみる
- 例)Layout → Prefuse Force Directed
- ノードサイズ:接続数(Degree)で大きさを変える(Style → Node → Size → Degree)
- ノード色:ランダムで色を付ける(好きな色でOK)(Style → Node → Fill Color → Discrete Mapping)
- エッジ幅:スコア(STRING: score)で太さを変える(Style → Edge → Width → Continuous Mapping)
- 図をPNGとして書き出す
- File → Export → Network View as PNG