AbsCBF_T1Fit (Preclinical) ========================== **Purpose.** Voxelwise **absolute CBF** from MTI-PASL by fitting T1 curves on **global** vs **selective** series. Computation ----------- For each voxel, fit T1 to global and selective TI curves, then: ``CBF = 4980 * (T1_glo / 2250) * (1000/T1_sel - 1000/T1_glo)`` (T1 in ms) Context I/O ----------- - **Reads** from ``ctx``: - ``AbsData`` *(optional)*: 3D stack (X,Y,N). If absent, the module loads from ``params["data_path"]``. - ``savedir`` *(optional)*: output directory (default ``"."``) - **Writes** to ``ctx``: - ``absCBF``: 2D CBF map (X,Y) Filesystem outputs ------------------ - ``/absCBF.npy`` — absolute CBF map - ``/curvefit.png`` — sampled voxel fits for QC Parameters ---------- ==================== =================== ============================================== Key Type / Default Meaning ==================== =================== ============================================== ``data_path`` str / *None* .npy/.npz path if ``AbsData`` not provided ``data_key`` str / *None* Key in .npz ``TI_list`` list[float] / *req* Inversion times (ms) ``sel_index`` list[int] / *req* Frame indices for selective series ``glo_index`` list[int] / *req* Frame indices for global series ``mask_path`` str / *None* 2D numpy mask to constrain fitting ``save_curves_every`` int / ``200`` Approx. sampling for diagnostic plot ==================== =================== ============================================== YAML example ------------ .. code-block:: yaml modules: - name: AbsCBF_T1Fit params: data_path: ./data/abs_input.npz data_key: frames TI_list: [200, 400, 600, 800, 1000] sel_index: [1,3,5,7,9] glo_index: [0,2,4,6,8] save_curves_every: 300