演習問題(Easy) - yoshida1983/protc2026 GitHub Wiki

実習で使った A1〜D8 のデータとスクリプトを、そのまま使います。 引数を1つ変えて、結果がどう変わるかを見る演習です。新しくコードを書く必要はありません。

  • 実習用スクリプトを実行したあとの、同じRの画面で続けてください
  • すべてやる必要はありません。気になったものから試してください
  • ここには決まった正解はありません。「なぜそうなるか」を考えることが目的です

→ 予備データとの比較は 演習問題(Medium)、別の実験データを使う演習は 発展演習(Hard)にあります

PCA

PCA演習1「スケーリングの有無による違いを比較する」

目的: scale. パラメータの役割を理解する。
課題:

  • コード中の scale. = TRUE を FALSE に変更してPCAを実行する。
  • 結果のスコアプロットを比較し、サンプル配置の違いを確認する。
  • どちらが今回のデータに適しているか考察する。
    • ヒント:今回は Mascot の Score を使っているので、全タンパク質を同じ重みで扱いたい場面です。

PCA演習2「表示する主成分をPC1 vs PC3に変更する」

目的: 複数の主成分を理解し、データの多様性を探る。
課題:

  • ggplot内の aes(x = PC1, y = PC2) を PC1, PC3 に変更する。
  • 新たなスコアプロットを作成し、PC2とPC3でどのように分布が異なるかを観察する。
    • ヒント:summary(pca_res) で各PCがどれだけの分散を説明しているか確認できる。

PCA演習3「プロットのテーマを変更する」

目的: ggplot2のテーマを使い分けて可視化の印象を理解する。
課題:

  • theme_minimal() を以下のいずれかに変更して比較する。
    • theme_classic()
    • theme_bw()
    • theme_void()
  • 違いを確認し、「どのテーマが見やすいか」考察する。
    • ヒント:theme() でフォントサイズや色も自分で細かく設定可能。

PCA演習4「ローディングを確認して、寄与度を見る」

目的: どの変数(タンパク質)が主成分に強く寄与しているか理解する。
課題:

  • 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での分離を決定づけていることを考察する。

階層的クラスタリング

クラスタリング演習1「クラスタリング手法を変えて比較する」

目的: clustering_method の違いを理解する。
課題:

  • 以下の手法を試して、ヒートマップのクラスタの形がどう変化するか比較する。
    • "single"(最短距離法)
    • "complete"(最長距離法)
    • "average"(群平均法:実習で使用)
    • "ward.D2"(分散最小化法)
  • それぞれの結果を比較し、クラスタのまとまり方の違いを理解する。
pheatmap(log_mat, clustering_method = "complete")

クラスタリング演習2「行や列の距離計算方法を変える」

目的: clustering_distance_rows と clustering_distance_cols を変えて、距離の定義を理解する。
課題:

  • 実習で使った "correlation" を "euclidean" に変更して比較する。
  • 行方向と列方向で異なる距離計算を設定してみる。
    • 例:行は "correlation"、列は "euclidean"。
pheatmap(
  log_mat,
  clustering_distance_rows = "euclidean",
  clustering_distance_cols = "correlation"
)

クラスタリング演習3「ヒートマップの見た目を変える」

目的: カラースケールやラベル表示を調整して、見やすい図を作る。
課題:

  • color 引数を使って配色を変える。
    • 例)青-白-赤のグラデーションにする
pheatmap(
  log_mat,
  color = colorRampPalette(c("blue", "white", "red"))(50)
)
  • show_colnames を FALSE にして列名を非表示にする。
  • fontsize を調整してラベルサイズを変更する。

クラスタリング演習4「検出数でのフィルタ条件を変える」

目的: データ前処理の条件が結果に与える影響を理解する。
課題:

  • mat_2 を作るときの det_cnt >= 2 を変更し、
    • 「>= 3」
    • 「>= 5」など、しきい値を変えてクラスタリングを行う。
  • ヒートマップの見え方やクラスタの変化を比較し、フィルタの影響を考察する。
    • ヒント:dim(mat_2) で、残ったタンパク質の数を確認できる。

GO解析

GO演習1「背景遺伝子を指定する/しない比較」

目的: 背景(universe)の重要性を理解する。
課題:

  • コード中の universe = universe_agi の行をコメントアウト(行頭に「#」)して、背景を「指定なし」(=シロイヌナズナの全遺伝子)でGO解析を実行する。
  • 2つの結果を比較し、有意なGO項目の数と内容がどう変化するかを確認する。
  • どちらの条件が適切か、実習データの性質に合わせて考察する。
    • ヒント:MSで検出されるタンパク質は、存在量の多いものに偏っています。

GO演習2「GOカテゴリーを変えて結果を比較」

目的: 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))
}

GO演習3「p値やq値のカットオフを変更する」

目的: p値フィルタリングの影響を理解する。
課題:

  • pvalueCutoff を以下に変更して結果を比較する。
    • 0.05(元の設定)
    • 0.01(厳しめ)
    • 0.10(緩め)
  • 有意GO項目の数がどのように変化するかを記録する。
  • 研究の目的に応じて、どのカットオフが適切か考察する。

GO演習4「可視化方法を試す」

目的: 結果を分かりやすく伝えるための可視化方法を学ぶ。
課題:

  • 以下の関数を使い、それぞれの図を作成。
library(enrichplot)

ego <- ego_list[[1]]        # 1つ目のサンプルの結果を使う

dotplot(ego)                # ドットプロット
barplot(ego)                # 棒グラフ
cnetplot(ego)               # 遺伝子とGO項目のネットワーク

# GO項目間のネットワークは、先に類似度を計算しておく必要があります
emapplot(pairwise_termsim(ego))
  • どの可視化がどの場面に適しているか考える。
    • emapplot() を pairwise_termsim() なしで実行するとエラーになります。

GO演習5「Webツールとの比較」

目的: Rでの結果とWebツールの結果の違いを確認し、解析の再現性を理解する。
課題:

  • スクリプトが書き出した shinygo_<サンプル名>.txt と shinygo_background.txt を使って、Webツール(DAVID, PANTHER, ShinyGO)で同じリストを解析する。
  • enrichGO の結果と比較して、以下を考察する。
    • 上位項目が一致しているか
    • p値やFDRの傾向
    • 背景遺伝子の扱い(Webツール側で Background を指定した場合/しない場合)
  • 結果が違った場合、その理由として何が考えられるか。

STRING

STRING演習1「興味のある生物で単一遺伝子の相互作用ネットワークを可視化」

目的: STRINGの基本的な検索機能に慣れる。
課題:

  • 自分が興味のある生物種を選び、その生物で注目している遺伝子・タンパク質を1つ検索する。
  • 相互作用ネットワークを表示し、どの種類のエビデンス(実験、データベース、テキストマイニングなど)が相互作用を裏付けているかを確認する。
  • 相互作用スコアの高い上位3つのタンパク質をリスト化し、それぞれの機能を簡単に調べて整理する。

STRING演習2「複数サンプル間の比較解析」

目的: 実習で得たサンプルデータをSTRINGに入力し、ネットワーク構築から機能解析までを行う。
課題:

  • 各サンプルについてSTRINGでネットワークを作成し、それぞれのネットワーク構造の特徴を比較する。
    • 例:ノード数、接続の密度、強くつながっているクラスタ(モジュール)など
  • STRINGの「Functional Enrichment」機能を用いてGO解析(Biological Process)を行い、
    • それぞれのサンプルで上位に出てきたGO項目を抽出
    • サンプル間で共通している項目と、差が見られる項目を整理
  • 結果をまとめ、それぞれのサンプルがどのような生物学的特徴を示しているかを考察する。
    • 注意:同じオルガネラに由来するタンパク質群は、もともと関連が知られているため、ネットワークが密に見えて当然です。

STRING演習3「Cytoscapeを用いた可視化」

目的: 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
⚠️ **GitHub.com Fallback** ⚠️