windows環境でbcil_dcm_convert.pyを使ってみた

# 目的
bcil_dcm_convert.pyを使って情報を取り出したCSVが見たいので、githubのソースを使いたい。
どうやって使うのかしらこれ？
https://github.com/RIKEN-BCIL/BCILDCMCONVERT


# 前提
・Windows10
・Python3.8は入っている前提
・dcm2niixはインストールしていない。（けど情報の入ったCSVだけ取得ができるとの噂）

# 手順
## まずはソースをダウンロード
緑色の「Code」を押すと「Download ZIP」と書いてある所が出てくるのでそこをポチっとする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111190/5b6c190b-a16f-f874-caa4-f400992a1122.png)



## 解凍する

Pythonのパスが通る場所ならどこでも良いから解凍する。Cドラのがめんどくないよね多分・・・
私の場合はとりあえずC:\Users\XXXXXX\Documents\CONVに解凍。
C:\Users\XXXXXX\Documents\CONV\BCILDCMCONVERT-masterができた。
解凍したフォルダの中身はこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111190/d84a4c1b-cba1-5c6b-65d9-7a36ed53aef8.png)
うん。邪魔なので「BCILDCMCONVERT-master」ていうフォルダ名は「BCILDCMCONVERT」に変更しておこう・・・そうしよう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111190/73b75c38-a9c9-8030-1aee-b2a4f2b6cb00.png)



## コマンドプロンプト

解凍先（さっきのフォルダ）に移動する
```
cd C:\Users\XXXXXX\Documents\CONV\BCILDCMCONVERT
```

python 入ってるか確認しておこう・・・
```
python --version
```
入ってればバージョンが表示される。
```
Python 3.8.7
```
環境により「python3 --version」の人などもいるようなので、要確認。
私のところでは python --versionで大丈夫。
ここでコケてる人はPythonのインストールから頑張らないとダメかも・・・

### いざ！

```
python bcil_dcm_convert.py -h
```
※環境によりpython3 bcil_dcm_convert.py -hなんだけど、適宜自分の環境に沿って修正して・・・
これでヘルプが表示されればOK！

# エラー
「python bcil_dcm_convert.py -h」を実行してエラーが出た場合。
```
Traceback (most recent call last):
  File "bcil_dcm_convert.py", line 3, in <module>
    from bcil_dcm_kspace_info import BcilDcmKspaceInfo
  File "C:\Users\xxxxxx\Documents\CONV\BCILDCMCONVERT\bcil_dcm_kspace_info.py", line 7, in <module>
    import pydicom
ModuleNotFoundError: No module named 'pydicom'
```

ModuleNotFoundError: No module named 'pydicom'
うーんと、pydicomがいないですぜ・・・と仰っています。
えーと、えーと、そういえばなんか書いてあった・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111190/f275ce1c-a7ea-cc5b-8372-fc3e6eea613b.png)

パッケージの更新とかしばらくしてないや・・・
とりあえずパイセンに教わった通りpipの更新をしてみよう。
```
pip install --upgrade pip
```
環境により「pip3 install --upgrade pip」の人などもいるようなので、要確認。
```
pip list
```
で入ってるパッケージ確認・・・色々入ってなかったり、入っててもバージョンが足らない事がわかる・・・しばらく触っていなかったので荒れ放題である。（反省）

```
Package          Version
---------------- -------
alembic          1.5.7
click            7.1.2
dnspython        2.1.0
numpy            1.19.5
pandas           1.2.1
pip              22.3.1
pytz             2020.5
```

ということでパッケージの更新（一行ずつ）

入ってないパッケージは入れる。
```
pip install pydicom
```
入ってるやつのバージョン更新はこんな感じで。
```
pip install -U pandas
```

一番手堅いのは
```
pip install dcm2bids==2.1.6
```
みたいにgithubに指定してあるバージョンで入れてしまう方法なんだけど、
同じパッケージを使ってる別のプログラムがある場合は、安易にバージョン指定してしまうと別のプログラムに影響があったりするから、ちょっと考えないといけなくて面倒くさい・・・

ということで私の環境では下記の通り！
```
pip install nibabel
pip install pydicom
pip install tqdm
pip install dcm2bids
pip install -U pandas
pip install -U numpy
```


### いざ！（再）

```
python bcil_dcm_convert.py -h
```

どや？
```
usage:
BCILDCMCONVERT converts DICOM from various MRI scanners to NIFTI volumes, organizes the data into a study directory, and stores MRI scanning params useful for preprocessing brain imaging data with HCP pipeline and FSL. (For details, see https://github.com/RIKEN-BCIL/BCILDCMCONVERT)

 Ex 1). Use an input of directory containing DICOM files
 $ python3 bcil_dcm_convert.py [option(s)] <Folder to save> <input subject's dcm folder>

 Ex 2). Use zipped file as an input of DICOM files
 $ python3 bcil_dcm_convert.py [option(s)] <Folder to save> <input subject's dcm.zip>

positional arguments:
  <Folder to save>      path to parent folder in which a new subject folder will be saved
  <input subject's dcm folder or dcm.zip>
                        path to input folder or zipped file containing a subject's DICOM files

optional arguments:
  -h, --help            show this help message and exit
  -p, --progress        show progress bar
  -n, --no_nii          do not convert to NIFTI
  -s <subject folder name>
                        give an alias to the subject folder
  -w overwrite option <num>
                        overwrite options (0: do not overwrite, 1: replace, 2: append, default is 0)
  -z, --gz              compress NIFTI volumes with .gz (default is not compressed, and saved as .nii)
  -u <Folder to unzip>  path to unzip directory when using an input of zip file (default is the same parent folder of
                        dcm.zip with folder name of bcil_dcm_convert_folder/<date>-<time>)
  -v, --version         print version number
```

やったー！

んでここに教わった通り、やりたかったコマンドをポチポチ・・・実行！
```
python bcil_dcm_convert.py （保存用のフォルダまでのパス） (dicomファイルの入ってるフォルダのパス） -n
```

-nをつけるとdcm2niixを使わないのでWindowsでもOKとの噂はまことであった・・・。
目的のブツをげっとした！

### ～終～