【シングルセル】10x Genomics Cell Rangerからの出力ファイルを使ってTrajectory解析をする方法【Monocle3】

【シングルセル】10x Genomics Cell Rangerからの出力ファイルを使ってTrajectory解析をする方法【Monocle3】

前回の記事で、Monocle3を用いた基本的なTrajectory解析の方法は習得できたと思います。しかしながら自身がもつシングルセルデータやNCBI GEOから拾ってきたデータなど公共データをどのようにTrajectory解析できるのかイメージしづらいと思います。

この記事ではcellrangerから出力された10X Genomics社のMatrixファイルを使ってTrajectory解析を行ってみます。これによって公共データを用いたTrajectory解析のやり方がわかります。ぜひトライしてみましょう。

Tested Environment

macOS Monterey (12.4), Quad-Core Intel Core i7, Memory 32GB, R 4.3.0, Monocle3 1.3.7

10x Genomics Cell Rangerのデータを読み込むには?


結論からいうと、10x Genomics Cell Ranger pipelineのデータを読み込むにはmonocle3のload_cellranger_data()を使います。公式サイトでも言及されています。

https://cole-trapnell-lab.github.io/monocle3/docs/getting_started/#10x-output

# Provide the path to the Cell Ranger output.
cds <- load_cellranger_data("~/Downloads/10x_data")

注記: load_cellranger_dataは、umi_cutoffという引数を取ります。これは、セルに含まれるべきリード数を決定するものです。デフォルトでは、これは100に設定されています。すべてのセルを含める場合は、umi_cutoffを0に設定します。

ファイル構造が 10x_data/outs/filtered_feature_bc_matrix/になる場合は、filtered_feature_bc_matrixを読み込みます。ここで、filtered_feature_bc_matrixの中には、features.tsv.gz、barcodes.tsv.gz、matrix.mtx.gzファイルが含まれています。

10x_data/
└── outs/
    └── filtered_feature_bc_matrix/ (ここを読み込む)
        ├── features.tsv.gz
        ├── barcodes.tsv.gz
        └── matrix.mtx.gz

または、load_mm_dataを使用して、MatrixMarket形式の任意のデータをロードできます。これを行うには、マトリックスファイルと2つのメタデータファイル(フィーチャ情報とセル情報)を指定します。今回はload_mm_dataは解説しないので、詳細については、?load_mm_dataを実行してください。

サンプルコード

cds <- load_mm_data(mat_path = "~/Downloads/matrix.mtx", 
                    feature_anno_path = "~/Downloads/features.tsv",
                    cell_anno_path = "~/Downloads/barcodes.tsv")

10x Genomics Cell Rangerの出力ファイルでTrajectory解析の実装方法


それでは実際に、10x Genomics Cell Rangerの出力ファイルでTrajectory解析の実装方法を解説していきます。まずは今回の解析に使うデータをダウンロードしていきます。もちろんご自身の10x Genomicsフォーマットファイルを使ってもらっても良いです。

まずはターミナル上でDesktopまで移動してください。そしてinput-files/outsディレクトリを作ります。monocleはoutsフォルダを読み込むのでoutsも含めて作ってください。

mkdir -p input-files/outs

データダウンロードします。

curl -o input-files/outs/filtered_feature_bc_matrix.tar.gz <https://cf.10xgenomics.com/supp/cell-exp/neutrophils/filtered_feature_bc_matrix.tar.gz>

ダウンロードが終わったら、filtered_feature_bc_matrix.tar.gzを解凍してください。

データがダウンロードできたらMonocle3で解析していきます。解析で使うコードは以下になります。

library(monocle3)

# Cell Rangerの出力ディレクトリへのパス
data_dir <- "~/Desktop/input-files/"  # outsフォルダの親ディレクトリ「input-files」を指定

# load_cellranger_data() でデータを読み込む
cds <- load_cellranger_data(data_dir)

# Pre-process the data
cds <- preprocess_cds(cds, num_dim = 100)
plot_pc_variance_explained(cds)

# Reduce dimensionality and visualize the cells
cds <- reduce_dimension(cds)
plot_cells(cds)

cds <- cluster_cells(cds)
cds <- learn_graph(cds)

colData(cds)$cluster <- partitions(cds)
plot_cells(cds, color_cells_by = "cluster")

実行結果

以下のような出力が得られたら成功です。

コードの解説


# Cell Rangerの出力ディレクトリへのパス
data_dir <- "~/Desktop/input-files/"  # outsフォルダの親ディレクトリ「input-files」を指定

# load_cellranger_data() でデータを読み込む
cds <- load_cellranger_data(data_dir)

10x Genomics Cell Rangerの出力データを読み込みます。 data_dir には、Cell Rangerの outs フォルダの親ディレクトリを指定します。 load_cellranger_data() 関数は、指定されたディレクトリからデータを読み込み、Monocle3で扱える cell_data_set (cds) オブジェクトを作成します。

# Pre-process the data
cds <- preprocess_cds(cds, num_dim = 100)
plot_pc_variance_explained(cds)

preprocess_cds() 関数でデータの前処理を行います。 num_dim = 100 は、主成分分析 (PCA) で計算する主成分の数を指定しています。 plot_pc_variance_explained() 関数は、各主成分が説明する分散の割合をプロットします。

# Reduce dimensionality and visualize the cells
cds <- reduce_dimension(cds)
plot_cells(cds)

reduce_dimension() 関数で次元削減を行います。デフォルトでは、UMAP (Uniform Manifold Approximation and Projection) が使用されます。 plot_cells() 関数は、次元削減されたデータに基づいて細胞を2次元空間にプロットします。

cds <- cluster_cells(cds)
cds <- learn_graph(cds)

cluster_cells() 関数で細胞のクラスタリングを行います。デフォルトでは、 Louvain アルゴリズムが使用されます。

learn_graph() 関数で、細胞間の遷移関係をグラフ構造として学習します。

colData(cds)$cluster <- partitions(cds)
plot_cells(cds, color_cells_by = "cluster")

partitions(cds) で得られるクラスタリング結果を colData(cds)$cluster に格納し、 plot_cells() 関数で細胞をクラスタごとに色分けしてプロットします。

最後に


いかがだったでしょうか。Trajectory解析はそこまで解析方法は難しくないですが、解釈にいくつか難しさが存在するかもしれません。じっくりと各手法の意味を理解することが重要です。今後もしっかり学んでいきましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です