Python implementation (translation) of qMRLab models for quantitative MRI.
Project description
qmrpy
qMRLab(MATLAB実装)の概念・モデルを Python へ段階的に移植するためのリポジトリです。
本プロジェクトは upstream の qMRLab(MIT License)に着想を得ており、モデル定義・検証方針は qMRLab を参照しつつ Python で再構成します。
開発(ローカル)
現時点では最小のパッケージ雛形のみです(今後、モデル実装を段階的に追加します)。
uv sync --extra viz(可視化を含める)uv sync --extra viz --extra dev(pytest/ruff 等を含める)uv run --locked -m pytest
パッケージ利用
uv を使う場合の導入例:
uv add qmrpy
API規約(簡易)
- 物理量+単位で命名(例:
t1_ms,t2_ms,flip_angle_deg)。 forward(**params)はシミュレーション出力を返す。fit(signal, **kwargs)は単一ボクセル向け推定でdictを返す。fit_image(data, mask=None, **kwargs)は画像/ボリューム向け推定でdictを返す。dataは(..., n_obs)の形、maskは空間形状と一致。
- 主要推定量は固定キー(例:
t1_ms,t2_ms,m0)、補助量は意味が明確なsnake_caseキーで返す。 - 入力の shape 不一致や不正値は
ValueErrorを投げる。- 例外として
fit_imageが 1D データを受け取る場合、maskは 禁止(ValueError)。
- 例外として
- 関数API(
qmrpy.<func>)は対応するモデルのforward/fitと同じ入出力規約に従う。
返却キー(T2系)
MonoT2.fit:m0,t2_ms(offset_term=Trueならoffsetも返す)DecaesT2Map.fit:distribution,echotimes_ms,t2times_ms,alpha_deg,gdn,ggm,gva,fnr,snr- 追加オプションで
mu,chi2factor,resnorm,decaycurve,decaybasisが付く
- 追加オプションで
DecaesT2Part.fit:sfr,sgm,mfr,mgmMultiComponentT2.fit:weights,t2_basis_ms,mwf,t2mw_ms,t2iew_ms,gmt2_ms,mw_weight,iew_weight,total_weight,resid_l2
返却キー(B1 / Noise / QSM系)
B1Afi.fit/B1Dam.fit(fit_rawは互換エイリアス):b1_raw,spuriousB1Afi.fit_image/B1Dam.fit_image:b1_raw,spuriousMPPCA.fit:denoised,sigma,n_parsMPPCA.fit_image:denoised,sigma,n_parsQsmSplitBregman.fit:- 常に
unwrapped_phase,mask_out no_regularization=Trueならnfml2_regularized=Trueならchi_l2(必要ならchi_l2_pcg)l1_regularized=Trueならchi_sb
- 常に
qsm_split_bregman:chi(再構成結果)calc_chi_l2:chi_l2,chi_l2_pcg
関数API(functional)
vfa_t1_forward,vfa_t1_fit(vfa_t1_fit_linearは互換エイリアス)inversion_recovery_forward,inversion_recovery_fitmono_t2_forward,mono_t2_fitmwf_fitdecaes_t2map_fit,decaes_t2map_spectrum
MRzeroラッパー(任意)
qmrpy.sim.simulate_pdg: MRzeroCore の PDG/EPG シミュレーションqmrpy.sim.simulate_bloch: MRzeroCore の Bloch(isochromat)シミュレーション- 依存は 任意(
MRzeroCoreが未インストールの場合は ImportError)
最小利用例
import numpy as np
from qmrpy.models.t1.vfa_t1 import VfaT1
model = VfaT1(
tr_ms=15.0,
flip_angle_deg=np.array([2, 5, 10, 15]),
)
signal = model.forward(m0=1.0, t1_ms=1200.0)
fit = model.fit(signal)
print(fit["t1_ms"], fit["m0"])
関数API(オブジェクト不要):
import numpy as np
from qmrpy import vfa_t1_fit
signal = np.array([0.02, 0.06, 0.12, 0.18], dtype=float)
fit = vfa_t1_fit(
signal,
flip_angle_deg=np.array([2, 5, 10, 15]),
tr_ms=15.0,
)
print(fit["t1_ms"], fit["m0"])
QSM の最小利用例
import numpy as np
from qmrpy.models.qsm import QsmSplitBregman
shape = (6, 6, 6)
phase = np.random.default_rng(0).normal(0, 1, size=shape)
mask = np.ones(shape, dtype=float)
qsm = QsmSplitBregman(
sharp_filter=False,
l1_regularized=True,
l2_regularized=False,
no_regularization=False,
pad_size=(1, 1, 1),
)
out = qsm.fit(phase=phase, mask=mask, image_resolution_mm=[1.0, 1.0, 1.0])
print(out.keys())
ライセンス
qmrpy本体:MIT(LICENSE)- 参照元
qMRLab/:MIT(upstream、ローカル参照用) - 翻訳・参考実装・vendor の詳細は
THIRD_PARTY_NOTICES.mdを参照
第三者由来コードの扱い
qMRLab(MATLAB)およびDECAES.jlの概念・アルゴリズムを翻訳/再構成しています。- ライセンス表記・出自は
THIRD_PARTY_NOTICES.mdに集約しています。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
qmrpy-0.4.0.tar.gz
(235.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
qmrpy-0.4.0-py3-none-any.whl
(63.9 kB
view details)
File details
Details for the file qmrpy-0.4.0.tar.gz.
File metadata
- Download URL: qmrpy-0.4.0.tar.gz
- Upload date:
- Size: 235.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
865b5c62f21063e2499f8d06d66a68b6f4a45eb446daf9e25ed956ceb68441e0
|
|
| MD5 |
bdb7266d1ec6b0a653e8edec203c7f38
|
|
| BLAKE2b-256 |
ea3e15f2a9e2f4c5578b0039ae9d2ec66c6471309dd3b9667250891a794d5338
|
File details
Details for the file qmrpy-0.4.0-py3-none-any.whl.
File metadata
- Download URL: qmrpy-0.4.0-py3-none-any.whl
- Upload date:
- Size: 63.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
643aaa4a7f83d475a18caa4f6f26772d1dff59767f3231d8083b71f5df10f1bc
|
|
| MD5 |
99cc96ddc358df27cbcdf14deb5ea15e
|
|
| BLAKE2b-256 |
ec3a62d333379d3ac17fcceb05b66edaede6dbef8494b3f216d5bf7e59b0718f
|