Source code for ewoksxrpd.tasks.utils.ascii_utils

from __future__ import annotations

import io
import os
from typing import Any
from typing import Dict
from typing import Mapping
from typing import Union

import numpy

from .data_utils import is_data
from .pyfai_utils import integration_info_as_text


[docs] def ensure_parent_folder(filename: str): dirname = os.path.dirname(filename) if dirname: os.makedirs(dirname, exist_ok=True)
[docs] def save_pattern_as_ascii( filename: str | io.TextIOBase, x: numpy.ndarray, y: numpy.ndarray, xunits: str, yerror: Union[numpy.ndarray, None], header: Mapping, metadata: Dict[str, Any], ) -> None: if is_data(yerror): data = [x, y, yerror] columns = ["x", "intensity", "intensity_error"] else: data = [x, y] columns = ["x", "intensity"] data = numpy.stack(data, axis=1) lines = integration_info_as_text(header, xunits=xunits, **metadata) lines.append(" ".join(columns)) if isinstance(filename, str): ensure_parent_folder(filename) numpy.savetxt(filename, data, header="\n".join(lines))