LIPID MAPSによる脂質の分類の階層テーブルを作成する
はじめに
脂溶性代謝物の解析をしており、いろいろと調べています。脂質の分類には古典的にはBloorの分類というものがあるようですが、この分類には当てはまらない物質も数多く存在するため、あまり厳密ではないようです。
どうやら、最近ではLIPID MAPSという脂質の骨格に基づいた8分類が使われており、この論文でも使用されていました。
どの脂質がどの分類に当てはまるかは、ざっと調べたところ、テーブルファイルにはなっていなくて、LIPD MAPSのウェブサイトにhtmlファイルとして掲載されているだけでした。いちいちクリックしないと階層が表示されないし、このままでは解析には到底使えないので、テーブルをファイルを作成してGitHubに共有しました。
間違いなどがあっても困るので、作成方法なども含めて記事にしておきます。
GitHub
こちらのレポジトリに置いてあるLIPIDMAPS.csv
を使用していただければと思います。
テキスト情報の取得
まずLIPID MAPSのこのページにアクセスして、ブラウザでソースコードを開きます。 www.lipidmaps.org
<h2>Lipid Categories</h2>
から
<div class="mMain" style="font-size: 0.9em;">Other Polyketides <a href='/data/structure/LMSDSearch.php?Mode=ProcessClassSearch&LMID=LMPK00'>[PK00]</a></DIV> </div>
の行までをコピペし、.html
ファイルに保存する。これを再度ブラウザで開き直すと、折りたたまれていた部分がすべて開いた状態で表示されるので、これをExcelにコピペします。恐らくXML
になっていないので、XML::readHTMLTable()
なんかで取得する方法は使えないのではないかと思います。
Rでデータ整形
あとはこんな感じでデータを整形しています。
library(tidyverse) read.csv("LIPIDMAPS_Raw.csv", header = FALSE) %>% tbl_df %>% dplyr::rename(Variable = V1) %>% mutate(Variable = gsub(" ", " ", Variable)) %>% separate(Variable, into = c("Variable", "ID"), sep = " \\[") %>% mutate(ID = gsub("\\]", "", ID)) %>% mutate(Number = str_sub(ID, start = 3), Class = str_sub(ID, start = 0, end = 2)) %>% mutate(Category = if_else(nchar(Number) == 0, "Class", if_else(nchar(Number) == 2, "Subclass", "Variable"))) %>% dplyr::select(-Number) -> LMSD_RAW_tbl LMSD_RAW_tbl %>% filter(Category == "Class") %>% dplyr::rename(Class_abbr = Class, Class = Variable) %>% dplyr::select(Class, Class_abbr) -> Class_tbw LMSD_RAW_tbl %>% filter(Category == "Subclass") %>% dplyr::rename(Subclass = Variable, Class_abbr = Class) %>% inner_join(., Class_tbw, by = "Class_abbr") %>% dplyr::select(Class, Subclass, ID) -> Class_Subclass_tbw LMSD_RAW_tbl %>% filter(Category == "Variable") %>% mutate(ID = str_sub(ID, end = 4)) %>% dplyr::select(Variable, ID) %>% inner_join(Class_Subclass_tbw, .) %>% dplyr::select(-ID) -> LMSD_tbw write.csv(LMSD_tbw, "LIPDMAPS.csv", row.names = FALSE)
以上です。