My Project
makePhaseAnimationData.py
Go to the documentation of this file.
1 from frictionImports import *
2 
3 sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + '/File')
4 from loadFromResults import LoadFile, SimplePlots, VectorArrayHelper, MathHelper
5 
7  loader,
8  vector_array_helper,
9  file_name,
10  last_x_percent
11 ):
12  data = loader.loadFile(file_name)
13  print("data shape loaded: ", data.shape)
14 
15  interval_size = calculateIntervalSize(loader)
16  print("interval size: ", interval_size)
17  last_x_percent_index = vector_array_helper.lastXPercentIndex(last_x_percent, interval_size)
18  #check if it is loaded data is matrix or vector
19  if(len(data.shape) > 1):
20  splitted_line = vector_array_helper.splitNumpy2DMatrixTo3DMatrix(data, interval_size)
21  splitted_line = np.array(splitted_line)
22  last_x_values = splitted_line[:,:,last_x_percent_index:]
23  print(last_x_values.shape)
24  else:
25  #to do: code for pad as well
26  splitted_line = vector_array_helper.splitNumpyVectorToMatrix(data, interval_size)
27  splitted_line = np.array(splitted_line)
28  last_x_values = splitted_line[:, last_x_percent_index:]
29  print(last_x_values.shape)
30 
31  return last_x_values
32 
34  loader
35 ):
36  max_time = loader.getParameter("max_time")
37  slider_speed = loader.getParameter("slider_speed")
38  increment = loader.getParameter("increment")
39  interval = loader.getParameter("interval")
40 
41  number_of_intervals = int(np.ceil(max_time/interval))
42 
43  velocities = [round(slider_speed + increment * i,4) for i in range(0, number_of_intervals)]
44  print("Velocities in run: ", velocities)
45 
46  return {'velocities': velocities}
47 
48 
49 def savePhaseData(
50  loader,
51  position_selection,
52  velocity_selection,
53  file_name
54 ):
55  if(len(position_selection.shape) > 1):
56  save_matrix =[]
57  for i in range(0, len(position_selection)):
58  save_matrix.append(position_selection[i])
59  save_matrix.append(velocity_selection[i])
60  save_matrix = np.array(save_matrix)
61  else:
62  save_matrix = np.array([position_selection, velocity_selection])
63  print(save_matrix.shape)
64  loader.save_csv(file_name, save_matrix)
65 
67  loader,
68  vector_array_helper,
69  last_x_percent = 5,
70  save_folder = "/results/friction_phase/"
71 ):
72  position_data = splitSingleIncrementRun(
73  loader = loader,
74  vector_array_helper=vector_array_helper,
75  file_name = "block_position",
76  last_x_percent=last_x_percent)
77  velocity_data = splitSingleIncrementRun(
78  loader = loader,
79  vector_array_helper=vector_array_helper,
80  file_name = "block_velocity",
81  last_x_percent=last_x_percent)
82  print(position_data.shape, velocity_data.shape)
83 
84  for i, (position, velocity) in enumerate(zip(position_data, velocity_data)):
85  if(not loader.check_if_dir_exist_in_run_folder(save_folder)):
86  os.makedirs(loader.results_path + loader.run_name + save_folder)
87 
89  loader,
90  position,
91  velocity,
92  file_name = save_folder + "block_phase_" + str(i) + ".csv"
93  )
94 
95  velocities = calculateVelocities(loader)
96  loader.saveYaml(velocities, "/results/friction_phase/increment_run.yaml")
97 
99  loader,
100  vector_array_helper,
101  last_x_percent = 5,
102  save_folder = "/results/friction_phase/"
103 ):
104  position_data = splitSingleIncrementRun(
105  loader = loader,
106  vector_array_helper=vector_array_helper,
107  file_name = "pad_position",
108  last_x_percent=last_x_percent)
109  velocity_data = splitSingleIncrementRun(
110  loader = loader,
111  vector_array_helper=vector_array_helper,
112  file_name = "pad_velocity",
113  last_x_percent=last_x_percent)
114  print(position_data.shape, velocity_data.shape)
115 
116  for i, (position, velocity) in enumerate(zip(position_data, velocity_data)):
117  if(not loader.check_if_dir_exist_in_run_folder(save_folder)):
118  os.makedirs(loader.results_path + loader.run_name + save_folder)
119 
121  loader,
122  position,
123  velocity,
124  file_name = save_folder + "pad_phase_" + str(i) + ".csv"
125  )
126 
127 
129  loader
130 ):
131  interval = loader.getParameter("interval")
132  dt = loader.getParameter("dt")
133  save_interval = loader.getParameter("save_interval_dt")
134 
135  data_points_per_velocity = int(interval/(dt*save_interval))
136 
137  return data_points_per_velocity
138 
139 
140 def main():
141  last_x_percent = 5
142  if(len(sys.argv) > 1):
143  run_name = sys.argv[1]
144 
145  if("-p" in sys.argv):
146  p_index = sys.argv.index('-p')
147  try:
148  last_x_percent = int(sys.argv[p_index + 1])
149  except IndexError as e:
150  print(e)
151  else:
152  quit()
153  loader = LoadFile(run_name=run_name)
154  vector_array_helper = VectorArrayHelper()
155  makeBlockPhaseData(loader, vector_array_helper, last_x_percent=last_x_percent)
156  makePadPhaseData(loader, vector_array_helper, last_x_percent=last_x_percent)
157 
158 
159 if __name__ == "__main__":
160  main()
def makeBlockPhaseData(loader, vector_array_helper, last_x_percent=5, save_folder="/results/friction_phase/")
def splitSingleIncrementRun(loader, vector_array_helper, file_name, last_x_percent)
def savePhaseData(loader, position_selection, velocity_selection, file_name)
def makePadPhaseData(loader, vector_array_helper, last_x_percent=5, save_folder="/results/friction_phase/")