1
0
Fork 0

Merging traje but keep type of columns

parallel_struct_est
philpMartin 4 years ago
parent b48fd3e67f
commit 2425f491df
  1. 1
      main_package/classes/conditional_intensity_matrix.py
  2. 9
      main_package/classes/json_importer.py
  3. 26
      main_package/classes/parameters_estimator.py
  4. 17
      main_package/classes/sample_path.py

@ -15,6 +15,7 @@ class ConditionalIntensityMatrix:
def update_state_residence_time_for_state(self, state, time): def update_state_residence_time_for_state(self, state, time):
#print("Time updating In state", state, time) #print("Time updating In state", state, time)
#print(state)
self.state_residence_times[state] = self.state_residence_times[state] + time self.state_residence_times[state] = self.state_residence_times[state] + time
def compute_cim_coefficients(self): def compute_cim_coefficients(self):

@ -96,8 +96,8 @@ class JsonImporter(AbstractImporter):
for col_name in columns_header: for col_name in columns_header:
if col_name == 'Time': if col_name == 'Time':
sample_frame[col_name + 'Delta'] = sample_frame[col_name].diff() sample_frame[col_name + 'Delta'] = sample_frame[col_name].diff()
else: #else:
sample_frame[col_name + 'Delta'] = (sample_frame[col_name].diff().bfill() != 0).astype(int) #sample_frame[col_name + 'Delta'] = (sample_frame[col_name].diff().bfill() != 0).astype(int)
#sample_frame['Delta'] = sample_frame['Time'].diff() #sample_frame['Delta'] = sample_frame['Time'].diff()
#print(sample_frame) #print(sample_frame)
@ -134,9 +134,10 @@ class JsonImporter(AbstractImporter):
""" """
for indx in range(len(self.df_samples_list)): for indx in range(len(self.df_samples_list)):
self.df_samples_list[indx] = self.df_samples_list[indx].iloc[0:0] self.df_samples_list[indx] = self.df_samples_list[indx].iloc[0:0]
self.concatenated_samples = self.concatenated_samples.iloc[0:0]
ij = JsonImporter("../data") """ij = JsonImporter("../data")
ij.import_data() ij.import_data()
#print(ij.df_samples_list[7]) #print(ij.df_samples_list[7])
print(ij.df_structure) print(ij.df_structure)
@ -144,4 +145,4 @@ print(ij.df_variables)
#print((ij.build_list_of_samples_array(0)[1].size)) #print((ij.build_list_of_samples_array(0)[1].size))
#ij.compute_row_delta_sigle_samples_frame(ij.df_samples_list[0]) #ij.compute_row_delta_sigle_samples_frame(ij.df_samples_list[0])
ij.compute_row_delta_in_all_samples_frames() ij.compute_row_delta_in_all_samples_frames()
print(ij.concatenated_samples.to_numpy()) print(ij.concatenated_samples.to_numpy())"""

@ -1,6 +1,7 @@
import os import os
import time as tm import time as tm
from line_profiler import LineProfiler from line_profiler import LineProfiler
import numpy as np
import network_graph as ng import network_graph as ng
import sample_path as sp import sample_path as sp
@ -30,12 +31,18 @@ class ParametersEstimator:
#print("Elapsed Time ", t1) #print("Elapsed Time ", t1)
def parameters_estimation_single_trajectory(self, trajectory): def parameters_estimation_single_trajectory(self, trajectory):
tr_len = trajectory.shape[0]
row_length = trajectory.shape[1]
print(tr_len)
print(row_length)
t0 = tm.time() t0 = tm.time()
for indx, row in enumerate(trajectory): for indx, row in enumerate(trajectory):
if trajectory[indx][1] == -1: """ #if int(trajectory[indx][1]) == -1:
#break
if indx == tr_len - 2:
break break
if trajectory[indx + 1][1] != -1: if trajectory[indx + 1][1] != -1:
transition = self.find_transition(trajectory[indx], trajectory[indx + 1]) transition = self.find_transition(trajectory[indx], trajectory[indx + 1], row_length)
which_node = transition[0] which_node = transition[0]
# print(which_node) # print(which_node)
which_matrix = self.which_matrix_to_update(row, transition[0]) which_matrix = self.which_matrix_to_update(row, transition[0])
@ -43,7 +50,9 @@ class ParametersEstimator:
self.amalgamated_cims_struct.update_state_transition_for_matrix(which_node, which_matrix, which_element) self.amalgamated_cims_struct.update_state_transition_for_matrix(which_node, which_matrix, which_element)
#changed_node = which_node #changed_node = which_node
time = self.compute_time_delta(trajectory[indx], trajectory[indx + 1]) if int(trajectory[indx][0]) == 0:
time = trajectory[indx + 1][0]
#time = self.compute_time_delta(trajectory[indx], trajectory[indx + 1])
which_element = transition[1][0] which_element = transition[1][0]
self.amalgamated_cims_struct.update_state_residence_time_for_matrix(which_node, which_matrix, which_element, self.amalgamated_cims_struct.update_state_residence_time_for_matrix(which_node, which_matrix, which_element,
time) time)
@ -53,20 +62,19 @@ class ParametersEstimator:
# print(node) # print(node)
which_node = node_indx which_node = node_indx
which_matrix = self.which_matrix_to_update(row, node_indx) which_matrix = self.which_matrix_to_update(row, node_indx)
which_element = row[node_indx + 1] which_element = int(row[node_indx + 1])
# print("State res time element " + str(which_element) + node) # print("State res time element " + str(which_element) + node)
# print("State res time matrix indx" + str(which_matrix)) # print("State res time matrix indx" + str(which_matrix))
self.amalgamated_cims_struct.update_state_residence_time_for_matrix(which_node, which_matrix, self.amalgamated_cims_struct.update_state_residence_time_for_matrix(which_node, which_matrix,
which_element, time) which_element, time)
t1 = tm.time() - t0 t1 = tm.time() - t0
print("Elapsed Time ", t1) print("Elapsed Time ", t1)"""
def find_transition(self, current_row, next_row): def find_transition(self, current_row, next_row, row_length):
for indx in range(1, len(current_row)): for indx in range(1, row_length):
if current_row[indx] != next_row[indx]: if current_row[indx] != next_row[indx]:
return [indx - 1, (current_row[indx], next_row[indx])] return [indx - 1, (current_row[indx], next_row[indx])]
def compute_time_delta(self, current_row, next_row): def compute_time_delta(self, current_row, next_row):
return next_row[0] - current_row[0] return next_row[0] - current_row[0]
@ -97,7 +105,7 @@ print(pe.amalgamated_cims_struct.get_set_of_cims(2).get_cims_number())
#pe.parameters_estimation_single_trajectory(pe.sample_path.trajectories[0].get_trajectory()) #pe.parameters_estimation_single_trajectory(pe.sample_path.trajectories[0].get_trajectory())
lp = LineProfiler() lp = LineProfiler()
lp_wrapper = lp(pe.parameters_estimation_single_trajectory) lp_wrapper = lp(pe.parameters_estimation_single_trajectory)
lp_wrapper(pe.sample_path.trajectories[0].get_trajectory()) lp_wrapper(pe.sample_path.trajectories.get_trajectory())
lp.print_stats() lp.print_stats()
#pe.parameters_estimation() #pe.parameters_estimation()
"""for matrix in pe.amalgamated_cims_struct.get_set_of_cims(1).actual_cims: """for matrix in pe.amalgamated_cims_struct.get_set_of_cims(1).actual_cims:

@ -21,14 +21,16 @@ class SamplePath:
def __init__(self, files_path): def __init__(self, files_path):
print() print()
self.importer = imp.JsonImporter(files_path) self.importer = imp.JsonImporter(files_path)
self.trajectories = [] self.trajectories = None
self.structure = None self.structure = None
def build_trajectories(self): def build_trajectories(self):
self.importer.import_data() self.importer.import_data()
for traj_data_frame in self.importer.df_samples_list: self.importer.compute_row_delta_in_all_samples_frames()
trajectory = tr.Trajectory(self.importer.build_list_of_samples_array(traj_data_frame)) #self.trajectories = self.importer.concatenated_samples.to_numpy()
self.trajectories.append(trajectory) #for traj_data_frame in self.importer.df_samples_list:
self.trajectories = tr.Trajectory(self.importer.build_list_of_samples_array(self.importer.concatenated_samples))
#self.trajectories.append(trajectory)
self.importer.clear_data_frames() self.importer.clear_data_frames()
def build_structure(self): def build_structure(self):
@ -38,4 +40,11 @@ class SamplePath:
return len(self.trajectories) return len(self.trajectories)
"""os.getcwd()
os.chdir('..')
path = os.getcwd() + '/data'
s1 = SamplePath(path)
s1.build_trajectories()
s1.build_structure()
print(s1.trajectories.get_trajectory())"""