Examples ============= Installation/Usage: ******************* Implementing your own data importer *********************************** .. code-block:: python """This example demonstrates the implementation of a simple data importer the extends the class abstract importer to import data in csv format. The net in exam has three ternary nodes. """ from .abstract_importer import AbstractImporter class CSVImporter(AbstractImporter): def __init__(self, file_path): self._df_samples_list = None super(CSVImporter, self).__init__(file_path) def import_data(self): self.read_csv_file() self._sorter = self.build_sorter(self._df_samples_list[0]) self.import_variables() self.import_structure() self.compute_row_delta_in_all_samples_frames(self._df_samples_list) def read_csv_file(self): df = pd.read_csv(self._file_path) df.drop(df.columns[[0]], axis=1, inplace=True) self._df_samples_list = [df] def import_variables(self): values_list = [3 for var in self._sorter] # initialize dict of lists data = {'Name':self._sorter, 'Value':values_list} # Create the pandas DataFrame self._df_variables = pd.DataFrame(data) def build_sorter(self, sample_frame: pd.DataFrame) -> typing.List: return list(sample_frame.columns)[1:] def import_structure(self): data = {'From':['X','Y','Z'], 'To':['Z','Z','Y']} self._df_structure = pd.DataFrame(data) def dataset_id(self) -> object: pass Parameters Estimation Example ***************************** .. code-block:: python from PyCTBN.PyCTBN.json_importer import JsonImporter from PyCTBN.PyCTBN.sample_path import SamplePath from PyCTBN.PyCTBN.network_graph import NetworkGraph from PyCTBN.PyCTBN.parameters_estimator import ParametersEstimator def main(): read_files = glob.glob(os.path.join('./data', "*.json")) #Take all json files in this dir #import data importer = JsonImporter(read_files[0], 'samples', 'dyn.str', 'variables', 'Time', 'Name') importer.import_data(0) #Create a SamplePath Obj passing an already filled AbstractImporter object s1 = SamplePath(importer) #Build The trajectries and the structural infos s1.build_trajectories() s1.build_structure() print(s1.structure.edges) print(s1.structure.nodes_values) #From The Structure Object build the Graph g = NetworkGraph(s1.structure) #Select a node you want to estimate the parameters node = g.nodes[2] print("Node", node) #Init the _graph specifically for THIS node g.fast_init(node) #Use SamplePath and Grpah to create a ParametersEstimator Object p1 = ParametersEstimator(s1.trajectories, g) #Init the peEst specifically for THIS node p1.fast_init(node) #Compute the parameters sofc1 = p1.compute_parameters_for_node(node) #The est CIMS are inside the resultant SetOfCIms Obj print(sofc1.actual_cims) Structure Estimation Example **************************** .. code-block:: python from PyCTBN.PyCTBN.json_importer import JsonImporter from PyCTBN.PyCTBN.sample_path import SamplePath from PyCTBN.PyCTBN.structure_estimator import StructureEstimator def structure_estimation_example(): # read the json files in ./data path read_files = glob.glob(os.path.join('./data', "*.json")) # initialize a JsonImporter object for the first file importer = JsonImporter(read_files[0], 'samples', 'dyn.str', 'variables', 'Time', 'Name') # import the data at index 0 of the outer json array importer.import_data(0) # construct a SamplePath Object passing a filled AbstractImporter s1 = SamplePath(importer) # build the trajectories s1.build_trajectories() # build the real structure s1.build_structure() # construct a StructureEstimator object se1 = StructureEstimator(s1, 0.1, 0.1) # call the ctpc algorithm se1.ctpc_algorithm() # the adjacency matrix of the estimated structure print(se1.adjacency_matrix()) # save results to a json file se1.save_results()