My Project
analysisSharedFunctions.py
Go to the documentation of this file.
1 import os
2 import sys
3 import yaml
4 import numpy as np
5 import scipy.fftpack
6 
7 try:
8  from yaml import CLoader as Loader
9 except ImportError:
10  from yaml import Loader
11 
12 results_path = os.path.dirname(os.path.realpath(__file__)) + \
13  "/../../../../results/"
14 yaml_path = "/doc/yaml/parameters.yaml"
15 numeric_method = "_midpoint_"
16 
17 
18 def loadYaml(
19  run_name,
20  results_path=results_path,
21  yaml_path=yaml_path
22 ):
23  stream = open(results_path + run_name + yaml_path, 'r')
24  return yaml.load(stream, Loader=Loader)
25 
26 
27 def getLoader(
28 ):
29  sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + "/..")
30  from helpFunctions import LoadFile
31  loader = LoadFile()
32  return loader
33 
34 
35 def loadFile(
36  run_name,
37  yaml_file,
38  file_name,
39  results_folder="/results/",
40  file_ending=".csv"
41 ):
42  shared_names = yaml_file["Parameters"]["file_name"]
43  full_file_path = results_path + run_name + results_folder
44  full_file_name = shared_names + numeric_method + file_name + file_ending
45  file = np.loadtxt(full_file_path + full_file_name, delimiter=",")
46 
47  return file
48 
49 
50 def loadPhaseFile(
51  run_name,
52  file_name,
53  friction_folder="/friction_phase/",
54  use_shared_names=False
55 ):
56  loader = getLoader()
57 
58  file_name = friction_folder + file_name
59 
60  parameters = loader.load_yaml_parameters(run_name)
61  phase_data = loader.load_simulation_output(
62  parameters,
63  run_name,
64  file_name,
65  use_shared_names=use_shared_names
66  )
67  return phase_data
68 
69 def fourierSpectrum(
70  run_name,
71  data_vector
72 ):
73 
74  loader = getLoader()
75  parameters = loader.load_yaml_parameters(run_name)
76  sample_points = len(data_vector)
77  sample_spacing = loader.get_parameter(parameters, "dt") * loader.get_parameter(parameters, "save_interval_dt")
78 
79  y_values = scipy.fftpack.fft(data_vector)
80 
81 
82  x_values = np.linspace(0.0, 1.0/(2.0*sample_spacing), sample_points/2)
83 
84  y_values = 2.0/sample_points*np.abs(y_values[:sample_points//2])
85 
86  return {"x_values": x_values, "y_values": y_values}
def loadYaml(run_name, results_path=results_path, yaml_path=yaml_path)
def loadFile(run_name, yaml_file, file_name, results_folder="/results/", file_ending=".csv")
def loadPhaseFile(run_name, file_name, friction_folder="/friction_phase/", use_shared_names=False)
def fourierSpectrum(run_name, data_vector)