all-in-one-seo-pack
domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init
action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114easy-fancybox
domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init
action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114urvanov-syntax-highlighter
domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init
action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114breadcrumb-navxt
domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init
action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114advanced-ads
domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init
action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114lancr
ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init
アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114私のブログの中でとても閲覧数が多いのがDICOMタグ関係の記事となっています。皆さん、DICOMタグを確認したり、いじったりする必要があるんだなとつくづく感じます。
ただ、DICOMタグを確認するのにPythonのプログラムを立ち上げてとか、Image-J、OSIRIX等のDICOMビューアを立ち上げるのは面倒ですよね。
だったら、ドラッグドロップでDICOMタグを見れるプログラムを作ってしまおうという思いから今回この記事を書いています。
まずは、始める前に手順を考えてみたいと思います。
とりあえず、DICOMタグを表示するプログラムを書いてから、それを改造していく事にしましょう。
その際、ファイル1枚なのか、フォルダなのかの判定をしてDICOMタグの表示方法を考えます。
その後、ドラッグドロップされた時の処理を追加します。
これに関しては、以前記事にしていますのでこちらを見てください。
import pydicom dcm = pydicom.dcmread('ファイル名') print(dcm)
たった3行のコードで出来上がりですが、これでは、指定したファイルしか見れないので’ファイル名’の所を変数に変えておきましょう。
とりあえず’filename’としておきます。
import pydicom dcm = pydicom.dcmread(filename) print(dcm)
上記プログラムはファイル単体のDICOMタグを表示するプログラムで、フォルダの際にはエラーとなってしまいます。
私個人的には、DICOMタグを見るのならフォルダで一気に入れてしまいたい気分です。
なので、ドラッグドロップされたものがDICOM画像1枚なのか、フォルダでドラッグドロップされたものなのかを判定する必要があります。
その判定をするのは”os”というライブラリーの”isfile”を使います。
返り値はboolean値で”True”か,”False”の2値で返ってきます。
まずは、ライブラリーをインポートします。
import pydicom import os dcm = pydicom.dcmread(filename) print(dcm)
その後filenameという変数がファイルかフォルダなのかの判定を、DICOMファイル読み込み前に入れます。下記コードでは5行目に入れてあります。
if文で判定します。もし、ファイルである場合は”True”が返ってきますので、そのままスルーします。
import pydicom import os if os.path.isfile(filename): pass dcm = pydicom.dcmread(filename) print(dcm)
さて、”False”の場合はフォルダ内のファイルを見に行かなければなりません。この作業は以前、フォルダでファイルを一括選択でやっているのでそのコードを持ってきます。
ライブラリー”glob”をインポートします。その後、フォルダ内のファイルを変数内に入れていきましょう。以下コードの9行目です。
本来であれば、ここでこれもファイルかどうかの判定をするべきなのですが今回は省略します。
import pydicom import os import glob if os.path.isfile(filename): pass else: filename = glob.glob(filename + "/*") dcm = pydicom.dcmread(filename) print(dcm)
後は、ファイルを読み込んで表示する部分を修正します。for文で繰り返します。変数名に[i]を付け加えるのを忘れないでくださいね。
import pydicom import os import glob if os.path.isfile(filename): pass else: filename = glob.glob(filename + "/*") for i in range(len(filename)): dcm = pydicom.dcmread(filename) print(dcm)
ここはライブラリー”sys”を使います。引数としてコマンドライン引数の”argv”を用います。詳しくはチュートリアルをご覧ください。(私は理解していませんが・・・・・)
まずは、インポート(5行目)
ドラッグドロップされたファイルを変数に入れます。(入れなくても大丈夫ですが、いつも使っている変数名にした方が分かりやすいので・・・・)
import pydicom import os import glob import sys filename = sys.argv[-1] if os.path.isfile(filename): pass else: filename = glob.glob(filename + "/*") for i in range(len(filename)): dcm = pydicom.dcmread(filename[i]) print(dcm)
いよいよ最後の工程です。バッチファイルを作成します。
以前jupyter notebookの起動をアイコン化でも記事にしましたバッチファイルを作成します。
まずはデスクトップにテキストファイルを作成します。
そのファイルに
cd [pythonプログラムが置いてあるフォルダのパス] python [プログラム名.py] %1 PAUSE
とコードを書き保存します。
拡張子を”bat”と変更してください。2行目、3行目のコードはそれぞれの環境に合わせて書き換えてくださいね。
そのファイルにDICOMファイルをドラッグドロップしてみてください。
どうですか?DICOMタグの一覧が表示されましたか?
いろいろとプログラムを書いていくと、DICOMタグの重要性が分かってきている今日この頃です。なにかと確認することが多く、このプログラムは大変重宝しています。みなさんも是非とも作成して利用してみてください。
おつかれさまでした。
jupyter notebookを起動するのって面倒じゃないですか?
コマンドプロンプトを立ち上げてjupyter notebookと打ち込む。
大した作業ではないのですが、 jupyter notebook って少し打ちずらいんですよね・・・・・
他のプログラム同様、アイコンをダブルクリックで起動できれば楽なんだけどな~
と思っている方は少なくないと思います。
そこで今回は、デスクトップ上にアイコン化して起動する方法を紹介します。
非常に簡単にできるので、是非とも試していただきたいと思います。
その方法はメモ帳を新規で開き
jupyter notebook
と記載をし、保存します。
ファイル名は分かりやすく「jupyter notebook」とし、 保存先はデスクトップとしておきましょう。
その後、拡張子(.txt)の部分を(.bat)と変更します。
上記左のテキストファイルから、右側のバッチファイルに変わります。
(左のファイルは消えてしまい右側のファイルに変わります。)
バッチファイルとは、コマンドプロンプトに行わせたい命令列をテキストファイルに記述し、実行させるものです。
なので、いつも行っているコマンドプロンプトを立ち上げてjupyter notebookと打ち込むことで起動させる工程が、右側のアイコンをダブルクリックすることで完了してしまうという便利なファイルに変わります。
作業時間わずか、1分もかからない作業ですので是非とも、みなさん試してみてください。