Source code for ocpy.model_data
from abc import ABC, abstractmethod
from pathlib import Path
from typing import Optional, Union, List, Dict, Tuple, Callable
from typing_extensions import Self
from .oc import OC
import pandas as pd
from numpy._typing import NDArray
from ocpy.custom_types import BinarySeq
[docs]
class DataModel(ABC):
@abstractmethod
def __init__(
self,
minimum_time: List,
minimum_time_error: Optional[List] = None,
weights: Optional[List] = None,
minimum_type: Optional[BinarySeq] = None,
labels: Optional[List] = None,
ecorr: Optional[List] = None,
oc: Optional[List] = None,
) -> None:
"""Constructor method of data class"""
@abstractmethod
def __getitem__(self, item) -> Union[Self, pd.Series]:
"""Get item works"""
[docs]
@classmethod
@abstractmethod
def from_file(cls, file: Union[str, Path], columns: Optional[Dict[str, str]] = None) -> Self:
"""Read data from file"""
@abstractmethod
def _assign_or_fill(self, df: pd.DataFrame, col: str, values, override: bool) -> None:
"""Assign new values to given col's"""
[docs]
@abstractmethod
def fill_errors(self, errors: Union[List, Tuple, NDArray, float], override: bool = False) -> Self:
"""Fills th errors"""
[docs]
@abstractmethod
def fill_weights(self, weights: Union[List, Tuple, NDArray, float], override: bool = False) -> Self:
"""Fills th weights"""
[docs]
@abstractmethod
def calculate_weights(
self,
method: Optional[Callable[[pd.Series], pd.Series]] = None,
override: bool = True
) -> Self:
"""Calculates weights using errors"""
[docs]
@abstractmethod
def calculate_oc(self, reference_minimum: float, reference_period: float, model_type: str = "lmfit") -> OC:
"""Calculates the O-C for this Data"""
[docs]
@abstractmethod
def merge(self, data: Self) -> Self:
"""Appends data to this DataModel"""
[docs]
@abstractmethod
def group_by(self, column: Union[str, int]) -> List[Self]:
"""Group data by column's data"""