diff --git a/README.md b/README.md index 405f0b1..5265384 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,7 @@ IVUS画像(1症例あたり約20フレーム)を確認し、以下の情報をアノテーションします: -- **合併症予測**:No reflow/Slow flowの発生有無 -- **確信度**:予測の確信度(0-100%) +- **確信度**:合併症リスクの確信度(0-100%)。0–49は陰性(なし)、50以上は陽性(あり)としてCSVに保存されます - **判断根拠**:石灰化プラーク、減衰プラークなどの所見 - **自由記述**:追加コメント @@ -82,13 +81,12 @@ #### アノテーション入力 -1. **合併症予測**: なし / あり を選択 -2. **確信度**: スライダーで0〜100%を設定 -3. **判断根拠**: 該当するものを全てチェック(複数選択可) +1. **確信度**: スライダーで0〜100%を設定(0–49: 陰性 / 50以上: 陽性) +2. **判断根拠**: 該当するものを全てチェック(複数選択可) - 石灰化プラークが多い / 少ない - 減衰プラークが多い / 少ない - その他(記述) -4. **自由記述欄**: 追加のコメントや所見 +3. **自由記述欄**: 追加のコメントや所見 #### 保存 @@ -115,6 +113,10 @@ **文字エンコーディング**: utf-8-sig(Excelで開いても文字化けしません) +**カラム**: `timestamp`, `case_id`, `prediction`, `confidence`, `reasons`, `comment`, `annotator`, `ground_truth` + +`prediction`(あり/なし)は確信度から自動で決定されます(50以上: あり、49以下: なし)。 + --- ## トラブルシューティング @@ -142,6 +144,9 @@ ## 更新履歴 +### v1.2.0 (2026-05-26) +- 合併症予測(あり/なし)のUIを削除し、確信度から自動判定する方式に変更 + ### v1.1.0 (2025-12-22) - 確信度をスライダー方式に変更 diff --git a/app.py b/app.py index e79a3b2..092e7c3 100644 --- a/app.py +++ b/app.py @@ -29,7 +29,6 @@ ) # UI Constants -PREDICTION_OPTIONS = ["あり", "なし"] # 「あり」を上に REASONS_OPTIONS = [ "石灰化プラークが多い", "石灰化プラークが少ない", @@ -340,6 +339,11 @@ st.session_state.zoom_percent = 80 # Default zoom level +def prediction_from_confidence(confidence: int) -> str: + """確信度から合併症予測を導出(50以上: あり、49以下: なし)。""" + return "あり" if confidence >= 50 else "なし" + + def get_current_case_id() -> Optional[Union[int, float]]: """現在の症例IDを取得。""" if (st.session_state.current_case_idx >= 0 and @@ -528,20 +532,10 @@ def render_annotation_form(container, case_id: Union[int, float]) -> dict: """アノテーション入力フォームを表示 - コンパクト版""" - - # Q1: Prediction (横並び) - container.markdown("**Q1: 合併症予測**") - prediction = container.radio( - "Q1: 合併症予測", - PREDICTION_OPTIONS, - key=f"prediction_{case_id}", - horizontal=True, # 変更: 横並びにして省スペース化 - label_visibility="collapsed", - index=1 # デフォルトは「なし」 - ) - # Q2: Confidence (スライダー) - container.markdown("**Q2: 確信度**") + # Q1: Confidence (スライダー) — 50以上: 陽性 + container.markdown("**Q1: 確信度**") + container.caption("0–49: 陰性(なし) / 50以上: 陽性(あり)") confidence = container.slider( "確信度", min_value=MIN_CONFIDENCE, @@ -553,18 +547,18 @@ label_visibility="collapsed" ) - # Q3: Reasons - container.markdown("**Q3: 判断根拠**") + # Q2: Reasons + container.markdown("**Q2: 判断根拠**") reasons = [] # チェックボックスは項目の長さによるため縦並びのまま for reason in REASONS_OPTIONS: if container.checkbox(reason, key=f"reason_{case_id}_{reason}"): reasons.append(reason) - # Q4: Comment (高さを最小限に) - container.markdown("**Q4: 自由記述**") + # Q3: Comment (高さを最小限に) + container.markdown("**Q3: 自由記述**") comment = container.text_area( - "Q4: 自由記述", + "Q3: 自由記述", value="", key=f"comment_{case_id}", height=120, @@ -572,7 +566,7 @@ ) return { - 'prediction': prediction, + 'prediction': prediction_from_confidence(confidence), 'confidence': confidence, 'reasons': reasons, 'comment': comment @@ -607,7 +601,7 @@ (有効かどうか, エラーメッセージ) のタプル """ if len(annotation_data['reasons']) == 0: - return False, "判断根拠を最低1つ選択してください (Q3)" + return False, "判断根拠を最低1つ選択してください (Q2)" return True, "" diff --git a/start_windows.bat b/start_windows.bat index 2ad2c1c..28a98b2 100644 --- a/start_windows.bat +++ b/start_windows.bat @@ -1,53 +1,53 @@ -@echo off -:: 文字コードをUTF-8に変更 (文字化け対策) -chcp 65001 >nul - -cd /d %~dp0 - -echo ========================================== -echo IVUS Annotation Tool (Windows) -echo ========================================== - -:: 1. 仮想環境(venv)の存在チェック -if not exist venv ( - echo. - echo [初回セットアップ] 環境構築を開始します... - echo ※これには数分かかる場合があります。閉じずにお待ちください。 - echo. - - :: 仮想環境の作成 - echo 1/3: 仮想環境を作成中... - python -m venv venv - if %ERRORLEVEL% NEQ 0 ( - echo [ERROR] Pythonが見つかりません。Python 3.10以上をインストールしてください。 - pause - exit /b - ) - - :: 仮想環境の有効化 - call venv\Scripts\activate - - :: パッケージのインストール - echo 2/3: 必要なライブラリをインストール中... - :: pip自体のアップグレード - python -m pip install --upgrade pip - :: 依存関係のインストール - pip install -r requirements.txt - if %ERRORLEVEL% NEQ 0 ( - echo [ERROR] ライブラリのインストールに失敗しました。 - pause - exit /b - ) - - echo 3/3: セットアップ完了! - echo. -) else ( - :: 2回目以降はここからスタート - call venv\Scripts\activate -) - -:: 2. アプリケーションの起動 -echo アプリケーションを起動しています... -streamlit run app.py - +@echo off +:: 文字コードをUTF-8に変更 (文字化け対策) +chcp 65001 >nul + +cd /d %~dp0 + +echo ========================================== +echo IVUS Annotation Tool (Windows) +echo ========================================== + +:: 1. 仮想環境(venv)の存在チェック +if not exist venv ( + echo. + echo [初回セットアップ] 環境構築を開始します... + echo ※これには数分かかる場合があります。閉じずにお待ちください。 + echo. + + :: 仮想環境の作成 + echo 1/3: 仮想環境を作成中... + python -m venv venv + if %ERRORLEVEL% NEQ 0 ( + echo [ERROR] Pythonが見つかりません。Python 3.10以上をインストールしてください。 + pause + exit /b + ) + + :: 仮想環境の有効化 + call venv\Scripts\activate + + :: パッケージのインストール + echo 2/3: 必要なライブラリをインストール中... + :: pip自体のアップグレード + python -m pip install --upgrade pip + :: 依存関係のインストール + pip install -r requirements.txt + if %ERRORLEVEL% NEQ 0 ( + echo [ERROR] ライブラリのインストールに失敗しました。 + pause + exit /b + ) + + echo 3/3: セットアップ完了! + echo. +) else ( + :: 2回目以降はここからスタート + call venv\Scripts\activate +) + +:: 2. アプリケーションの起動 +echo アプリケーションを起動しています... +streamlit run app.py + pause \ No newline at end of file