RでMeSH(Medical Subject Headings)を触ってみる

#MeSHとは

医学系論文を検索しやすいように同じ意味の言葉を一つの言葉をまとめていったものです。
例えば、癌(Cancer)なんかは悪性腫瘍(Tumor)や悪性新生物(Neoplasm)など、表記ゆれがあります。
これらを統制して一つの単語にまとめることで、すべての単語を検索せずとも、統制語(neoplasms)による検索によって一挙に調べることが可能になります。


>NLM（米国国立医学図書館）が作成するシソーラス Medical Subject Headings（医学主題見出し）の略称です。シソーラスとは、様々な医学用語を統一して上位語・下位語を整理した統制語辞書のことです。MeSH は主題による階層構造になっており、下位に行くほど用語がより詳細になります。また、医療や医学専門用語の変化に対応させるために定期的に更新されています。

http://www.lib.m.u-tokyo.ac.jp/manual/pubmedmanual.pdf

#統一用語のMeSHデータベースをRで触ってみる
MeSHはデータベースとして提供されており、R言語だとBioconductorの[meshr](https://www.bioconductor.org/packages/release/bioc/html/meshr.html)というパッケージで簡単に入手でき、容易に取り出すことが出来ます。

```r
## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite("meshr")
library(meshr)
```
#meshrの使い方
##R方式
```r
LEU <- select(MeSH.db, keys = "Leukemia", columns = c("MESHID", "MESHTERM", "CATEGORY", "SYNONYM"), keytype = "MESHTERM")
LEU
```
meshrのselect()を使ってデータベースからデータを取り出すことが出来ます。

##SQL方式

```r
library("RSQLite")
LEU <- dbGetQuery(dbconn(MeSH.db), "SELECT MESHID, MESHTERM, CATEGORY, SYNONYM FROM DATA WHERE MESHTERM = 'Leukemia'")
LEU <- unique(LEU)
LEU
```
RSQLiteを使ってSQL文でそのまま取り出すことが出来ます。
この場合、R側でuniqueにしないと重複は取り除けません。

#ある単語からそのMeSHを取りだす
花粉症に関するMeSHを取り出してみたいと思います。
MESHTERMかSYNONYMに入っていると思われるので、あいまい検索も使って調べてみます。

```r
library("RSQLite")
HF <- dbGetQuery(dbconn(MeSH.db), "SELECT MESHID, MESHTERM, CATEGORY, SYNONYM FROM DATA WHERE UPPER(SYNONYM) LIKE UPPER('%Hay Fever%') OR UPPER(MESHTERM) LIKE UPPER('%Hay Fever%')")
HF <- unique(HF)
HF
```

```
   MESHID                     MESHTERM CATEGORY
1 D006255 Rhinitis, Allergic, Seasonal        C
                                                SYNONYM
1 Hay Fever|T047|T184|NON|EQV|NLM (1966)|990101|abbcdef
```

その結果、Rhinitis, Allergic, SeasonalがMeSHとして出力されました。

IDも出力されてるので、今度は逆に他にどんなシノニムがあるか調べてみましょう。

```r
RAS <- dbGetQuery(dbconn(MeSH.db), "SELECT SYNONYM FROM DATA WHERE MESHID ='D006255'")
RAS <- unique(RAS)
RAS
```

```                                                                   SYNONYM
1                                            Allergic Rhinitides, Seasonal
38                                             Allergic Rhinitis, Seasonal
75                                                       Allergies, Pollen
112                                                        Allergy, Pollen
149                                                             Fever, Hay
186                  Hay Fever|T047|T184|NON|EQV|NLM (1966)|990101|abbcdef
223                   Hayfever|T047|T184|NON|EQV|UNK (19XX)|781214|abbcdef
260                                                       Pollen Allergies
297             Pollen Allergy|T047|T184|NON|EQV|NLM (2006)|050420|abbcdef
334                                                             Pollinoses
371                 Pollinosis|T047|T184|NON|EQV|NLM (2006)|050420|abbcdef
408                                          Rhinitides, Seasonal Allergic
445                                            Rhinitis, Seasonal Allergic
482                                           Seasonal Allergic Rhinitides
519 Seasonal Allergic Rhinitis|T047|T184|NON|EQV|NLM (2006)|050420|abbcdef
```
Pollen AllergyとかPollinosisなどと呼ばれていることが分かります。

今回はここまでですが、他にも概念の階層を調べたり、関連する遺伝子も調べたり出来るようです。もうちょっと触ってみます。

#MeSH on Demand
https://meshb.nlm.nih.gov/MeSHonDemand

Rとは関係ないのですが、こちらに自分の研究の要旨などを入れると10個くらいのMeSHを返してくれます。

更にでてきたMeSHから近い分野の論文を自動的に出力してくれるので、おなじ対象に対してどういったアプロ―チで他の研究がなされているか分かります。

プログラミングは出来ないけど、MeSHは触ってみたいという方はぜひどうぞ。

（どうやってこれは実装しているのだろう。。。気になる。。。）

#参考
https://www.nlm.nih.gov/mesh/meshhome.html
http://libserve.nms.ac.jp/manual5/pubmed/pubmedmanual5.pdf
http://www.nara-wu.ac.jp/aic/seminar/PubMed.pdf
https://www.bioconductor.org/packages/release/bioc/vignettes/meshr/inst/doc/MeSH.pdf
https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-015-0453-z
http://onlinelibrary.wiley.com/doi/10.1111/age.12307/full