-
Notifications
You must be signed in to change notification settings - Fork 2
/
DIMENSIONS.py
118 lines (93 loc) · 2.57 KB
/
DIMENSIONS.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import functools
import numpy as np
def exception_handler(f):
@functools.wraps(f)
def func(*args, **kwargs):
try:
return f(*args, **kwargs)
except Exception as e:
print('Caught an exception in', f.__name__)
try:
print("\n{}".format(eval(f.__name__).__doc__))
except:
pass
print(e)
raise SystemExit
return func
@exception_handler
class SourceData:
"""
Feed collected data here, no matter dimension.
Arg keys: Matrix, X, Y, CSV.
Returns: Matrix, Xpoints, Ypoints.
Example: y = SourceData(CSV='data.csv').Ypoints
"""
def __init__(self, **kwargs):
if kwargs is not None:
for key, value in kwargs.items():
if key == 'Matrix':
self.Xpoints = self._genonedee(value)[0]
self.Ypoints = self._genonedee(value)[1]
self.Matrix = value
elif key == 'X':
self.Xpoints = value
elif key == 'Y':
self.Ypoints = value
elif key == 'CSV':
self.Xpoints = self._genonedee(self._fileinput(value))[0]
self.Ypoints = self._genonedee(self._fileinput(value))[1]
self.Matrix = self._fileinput(value)
if len(locals()) > 1:
self.Matrix = self._gentwodee(self.Xpoints, self.Ypoints)
#else: raise Exception
def parse_csv(self, inputfile):
matrix = []
f = open(inputfile, "r")
lines = f.read().split("\n")
for line in lines:
if line != "": # add other needed checks to skip titles
array = line.split(",")
matrix.append(array)
return matrix
def _fileinput(self, FILE):
return self.parse_csv(FILE)
def _genonedee(self, matrix):
x, y = [], []
for i in matrix:
x.append((i)[0])
y.append((i)[1])
return x, y
def _gentwodee(self, Xpoints, Ypoints):
w, h = 2, len(Xpoints)
matrix = [[0 for x in range(w)] for y in range(h)]
for i in range(0,h):
matrix[i][0] = Xpoints[i]
matrix[i][1] = Ypoints[i]
return matrix
if len(locals()) > 1:
self.Matrix = self._gentwodee(self.Xpoints, self.Ypoints)
#else: raise Exception
def parse_csv(inputfile):
matrix = []
f = open(inputfile, "r")
lines = f.read().split("\n")
for line in lines:
if line != "": # add other needed checks to skip titles
array = line.split(",")
matrix.append(array)
return matrix
def _fileinput(FILE):
return parse_csv(FILE)
def _genonedee(self, matrix):
x, y = [], []
for i in matrix:
x.append((i)[0])
y.append((i)[1])
return x, y
def _gentwodee(self, Xpoints, Ypoints):
w, h = 2, len(Xpoints)
matrix = [[0 for x in range(w)] for y in range(h)]
for i in range(0,h):
matrix[i][0] = Xpoints[i]
matrix[i][1] = Ypoints[i]
return matrix