Source code for ewoksfluo.tasks.input.pick_utils

from typing import List
from typing import Optional
from typing import Tuple

from ..nexus_utils import wait_scan_finished


[docs] def pick_scans( filenames: List[str], scan_ranges: List[Tuple[int, int]], exclude_scans: List[List[int]], retry_timeout: Optional[float] = None, retry_period: float = 0.5, ) -> List[str]: """ Return list of scan URIs based on files names with associated scan ranges and individual scans to be excluded. """ do_wait = retry_timeout is not None and retry_timeout >= 0 bliss_scan_uris = [] for filename, scan_range, excluded_scans in zip( filenames, scan_ranges, exclude_scans ): scan_min, scan_max = scan_range excluded_scans = excluded_scans if excluded_scans else [] for scan_number in range(scan_min, scan_max + 1): if scan_number in excluded_scans: continue bliss_scan_uri = f"{filename}::/{scan_number}.1" if do_wait: wait_scan_finished( bliss_scan_uri, retry_timeout=retry_timeout, retry_period=retry_period, ) bliss_scan_uris.append(bliss_scan_uri) return bliss_scan_uris