MIMIC-CXRから読影レポートとjpg画像だけを取得する

はじめに

胸部単純X線の画像と読影レポートの公開データセットMIMIC-CXRを利用するための準備をしてみます。

MIMIC-CXRは次の2つの形式で公開されています:

(1) MIMIC-CXR. DICOM形式の画像と, 読影レポートのtxtファイルが提供されている.

physionet.org

(2) MIMIC-CXR-JPG. JPG形式の画像と, 疾患ラベルが提供されている.

physionet.org

ここで問題となるのは, 「DICOMファイルは欲しくないが読影レポートの原文は欲しい」という場合です。

このためには, (1)からtxtファイルだけ, (2)からJPG画像だけを, それぞれ取得してこなければなりません。

しかし, 特に工夫せずにダウンロードしようとすると, 次のような理由で面倒なことになります:

  • MIMIC-CXRとMIMIC-CXR-JPGの構成ファイルすべてをダウンロードしなければならず, 相当な時間がかかる (wgetコマンドにはワイルドカード正規表現でファイル名を選別する機能がない)
  • MIMIC-CXRとMIMIC-CXR-JPGが別のディレクトリツリーを構成するので, ファイル取得後にどちらかに統合する必要がある.

これを解決するためのシェルスクリプトを用意しました.

以下, MIMIC-IIIの利用許可, ID, パスワードはすでに取得済みであるものとします(下記事も参考にしてください).

radiology-nlp.hatenablog.com

手順

(1) 以下のシェルスクリプトdownload_mimic_cxr_report.sh というファイル名で保存します:

echo -n "physionet.org username? :"
read username
echo -n "physionet.org password? :"
read -s password

# MIMIC-CXRからDICOM以外のファイルを取得
wget -r -l 4 -nc -c -np -nv -nH --cut-dir=3 --user $username --password $password https://physionet.org/files/mimic-cxr/2.0.0/

(2) 以下のシェルスクリプトdownload_mimic_cxr_jpg.sh というファイル名で保存します:

echo -n "physionet.org username? :"
read username
echo -n "physionet.org password? :"
read -s password

gzip -d *.gz
unzip *.zip

# wgetコマンドの引数として許容される最大長から一度にダウンロードする数を算出
n_div=$((`getconf ARG_MAX`/150 | bc))

# イテレーションの準備
n_sample=`wc -l cxr-record-list.csv | cut -d" " -f1`
n_iter=$(($(($((n_sample-1))/n_div | bc))+1))

for ((i=0; i<$n_iter; i++))
do
# MIMIC-CXR-JPGからJPG画像のみを取得
line_start=$((i*n_div+1))
line_end=$((i*n_div+n_div))
urls=`cat cxr-record-list.csv | sed -n "${line_start},${line_end}p"  | cut -d"," -f4 | cut -d"." -f1 | sed 1d | sed -E "s/(.+)/https:\/\/physionet.org\/files\/mimic-cxr-jpg\/2.0.0\/\1.jpg/g"`
wget -r -nc -c -np -nv -nH --cut-dir=3 --user $username --password $password $urls
done

(3) download_mimic_cxr_report.shを実行します.
(4) MIMIC-CXRから, 読影レポートがダウンロードされはじめます. DICOMファイルは無視されます.
(5) (4)全体の完了をまたずに, cxr-record-list.gz, mimic-cxr-reports.zip という2つのアーカイブのダウンロードが済み次第 download_mimic_cxr_jpg.shを実行します.
(6) MIMIC-CXRから, JPGファイルがダウンロードされはじめます. その他の重複している余分なファイルは無視されます.

おわりに

これでも丸2日は掛かります。MIMIC-CXRはデータがとにかくでかい!!