何はともあれ必要なのは Binary Editor

Binary Editorとして Windows上では 超有名ソフト Starlingというのがあります これはもちろん Free Softwareなのですが秀逸の出来なので、僕も以前 DICOM解析の時には随分とお世話になりました

さて、MacOSですが、 Xcodeでもできるという話なのですが、どうやったらば binaryとしてファイルを開けるか分かりません Web検索かけてもなかなかヒットしないのです それで、色々探すと、0XEDというソフトが良い、というのが書かれています しかし実際に立ち上げてみると、肝腎の binary 部分の検索ルーチンにバグがあり、うまいこと DICOM tagを検索できません

困り果て、これは Windowsで開発せねばならないかな? と思い始めた時に、最後にヒットしたのが HexFiendというソフトです あまり魅力的なインターフェースではないのですが、きちんと使えるソフトですので、これを用いていくことに決めました

少しだけ進展 – Pydicom

少しだけ進展しました DICOM-XA解析において、何が必要か? それがなかなかつかめなかったのです 自分で C++でプログラム書いてから既に数年が経過し、色々な知識が消え失せているのです
それでも少しずつ進みましょう

IDLE

これで IDLEに入りました

>>>import dicom #これで pydicom module読み込み

>>> df = dicom.read_file("XA1.dcm")
# これにより XA1.dcmという DICOM-XA fileをdf というオブジェクトに読み込み

>>>pixel_bytes = df.PixelData
#これにより XA1.dcmの中の画像データ部分を pixel_bytesというバイト配列に読み込みしました

あとはここから 1 byteずつ読み出してそれを JPEG Lossless decodingに渡せば良いはずです

なにやってんだか

まったく何やってるんだか 一歩進み百歩戻り 色々な環境に Pythonをインストールしてきました 具体的には MaOS Sierra、Windows10 on Parallels Desktop、そして Windows10 on SurfacePro4です 同じ Python3.6なのですが、実際には微妙に環境が異なり、なかなか同じようには動かないのです

そういう違いを吸収するのが pyenvという仮想環境なのですが、それとてなかなかうまく行かないことがあるのです まあ Python本体に関しては概ね問題無いのですが、色々なライブラリをインストールする段階で問題が起こるのです

本日も IDLEを走らせて bitstringのテストしようと思ったのですが、IDLEを立ち上げると Python3.5が立ち上がり、その中で bitstringを動かそうとしてもライブラリがインストールされていない、というエラーが出ます

一方 Terminalから Pythonを立ち上げると3.6が立ち上がり、この binaryは~/anaconda/bin/に存在するのです

では Python3.5は何処にあるかと言えば、以前インストールして、既に削除したつもりであった ~/.pyenv/anaconda/bin/ に存在するのです

そして IDELはこの ~/.pyenv/anaconda/bin/の紐づけられていて、その紐をほどす方法がどうしても分からなかったのです

結局やったことは、思い切って、

$pyenv uninstall anaconda3-4.1.0

として古い Anacondaでインストールされていた Python関連 binaryをアンインストールしてから

$rm -rf ~/.pyenv

により~/.pyenv/に入っていた色々なファイルを全部削除 しかしこれだけでは駄目です bashに命令が書き込まれているからです そこで vimを立ち上げます

$vim ~/.bash_profle

そして vim(vi)の中で pyenvという単語が書き込まれている三行ほどを全部削除します そして、それを bashに教え込むために

$source ~/.bash_profile

として、ようやく作業終了 これで古い anaconda/pythonを削除しました それから、再び pyenvをインストールして、pyenvの中で新しい anacondaをインストールし、python –versionで 3.6が立ち上がること確認して

pip install bitstring

によりbitstringをインストールしました これでIDLEを立ち上げるときちんと Python3.6の下で IDLEが動作することを確認しました

まったく何回こんな作業を繰り返しているのでしょうか? まるで賽の河原で石を永遠に積み上げさせられている苦行のようですね

爛柯 (ランカ)

今日は充実

連休の合間の今日は、朝 W治療、引き続いて Evolut R 2例植え込みしました それから、15:00外来に入り、TAVI治療の説明して、その他CT冠動脈造影の結果説明、そして 色々な検討を行い 今現在 20:00に至ります

未だカテ室では皆仕事しています 皆良く働きますねえ いや昨今の情勢ではそんなこと言ってはいけないのですね 働きすぎは罪悪と見做されますから

さて、その合間にここ数ヶ月間悩んでいたことが解決されました それは MacOSで、アイコンをダブルクリックしてもほとんどの書類で Previewが立ち上がり、本来のたとえば、Excel/Word/Powerpointなどなどが立ち上がらず、それらを立ち上げようと思えば、右クリックから「この Appで開く」を選択せねばならない事態に陥っていたのです

これは結構不便です でも何が原因か分からなかったのですが、本日検索してようやくヒットしました

MacOS内部で使用されるデータベースが壊れていたのです 早速、ここに書いているコマンドを入力したところ、治りましたねえ 素晴らしい

今後不都合が起こるようならば、やはりこのページに書いている Onyxを走らせようと思います Onyxという名前はもうすぐ某社からラウンチされる新しい薬剤溶出性ステントの名前に似ていますね この薬剤溶出性ステントも僕が PIで導入したものです

まったくどこで何がつながっているかわからないですね

【Mac】「このアプリケーションで開く」を再構築する方法【Finder】

DICOM transfer syntax

もうすっかり忘れていましたが、徐々に思い出してきています DICOM fileを解析して、次の UID transfer syntaxを見つければ、そのファイルは JPEG Losslessで圧縮されたファイルである、ということになります その値は

1.2.840.10008.1.2.4.70

というものです ですから、まずこの連続したAscii文字列があることを確認し、encondingに入るということにります

Transfer syntaxに関しては、もちろん DICOM規格書にありますが、ここに良くまとめてあります

本日は鶴岡八幡宮の「ぼたん園」に

鎌倉市に住むようになり、既に29年間過ぎました しかし、鶴岡八幡宮などの観光名所にはこの 29年間で 5回くらいしか行っていません

大抵は、外国のお客様をお連れしてなのです

本日バスを「下馬交差点」で下車し、新装なった若宮大路段葛を歩き、八幡宮まで行きました そして、初めて「ぼたん園」に行きました 連休というのに、八幡宮境内は思ったほど混み合っておらず、「ぼたん園」はさらに空いていました


それでも、小町通りに出るとものすごい人混みで、早々に再び鎌倉駅前よりバスに乗り自宅に戻りました

やっぱり鎌倉は良いですね

うーん 車輪の再発明は不要か?

さてさて、Pythonでは色々なライブラリが充実しているとのことですが、DICOM XAを解凍するためには、BitStreamを扱えねばなりません それで少しだけ調べたところ、

bitstringライブラリを発見しました このライブラリは非常に充実していて、確かにこれを見れば自分で、BitString Classを作る必要はありません でも勉強の意味では自作した方が良いのですがね・・・

以前 C++で自ら書き上げた BitStream Classを公開しています 要するに、ファイルというのは最小単位が通常バイトなのですが、符号化処理や、その解凍をしようとすれば、どうしても 1 bitずつ読み込む必要があるのです これを行うのが ReadBitStream Classなのです 公開しましたので是非役立てて下さい

今日は働いたぞお

今朝 5:10AM羽田空港国際線に、ロサンゼルスから飛んできて、レンタル・シャワールームでシャワーして、それから羽田空港ターミナル連絡バスで、国内線 ANAに移動し、6:25AM始発の便で千歳空港に飛びました

一例はとても重症でしたが、何とか大丈夫です 他の二例はとても順調に行われました これで、札幌東徳洲会病院は SAPIEN3の Proctorshipから開始後一ヶ月以内に独立する、という他のどの施設も成し遂げたことが無い快挙を成し遂げました 素晴らしいですね

そして、タクシーで札幌東徳洲会病院に急ぎました 道路は空いていて、8:50AMには到着、そして 9:00AMよりTAVIカンファランス開始 そして、Proctor症例 2症例の指導、さらに一例の準緊急TAVI症例の治療を行い、全てを終えて 16:50には病院を出て再びタクシーで千歳空港に、そして今 18:00発の JAL便の座席でこのブログを書いています

自宅に到着すれば 21:00頃でしょうか まずまずの時間効率ですね 良く働きました うん少し疲れたなあ

 

目標ができました

Pythonの勉強を再開 いったい何回目の再開だよ? 再開していて一番の問題はやはり、目標というか課題が見えにくい点ですよね

その課題が見つかったのです Pythonで DICOM XAの再生を可能にすることなのです これまでの DICOM XA解読の歴史を改めて読み返していると、課題のステップが明らかになってきます

  1. 2進あるいは16進数出力 – これはデバッグとDICOM XAデータ解析で使用する
  2. DICOM XA fileを読み込む
  3. Bitstream入力を実現する
  4. Huffman Encodingを行う
  5. 画像にする

というものです この中で実質的にプログラムとなるのは、2と3の部分です 特に Bitstream入力というのがキモですね 以前書いた C++のプログラムを Pythonに書き換えれば良いのでまず自分でできるでしょう

頑張ります

羽田空港到着

今朝 5:10AM羽田空港国際線到着 何時もこの便は 4:30AM頃に到着するのですが、今日は遅れました 羽田空港のシャワールームでシャワーを浴びたのですが、これまで知りませんでしたが、 ANA business classとか ANAの statusがあると、1,000円のシャワー料が無料となるのでした

カラスよりも素早くシャワーを済ませ、着替えてから国内線に連絡バスで移動し、千歳行き始発 6:25AM発の ANA便のチェックインして今は機中で出発を待っています 流石に朝一番の便はガラガラです

本日は札幌でTAVIプロクターで本日中に鎌倉に戻ります