目次
  1. 前提環境
  2. セットアップ (初回のみ)
  3. 仮想環境の有効化 / 無効化
  4. CAVE 認証トークンの取得・保存
  5. メッシュダウンローダーの起動 (3 パターン)
  6. 対話プロンプト 5 ステップの解説
  7. normalize モード (重要)
  8. 出力ファイル
  9. シナプス / 細胞体クエリ (microns_DB.py)
  10. テスト実行
  11. トラブルシューティング

1. 前提環境

項目内容
OSWindows 11 (PowerShell 想定)
Python3.13 以上 (uv 管理)
パッケージマネージャuv
プロジェクトパスC:\Users\lunel\Projects\Programing\Python\MICrONS data

2. セットアップ (初回のみ)

2-1. uv のインストール確認

本プロジェクトは uv (高速な Python パッケージマネージャ) を前提とする。インストール済みかは PowerShell で確認:

uv --version

未インストールなら公式手順でインストール:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

2-2. 依存パッケージのインストール

プロジェクトフォルダに移動して uv sync を実行する。

cd "C:\Users\lunel\Projects\Programing\Python\MICrONS data"
uv sync

uv sync の動作:

  1. pyproject.tomluv.lock を読む
  2. プロジェクト直下に .venv\ を作成 (なければ)
  3. Python 3.13 を .venv\Scripts\python.exe に配置
  4. caveclient / cloud-volume / numpy / pandas.venv\Lib\site-packages\ に展開

完了後の重要なディレクトリ:

パス用途
.venv\Scripts\python.exeプロジェクト専用 Python
.venv\Scripts\Activate.ps1PowerShell 用の有効化スクリプト
.venv\Scripts\activate.batcmd.exe 用の有効化スクリプト
.venv\Lib\site-packages\依存パッケージ本体
Note: .venv 内の DLL を別プロセス (IDE / エクスプローラー / 実行中の Python 等) が開いていると uv sync が失敗する。その場合は該当プロセスを閉じてから再実行。

3. 仮想環境の有効化 / 無効化

uv で作った .venv は通常の Python venv と同じく、PowerShell から手動で有効化できる。有効化しなくても uv run 経由で実行できるが、対話的に複数コマンドを試したい場合は有効化すると便利。

3-1. 有効化 (PowerShell)

cd "C:\Users\lunel\Projects\Programing\Python\MICrONS data"
.\.venv\Scripts\Activate.ps1

成功するとプロンプトの左に環境名が付く:

(microns-data) PS C:\Users\lunel\Projects\Programing\Python\MICrONS data>

有効化されている間は python / pip が自動で .venv\Scripts\ 配下のものを指す。python --version で 3.13 が返ってくれば成功。

PowerShell 実行ポリシーで失敗する場合: .\.venv\Scripts\Activate.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル ... を読み込むことができません というエラーが出たら、現在のユーザだけ実行を許可する:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Y で承認して、再度 Activate.ps1 を実行。

3-2. 無効化

環境を抜けるときは:

deactivate

プロンプトから (microns-data) が消えれば成功。PowerShell ウィンドウを閉じれば自動的に無効化される。

3-3. 環境を作り直したいとき

依存が壊れた / Python バージョンを変えたい場合:

deactivate                  # 有効化中なら先に抜ける
Remove-Item -Recurse -Force .venv
uv sync                     # 作り直し

4. CAVE 認証トークンの取得・保存

MICrONS データへアクセスするには CAVE のアカウント認証トークンが必要。初回のみ下記を実行する。

4-1. ブラウザでトークンを取得

uv run python get_token.py

ブラウザが開いて Google ログインを求められる。ログイン後、トークン文字列 (英数字 32 桁前後) が表示されるのでコピーする。

4-2. ローカルに保存

取得したトークンを環境変数 CAVE_TOKEN にセットしてから save_token.py を実行する:

$env:CAVE_TOKEN = "<your-token-here>"
uv run python save_token.py

成功すると次のように表示される:

Token saved. Verified connection to datastack 'minnie65_public'.
セキュリティ: トークンはスクリプトに直接書き込まないこと。save_token.py は環境変数からしか読まない。PowerShell を閉じれば $env:CAVE_TOKEN は消えるので、トークン文字列はパスワードマネージャ等に別途保管する。

5. メッシュダウンローダーの起動 (3 パターン)

同じスクリプト microns_DL.py を走らせる方法は 3 通りある。状況に応じて使い分ける。

パターンコマンド仮想環境の有効化こんなとき
A. uv run (推奨) uv run python microns_DL.py 不要 (裏で uv が自動処理) 1 回だけ実行する。最も簡潔
B. activate 経由 python microns_DL.py (要事前 activate) 必要 (.\.venv\Scripts\Activate.ps1) 連続で複数コマンドを試す。python --versionpip list も走らせたい
C. 直接 .venv の python を呼ぶ .\.venv\Scripts\python.exe microns_DL.py 不要 uv 経由の依存解決を飛ばして純粋に既存 .venv で走らせたい (uv sync が再構築でロックしているとき等)

5-1. パターン A: uv run (もっとも簡単)

cd "C:\Users\lunel\Projects\Programing\Python\MICrONS data"
$env:PYTHONIOENCODING = "utf-8"
uv run python microns_DL.py

または PowerShell 全体を UTF-8 にしてから:

chcp 65001
uv run python microns_DL.py

5-2. パターン B: 仮想環境を有効化してから python で実行

ユーザが想定する「UV エンバイロメントを起動 → Python でスクリプト」のパターン:

cd "C:\Users\lunel\Projects\Programing\Python\MICrONS data"
.\.venv\Scripts\Activate.ps1

# 環境名が付いたら成功
(microns-data) PS> python --version
Python 3.13.x

# スクリプト実行
(microns-data) PS> $env:PYTHONIOENCODING = "utf-8"
(microns-data) PS> python microns_DL.py

# 終わったら抜ける
(microns-data) PS> deactivate

この方法だと、有効化中は python microns_DL.pypython が自動で .venv\Scripts\python.exe に解決されるので、システム Python と混ざる事故が起きない。

5-3. パターン C: 直接 .venv の python を叩く

cd "C:\Users\lunel\Projects\Programing\Python\MICrONS data"
.\.venv\Scripts\python.exe microns_DL.py

uv の依存解決サイクルを完全に飛ばすので、uv sync がロックエラー等で失敗している状況でも既存 .venv を使って動かせる。

5-4. パッケージとしてインストールした場合

uv pip install -e . を一度実行すると、コンソールスクリプト microns-data が登録される (pyproject.toml[project.scripts] で定義済み)。これで:

(microns-data) PS> microns-data

とだけ打てば main.py が呼ばれ、内部で microns_DL.process_microns_data() が起動する。

どれを使えばいい? 普段は パターン A (uv run python ...) が最短で安全。複数のコマンドを連続で打つ・対話的に試す場合だけ パターン B (activate) に切り替える。パターン C は uv が機嫌を損ねたとき用の保険。

6. 対話プロンプト 5 ステップの解説

起動すると次の順で質問される。Enter でデフォルト値を採用できる。

#質問選択肢 / デフォルト意味
1 Select segment ID input method 1 = キーボード入力 / 2 = デフォルト ID 84 件 処理するニューロンの ID を指定する方法
2 LOD (Level of Detail) 整数。デフォルト 3 メッシュの詳細度。大きいほどポリゴン少 (軽い)、小さいほど多 (重い)。推奨 3〜4
3 Normalize mode n / i / g。デフォルト n 座標変換モード。詳細は次節
4 Scale mesh (x20000)? y / n。デフォルト y y: 1e-9 × 20000 倍 (nm → m → ×20000、Blender で見やすいサイズ) / n: 1.0 倍 (nm 単位そのまま)
5 Add X, Y, Z scale bars? y / n。デフォルト n y の場合、赤色の X/Y/Z 軸スケールバーを線分として書き出す

例: ID を 2 つだけ手動指定して全部デフォルト

Choice (1 or 2): 1
ID: 864691135572530981,864691135977309763
LOD (default: 3): Enter
Normalize mode [n/i/g] (default: n): Enter
Scale mesh (x20000)? (y/n) [y]: Enter
Add X, Y, Z scale bars? (y/n) [n]: Enter

7. normalize モード (重要)

3 ステップ目の normalize は出力結果の意味を大きく変える。複数ニューロンを 1 ファイルに連結する場合は特に注意

モード動作用途
n (デフォルト) 無変換。元の脳座標をそのまま保持 絶対座標で複数ニューロンを表示したいとき。脳全体スケールで見ると原点から遠い位置に出る
i 各メッシュを個別に自身の重心で原点中心化 単一ニューロン形状を観察したい場合のみ
g 全メッシュ共通の重心で全体を原点付近に平行移動 複数ニューロンの相対位置関係を維持しつつ原点付近に集めて Blender で扱いやすくしたいとき
注意: i モードで複数ニューロンを処理すると、各メッシュが個別に原点中心化されるため、すべてのニューロンが原点付近に重なって出力される。脳内の相対位置情報は完全に失われる。コネクトミクス可視化用途では n または g を使うこと。

8. 出力ファイル

カレントディレクトリ直下の mesh_out_precomputed2/ に書き出される。

ファイル内容
merged_keep_layout.obj連結された頂点 / 面データ。Blender / MeshLab で File > Import > OBJ から読み込める
merged_keep_layout.mtlマテリアル定義。各ニューロンに HSV 自動着色 (黄金角分布)

Blender で開く例:

  1. Blender を起動
  2. FileImportWavefront (.obj)
  3. mesh_out_precomputed2\merged_keep_layout.obj を選択

9. シナプス / 細胞体クエリ (microns_DB.py)

あるニューロン (root_id) の細胞体位置と入力シナプスを取得したい場合:

uv run python microns_DB.py

デフォルトでは microns_DB.py 末尾の SAMPLE_TARGET_ID を対象に実行される。別の ID を調べる場合はその定数を書き換えるか、Python から関数を直接呼ぶ:

from microns_DB import report
report(864691135572530981)

出力には次が含まれる:

10. テスト実行

リファクタが壊れていないか確認するには:

uv run python -m unittest verify_refactor -v

6 件全て ok なら正常。テストは cloudvolume をモック化しているのでネットワーク不要・トークン不要で走る。

Tip: 仮想環境を直接叩いて実行することもできる。 .venv\Scripts\python.exe -m unittest verify_refactor -v

11. トラブルシューティング

症状原因 / 対処
error: failed to remove directory ... Access is denied .venv 内のファイルが他プロセスでロックされている。IDE / エクスプローラー / 実行中の Python を閉じてから uv sync を再実行。それでも詰むときは起動パターン C (.venv\Scripts\python.exe 直接呼び出し) で当面しのぐ
Activate.ps1 ... このシステムではスクリプトの実行が無効になっているため PowerShell の実行ポリシーが Restricted。Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned を 1 度だけ実行
uv : 用語 'uv' は ... uv 未インストール。powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" でインストール
有効化したのに python --version が古い Python を返す 別の Python が PATH 先頭にいる。where.exe python で確認し、.venv\Scripts\python.exe が先頭でなければ activate を再度実行。または起動パターン A (uv run) に切り替える
Error: environment variable CAVE_TOKEN is not set 同じ PowerShell セッションで $env:CAVE_TOKEN = "..." を実行してから save_token.py を起動する
文字化け (日本語が表示されない) $env:PYTHONIOENCODING = "utf-8" または chcp 65001 を実行してから起動
cv.mesh.get でタイムアウト ネットワーク接続を確認。MICrONS のサーバが一時的に重い可能性もある。LOD を 45 に上げると軽量化される
OBJ が空 / 頂点が 0 指定 ID が古い / フラグメント / 静的メッシュ未生成の可能性。microns_DB.pynucleus_detection_v0 に該当があるか確認
複数ニューロンが原点で重なっている normalize モードを i で実行している。n または g に変更
Blender にインポートしたら巨大すぎ / 小さすぎ Scale 設定で調整。y の場合は ×20000 されている。n なら nm 単位 (Blender 上では極端に大きい数値)