Source code for pyoma2.support.geometry.data

from __future__ import annotations

import numpy as np
import numpy.typing as npt
import pandas as pd
from pydantic import BaseModel, ConfigDict


[docs]class BaseGeometry(BaseModel): """ Base class for storing and managing sensor and background geometry data. Attributes ---------- sens_names : List[str] Names of the sensors. sens_lines : numpy.ndarray of shape (n, 2), optional An array representing lines between sensors, where each entry is a pair of sensor indices. Default is None. bg_nodes : numpy.ndarray of shape (m, 3), optional An array of background nodes in 3D space. Default is None. bg_lines : numpy.ndarray of shape (p, 2), optional An array of lines between background nodes, where each entry is a pair of node indices. Default is None. bg_surf : numpy.ndarray of shape (q, 3), optional An array of background surfaces, where each entry is a node index. Default is None. """ model_config = ConfigDict(from_attributes=True, arbitrary_types_allowed=True) # MANDATORY sens_names: list[str] # OPTIONAL sens_lines: npt.NDArray[np.int64] | None = None # lines between sensors bg_nodes: npt.NDArray[np.float64] | None = None # Background nodes bg_lines: npt.NDArray[np.int64] | None = None # Background lines bg_surf: npt.NDArray[np.int64] | None = None # Background surfaces
[docs]class Geometry1(BaseGeometry): """ Class for storing and managing sensor and background geometry data for Geometry 1. This class provides a structured way to store the coordinates and directions of sensors, as well as optional background data such as nodes, lines, and surfaces. Attributes ---------- sens_names : List[str] Names of the sensors. sens_coord : pandas.DataFrame A DataFrame containing the coordinates of each sensor. sens_dir : numpy.ndarray of shape (n, 3) An array representing the direction vectors of the sensors. sens_lines : numpy.ndarray of shape (n, 2), optional An array representing lines between sensors, where each entry is a pair of sensor indices. Default is None. bg_nodes : numpy.ndarray of shape (m, 3), optional An array of background nodes in 3D space. Default is None. bg_lines : numpy.ndarray of shape (p, 2), optional An array of lines between background nodes, where each entry is a pair of node indices. Default is None. bg_surf : numpy.ndarray of shape (q, 3), optional An array of background surfaces, where each entry is a node index. Default is None. """ # MANDATORY sens_coord: pd.DataFrame # sensors' coordinates sens_dir: npt.NDArray[np.int64] # sensors' directions
[docs]class Geometry2(BaseGeometry): """ Class for storing and managing sensor and background geometry data for Geometry 2. This class is designed to store sensor data and their associated point coordinates, along with optional constraints and sensor surface information. It supports mapping sensors to specific points in space, and includes optional background data for further geometric analysis. Attributes ---------- sens_names : List[str] Names of the sensors. pts_coord : pandas.DataFrame A DataFrame containing the coordinates of the points. sens_map : pandas.DataFrame A DataFrame mapping sensors to points locations. cstrn : pandas.DataFrame, optional A DataFrame of constraints applied to the points or sensors. Default is None. sens_sign : pandas.DataFrame, optional A DataFrame indicating the sign or orientation of the sensors. Default is None. sens_lines : numpy.ndarray of shape (n, 2), optional An array representing lines between sensors, where each entry is a pair of sensor indices. Default is None. sens_surf : numpy.ndarray of shape (p, ?), optional An array representing surfaces between sensors, where each entry is a node index. Default is None. bg_nodes : numpy.ndarray of shape (m, 3), optional An array of background nodes in 3D space. Default is None. bg_lines : numpy.ndarray of shape (p, 2), optional An array of lines between background nodes, where each entry is a pair of node indices. Default is None. bg_surf : numpy.ndarray of shape (q, 3), optional An array of background surfaces, where each entry is a node index. Default is None. """ # MANDATORY pts_coord: pd.DataFrame # points' coordinates sens_map: pd.DataFrame # mapping sensors to points # OPTIONAL cstrn: pd.DataFrame | None = None sens_sign: pd.DataFrame | None = None # sensors sign sens_surf: npt.NDArray[np.int64] | None = None # surfaces between sensors