Source code for ewoksid13.mcp.tools.integration

"""MCP tool wrapping the pyFAI integration workflow.

FastMCP turns this function's type hints and docstring into the tool's input
schema and description. Import it in ``ewoksid13/mcp/tools/__init__.py`` and add
it to ``TOOLS`` to expose it.
"""

from typing import Dict, List, Optional, Union

from ...scripts.integration import _main_pyfai_integration


[docs] def pyfai_integration_tool( bliss_filenames: Union[str, List[str]], pyfai_configurations: Union[str, List[str], List[Dict]], detectors: Union[str, List[str], None] = None, scans: Union[int, List[int], None] = None, subscans: Union[int, List[int], None] = None, save_separate_files: Optional[bool] = False, save_pyfai_config: Optional[bool] = True, output_root_folder: Optional[str] = None, tag: Optional[str] = "", submit_parameters: Optional[Dict] = None, ) -> List[Dict]: """Run a pyFAI integration workflow from an MCP tool call. It accepts user-provided integration settings, normalizes tool inputs, and triggers workflow submission/execution according to ``submit_parameters``. Parameters ---------- bliss_filenames : str | list[str] One BLISS HDF5 filename or a list of filenames to process. pyfai_configurations : str | list[str] | list[dict] One pyFAI configuration or a list of configurations (typically ``.poni``/``.json`` files). detectors : str | list[str], optional Detector name(s) to filter on. If ``None``, process all compatible detectors. scans : int | list[int], optional Scan number(s) to process. If ``None``, process all scans. subscans : int | list[int], optional Subscan number(s) to process. If ``None``, process all subscans. save_separate_files : bool, default=False Save integrated data in separate files when ``True``. save_pyfai_config : bool, default=True Persist the effective pyFAI configuration near generated outputs. output_root_folder : str, optional Custom output root directory. If ``None``, default project rules apply. tag : str, default="" Suffix added to job/output names to distinguish runs. submit_parameters : dict, optional Submission/execution options (for example queue/slurm settings and dry-run behavior via ``submit``). Returns ------- list[dict] A list of dictionaries, each containing the job ID and worker type of a submitted job. """ submit_parameters = submit_parameters or {} submitted_jobs = _main_pyfai_integration( bliss_filenames=bliss_filenames, pyfai_configurations=pyfai_configurations, detectors=detectors, scans=scans, subscans=subscans, save_separate_files=save_separate_files, save_pyfai_config=save_pyfai_config, output_root_folder=output_root_folder, tag=tag, submit_parameters=submit_parameters, wait_for_completion=False, ) return [{"job_id": j.job_id, "worker_type": j.worker_type} for j in submitted_jobs]