Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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というパッケージで簡単に入手でき、容易に取り出すことが出来ます。

## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite("meshr")
library(meshr)

meshrの使い方

R方式

LEU <- select(MeSH.db, keys = "Leukemia", columns = c("MESHID", "MESHTERM", "CATEGORY", "SYNONYM"), keytype = "MESHTERM")
LEU

meshrのselect()を使ってデータベースからデータを取り出すことが出来ます。

SQL方式

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に入っていると思われるので、あいまい検索も使って調べてみます。

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も出力されてるので、今度は逆に他にどんなシノニムがあるか調べてみましょう。

RAS <- dbGetQuery(dbconn(MeSH.db), "SELECT SYNONYM FROM DATA WHERE MESHID ='D006255'")
RAS <- unique(RAS)
RAS
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

kyusque
プログラミングの勉強がしたいアカウント。だいたいR。時にC#,F#。視覚化ツールとしてのVR,AR,MRに興味があります(Unity)。 たまに研究のこと呟いたり、スケートのこと呟いたり
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした