Ensemble ID→Gene ID

*「ENSMUST」で始まるマウスのEnsemble ID用です。
biomaRtを用いて、Ensenble ID→Gene Symbolへの変更方法をまとめます。

必要なパッケージのインストールとロード

まず、biomaRt パッケージをインストールし、Rセッションにロードします。

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("biomaRt")

library(biomaRt)

Ensemblのマートを設定

マウスのデータを取得するために、Ensemblのマートを設定します。

 #マウスサンプルの場合 
ensembl <- useMart("ensembl", dataset = "mmusculus_gene_ensembl")
 #ヒトサンプルの場合 
ensembl <- useMart("ensembl", dataset = "hsapiens_gene_ensembl")

Ensembl IDからSYMBOLへの変換

EnsemblトランスクリプトIDから遺伝子シンボルに変換するために getBM 関数を使用します。

# 'data' データフレームの1列目のIDを取得(例: 'ENSMUST00000115585'#例"取り込んだCSVファイルの名前"$"1列目の名前" 」は「human.gene.csv$...1」のように
ensembl_ids <- "取り込んだCSVファイルの名前"$"1列目の名前"


# getBM 関数を使用して変換
symbols <- getBM(attributes = c('ensembl_transcript_id', 'external_gene_name'),
                 filters = 'ensembl_transcript_id',
                 values = ensembl_ids,
                 mart = ensembl)

結果を元のデータフレームに統合

getBM で得たデータを元の data データフレームに統合します。

merged_data <- merge(取り込んだCSVファイルの名前, symbols, by.x = "1列目の名前", by.y = "ensembl_transcript_id", all.x = TRUE)

このコードでは、data データフレームの "EnsemblID" 列と symbols データフレームの "ensembl_transcript_id" 列に基づいて統合を行います。

結果のCSVファイルとしての出力

最後に、統合されたデータをCSVファイルとして出力します。

write.csv(merged_data, "merged_data.csv", row.names = FALSE)

データの整理

次に、RNA chep用に書き出したデータの整理を行う。
まず、書き出した「merged_data.csv」ファイルをエクセルファイルで開き、1番左の列の「Ensemble ID」を消し、代わりに1番右の列の「external_gene_name」が1番左にくるようにカット&ペーストする。

こうして
こうなる

このデータをCSVファイルとして保存する。

次に、Gene symbolが「NA」もしくは「空欄」の行を削除する。

# dplyrパッケージのロード
library(dplyr)

# 列 'external_gene_name' がブランクまたはNAでない行のみを保持
merged_data_cleaned <- merged_data %>%
                       filter(!is.na(`external_gene_name`) & `external_gene_name` != "")

続いて、Gene symbolが重複する数値列のみ平均化処理を行う。

# dplyrパッケージを使用
library(dplyr)

# 数値データのみを含む列を特定
numeric_columns <- sapply(merged_data_cleaned, is.numeric)

# `external_gene_name` 列でグループ化し、数値データの列の平均値を計算
aggregated_data <- merged_data_cleaned %>%
                  group_by(`external_gene_name`) %>%
                  summarise_at(vars(names(numeric_columns)[numeric_columns]), 
                               list(mean = ~ mean(., na.rm = TRUE)))

データを出力する

write.csv(aggregated_data, "aggregated_symbol.csv", row.names = FALSE)


この記事が気に入ったらサポートをしてみませんか?