In [1]:
import unittest
import numpy as np
In [78]:
from sklearn.externals import joblib
clf = joblib.load('../filename.pkl')
In [242]:
test_values = [[45,45,0]]
clf.predict_proba(test_values)
Out[242]:
In [236]:
def getPixelValue(val):
# takes a value between 0-33.3333
# Returns an array of RGB colors ranging between White -> Blue
# Values Close to 0 are mapped to White
# Values clost to 33.333 are mapped to Blue
# It should be a gradient between white to blue for 0 -> 33.333
# return black if val <= 0
if val <= 0:
return [0,0,0]
if val > .33333:
return [0,0,255]
color = int(255 - np.round(765 * val ))
return [color,color,255]
def getPixelsValue(val):
# takes a value between 0-1
# returns an array that represents rgb values for three pixels
# The pixels 'Fill up' from 0 to 1
# values between [0:1/3) will fill up the first pixel
# values between [1/3:2/3) will have the first pixel 'full' and filling the second
# values between [2/3:1] will have the first two pixels 'full' and the third one filling
# pixels are black until they start filling
delimeter = 1.0 / 3.0
if(int(val / delimeter) <= 0):
return [getPixelValue(val),[0,0,0],[0,0,0]]
if(int(val / delimeter) == 1):
return [[0,0,255],getPixelValue(val % delimeter),[0,0,0]]
if(int(val / delimeter) == 2):
return [[0,0,255],[0,0,255],getPixelValue(val % delimeter)]
if(int(val / delimeter) >= 3):
return [[0,0,255],[0,0,255],[0,0,255]]
In [237]:
val1 = 1.0 / 3.0
val2 = .1
val3 = .5 # 1 + 1/6
val4 = -1
delimeter = 1.0 / 3.0
print val1 / delimeter
print val1 % delimeter
print val2 / delimeter
print val2 % delimeter
print int(val3 / delimeter)
print val3 % delimeter
print int(val4 / delimeter)
print val4 % delimeter
In [238]:
class GetPixelValueTest(unittest.TestCase):
def test_value_0(self):
self.assertEqual([0,0,0], getPixelValue(0))
def test_value_00012(self):
self.assertEqual([255,255,255], getPixelValue(0.00012))
def test_value_33_33(self):
self.assertEqual([0,0,255], getPixelValue(.33333))
def test_value_33_34(self):
self.assertEqual([0,0,255], getPixelValue(.3334))
def test_value_33(self):
self.assertEqual([3,3,255], getPixelValue(.33))
def test_value_15(self):
self.assertEqual([140,140,255], getPixelValue(.15))
def test_value_11(self):
self.assertEqual([171,171,255], getPixelValue(.11))
def test_value_negative(self):
self.assertEqual([0,0,0], getPixelValue(-1))
In [239]:
suite = unittest.TestLoader().loadTestsFromTestCase(GetPixelValueTest)
unittest.TextTestRunner(verbosity=2).run(suite)
Out[239]:
In [240]:
class GetPixelsValueTest(unittest.TestCase):
def test_value_negative1(self):
self.assertEqual([[0,0,0],[0,0,0],[0,0,0]], getPixelsValue(-1))
def test_value_0(self):
self.assertEqual([[0,0,0],[0,0,0],[0,0,0]], getPixelsValue(0))
def test_value_15(self):
self.assertEqual([[140,140,255],[0,0,0],[0,0,0]], getPixelsValue(.15))
def test_value_11(self):
self.assertEqual([[171,171,255],[0,0,0],[0,0,0]], getPixelsValue(.11))
def test_value_33333(self):
self.assertEqual([[0,0,255],[0,0,0],[0,0,0]], getPixelsValue(.33333))
def test_value_33334(self):
self.assertEqual([[0,0,255],[255,255,255],[0,0,0]], getPixelsValue(.3334))
def test_value_5(self):
self.assertEqual([[0,0,255],[127,127,255],[0,0,0]], getPixelsValue(.5))
def test_value_65(self):
self.assertEqual([[0,0,255],[13,13,255],[0,0,0]], getPixelsValue(.65))
def test_value_66666(self):
self.assertEqual([[0,0,255],[0,0,255],[0,0,0]], getPixelsValue(2.0/3.0))
def test_value_67(self):
self.assertEqual([[0,0,255],[0,0,255],[252,252,255] ], getPixelsValue(.67))
def test_value_8(self):
self.assertEqual([[0,0,255],[0,0,255],[153,153,255] ], getPixelsValue(.8))
def test_value_99(self):
self.assertEqual([[0,0,255],[0,0,255],[8,8,255] ], getPixelsValue(.99))
def test_value_one(self):
self.assertEqual([[0,0,255],[0,0,255],[0,0,255] ], getPixelsValue(1))
def test_value_one1(self):
self.assertEqual([[0,0,255],[0,0,255],[0,0,255] ], getPixelsValue(1.1))
In [241]:
suite = unittest.TestLoader().loadTestsFromTestCase(GetPixelsValueTest)
unittest.TextTestRunner(verbosity=2).run(suite)
Out[241]:
In [2]:
import sys
sys.path.insert(0, '../calibrate_sense_hat')
sys.path.insert(0, '../test/mocks/sense_hat')
from sense_hat import SenseHat
from calibrate_sense_hat import BlxSenseHat
In [3]:
sense = SenseHat()
blxsense = BlxSenseHat()
In [3]:
sense.rotation
Out[3]:
In [3]:
probs = blxsense._predict_direction([[15,30,30]])
print probs
In [11]:
for prob in probs[0]:
pixels = blxsense._getPixelsValue(prob)
print pixels
# pixels
In [12]:
blxsense._set_predicted_pixels(probs)
In [5]:
blxsense._show_prediction([[15,30,30]])
In [163]:
def convert_orientation(orientation, shift=0):
orientation = np.array([raw_orientation['pitch'], raw_orientation['roll'], raw_orientation['yaw'], ])
orientation = np.round(orientation).astype(int)
idx = np.where(orientation >180)
orientation[idx] = orientation[idx] - 360
orientation[-1] = 90 - orientation[-1]
return orientation
In [178]:
class Convert_orientationTest(unittest.TestCase):
def test_value_negative1(self):
self.assertSequenceEqual(convert_orientation({'pitch': 4.543015803, 'roll': 331.0217818, 'yaw': 119.975442}), [1,2,3])
In [179]:
suite = unittest.TestLoader().loadTestsFromTestCase(Convert_orientationTest)
unittest.TextTestRunner(verbosity=2).run(suite)
Out[179]:
In [15]:
raw_orientation = {'pitch': 4.543015803, 'roll': 331.0217818, 'yaw': 119.975442}
raw_orientation = {'pitch': 5.002993612, 'roll': 34.52596763, 'yaw': 113.5100396}
raw_orientation
Out[15]:
In [16]:
orientation = blxsense.convert_orientation(raw_orientation)
orientation
Out[16]:
In [17]:
probs = blxsense._predict_direction(orientation.reshape(1,-1))
probs
Out[17]:
In [18]:
blxsense._set_predicted_pixels([[ 0.9, 0.1, 0. , 0. ]])
In [ ]: