My Project
plotPadDifferentStepSize.py
Go to the documentation of this file.
1 import os
2 import sys
3 import numpy as np
4 from matplotlib import pyplot as plt
5 
6 import numpy.fft as fft
7 
8 import yaml
9 
10 try:
11  from yaml import CLoader as Loader, CDumper as Dumper
12 except ImportError:
13  from yaml import Loader, Dumper
14 
15 
16 results_path = os.path.dirname(os.path.realpath(__file__)) + "/../../../results/"
17 results_folder = "/results/"
18 numeric_method = "_midpoint_"
19 
20 def loadFile(
21  run_name,
22  shared_names,
23  selected = 'pad_position.csv'
24 ):
25  data = np.loadtxt(results_path + run_name + results_folder + shared_names + numeric_method + selected, delimiter = ',')
26  return data
27 
28 def loadYaml(
29  run_name
30 ):
31  stream = open(results_path + run_name + "/doc/yaml/parameters.yaml", 'r')
32  run_parameters = yaml.load(stream, Loader = Loader)
33  return run_parameters
34 
36  number_data_points,
37  parameters
38 ):
39  start = 0
40  stop = parameters["Parameters"]["max_time"]
41 
42  x_values = np.linspace(start = start, stop = stop, num = number_data_points)
43  return x_values
44 
45 def plot_runs(
46  run_list
47 ):
48  for run_name in run_list:
49  parameters = loadYaml(run_name)
50  shared_names = parameters["Parameters"]["file_name"]
51  data = loadFile(run_name, shared_names)
52  #plot_fft_frequencies(data)
53  x = x_values_for_run(len(data), parameters)
54  plt.plot(x, data, label = parameters["Parameters"]["dt"], linewidth = 0.5, marker = 'x')
55  plt.legend(title = 'dt')
56  plt.show()
57 
58 def calculate_fft(
59  data
60 ):
61  half_point = int(0.5*len(data))
62  data = data[half_point:]
63  spectrum = fft.fft(data)
64 
65  frequency = fft.fftfreq(len(spectrum))
66 
67  threshold = 0.5 * max(abs(spectrum))
68  mask = abs(spectrum) > threshold
69  peaks = frequency[mask]
70  print(peaks)
71 
72  return {'Spectrum' : spectrum, 'Frequency' : frequency}
73 
75  data
76 ):
77  fft_results = calculate_fft(data)
78  plt.plot(fft_results['Frequency'], fft_results['Spectrum'])
79  plt.show()
80 
81 def run_plot():
82  if(len(sys.argv) > 2):
83  run_name = sys.argv[1:]
84  plot_pad = plot_runs(run_name)
85  elif(len(sys.argv) == 2):
86  plot_pad = plot_runs([sys.argv[1]])
87  else:
88  print("This will probably not work, have you remembered to give input to the command?")
89  plot_pad = PlotPads()
90 
91 if __name__ == "__main__":
92  run_plot()
def x_values_for_run(number_data_points, parameters)
def loadFile(run_name, shared_names, selected='pad_position.csv')