def highDimQuaternionSimilarity(euler=False): quats_h_large=m.getQuaternionSegmentsByRawData(m.readCSVfile("captures/HorizontalArmSpin-Jibran.csv"),quats.rearrangeQuatsForLatentSpaceAlgorithm(quats.rawDataFileToQuats("captures/raw/HorizontalArmSpin-Jibran"),euler)) quats_h_small=m.getQuaternionSegmentsByRawData(m.readCSVfile("captures/HorizontalArmSpinLittleCircles-Jibran.csv"),quats.rearrangeQuatsForLatentSpaceAlgorithm(quats.rawDataFileToQuats("captures/raw/HorizontalArmSpinLittleCircles-Jibran"),euler)) names = ['Big','Big','Big','Big','Big','Big','Big','Small','Small','Small','Small','Small','Small','Small','Small','Small'] weights = [1]*np.shape((quats_h_large+quats_h_small)[0])[1] if euler: title="Similarity Matrix using high dimensional euler angle data" else: title="Similarity Matrix using high dimensional quaternion data" m.similarityMatrix(quats_h_large+quats_h_small,names,weights,"Similarity Matrix using high dimensional euler angle data")
def lowDimQuaternionSimilarity(n_components=3,euler=False): (quats_h_large,weights_large)=quats.doPCAonQuats("captures/raw/HorizontalArmSpin-Jibran",euler,n_components=n_components) (quats_h_small,weights_small)=quats.doPCAonQuats("captures/raw/HorizontalArmSpinLittleCircles-Jibran",euler,n_components=n_components) segments_quats_h_large=m.getQuaternionSegmentsByRawData(m.readCSVfile("captures/HorizontalArmSpin-Jibran.csv"),quats_h_large) segments_quats_h_small=m.getQuaternionSegmentsByRawData(m.readCSVfile("captures/HorizontalArmSpinLittleCircles-Jibran.csv"),quats_h_small) names = ['Big','Big','Big','Big','Big','Big','Big','Small','Small','Small','Small','Small','Small','Small','Small','Small'] weights = [1]*np.shape((segments_quats_h_large+segments_quats_h_small)[0])[1] #TODO: AVERAGE THE WEIGHTS!! if euler: title="Similarity Matrix using low dimensional euler angle data" else: title="Similarity Matrix using low dimensional quaternion data" m.similarityMatrix(segments_quats_h_large+segments_quats_h_small,names,weights,title)
def __init__(self, data, absolutePathToVideo): if type(data) == str: data = readCSVfile(data) self.graph = graph(data) self.video = videoController(absolutePathToVideo) self.coordinator = coordinator(self.graph, self.video) self.coordinator.start()
def __init__(self, split=0.5, pca_dims=3): print "Initialising reference data..." bar = progressbar.ProgressBar(maxval=7, widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()]) bar.start(); progress = 0 self.__data_V0=m.readCSVfile("captures/VerticalArmSpin-Dan.csv") self.__data_V1=m.readCSVfile("captures/VerticalArmSpin-Jibran.csv") self.__data_H0=m.readCSVfile("captures/HorizontalArmSpin-Dan.csv") self.__data_H1=m.readCSVfile("captures/HorizontalArmSpin-Jibran.csv") self.__data_H2=m.readCSVfile("captures/HorizontalArmSpinLittleCircles-Jibran.csv") progress += 1; bar.update(progress) (self.__HDsegs_V0,self.__LDsegs_V0,_) = m.getHighAndLowDimSegments(self.__data_V0, n_components=pca_dims, smoothingWindow=15); progress += 1; bar.update(progress) (self.__HDsegs_V1,self.__LDsegs_V1,_) = m.getHighAndLowDimSegments(self.__data_V1, n_components=pca_dims, smoothingWindow=25); progress += 1; bar.update(progress) (self.__HDsegs_H0,self.__LDsegs_H0,_) = m.getHighAndLowDimSegments(self.__data_H0, n_components=pca_dims, smoothingWindow=20); progress += 1; bar.update(progress) (self.__HDsegs_H1,self.__LDsegs_H1,_) = m.getHighAndLowDimSegments(self.__data_H1, n_components=pca_dims, smoothingWindow=20); progress += 1; bar.update(progress) (self.__HDsegs_H2,self.__LDsegs_H2,_) = m.getHighAndLowDimSegments(self.__data_H2, n_components=pca_dims, smoothingWindow=15); progress += 1; bar.update(progress) self.HDtraining = {'VerticalArmSpin - Dan':self.__HDsegs_V0[:(int(len(self.__HDsegs_V0)*split))], 'VerticalArmSpin - Jibran':self.__HDsegs_V1[:(int(len(self.__HDsegs_V1)*split))], 'HorizontalArmSpin - Dan':self.__HDsegs_H0[:(int(len(self.__HDsegs_H0)*split))], 'HorizontalArmSpin - Jibran':self.__HDsegs_H1[:(int(len(self.__HDsegs_H1)*split))], 'HorizontalArmSpin - Small - Jibran':self.__HDsegs_H2[:(int(len(self.__HDsegs_H2)*split))]} self.LDtraining = {'VerticalArmSpin - Dan':self.__LDsegs_V0[:(int(len(self.__LDsegs_V0)*split))], 'VerticalArmSpin - Jibran':self.__LDsegs_V1[:(int(len(self.__LDsegs_V1)*split))], 'HorizontalArmSpin - Dan':self.__LDsegs_H0[:(int(len(self.__LDsegs_H0)*split))], 'HorizontalArmSpin - Jibran':self.__LDsegs_H1[:(int(len(self.__LDsegs_H1)*split))], 'HorizontalArmSpin - Small - Jibran':self.__LDsegs_H2[:(int(len(self.__LDsegs_H2)*split))]} self.HDtest = {'VerticalArmSpin - Dan':self.__HDsegs_V0[(int(len(self.__HDsegs_V0)*split)):], 'VerticalArmSpin - Jibran':self.__HDsegs_V1[(int(len(self.__HDsegs_V1)*split)):], 'HorizontalArmSpin - Dan':self.__HDsegs_H0[(int(len(self.__HDsegs_H0)*split)):], 'HorizontalArmSpin - Jibran':self.__HDsegs_H1[(int(len(self.__HDsegs_H1)*split)):], 'HorizontalArmSpin - Small - Jibran':self.__HDsegs_H2[(int(len(self.__HDsegs_H2)*split)):]} self.LDtest = {'VerticalArmSpin - Dan':self.__LDsegs_V0[(int(len(self.__LDsegs_V0)*split)):], 'VerticalArmSpin - Jibran':self.__LDsegs_V1[(int(len(self.__LDsegs_V1)*split)):], 'HorizontalArmSpin - Dan':self.__LDsegs_H0[(int(len(self.__LDsegs_H0)*split)):], 'HorizontalArmSpin - Jibran':self.__LDsegs_H1[(int(len(self.__LDsegs_H1)*split)):], 'HorizontalArmSpin - Small - Jibran':self.__LDsegs_H2[(int(len(self.__LDsegs_H2)*split)):]} progress += 1; bar.update(progress) bar.finish()
def allMotionslowDimRawSimilarity(n_components=3,savePlot=False,title="Similarity matrix"): # Load files and get segments (raw_v1,weights_v1)=m.getLowDimensionalSegments(m.readCSVfile("captures/VerticalArmSpin-Dan.csv"),n_components) (raw_v2,weights_v2)=m.getLowDimensionalSegments(m.readCSVfile("captures/VerticalArmSpin-Jibran.csv"),n_components) (raw_h1,weights_h1)=m.getLowDimensionalSegments(m.readCSVfile("captures/HorizontalArmSpin-Dan.csv"),n_components) (raw_h2,weights_h2)=m.getLowDimensionalSegments(m.readCSVfile("captures/HorizontalArmSpin-Jibran.csv"),n_components) (raw_h3,weights_h3)=m.getLowDimensionalSegments(m.readCSVfile("captures/HorizontalArmSpinLittleCircles-Jibran.csv"),n_components) # Discard bad segments raw_h1 = raw_h1[4:] raw_v2 = raw_v2[1:5] # Make name labels namesV1 = ["V1"]*len(raw_v1) namesV2 = ["V2"]*len(raw_v2) namesH1 = ["H1"]*len(raw_h1) namesH2 = ["H2"]*len(raw_h2) namesH3 = ["H3"]*len(raw_h3) names = namesV1+namesV2+namesH1+namesH2+namesH3 # Calculate average weights averageWeights = [(a+b+c+d+e)/5.0 for (a,b,c,d,e) in zip(weights_v1,weights_v2,weights_h1,weights_h2,weights_h3)] # Crunch similarity matrix m.similarityMatrix(raw_v1+raw_v2+raw_h1+raw_h2+raw_h3,names,averageWeights,title,savePlot)
def plotSegments(): m.getLowDimensionalSegments(m.readCSVfile("captures/HorizontalArmSpin-Jibran.csv"),n_components=1,plt=True,title="Large horizontal arm spin segments") m.getLowDimensionalSegments(m.readCSVfile("captures/HorizontalArmSpinLittleCircles-Jibran.csv"),n_components=1,plt=True,title="Small horizontal arm spin segments")
def lowDimRawSimilarity(n_components=3): (raw_h_large,weights_large)=m.getLowDimensionalSegments(m.readCSVfile("captures/HorizontalArmSpin-Jibran.csv"),n_components) (raw_h_small,weights_small)=m.getLowDimensionalSegments(m.readCSVfile("captures/HorizontalArmSpinLittleCircles-Jibran.csv"),n_components) names = ['Big','Big','Big','Big','Big','Big','Big','Small','Small','Small','Small','Small','Small','Small','Small','Small'] averageWeights = [(a+b)/2.0 for (a,b) in zip(weights_large,weights_small)] m.similarityMatrix(raw_h_large+raw_h_small,names,averageWeights,"Similarity Matrix using raw sensor data projected to the latent space")
def highDimRawSimilarity(): raw_h_large=m.getHighDimensionalSegments(m.readCSVfile("captures/HorizontalArmSpin-Jibran.csv")) raw_h_small=m.getHighDimensionalSegments(m.readCSVfile("captures/HorizontalArmSpinLittleCircles-Jibran.csv")) names = ['Big','Big','Big','Big','Big','Big','Big','Small','Small','Small','Small','Small','Small','Small','Small','Small'] weights = [1]*np.shape((raw_h_large+raw_h_small)[0])[1] m.similarityMatrix(raw_h_large+raw_h_small,names,weights,"Similarity Matrix using high dimensional raw sensor data")