def test_openFile(self): contentYaml = files.openFile( pyCGM2.TEST_DATA_PATH + "\\LowLevel\\IO\\Hanibal_files\\", "file.yaml") contentJson = files.openFile( pyCGM2.TEST_DATA_PATH + "\\LowLevel\\IO\\Hanibal_files\\", "file.json") assert contentYaml != False assert contentJson != False files.saveJson( pyCGM2.TEST_DATA_PATH + "\\LowLevel\\IO\\Hanibal_files\\", "testJsonOut", contentJson)
def main(args): DATA_PATH = os.getcwd()+"\\" # User Settings if os.path.isfile(DATA_PATH + args.userFile): userSettings = files.openFile(DATA_PATH,args.userFile) else: raise Exception ("user setting file not found") # internal (expert) Settings if args.expertFile: if os.path.isfile(DATA_PATH + args.expertFile): internalSettings = files.openFile(DATA_PATH,args.expertFile) else: raise Exception ("expert setting file not found") else: internalSettings = None # translators if os.path.isfile(DATA_PATH + "CGM1_1.translators"): translators = files.openFile(DATA_PATH,"CGM1_1.translators") else: translators = None # --- Manager ---- manager = ModelManager.CGM1_1ConfigManager(userSettings,localInternalSettings=internalSettings,localTranslators=translators) manager.contruct() finalSettings = manager.getFinalSettings() files.prettyDictPrint(finalSettings) logging.info("=============Calibration=============") model,finalAcqStatic = cgm1_1.calibrate(DATA_PATH, manager.staticTrial, manager.translators, manager.requiredMp, manager.optionalMp, manager.leftFlatFoot, manager.rightFlatFoot, manager.markerDiameter, manager.pointSuffix, displayCoordinateSystem=True) btkTools.smartWriter(finalAcqStatic, str(DATA_PATH+finalSettings["Calibration"]["StaticTrial"]))#[:-4]+"-pyCGM2modelled.c3d")) logging.info("Static Calibration -----> Done") manager.updateMp(model) #files.prettyDictPrint(manager.finalSettings) logging.info("=============Fitting=============") for trial in manager.dynamicTrials: mfpa = None if trial["Mfpa"] == "Auto" else trial["Mfpa"] reconstructFilenameLabelled = trial["File"] acqGait = cgm1_1.fitting(model,DATA_PATH, reconstructFilenameLabelled, manager.translators, manager.markerDiameter, manager.pointSuffix, mfpa, manager.momentProjection, displayCoordinateSystem=True) btkTools.smartWriter(acqGait, str(DATA_PATH+reconstructFilenameLabelled))#[:-4]+"-pyCGM2modelled.c3d")) logging.info("---->dynamic trial (%s) processed" %(reconstructFilenameLabelled)) logging.info("=============Writing of final Settings=============") i = 0 while os.path.exists("CGM1.1 [%s].completeSettings" % i): i += 1 filename = "CGM1.1 [" + str(i)+"].completeSettings" files.saveJson(DATA_PATH, filename, finalSettings) logging.info("---->complete settings (%s) exported" %(filename)) raw_input("Press return to exit..")
def save(self,DATA_PATH,filename): if self.__normativeData is not None: files.saveJson(DATA_PATH, filename, self.__normativeData) else: raise Exception("[pyCGM2] Normative data is empty")
def save(self, DATA_PATH, pipelineFilename): files.saveJson(DATA_PATH, pipelineFilename, self.pipSettings)
def main(args): DATA_PATH = os.getcwd() + "\\" # User Settings if os.path.isfile(DATA_PATH + args.userFile): userSettings = files.openFile(DATA_PATH, args.userFile) else: raise Exception("user setting file not found") # internal (expert) Settings if args.expertFile: if os.path.isfile(DATA_PATH + args.expertFile): internalSettings = files.openFile(DATA_PATH, args.expertFile) else: raise Exception("expert setting file not found") else: internalSettings = None # --- Manager ---- manager = EmgManager.EmgConfigManager( userSettings, localInternalSettings=internalSettings) manager.contruct() finalSettings = manager.getFinalSettings() files.prettyDictPrint(finalSettings) # reconfiguration of emg settings as lists EMG_LABELS, EMG_MUSCLES, EMG_CONTEXT, NORMAL_ACTIVITIES = manager.getEmgConfiguration( ) #----- rectified view ------- rectTrials = manager.temporal_trials analysis.processEMG( DATA_PATH, rectTrials, EMG_LABELS, highPassFrequencies=manager.BandpassFrequencies, envelopFrequency=manager.EnvelopLowpassFrequency, fileSuffix=None) # high pass then low pass for all c3ds for trial in rectTrials: plot.plotTemporalEMG(DATA_PATH, trial, EMG_LABELS, EMG_MUSCLES, EMG_CONTEXT, NORMAL_ACTIVITIES, exportPdf=True, rectify=manager.rectifyFlag) #----- Gait normalized envelop ------- envTrials = manager.gaitNormalized_trials analysis.processEMG( DATA_PATH, envTrials, EMG_LABELS, highPassFrequencies=manager.BandpassFrequencies, envelopFrequency=manager.EnvelopLowpassFrequency, fileSuffix=None) # high pass then low pass for all c3ds emgAnalysisInstance = analysis.makeEmgAnalysis(DATA_PATH, envTrials, EMG_LABELS, None, None) filename = manager.title if not manager.consistencyFlag: plot.plotDescriptiveEnvelopEMGpanel(DATA_PATH, emgAnalysisInstance, EMG_LABELS, EMG_MUSCLES, EMG_CONTEXT, NORMAL_ACTIVITIES, normalized=False, exportPdf=True, outputName=filename) else: plot.plotConsistencyEnvelopEMGpanel(DATA_PATH, emgAnalysisInstance, EMG_LABELS, EMG_MUSCLES, EMG_CONTEXT, NORMAL_ACTIVITIES, normalized=False, exportPdf=True, outputName=filename) logging.info("=============Writing of final Settings=============") files.saveJson(DATA_PATH, str(filename + "-EMG.completeSettings"), finalSettings) logging.info("---->complete settings (%s) exported" % (str(filename + "-EMG.completeSettings"))) raw_input("Press return to exit..")
def exportJson_Schwartz2008(path, name="Schwartz2008.json"): """generate json from schwartz2008 dataset :param path: path :type path: string :param name: filename :type name: string :return: json file :rtype: file normativeDatasets.exportJson_Schwartz2008(DATA_PATH,name="test.json") """ def constructJson(dataset, dataset_label, modalityLabel, data): dataset[dataset_label].update({modalityLabel: dict()}) for label in data.keys(): mean = data[label]["mean"] sd = data[label]["sd"] label = label.replace(".", "") dataset[dataset_label][modalityLabel].update( {label: { 'X': None, 'Y': None, 'Z': None }}) outX = [0, mean[0, 0] - sd[0, 0], mean[0, 0] + sd[0, 0]] for i in range(1, mean.shape[0]): values = [i * 2, mean[i, 0] - sd[i, 0], mean[i, 0] + sd[i, 0]] outX.append(values) outY = [0, mean[0, 1] - sd[0, 1], mean[0, 1] + sd[0, 1]] for i in range(1, mean.shape[0]): values = [i * 2, mean[i, 1] - sd[i, 1], mean[i, 1] + sd[i, 1]] outY.append(values) outZ = [0, mean[0, 2] - sd[0, 2], mean[0, 2] + sd[0, 2]] for i in range(1, mean.shape[0]): values = [i * 2, mean[i, 2] - sd[i, 2], mean[i, 2] + sd[i, 2]] outZ.append(values) dataset[dataset_label][modalityLabel][label]["X"] = outX dataset[dataset_label][modalityLabel][label]["Y"] = outY dataset[dataset_label][modalityLabel][label]["Z"] = outZ dataset = {"Schwartz2008": dict()} nds = Schwartz2008("VerySlow") nds.constructNormativeData() constructJson(dataset, "Schwartz2008", "VerySlow", nds.data) nds = Schwartz2008("Slow") nds.constructNormativeData() constructJson(dataset, "Schwartz2008", "Slow", nds.data) nds = Schwartz2008("Free") nds.constructNormativeData() constructJson(dataset, "Schwartz2008", "Free", nds.data) nds = Schwartz2008("Fast") nds.constructNormativeData() constructJson(dataset, "Schwartz2008", "Fast", nds.data) nds = Schwartz2008("VeryFast") nds.constructNormativeData() constructJson(dataset, "Schwartz2008", "VeryFast", nds.data) files.saveJson(path, name, dataset)
def export(self,outputName, path=None): out=OrderedDict() if self.analysis.stpStats != {}: processedKeys=list() for keys in self.analysis.stpStats.keys(): if keys not in processedKeys: processedKeys.append(keys) else: raise Exception ( "[pyCGM2] - duplicated keys[ %s - %s] detected" %(keys[0],keys[1])) if keys[0] not in out.keys(): out[keys[0]]=dict() out[keys[0]][keys[1]]=dict() out[keys[0]][keys[1]]["values"]=self.analysis.stpStats[keys]["values"].tolist() else: out[keys[0]][keys[1]]=dict() out[keys[0]][keys[1]]["values"]=self.analysis.stpStats[keys]["values"].tolist() if self.analysis.kinematicStats.data != {}: processedKeys=list() for keys in self.analysis.kinematicStats.data.keys(): if not np.all( self.analysis.kinematicStats.data[keys]["mean"]==0): if keys not in processedKeys: processedKeys.append(keys) else: raise Exception ( "[pyCGM2] - duplicated keys[ %s - %s] detected" %(keys[0],keys[1])) if keys[0] not in out.keys(): out[keys[0]]=dict() out[keys[0]][keys[1]]=dict() out[keys[0]][keys[1]]["values"]= {"X":[],"Y":[],"Z":[]} else: out[keys[0]][keys[1]]=dict() out[keys[0]][keys[1]]["values"]= {"X":[],"Y":[],"Z":[]} li_X = list() for cycle in self.analysis.kinematicStats.data[keys]["values"]: li_X.append(cycle[:,0].tolist()) li_Y = list() for cycle in self.analysis.kinematicStats.data[keys]["values"]: li_Y.append(cycle[:,1].tolist()) li_Z = list() for cycle in self.analysis.kinematicStats.data[keys]["values"]: li_Z.append(cycle[:,2].tolist()) out[keys[0]][keys[1]]["values"]["X"] = li_X out[keys[0]][keys[1]]["values"]["Y"] = li_Y out[keys[0]][keys[1]]["values"]["Z"] = li_Z if self.analysis.kineticStats.data != {}: processedKeys=list() for keys in self.analysis.kineticStats.data.keys(): if not np.all( self.analysis.kineticStats.data[keys]["mean"]==0): if keys not in processedKeys: processedKeys.append(keys) else: raise Exception ( "[pyCGM2] - duplicated keys[ %s - %s] detected" %(keys[0],keys[1])) if keys[0] not in out.keys(): out[keys[0]]=dict() out[keys[0]][keys[1]]=dict() out[keys[0]][keys[1]]["values"]= {"X":[],"Y":[],"Z":[]} else: out[keys[0]][keys[1]]=dict() out[keys[0]][keys[1]]["values"]= {"X":[],"Y":[],"Z":[]} li_X = list() for cycle in self.analysis.kineticStats.data[keys]["values"]: li_X.append(cycle[:,0].tolist()) li_Y = list() for cycle in self.analysis.kineticStats.data[keys]["values"]: li_Y.append(cycle[:,1].tolist()) li_Z = list() for cycle in self.analysis.kineticStats.data[keys]["values"]: li_Z.append(cycle[:,2].tolist()) out[keys[0]][keys[1]]["values"]["X"] = li_X out[keys[0]][keys[1]]["values"]["Y"] = li_Y out[keys[0]][keys[1]]["values"]["Z"] = li_Z if self.analysis.emgStats.data != {}: processedKeys=list() for keys in self.analysis.emgStats.data.keys(): if not np.all( self.analysis.emgStats.data[keys]["mean"]==0): if keys not in processedKeys: processedKeys.append(keys) else: raise Exception ( "[pyCGM2] - duplicated keys[ %s - %s] detected" %(keys[0],keys[1])) if keys[0] not in out.keys(): out[keys[0]]=dict() out[keys[0]][keys[1]]=dict() out[keys[0]][keys[1]]["values"]=[] else: out[keys[0]][keys[1]]=dict() out[keys[0]][keys[1]]["values"]=[] li = list() for cycle in self.analysis.emgStats.data[keys]["values"]: li.append(cycle[:,0].tolist()) out[keys[0]][keys[1]]["values"] = li files.saveJson(path,outputName,out) return out
def export(self, outputName, path=None): out = dict() if self.analysis.kinematicStats.data != {}: for keys in self.analysis.kinematicStats.data.keys(): if not np.all( self.analysis.kinematicStats.data[keys]["mean"] == 0): out[keys[0]] = dict() out[keys[0]][keys[1]] = dict() out[keys[0]][keys[1]]["values"] = { "X": [], "Y": [], "Z": [] } li_X = list() for cycle in self.analysis.kinematicStats.data[keys][ "values"]: li_X.append(cycle[:, 0].tolist()) li_Y = list() for cycle in self.analysis.kinematicStats.data[keys][ "values"]: li_Y.append(cycle[:, 1].tolist()) li_Z = list() for cycle in self.analysis.kinematicStats.data[keys][ "values"]: li_Z.append(cycle[:, 2].tolist()) out[keys[0]][keys[1]]["values"]["X"] = li_X out[keys[0]][keys[1]]["values"]["Y"] = li_Y out[keys[0]][keys[1]]["values"]["Z"] = li_Z if self.analysis.kineticStats.data != {}: for keys in self.analysis.kineticStats.data.keys(): if not np.all( self.analysis.kineticStats.data[keys]["mean"] == 0): out[keys[0]] = dict() out[keys[0]][keys[1]] = dict() out[keys[0]][keys[1]]["values"] = { "X": [], "Y": [], "Z": [] } li_X = list() for cycle in self.analysis.kineticStats.data[keys][ "values"]: li_X.append(cycle[:, 0].tolist()) li_Y = list() for cycle in self.analysis.kineticStats.data[keys][ "values"]: li_Y.append(cycle[:, 1].tolist()) li_Z = list() for cycle in self.analysis.kineticStats.data[keys][ "values"]: li_Z.append(cycle[:, 2].tolist()) out[keys[0]][keys[1]]["values"]["X"] = li_X out[keys[0]][keys[1]]["values"]["Y"] = li_Y out[keys[0]][keys[1]]["values"]["Z"] = li_Z if self.analysis.emgStats.data != {}: for keys in self.analysis.emgStats.data.keys(): if not np.all(self.analysis.emgStats.data[keys]["mean"] == 0): out[keys[0]] = dict() out[keys[0]][keys[1]] = dict() out[keys[0]][keys[1]]["values"] = [] li = list() for cycle in self.analysis.emgStats.data[keys]["values"]: li.append(cycle[:, 0].tolist()) out[keys[0]][keys[1]]["values"] = li files.saveJson(path, outputName, out)