import json import typing import pandas as pd import numpy as np import sys sys.path.append('../') import utility.abstract_importer as ai class SampleImporter(ai.AbstractImporter): #TODO: Scrivere documentazione """Implements the abstracts methods of AbstractImporter and adds all the necessary methods to process and prepare the data loaded directly by using DataFrame :param trajectory_list: the data that describes the trajectories :type trajectory_list: typing.Union[pd.DataFrame, np.ndarray, typing.List] :param variables: the data that describes the variables with name and cardinality :type variables: typing.Union[pd.DataFrame, np.ndarray, typing.List] :param prior_net_structure: the data of the real structure, if it exists :type prior_net_structure: typing.Union[pd.DataFrame, np.ndarray, typing.List] :_df_samples_list: a Dataframe list in which every dataframe contains a trajectory :_raw_data: The raw contents of the json file to import :type _raw_data: List """ def __init__(self, trajectory_list: typing.Union[pd.DataFrame, np.ndarray, typing.List] = None, variables: typing.Union[pd.DataFrame, np.ndarray, typing.List] = None, prior_net_structure: typing.Union[pd.DataFrame, np.ndarray,typing.List] = None): 'If the data are not DataFrame, it will be converted' if isinstance(variables,list) or isinstance(variables,np.ndarray): variables = pd.DataFrame(variables) if isinstance(variables,list) or isinstance(variables,np.ndarray): prior_net_structure=pd.DataFrame(prior_net_structure) super(SampleImporter, self).__init__(trajectory_list =trajectory_list, variables= variables, prior_net_structure=prior_net_structure) def import_data(self, header_column = None): if header_column is None: self._sorter = header_column else: self._sorter = self.build_sorter(self._df_samples_list[0]) samples_list= self._df_samples_list if isinstance(samples_list, np.ndarray): samples_list = samples_list.tolist() self.compute_row_delta_in_all_samples_frames(samples_list) def build_sorter(self, sample_frame: pd.DataFrame) -> typing.List: """Implements the abstract method build_sorter of the :class:`AbstractImporter` in order to get the ordered variables list. """ columns_header = list(sample_frame.columns.values) del columns_header[0] return columns_header def dataset_id(self) -> object: pass