読者です 読者をやめる 読者になる 読者になる

pydicom 1.0 のインストール。

Python

pip で pydicom 1.0.0a1 のインストールに失敗し、github から DL してインストールするまでの記録です。

現在も開発が続いているため、状況は流動的と思われます!

(今後は、pip でインストールできるのでは!!)

 

・・・・・・・・・・・・・・・・・・・・・・・・・・

 

pydicom 1.0が出てました。

pydicom documentation — pydicom 1.0a documentation

 

公式ドキュメントも!

https://media.readthedocs.org/pdf/pydicom/latest/pydicom.pdf

発行日:Jan 27, 2017!!

 

できたてホヤホヤ!!

 

 

"""1.3.1 Prerequisites
python 2.6, 2.7, 3.3 or later"""

 

 

python 3.3 or later !!! 

 

 

pydicom 0.9.9では、python 2系にしか対応していなかったのですが。

xd-lab.net

# 約1年前の記事。この時点で Python 2.7 にも

 対応していなかったという。。

# 急ピッチで開発が続いていることが分かります。

 

 

1.0で3系にも対応した様子。

python3 しか知らない私は、ようやく使える(かもしれない)。。。

 

 

 

 

 

 

Deep neural network は python で構築する予定。

Preparation, neural network, post-processing 全てを python 上で実装できれば。

ただし pydicom は、「jpeg などで圧縮された画像は上手く扱えない」とある。

 

公式ドキュメント

"""One limitation of pydicom: compressed pixel data (e.g. JPEG) cannot be altered in an intelligent way as it can be for uncompressed pixels"""

 

Dicom 画像も jpeg2000 で圧縮されていたりするので、結局 DCMTK

dicom.offis.de

を使う必要があるかもしれないが・・・

 

(前処理をどうするかは議論のある所でしょうね。)

(幾つかアイデアはありますが、どうすれば実装できるのか・・・?)

 

 

 

 

 

 

早速インストールしてみます。

 

Win10 PC

管理者権限でコマンドプロンプト

 

>pip install pydicom

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

Collecting pydicom
Downloading pydicom-0.9.9.tar.gz (422kB)
100% |################################| 430kB 1.3MB/s

////////////////////////////////////////////////////////////////////////////////////////////////////// 

 

ん・・・ 0.9.9 だと・・・?

 

>pip install -U pydicom #アップデートする

>pip freeze

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

...

...

...

pycurl==7.43.0
pydicom==0.9.9
pyflakes==1.3.0

...

...

...

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

pydicom==0.9.9 !!!

 

フム・・・

 

 

 

> python

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

>>>  import pydicom  

# pydicom 1.0 なら、これでインポートできるはず。

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'pydicom'

//////////////////////////////////////////////////////////////////////////////////////////////////////

# エラー!!

 

>>> import dicom  

# pydicom 0.9 なら、これでインポートできるはず。

 

>>> 

 

# エラーが出ない!!! oh...0.9.9!!!

# 他のインストール方法でなんとかならないか。

 

> pip uninstall pydicom

> y

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

Successfully uninstalled pydicom-0.9.9

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

というわけで、pip でインストール出来ないので、他の方法を使います。

 

 

 

 

 

 

 

 

 

・・・しばらく ネットの海を漂流・・・

 

 

 

 

 

 

 

 

 

 

githubからダウンロードできそうです。

https://github.com/darcymason/pydicom/archive/master.zip

バージョン書いてないのが気になりますが・・・

公式ドキュメント通りにインストールしてみます。

 

zipファイルを解凍

管理者権限でコマンドプロンプト

cd/dir を駆使して展開したフォルダに移動。

 

> dir

setup.py

を確認。さて。

 

> python setup.py install

//////////////////////////////////////////////////////////////////////////////////////////////////////

...

...

Installed c:\program files\anaconda3\lib\site-packages\pydicom-1.0.0a1-py3.5.egg
Processing dependencies for pydicom==1.0.0a1
Finished processing dependencies for pydicom==1.0.0a1

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

おぉ!!

 

インストールできてしまった。

 

念のため

> pip freeze

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

...

...

...

pycurl==7.43.0
pydicom==1.0.0a1
pyflakes==1.3.0

...

...

...

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

おぉ!!

pip で認識されているみたいなので、いざとなったら pip でアンインストールもできる(といいなぁ)

 

 

さて、いざ。

 

> python

>>> import pydicom   # 1.0 ならエラーが出ない

>>>

 

# エラーが出ない!!

 

 

幸せ・・・。

お疲れ様でした。

Theano on Python3 (Anaconda) in Win10

ディープラーニングのライブラリである Theano を Anaconda(Python3.5.2, Win10)にインストールした。PC は Lenovo Thinkpad T460(GPUなし) Win 10。

 

コマンドプロンプトを管理者権限で起動。

`Theano をインストールする。

 

[Win] + x, a

> conda install Theano

 

時間は多少かかるが、あっけなくインストール完了。

(当初、パイソンを起動した後に >>> conda install Theano でインストールできず、5分くらい無駄にしました。コマンドプロンプト上でインストールするんですね!)

 

コマンドプロンプトを終了。再起動。

 

> exit

[Win] + x, c

 

パイソンを起動した後、Theanoをインポートする。

 

> python

>>> import theano

 

エラーが出る

 

WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to execute optimized C-implementations (for both CPU and GPU) and will default to Pythonimplementations. Performance will be severely degraded

 

C言語コンパイラが無いと怒っているのか。Googる。

MinGWというソフトをインストールすれば良いそうで

Windows 7にMinGWをインストールする(mingw-get-inst使用) - Symfoware

source forge というサイトからインストーラー使ってインストールするが

MinGW - Minimalist GNU for Windows download | SourceForge.net

 

> python

>>> import theano

 

同じエラーが出る。

WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to execute optimized C-implementations (for both CPU and GPU) and will default to Pythonimplementations. Performance will be severely degraded

 

別サイト参照

may46onez.hatenablog.com

 

コマンドプロンプトからインストールすれば良いらしい。

コマンドプロンプトを起動。

 

> conda install mingw libpython

 

cmdを再起動して

[Win] + x, c

 

> python

>>> import teano

 

エラーが出ない。

 

以上。

 

 

 

よく使うBash, cp -r / rsync -ahvc

UNIX/Linux/Bash

for x in [ID] #研究で使うID番号

do

mkdir #コピー先のディレクトリを作る

cp -r  $x/コピー元のディレクトリ [コピー先のディレクトリ]

done

 

※T1WI、T2WIとか複数のディレクトリをコピーする際、for loop を2重、3重にするとコピーできない。

for x in [ID]

do

  for y in T1WI T2WI DWI

  do

みたいに上手く回すのは自分には困難(やり方がわからない)。

 かっこ悪いけど

for x in [ID]

do

mkdir

cp -r $x/ディレクトリ名/T1WI* コピー先のディレクト

cp -r $x/ディレクトリ名/T2WI* コピー先のディレクト

cp -r $x/ディレクトリ名/DWI* コピー先のディレクト

cp -r $x/ディレクトリ名/ADC* コピー先のディレクト

 の方が確実。

 

※cp -r の代わりに、rsync -ahvc も可

 違いはよくわからないけど、rsync -ahvc だと、「今どのフォルダで作業しているか」を表示してくれる。

 ahvc は「あーん(ah)ばかーん(vc)」と覚えています。

2017ノートパソコンの新製品(USB-C充電とGPU含めて)

パソコン選び/GPU選び

USB type-C(Thunderbolt 3)で充電できる PC は、大変便利と思います。

 

ACアダプターの共用できますし、PC買い替えの際に流用できます。異なるメーカーでも共用できます。

家庭と職場に1個ずつ置いておけば、荷物も軽くなりますし。

USB-C の充電器は、かなりコンパクトなのもあり、外出用に軽いのを持っておく手もあります。

また、「市販のモバイルバッテリーで充電できる」のも良いところです。私が以前使っていたパナソニックレッツノートは、純正バッテリーが10000円(S)、15000円(L)もします。ビジネスですと、交換バッテリー必要な場合もあるわけですが、USB-C対応なら、市販の2-3000円のモバブーで、持続時間を伸ばせるわけです。

 

対応の PC としては、Macbook, Macbook Proが有名ですね。

 

2016年当時、対応したPC はあまり多くなかったのですが

2017年になって、多くのメーカーが発表しました。
(詳しくは、「2017 CES」で検索してみてください)


ディープラーニングへの使用を考えると、GPUの有無も重要で、そちらも合わせて記載します。

 

私が興味を持っているメーカーのみなので、網羅はできておりません。

1.DELL XPS

2.DELL Gaming

3.Lenovo Thinkpad

4.Lenovo Gaming

5.ASUS Gaming

6.Xiomi air

 

結論から言えば、私の目的では XPS15 の新機種(モデル9560)が適切かと思いました。最近 laptop 買っちゃったので、様子見ですが・・・

 

1.DELL XPS
 XPS15 と XPS13 2-in-1 が発表されました。
 どちらも USB-C 充電に対応しています。
 外部 GPU は、XPS15 が、GeForce GTX 1050 (4GB)を搭載しています。

 情報待ちですが、XPS15のバッテリーが少ないモデルは、ひょっとすると m2 PCIe と SATA3 のデュアルストレージかもしれません。分解レポート待ちです。

 

2.DELL Gaming
 Gaming laptop として、AlianWareシリーズが更新されたほか、新たに Inspiron シリーズが導入されました。
 充電が USB-C なのか、確認できませんでした。Gamingですので、従来型のACアダプターかもしれません。
 外部GPUは、いずれも GeForce 10系を搭載しています。Alianware は GTX 1050-60 を積んでいるようです。


3.Lenovo Thinkpad
 USB-C 充電に対応したモデルが発表されたようです。Thinkpad はまだ旧モデル(USB-C充電非対応)が販売されており、日本投入がいつになるか注意が必要です。
 外部 GPU は、T470p に乗る可能性があるようです。ただし GeForce 9x シリーズなのが注意です。2016年発売の 10x 系で、deep learning の新機能が搭載されているようです(FP16, ユニファイドメモリ)、ディープラーニングをする、特に医用画像解析を行うなら、10x 系を購入した方が良いのだろうと思います。


4.Lenovo Gaming
 USB-C がついているのは確認しましたが、充電できるかは分かりませんでした。
 外部GPUは、いずれも GeForce 10系を搭載しています。

 どの機種も、キーボードがテンキー付きのようです。私はテンキー付きでホームポジションが左にズレているのに違和感を感じるため、できればテンキーレスのモデルが良いです。

 

5.ASUS Gaming
 ASUSのGaming PC, ROGシリーズは、DELLLenovoに比べてコストパフォーマンスが良いようですね。ただし高機能を狙っているためか、実質はさほど安くはない印象です。

 こちらもテンキー付きのようです。

 

6.Xiomi air

 

 2016モデルです。Macbookair)をもろ意識したデザイン(というか、パクリというか)。

 12と13インチモデルが有り、どちらもUSB-C充電。

 m2 SSD x2 のデュアルストレージです。

 13インチにはGPU(940MX)も載り、ディープラーニングの練習用にも。

 RAM 増設はできません。

 問題は、Windows10が中国語モデルである、ということ。トラブルを自力で解決できる、トラブルを楽しめる人でなければ、買わないほうが良さそうです。


ということで、
 2017年になって、ノートパソコンは急速に USB-C 充電へとシフトしているように思われます。世界で最もたくさんのPCを売っているのが LenovoDellは第3位ですが、これらが USB-C にシフトしたことで、今後どんどん変わっていきそうです。

 国産モデルは未チェックですが、NEC富士通Lenovo傘下に入っているため、Lenovoの USB-C シフトに合わせていくのではと思います。

 他には PanasonicToshiba がありますが、Toshiba は不正会計からの大赤字で将来が見えず。Panasonic はレガシーデバイスにこだわるので、まだしばらくは 16V ACアダプターでしょうね。実際、レッツノートは2017の冬モデルでも従来型の AC アダプターを使用しています。


 私は現在 Lenovo Thinkpad T460 がメインマシンです。Lenovo はキーボード、堅牢性などが良いとされますが、複数モデル間でバッテリー形状を共通させる(※X260、T460で共通ですが、以前のX220~250などとも共通みたいです)など、エコなのも良いところです(これに引き換えレッツノートは ブツブツ)。

 私は最近は3台続けてレッツノートでした(家族のを含めると、6台!)が、こういう他社の良いところは、貪欲に吸収して(パクって)ほしかったなぁと思います。

 

※厳密には、USB type-C には様々な規格が乱立しているようです。
 どこまで共用できるのかわからないので、自己責任にてお願いします。

Python3 (+R), ディレクトリやファイル管理

Python

自分のためのコマンドまとめ。
Bash でいう pwd, cd, ls, mv/cp/mkdir/rmなど。

$ Bash

>>> Python3

>R

 

$ pwd
>>>import os
>>>os.path.abspath('.')

>getwd()

 

$ cd, ls
>>>import os
>>>os.chdir('Dropbox')
>>>os.listdir('.')

>setwd("c:user")

>getwd()

 

$ ls
>>>import os
>>>os.listdir('/Dropbox')

>list.files() 

 

$ mv (move)
?

 

$ mv (rename)
>>>import os
>>>os.rename('foo.txt', 'bar.txt')

 

$ cp
>>>import shutil
>>>shutil.copy('foo.txt', 'bar.txt')

 

$ rm
>>>import os
>>>os.remove('foo.txt')

 

$ mkdir
>>>import os
>>>os.mkdir('folder')

 

$ rmdir
>>>import os
>>>os.rmdir('folder')

 

$ln -s
>>>import os
>>>os.symlink('foo.txt' 'linkfoo')

Deep Learning 向けの PC/GPU その2

パソコン選び/GPU選び

このところずっと、

ディープラーニング向けパソコンはどうしたら良いんかいな」

と悩んでいます。

 

Nvidia GTX GeForce 1050~1070 搭載の PC, 

 

が良いんでは、とのことに落ち着きました。

 

 

ディープラーニングではGPUを使ったほうが良い」

という事実があります。

 

そして、医用画像解析ということであれば、メモリーが大量に必要になるでしょう。

大量にメモリーを積んだ、GPU を使いたい。

 

ところで、こんな記事を見つけました。

devblogs.nvidia.com

 

news.mynavi.jp

 

ディープラーニング向けの GPU というと、Nvidia の CUDA というソフトを使う訳ですけど。

(多分)最新版のCUDA 8 において、ユニファイドメモリが導入されたと。

 

ユニファイドメモリ、初めて聞きますが、

 

ディープラーニングの時に、計算に必要なデータを、事前に GPU に読み込んでおかなくても良い。必要になった時、その都度 GPU のメモリーに格納する」

 

もののようですね。

 

これまでは、ディープラーニングに用いるデータは事前に、GPU のメモリに格納しておく必要があった。したがって、医用画像解析では大量のメモリーが欲しかった。

 

ところが「ユニファイドメモリ」では、それが不要(らしい)と。

 

で、これが使えるのが「Pascalアーキテクチャを採用したGPU

ざっくりいうと、

 

GeForce 1000系

 

です。

 

1000系といっても 1050 から 1080 まである。

大体ハイエンド(この場合1080,RAM 8GB、6万円〜)はコスパが悪いんで削除。 

 

やっぱり GPU 上のメモリ量は ある程度必要(かも)と考えると、

 

1060 (RAM 6GB、2万円〜) か 1070 (8GB、4万円〜) が良さそうです。

 

で、1000系、すなわち Pascal アーキテクチャでは、メモリー利用や学習をより効率的に行える「FP16」と言うものが使えるとか、使えないとかなのですが。

 

FP16 については、GeForce の性能は制限されているようです。

FP16 Throughput on GP104: Good for Compatibility (and Not Much Else) - The NVIDIA GeForce GTX 1080 & GTX 1070 Founders Editions Review: Kicking Off the FinFET Generation

 

記事を見ると、

 

TITAN X や TESLA プロセッサーであれば、FP16 は高機能だが、GeForce 1000系では、FP16 の計算能力は(わざわざ)低く、制限されているようです。

コレが将来、Volta で解禁されるのか? それとも TITAN シリーズじゃないとフルパワーは出ないのか?

 

正直、やったことないんでわかんないんですけどね!

 

さて、

GeForce 1000系では、前のモデルに比べて、RAM が大きく増えています。画像を扱うなら、これを使いたい。「ユニファイドメモリ」があれば、メモリ量にそこまでこだわる必要はないのかもしれませんが、挙動が分からないので、念のため。

また、当初はあくまで「やってみる」だけですから、FP16 の速度が制限されてても仕方ありません。おそらく FP32 と FP16 とでコードの書き方が異なっているのでしょうから、将来買い替えた際にちゃんとコードを書けるよう、練習できるだけでもありがたい。

 

本命は TESLA や TITAN, そして 2018 年にでるとされる、Volta アーキテクチャGPU なのですが、これらは自腹では買えないので。なんとか業績出して、研究費取ったる!!

それまで経験を積むのには、GTX GeForce 1000 系で決まり! と自分を説得して、パソコン探しのネットサーフィンをなるべくやめようと思います!