MIT

MIMICの使い方

前回は、医療界のビッグデータベースであるMIMICを紹介しました。今回は、MIMICの具体的な使い方を解説していきたいと思います。

アクセス権をリクエスト

まずはMIMICへのアクセス権をもらう必要があります。以下、その手続きを開設していきますが、こちらも合わせて参照してください。

CITIトレーニング

MIMICへのアクセス権をリクエストする前に、CITI programの”Data or Specimens Only Research”というコースを、オンラインで修了しておく必要があります。

まず、こちらのサイトに行き、”affiliation”のところで”Massachusetts Institute of Technology Affiliates”を選びます(”independent learner”ではないのでご注意を)。

“Massachusetts Institute of Technology Affiliates course”→”Human Subjects training category”→”Data or Specimens Only Research”を選択します。

コースが修了したら、その日付やスコアが記載されているreportを保存してください(PDFまたはimage file)。

PhysioNetへアクセス権をリクエスト

CITI trainingが修了したら、PhysioNetにMIMIC-IIIへのアクセス権をリクエストしましょう。

まず、こちらからPhysioNetにアカウントを作成してください。

次に、MIMICのprojectページに行き、project descriptionの”File” sectionから”credentialed user” linkをクリックし、credentialed accessのための手続きをしていきます。ここで、先ほど保存したCITI trainingのreportをuploadします。

特に問題なければ、数日以内にアクセス権を許可するメールが届きます。打ち込んだ情報に誤りや不正があると、そのようなメールが届かない、もしくは何の連絡もなくリクエストが却下されることがあるのでご注意ください。

MIMICをダウンロード

アクセス権が得られれば、MIMIC全体を自分のPCにダウンロードすることが可能なります。ただし、その方法を手動で行うと結構面倒です。Commandに精通している人は大丈夫かもしれませんが、私のような初心者はGithubで公開されているrepositoryを利用すると良いでしょう。ここでは、Postgresを用いたデータベースを構築していきます。

もちろん、アクセス権さえあれば、データ全体をダウンロードせずともGoogleのBigQueryなどの介してqueryを行うことも可能です。

空き容量を確認

MIMICと関連データを全て合わせると、100GB程度の容量が必要です。私の昔のPCは、容量の約半分がMIMICに奪われてしまいました(悲)。

“Makefile”を用いてダウンロード

Postgresを持っていない人は、まずはこちらからPostgresをダウンロードします。

Postgresをダウンロードできたら、以下のコマンドを(MACであれば)Terminalに打ち込み、mimic-codeを自分のPCにコピーします。

Cloneしたフォルダーのbuildmimic/postgres/という所にdirectoryを変更します。私の場合は、kimurasatoshiからmimic-codeと入った所にbuildmimicがあったので、Terminalには、

と打ち込みます。この場所にあるMakefileというファイルに、MIMICデータベースを自動でダウンロードするためのコードが詰まっています。たとえば、”/path/to/data/”という場所にMIMICを構築するのであれば、

とします。

Defaultでは、

  • Database name: mimic
  • User name: postgres
  • Password: postgres
  • Schema: mimiciii

となっています。これらは後々SQLを用いてデータを抽出する際に必要になりますが、特に変更する必要はないでしょう。

以上で終了です。MIMICは膨大なデータベースです。それぞれのtable(csv file)をgz形式でダウンロードしますが、私の場合は数時間かかりました。

トラブルシューティング

一見簡単そうですし、特に問題なくダウンロードできる人もいると思います。しかし、人によってはerror messageが出現するかもしれません。私はPCの専門家ではないため、トラブルシューティングに結構時間がかかりました。

よくあるエラーに関しては、こちらに書いてあるので参照してみてください。

SQLを用いたデータ抽出例

では、実際にMIMICからデータを取り出してみましょう。Rを用いてデータを抽出(query)することも可能ですが、ここではPythonを使い、Jupyter notebook上でやってみます。

Queryの前準備

まず始めに、上記をコピペして走らせてみてください。ここらになってくると複雑に見えますが、簡単に解説します。

1行目でpandasというmoduleを呼び出し、今後のタイピングを楽するためpdと省略しています。

2行目でpsycopg2というmoduleを呼び出し、PythonからSQLを使えるようにしています。

3〜4行目で、ダウンロードしたMIMICへ繋げるためのコードをまとめ、簡略化して定義し直しています。データベース名やuser名、passwordなどは、上でダウンロードした際に設定した(or default)ものです。

実際のquery

まずは、シンプルにデータを抽出してみましょう。

この、""""""で挟まれた部分が、データを抽出するためのSQLです。今回は、「patientというtableにある全てのcolumnを抜き出し(*)、最初の5行のみ抽出する」というコードになっています。そして、"""以外の部分で、抜き出したデータをdata frameのような型で表示させています。

Jupyter notebookを使えば、以下のような感じになります。

男女でどのくらいの人数がいるのか知りたければ、

といった感じになります。

慣れてくると、もう少し複雑なコードも書けるようになります。例えば、患者の生死を年齢のカテゴリー別に抽出してみましょう。admisssionspatientsという2つのtableを用い、誕生日と入室時間から年齢を計算し、それらを3つのカテゴリーに分類してみます。

とすると、

というように、年齢・男女別の生死を人数を知ることができましたね。

MIMICを使う際の難関の一つは、どのデータがどのtableに入っているか、そして、どのデータがどのようにlabelされているかを理解しなければならないことです。詳細はこちらに記載されていますので、ご参照ください。

まとめ

MIMICには、患者の年齢や体重、既往歴、診断名だけでなく、ICU入室中の1時間毎の全てのバイタルサイン、輸液量、輸血、尿量、検査値などなど、ありとあらゆるデータが存在します。SQLさえできるようになれば、データは面白いほど手に入ります。しかも無料。こんな貴重なデータベース、利用しない手はありませんね。

ABOUT ME
木村聡
福岡県の研修病院で初期研修修了後、大学に入局。米国オハイオ州に臨床研究で留学するも、知識の欠如を痛感。ハーバード公衆衛生大学院に進学し、MPHを取得。マサチューセッツ工科大学メンバーとの共同研究などに関与。 日本では麻酔・集中治療医として働き、オーストラリアでは小児集中治療を一から学び直しています。 乗り越える壁を見つけ続けることは、なかなか簡単ではありませんよね。アラフォー目前、様々な壁にぶち当たり、それなりに多くの経験をしてきました。私の挑戦や経験・知識、失敗談などが、他の誰かの刺激になり、役に立つことを切に願っています。 プロフィールをもっと詳しく見る

COMMENT

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