Skip to content

Export

export

Módulo de exportación de datos XPS.

Este módulo proporciona funciones para exportar espectros XPS y datasets a formatos estándar (CSV, Excel, JSON) con metadata completa.

Funciones Principales

export_to_csv : Exporta datos a archivos CSV export_to_excel : Exporta datos a archivos Excel (.xlsx) export_to_json : Exporta datos a archivos JSON

Ejemplos

from xps_analyzer.export import export_to_csv, export_to_excel from xps_analyzer import load_single_file

Cargar datos

dataset = load_single_file("data.txt") spectrum = dataset.get_spectrum("C 1s")

Exportar a diferentes formatos

export_to_csv(spectrum, "output/c1s_spectrum.csv") export_to_excel(dataset, "output/dataset.xlsx") export_to_json(spectrum, "output/spectrum.json")

Functions:

export_to_csv

export_to_csv(
    data: XPSSpectrum | XPSDataset,
    output_path: str | Path,
    include_metadata: bool = True,
    decimal_places: int = 6,
) -> Path

Exporta espectro o dataset XPS a archivo CSV.

Si se proporciona un XPSSpectrum, crea un archivo CSV con dos columnas (binding_energy, intensity). Si se proporciona un XPSDataset, crea un archivo CSV por cada espectro en subdirectorios organizados.

Parámetros

data : XPSSpectrum | XPSDataset Espectro individual o dataset completo a exportar. output_path : str | Path Ruta del archivo de salida. Para datasets, será el directorio base. include_metadata : bool, default True Si True, incluye archivo separado con metadata en formato CSV. decimal_places : int, default 6 Número de decimales para valores numéricos.

Retorna

Path Ruta del archivo (o directorio) creado.

Raises

TypeError Si data no es XPSSpectrum ni XPSDataset. ValueError Si output_path existe y es un archivo cuando se exporta XPSDataset.

Ejemplos

from xps_analyzer import load_single_file from xps_analyzer.export import export_to_csv dataset = load_single_file("muestra.txt") spectrum = dataset.spectra["C 1s"]

Exportar espectro individual

export_to_csv(spectrum, "output/c1s.csv") PosixPath('output/c1s.csv')

Exportar dataset completo

export_to_csv(dataset, "output/muestra/", include_metadata=True) PosixPath('output/muestra/')

Referencias
  • Formato CSV estándar (RFC 4180)
Source code in src/xps_analyzer/export/exporters.py
def export_to_csv(
    data: XPSSpectrum | XPSDataset,
    output_path: str | Path,
    include_metadata: bool = True,
    decimal_places: int = 6,
) -> Path:
    """
    Exporta espectro o dataset XPS a archivo CSV.

    Si se proporciona un XPSSpectrum, crea un archivo CSV con dos columnas
    (binding_energy, intensity). Si se proporciona un XPSDataset, crea un
    archivo CSV por cada espectro en subdirectorios organizados.

    Parámetros
    ----------
    data : XPSSpectrum | XPSDataset
        Espectro individual o dataset completo a exportar.
    output_path : str | Path
        Ruta del archivo de salida. Para datasets, será el directorio base.
    include_metadata : bool, default True
        Si True, incluye archivo separado con metadata en formato CSV.
    decimal_places : int, default 6
        Número de decimales para valores numéricos.

    Retorna
    -------
    Path
        Ruta del archivo (o directorio) creado.

    Raises
    ------
    TypeError
        Si data no es XPSSpectrum ni XPSDataset.
    ValueError
        Si output_path existe y es un archivo cuando se exporta XPSDataset.

    Ejemplos
    --------
    >>> from xps_analyzer import load_single_file
    >>> from xps_analyzer.export import export_to_csv
    >>> dataset = load_single_file("muestra.txt")
    >>> spectrum = dataset.spectra["C 1s"]
    >>>
    >>> # Exportar espectro individual
    >>> export_to_csv(spectrum, "output/c1s.csv")
    PosixPath('output/c1s.csv')
    >>>
    >>> # Exportar dataset completo
    >>> export_to_csv(dataset, "output/muestra/", include_metadata=True)
    PosixPath('output/muestra/')

    Referencias
    -----------
    - Formato CSV estándar (RFC 4180)
    """
    output_path = Path(output_path)

    if isinstance(data, XPSSpectrum):
        return _export_spectrum_to_csv(
            data, output_path, include_metadata, decimal_places
        )
    elif isinstance(data, XPSDataset):
        return _export_dataset_to_csv(
            data, output_path, include_metadata, decimal_places
        )
    else:
        raise TypeError(
            f"data debe ser XPSSpectrum o XPSDataset, no {type(data).__name__}"
        )

export_to_excel

export_to_excel(
    data: XPSSpectrum | XPSDataset,
    output_path: str | Path,
    include_metadata: bool = True,
    decimal_places: int = 6,
) -> Path

Exporta espectro o dataset XPS a archivo Excel (.xlsx).

Crea un archivo Excel con múltiples hojas: - Para XPSSpectrum: hoja "Data" con datos, hoja "Metadata" opcional - Para XPSDataset: una hoja por espectro + hojas de metadata

Parámetros

data : XPSSpectrum | XPSDataset Espectro individual o dataset completo a exportar. output_path : str | Path Ruta del archivo Excel de salida (debe terminar en .xlsx). include_metadata : bool, default True Si True, incluye hojas con metadata. decimal_places : int, default 6 Número de decimales para valores numéricos.

Retorna

Path Ruta del archivo Excel creado.

Raises

TypeError Si data no es XPSSpectrum ni XPSDataset. ValueError Si output_path no termina en .xlsx.

Ejemplos

from xps_analyzer import load_single_file from xps_analyzer.export import export_to_excel dataset = load_single_file("muestra.txt")

Exportar dataset completo a Excel

export_to_excel(dataset, "output/muestra.xlsx", include_metadata=True) PosixPath('output/muestra.xlsx')

Estructura del archivo Excel:
- Hoja "C_1s": datos del espectro C 1s
- Hoja "O_1s": datos del espectro O 1s
- Hoja "Dataset_Metadata": metadata del dataset
- Hoja "Spectra_Metadata": metadata de cada espectro
Notas
  • Requiere la librería openpyxl instalada.
  • Los nombres de hojas tienen límite de 31 caracteres (Excel).
  • Caracteres especiales en nombres de región se reemplazan por "_".
Referencias
  • Formato Office Open XML (ECMA-376)
Source code in src/xps_analyzer/export/exporters.py
def export_to_excel(
    data: XPSSpectrum | XPSDataset,
    output_path: str | Path,
    include_metadata: bool = True,
    decimal_places: int = 6,
) -> Path:
    """
    Exporta espectro o dataset XPS a archivo Excel (.xlsx).

    Crea un archivo Excel con múltiples hojas:
    - Para XPSSpectrum: hoja "Data" con datos, hoja "Metadata" opcional
    - Para XPSDataset: una hoja por espectro + hojas de metadata

    Parámetros
    ----------
    data : XPSSpectrum | XPSDataset
        Espectro individual o dataset completo a exportar.
    output_path : str | Path
        Ruta del archivo Excel de salida (debe terminar en .xlsx).
    include_metadata : bool, default True
        Si True, incluye hojas con metadata.
    decimal_places : int, default 6
        Número de decimales para valores numéricos.

    Retorna
    -------
    Path
        Ruta del archivo Excel creado.

    Raises
    ------
    TypeError
        Si data no es XPSSpectrum ni XPSDataset.
    ValueError
        Si output_path no termina en .xlsx.

    Ejemplos
    --------
    >>> from xps_analyzer import load_single_file
    >>> from xps_analyzer.export import export_to_excel
    >>> dataset = load_single_file("muestra.txt")
    >>>
    >>> # Exportar dataset completo a Excel
    >>> export_to_excel(dataset, "output/muestra.xlsx", include_metadata=True)
    PosixPath('output/muestra.xlsx')
    >>>
    >>> # Estructura del archivo Excel:
    >>> # - Hoja "C_1s": datos del espectro C 1s
    >>> # - Hoja "O_1s": datos del espectro O 1s
    >>> # - Hoja "Dataset_Metadata": metadata del dataset
    >>> # - Hoja "Spectra_Metadata": metadata de cada espectro

    Notas
    -----
    - Requiere la librería openpyxl instalada.
    - Los nombres de hojas tienen límite de 31 caracteres (Excel).
    - Caracteres especiales en nombres de región se reemplazan por "_".

    Referencias
    -----------
    - Formato Office Open XML (ECMA-376)
    """
    output_path = Path(output_path)

    # Validar extensión
    if output_path.suffix.lower() != ".xlsx":
        raise ValueError(f"output_path debe terminar en .xlsx, no {output_path.suffix}")

    # Crear directorio padre si no existe
    output_path.parent.mkdir(parents=True, exist_ok=True)

    if isinstance(data, XPSSpectrum):
        return _export_spectrum_to_excel(
            data, output_path, include_metadata, decimal_places
        )
    elif isinstance(data, XPSDataset):
        return _export_dataset_to_excel(
            data, output_path, include_metadata, decimal_places
        )
    else:
        raise TypeError(
            f"data debe ser XPSSpectrum o XPSDataset, no {type(data).__name__}"
        )

export_to_json

export_to_json(
    data: XPSSpectrum | XPSDataset,
    output_path: str | Path,
    include_metadata: bool = True,
    indent: int = 2,
) -> Path

Exporta espectro o dataset XPS a archivo JSON.

Crea un archivo JSON con estructura jerárquica que incluye datos y metadata. Los arrays NumPy se convierten a listas para compatibilidad JSON.

Parámetros

data : XPSSpectrum | XPSDataset Espectro individual o dataset completo a exportar. output_path : str | Path Ruta del archivo JSON de salida. include_metadata : bool, default True Si True, incluye campos de metadata en el JSON. indent : int, default 2 Espacios de indentación para formato legible (None = compacto).

Retorna

Path Ruta del archivo JSON creado.

Raises

TypeError Si data no es XPSSpectrum ni XPSDataset.

Ejemplos

from xps_analyzer import load_single_file from xps_analyzer.export import export_to_json dataset = load_single_file("muestra.txt")

Exportar dataset completo a JSON

export_to_json(dataset, "output/muestra.json", indent=2) PosixPath('output/muestra.json')

Estructura del JSON:
{
"type": "XPSDataset",
"filename": "muestra.txt",
"header": {...},
"spectra": {
"C 1s": {
"region_name": "C 1s",
"binding_energy": [280.0, 281.0, ...],
"intensity": [100.0, 200.0, ...],
"metadata":
},
...
}
}
Notas
  • Los arrays NumPy se convierten a listas de Python.
  • Los valores NaN/Inf se convierten a null.
  • El formato JSON es ideal para interoperabilidad con otras herramientas.
Referencias
Source code in src/xps_analyzer/export/exporters.py
def export_to_json(
    data: XPSSpectrum | XPSDataset,
    output_path: str | Path,
    include_metadata: bool = True,
    indent: int = 2,
) -> Path:
    """
    Exporta espectro o dataset XPS a archivo JSON.

    Crea un archivo JSON con estructura jerárquica que incluye datos y metadata.
    Los arrays NumPy se convierten a listas para compatibilidad JSON.

    Parámetros
    ----------
    data : XPSSpectrum | XPSDataset
        Espectro individual o dataset completo a exportar.
    output_path : str | Path
        Ruta del archivo JSON de salida.
    include_metadata : bool, default True
        Si True, incluye campos de metadata en el JSON.
    indent : int, default 2
        Espacios de indentación para formato legible (None = compacto).

    Retorna
    -------
    Path
        Ruta del archivo JSON creado.

    Raises
    ------
    TypeError
        Si data no es XPSSpectrum ni XPSDataset.

    Ejemplos
    --------
    >>> from xps_analyzer import load_single_file
    >>> from xps_analyzer.export import export_to_json
    >>> dataset = load_single_file("muestra.txt")
    >>>
    >>> # Exportar dataset completo a JSON
    >>> export_to_json(dataset, "output/muestra.json", indent=2)
    PosixPath('output/muestra.json')
    >>>
    >>> # Estructura del JSON:
    >>> # {
    >>> #   "type": "XPSDataset",
    >>> #   "filename": "muestra.txt",
    >>> #   "header": {...},
    >>> #   "spectra": {
    >>> #     "C 1s": {
    >>> #       "region_name": "C 1s",
    >>> #       "binding_energy": [280.0, 281.0, ...],
    >>> #       "intensity": [100.0, 200.0, ...],
    >>> #       "metadata": {...}
    >>> #     },
    >>> #     ...
    >>> #   }
    >>> # }

    Notas
    -----
    - Los arrays NumPy se convierten a listas de Python.
    - Los valores NaN/Inf se convierten a null.
    - El formato JSON es ideal para interoperabilidad con otras herramientas.

    Referencias
    -----------
    - JSON Schema: https://json-schema.org/
    - RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format
    """
    output_path = Path(output_path)

    # Crear directorio padre si no existe
    output_path.parent.mkdir(parents=True, exist_ok=True)

    if isinstance(data, XPSSpectrum):
        json_data = _spectrum_to_dict(data, include_metadata)
    elif isinstance(data, XPSDataset):
        json_data = _dataset_to_dict(data, include_metadata)
    else:
        raise TypeError(
            f"data debe ser XPSSpectrum o XPSDataset, no {type(data).__name__}"
        )

    # Escribir JSON
    with open(output_path, "w", encoding="utf-8") as f:
        json.dump(json_data, f, indent=indent, cls=NumpyEncoder)

    return output_path