Mune's Weblog

鹿児島在住のstray radiologistです
仕事も趣味も画像関係…

ROC読影実験アプリ

2021年05月28日 | 仕事関係
サーフィン大会集計アプリが未完成ですが、CAD (Computer-Aided Diagnosis)のROC (Receiver Operating Characteristic)実験のデータ取りに使えるアプリを作りました。



デモバージョンのスクリーンショット。
画像が格納された親フォルダを指定することで、自動的に画像名の入ったCSVが作られ、評価点数と評価時間を追記していくアプリです。
任意のビューワを使っていただく形になります。このアプリから起動することも可能ですが、別端末に入れて使うことも可能です(病院のビューワを使って読影、個人のPCで記録など)。
CSVファイルの出力のみ対応しており、ROC解析自体は組み込んでいません。シカゴ大学のMetz ROC softwareなどをご参照ください。 

ご興味のある方、いらっしゃいますか?

2021.05.13 GUI途中経過

2021年05月13日 | 仕事関係
過去2番目に早い梅雨入り。
OBJET hairでバッサリ髪を切って頂き、心機一転サーフィン大会得点集計アプリのGUI化に取り組んでいます。


トップ画面

スコア入力画面

マルチタブの構成にしています。
いろいろ検討した末にPysimpleguiという、かなり書きやすいライブラリを導入しました。
しかし、オブジェクトを作る際のネストが深く(と、いっても高々3層程度なのですが。。。)苦労しました。
が、最終的にかなり少ないコード記述にまとめられたので大満足です。
システムエンジニア様プログラマ様の凄さを思い知るとともに、昨今のITがらみの問題点がよくわかって面白いです。

ここまでで、目指すアプリの2合目くらい。
集計タブの要件と設計を思案中です。
いよいよオブジェクト指向プログラミングを使いこなすべき時が来たかもしれません。

2021.05.08

2021年05月08日 | 仕事関係
サーフィン採点スクリプトをコツコツとバージョンアップ。
ジャッジ人数、選手のゼッケンカラー、マキシマムウェーブ数に応じた計算方法の変更に対応。
入力ミスのエラー処理、スコア入力の確認と誤入力した場合の再入力機能を追加。
ジャッジ人数による最大値ー最小値を除外するアルゴリズムは、ローカル大会を念頭に、半自動でユーザが選択するようにしました(4名以上で選択)。
地味な所で、途中でプログラムを終了する機能を追加。
しかし、ルールブック見直すと
・インターフェアランスへの対応
・同点の際の順位決め
の実装が必要でした。。。
また、小数点の端数処理は、結構大変な記述が必要そうなのでちょっと保留中。基本的には問題ないのだけれど。

画面は、ジャッジ数4名、選手2名、マキシマムウェーブ3本の最終結果です。



この他、
GUI化は全く別の処理を勉強する必要があるので、しばらく時間がかかりそうです。
更に、exeファイル化は調べてみると、開発環境の問題と(Anaconda環境)、外部ライブラリPandas、Numpyを使っているのでかなり大変そう。。。venvとの使い分けがここで必要だったのか。
リアルタイム採点をするなら、計算ロジックをまるっと入れ替えないといけないので、GUI化とexeファイル化を念頭に置いた開発を行うか。。。。



2021.05.05

2021年05月05日 | 仕事関係
2021年G.W.も今日で最終日。
アタマイタかったり腰ピキったりしており、あまり外に出られなかったので、練習がてらプログラム書いてました。



サーフィン大会採点アプリです。
ジャッジ人数、ゼッケンカラー、マキシマムウェーブ数の変更に対応したツールを作りました。
CLIツールとして、とりあえず動くようになりましたが、

・ジャッジ人数に応じて自動で最高点、最低点のカットをするアルゴリズムを選択するようにする
・入力ミスに対する適切な例外処理をいくつか追加
・GUI化
・.exeファイル化またはWebアプリ化
・リアルタイム採点への対応(逆転のための必要スコアの算出)

ここまでできれば良さそうですね。GUIのライブラリ、何が良いかな~。