Custom Pipeline =============== **Runner:** ``pyasl.pipelines.custom_pipeline.run_custom_pipeline`` **Purpose.** Power-user pipeline that can call **any** PyASL module or your own class by **fully-qualified class name (FQCN)**. Supports two call styles: - ``kwargs`` modules: ``run(ctx, **params)`` (preclinical-style) - ``dict`` modules: ``run(data_descrip, params)`` (ASLtbx/MRICloud/Oxford-style) Smart Parameters ---------------- - **Path resolution:** any value on a “path-ish” key (``path``, ``savedir``, etc.) or that *looks like a path* is resolved relative to ``data_dir``. - **Meta injection:** any ``"from_meta"`` token is replaced by the value of the same key from the shared **Context**. YAML Example ------------ .. code-block:: yaml type: custom steps: - module: BrukerLoader params: { root: "{root}", expno: 21 } - module: pyasl.modules.preclinical_motion_check.MotionCheck # FQCN allowed - name: MRICloudCalculateDiffMap # alias resolves to MRICloud module params: {} - module: SaveOutputs