← microns-data トップへ / lunelukkio site トップへ
MICrONS data 使い方ガイド
MICrONS Explorer の minnie65 コネクトームから神経細胞メッシュをダウンロードして OBJ + MTL に変換するスクリプト群。シナプス / 細胞体情報を CAVE materialize から取得することもできる。
1. 前提環境
| 項目 | 内容 |
|---|---|
| OS | Windows 11 (PowerShell 想定) |
| Python | 3.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 の動作:
pyproject.tomlとuv.lockを読む- プロジェクト直下に .venv\ を作成 (なければ)
- Python 3.13 を .venv\Scripts\python.exe に配置
caveclient/cloud-volume/numpy/pandasを .venv\Lib\site-packages\ に展開
完了後の重要なディレクトリ:
| パス | 用途 |
|---|---|
| .venv\Scripts\python.exe | プロジェクト専用 Python |
| .venv\Scripts\Activate.ps1 | PowerShell 用の有効化スクリプト |
| .venv\Scripts\activate.bat | cmd.exe 用の有効化スクリプト |
| .venv\Lib\site-packages\ | 依存パッケージ本体 |
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 が返ってくれば成功。
.\.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 --version や pip 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.py の python が自動で .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() が起動する。
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 で開く例:
- Blender を起動
- File → Import → Wavefront (.obj)
- 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)
出力には次が含まれる:
- 細胞体 (nucleus) 座標 (
nucleus_detection_v0) - 入力シナプス数
- 最大シナプス (スパイン) の ID / サイズ / 相手 (pre side) ID / 座標 (μm)
- サイズ上位 5 件
10. テスト実行
リファクタが壊れていないか確認するには:
uv run python -m unittest verify_refactor -v
6 件全て ok なら正常。テストは cloudvolume をモック化しているのでネットワーク不要・トークン不要で走る。
.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 を 4 や 5 に上げると軽量化される |
| OBJ が空 / 頂点が 0 | 指定 ID が古い / フラグメント / 静的メッシュ未生成の可能性。microns_DB.py で nucleus_detection_v0 に該当があるか確認 |
| 複数ニューロンが原点で重なっている | normalize モードを i で実行している。n または g に変更 |
| Blender にインポートしたら巨大すぎ / 小さすぎ | Scale 設定で調整。y の場合は ×20000 されている。n なら nm 単位 (Blender 上では極端に大きい数値) |