def interactiveCropping_fromCropped(cls): NEXUS = ViconNexus.ViconNexus() NEXUS_PYTHON_CONNECTED = NEXUS.Client.IsConnected() DATA_PATH = "C:\\Users\\HLS501\\Documents\\VICON DATA\\pyCGM2-Data\\NexusAPI\\BtkAcquisitionCreator\\sample_NOx2d\\" filenameNoExt = "gait_cropped" NEXUS.OpenTrial(str(DATA_PATH + filenameNoExt), 30) NEXUS.SetTrialRegionOfInterest(300, 400) subject = NEXUS.GetSubjectNames()[0] trialConstructorFilter = nexusFilters.NexusConstructTrialFilter( DATA_PATH, filenameNoExt, subject) trial = trialConstructorFilter.build() ma.io.write(trialConstructorFilter.m_root, "TestsNOX2d_interactiveCropping_fromCropped_openMA.c3d") trial0 = trialTools.smartTrialReader( DATA_PATH, "forCheckingInteractiveCropped\\gait_Cropped - 300-400.c3d") np.testing.assert_array_almost_equal( trial0.findChild(ma.T_TimeSequence, "LTHI").data(), trial.findChild(ma.T_TimeSequence, "LTHI").data(), decimal=2) np.testing.assert_array_almost_equal( trial0.findChild(ma.T_TimeSequence, "Voltage.EMG1").data(), trial.findChild(ma.T_TimeSequence, "Voltage.EMG1").data(), decimal=2)
def noCroppedC3d(cls): NEXUS = ViconNexus.ViconNexus() NEXUS_PYTHON_CONNECTED = NEXUS.Client.IsConnected() DATA_PATH = "C:\\Users\\HLS501\\Documents\\VICON DATA\\pyCGM2-Data\\NexusAPI\\BtkAcquisitionCreator\\sample0\\" filenameNoExt = "gait_noCropped" NEXUS.OpenTrial(str(DATA_PATH + filenameNoExt), 30) subject = NEXUS.GetSubjectNames()[0] trialConstructorFilter = nexusFilters.NexusConstructTrialFilter( filenameNoExt, subject) root = trialConstructorFilter.build() trial0 = trialTools.smartTrialReader(DATA_PATH, str(filenameNoExt + ".c3d")) # firstFrame = (root.findChild(ma.T_TimeSequence,"LTHI").startTime()+0.01)*100.0 # firstFrame0 = (trial0.findChild(ma.T_TimeSequence,"LTHI").startTime()+0.01)*100.0 # # lastFrame = root.findChild(ma.T_TimeSequence,"LTHI").duration()*100.0 # lastFrame0 = trial0.findChild(ma.T_TimeSequence,"LTHI").duration()*100.0 # # np.testing.assert_equal(firstFrame,firstFrame0) # np.testing.assert_equal(lastFrame,lastFrame0) np.testing.assert_array_almost_equal( trial0.findChild(ma.T_TimeSequence, "LTHI").data(), root.findChild(ma.T_TimeSequence, "LTHI").data(), decimal=2) np.testing.assert_array_almost_equal( trial0.findChild(ma.T_TimeSequence, "Voltage.EMG1").data(), root.findChild(ma.T_TimeSequence, "Voltage.EMG1").data(), decimal=2) ma.io.write(root, "gait_noCropped_checked.c3d")
def croppedC3d(cls): NEXUS = ViconNexus.ViconNexus() NEXUS_PYTHON_CONNECTED = NEXUS.Client.IsConnected() DATA_PATH = "C:\\Users\\HLS501\\Documents\\VICON DATA\\pyCGM2-Data\\NexusAPI\\BtkAcquisitionCreator\\sample_withx2d\\" filenameNoExt = "gait_cropped" NEXUS.OpenTrial(str(DATA_PATH + filenameNoExt), 30) subject = NEXUS.GetSubjectNames()[0] trialConstructorFilter = nexusFilters.NexusConstructTrialFilter( DATA_PATH, filenameNoExt, subject) trial = trialConstructorFilter.build() ma.io.write(trialConstructorFilter.m_root, "TestsX2d_croppedC3d_openma.c3d") trial0 = trialTools.smartTrialReader(DATA_PATH, str(filenameNoExt + ".c3d")) np.testing.assert_array_almost_equal( trial0.findChild(ma.T_TimeSequence, "LTHI").data(), trial.findChild(ma.T_TimeSequence, "LTHI").data(), decimal=2) np.testing.assert_array_almost_equal( trial0.findChild(ma.T_TimeSequence, "Voltage.EMG1").data(), trial.findChild(ma.T_TimeSequence, "Voltage.EMG1").data(), decimal=2)
def main(): plt.close("all") parser = argparse.ArgumentParser(description='CGM plot temporal Kinetics') parser.add_argument('-ps', '--pointSuffix', type=str, help='suffix of model outputs') args = parser.parse_args() NEXUS = ViconNexus.ViconNexus() NEXUS_PYTHON_CONNECTED = NEXUS.Client.IsConnected() if NEXUS_PYTHON_CONNECTED: pointSuffix = args.pointSuffix # --------------------------INPUTS ------------------------------------ DATA_PATH, modelledFilenameNoExt = NEXUS.GetTrialName() modelledFilename = modelledFilenameNoExt + ".c3d" logging.info("data Path: " + DATA_PATH) logging.info("file: " + modelledFilename) # ----- Subject ----- # need subject to find input files subjects = NEXUS.GetSubjectNames() subject = nexusTools.checkActivatedSubject(NEXUS, subjects) logging.info("Subject name : " + subject) # --------------------pyCGM2 MODEL ------------------------------ model = files.loadModel(DATA_PATH, subject) modelVersion = model.version # ----- construction of the openMA root instance ----- trialConstructorFilter = nexusFilters.NexusConstructTrialFilter( DATA_PATH, modelledFilenameNoExt, subject) openmaTrial = trialConstructorFilter.build() # --------------------pyCGM2 MODEL ------------------------------ if model.m_bodypart in [ enums.BodyPart.LowerLimb, enums.BodyPart.LowerLimbTrunk, enums.BodyPart.FullBody ]: plot.plotTemporalKinetic(DATA_PATH, modelledFilename, "LowerLimb", pointLabelSuffix=pointSuffix, exportPdf=True, openmaTrial=openmaTrial) # if model.m_bodypart in [enums.BodyPart.LowerLimbTrunk, enums.BodyPart.FullBody]: # plot.plotTemporalKinetic(DATA_PATH, modelledFilename,"Trunk", pointLabelSuffix=pointSuffix,exportPdf=True) # if model.m_bodypart in [enums.BodyPart.UpperLimb, enums.BodyPart.FullBody]: # pass # TODO plot upperlimb panel else: raise Exception("NO Nexus connection. Turn on Nexus")
def main(): plt.close("all") parser = argparse.ArgumentParser(description='CGM plot stp') parser.add_argument('-ps', '--pointSuffix', type=str, help='suffix added to pyCGM2 outputs') args = parser.parse_args() NEXUS = ViconNexus.ViconNexus() NEXUS_PYTHON_CONNECTED = NEXUS.Client.IsConnected() if NEXUS_PYTHON_CONNECTED: pointSuffix = args.pointSuffix # --------------------------INPUTS ------------------------------------ DATA_PATH, modelledFilenameNoExt = NEXUS.GetTrialName() modelledFilename = modelledFilenameNoExt + ".c3d" logging.info("data Path: " + DATA_PATH) logging.info("file: " + modelledFilename) # ----- Subject ----- # need subject to find input files subjects = NEXUS.GetSubjectNames() subject = nexusTools.checkActivatedSubject(NEXUS, subjects) logging.info("Subject name : " + subject) # ----- construction of the openMA root instance ----- trialConstructorFilter = nexusFilters.NexusConstructTrialFilter( DATA_PATH, modelledFilenameNoExt, subject) openmaTrial = trialConstructorFilter.build() # --------------------pyCGM2 MODEL ------------------------------ model = files.loadModel(DATA_PATH, subject) modelVersion = model.version # --------------------------PROCESSING -------------------------------- analysisInstance = analysis.makeAnalysis( DATA_PATH, [modelledFilename], pointLabelSuffix=pointSuffix, openmaTrials=[openmaTrial] ) # analysis structure gathering Time-normalized Kinematic and kinetic CGM outputs plot.plot_spatioTemporal(DATA_PATH, analysisInstance, exportPdf=True, outputName=modelledFilename) else: raise Exception("NO Nexus connection. Turn on Nexus")
def modelOutputs(cls): NEXUS = ViconNexus.ViconNexus() NEXUS_PYTHON_CONNECTED = NEXUS.Client.IsConnected() DATA_PATH = "C:\\Users\\HLS501\\Documents\\VICON DATA\\pyCGM2-Data\\NexusAPI\\BtkAcquisitionCreator\\sample0\\" filenameNoExt = "gait_cropped_ModelOutputDynamic" NEXUS.OpenTrial(str(DATA_PATH + filenameNoExt), 30) subject = NEXUS.GetSubjectNames()[0] trialConstructorFilter = nexusFilters.NexusConstructTrialFilter( filenameNoExt, subject) root = trialConstructorFilter.build() trial0 = trialTools.smartTrialReader(DATA_PATH, str(filenameNoExt + ".c3d")) np.testing.assert_array_almost_equal( trial0.findChild(ma.T_TimeSequence, "LTHI").data(), root.findChild(ma.T_TimeSequence, "LTHI").data(), decimal=2) ma.io.write(root, str("modelOutputsOpenMA_checked.c3d"))
def main(args): NEXUS = ViconNexus.ViconNexus() NEXUS_PYTHON_CONNECTED = NEXUS.Client.IsConnected() if NEXUS_PYTHON_CONNECTED: #-----------------------SETTINGS--------------------------------------- pointSuffix = args.pointSuffix normativeData = { "Author": args.normativeData, "Modality": args.normativeDataModality } if normativeData["Author"] == "Schwartz2008": chosenModality = normativeData["Modality"] nds = normativeDatasets.Schwartz2008( chosenModality ) # modalites : "Very Slow" ,"Slow", "Free", "Fast", "Very Fast" elif normativeData["Author"] == "Pinzone2014": chosenModality = normativeData["Modality"] nds = normativeDatasets.Pinzone2014( chosenModality) # modalites : "Center One" ,"Center Two" consistencyFlag = True if args.consistency else False # --------------------------INPUTS ------------------------------------ DATA_PATH, modelledFilenameNoExt = NEXUS.GetTrialName() modelledFilename = modelledFilenameNoExt + ".c3d" logging.info("data Path: " + DATA_PATH) logging.info("file: " + modelledFilename) # ----- Subject ----- # need subject to find input files subjects = NEXUS.GetSubjectNames() subject = nexusTools.checkActivatedSubject(NEXUS, subjects) logging.info("Subject name : " + subject) # ----- construction of the openMA root instance ----- trialConstructorFilter = nexusFilters.NexusConstructTrialFilter( DATA_PATH, modelledFilenameNoExt, subject) openmaTrial = trialConstructorFilter.build() # --------------------pyCGM2 MODEL ------------------------------ model = files.loadModel(DATA_PATH, subject) modelVersion = model.version # --------------------------PROCESSING -------------------------------- analysisInstance = analysis.makeAnalysis( DATA_PATH, [modelledFilename], pointLabelSuffix=pointSuffix, openmaTrials=[openmaTrial] ) # analysis structure gathering Time-normalized Kinematic and kinetic CGM outputs if not consistencyFlag: if model.m_bodypart in [ enums.BodyPart.LowerLimb, enums.BodyPart.LowerLimbTrunk, enums.BodyPart.FullBody ]: plot.plot_DescriptiveKinetic(DATA_PATH, analysisInstance, "LowerLimb", nds, pointLabelSuffix=pointSuffix, exportPdf=True, outputName=modelledFilename) else: if model.m_bodypart in [ enums.BodyPart.LowerLimb, enums.BodyPart.LowerLimbTrunk, enums.BodyPart.FullBody ]: plot.plot_ConsistencyKinetic(DATA_PATH, analysisInstance, "LowerLimb", nds, pointLabelSuffix=pointSuffix, exportPdf=True, outputName=modelledFilename) else: raise Exception("NO Nexus connection. Turn on Nexus")
def main(): plt.close("all") parser = argparse.ArgumentParser(description='CGM plotMAP') parser.add_argument( '-nd', '--normativeData', type=str, help='normative Data set (Schwartz2008 or Pinzone2014)', default="Schwartz2008") parser.add_argument( '-ndm', '--normativeDataModality', type=str, help= "if Schwartz2008 [VerySlow,SlowFree,Fast,VeryFast] - if Pinzone2014 [CentreOne,CentreTwo]", default="Free") parser.add_argument('-ps', '--pointSuffix', type=str, help='suffix of model outputs') args = parser.parse_args() NEXUS = ViconNexus.ViconNexus() NEXUS_PYTHON_CONNECTED = NEXUS.Client.IsConnected() if NEXUS_PYTHON_CONNECTED: #-----------------------SETTINGS--------------------------------------- pointSuffix = args.pointSuffix normativeData = { "Author": args.normativeData, "Modality": args.normativeDataModality } if normativeData["Author"] == "Schwartz2008": chosenModality = normativeData["Modality"] nds = normativeDatasets.Schwartz2008( chosenModality ) # modalites : "Very Slow" ,"Slow", "Free", "Fast", "Very Fast" elif normativeData["Author"] == "Pinzone2014": chosenModality = normativeData["Modality"] nds = normativeDatasets.Pinzone2014( chosenModality) # modalites : "Center One" ,"Center Two" # --------------------------INPUTS ------------------------------------ DATA_PATH, modelledFilenameNoExt = NEXUS.GetTrialName() modelledFilename = modelledFilenameNoExt + ".c3d" logging.info("data Path: " + DATA_PATH) logging.info("file: " + modelledFilename) # ----- Subject ----- # need subject to find input files subjects = NEXUS.GetSubjectNames() subject = nexusTools.checkActivatedSubject(NEXUS, subjects) logging.info("Subject name : " + subject) # ----- construction of the openMA root instance ----- trialConstructorFilter = nexusFilters.NexusConstructTrialFilter( DATA_PATH, modelledFilenameNoExt, subject) openmaTrial = trialConstructorFilter.build() # --------------------pyCGM2 MODEL ------------------------------ model = files.loadModel(DATA_PATH, subject) modelVersion = model.version # --------------------------PROCESSING -------------------------------- analysisInstance = analysis.makeAnalysis( DATA_PATH, [modelledFilename], None, None, None, pointLabelSuffix=pointSuffix, openmaTrials=[openmaTrial] ) # analysis structure gathering Time-normalized Kinematic and kinetic CGM outputs plot.plot_MAP(DATA_PATH, analysisInstance, nds, exportPdf=True, outputName=modelledFilename, pointLabelSuffix=pointSuffix) else: raise Exception("NO Nexus connection. Turn on Nexus")
def main(): plt.close("all") parser = argparse.ArgumentParser( description='CGM plot Normalized Kinematics') parser.add_argument( '-nd', '--normativeData', type=str, help='normative Data set (Schwartz2008 or Pinzone2014)', default="Schwartz2008") parser.add_argument( '-ndm', '--normativeDataModality', type=str, help= "if Schwartz2008 [VerySlow,SlowFree,Fast,VeryFast] - if Pinzone2014 [CentreOne,CentreTwo]", default="Free") parser.add_argument('-ps', '--pointSuffix', type=str, help='suffix of model outputs') parser.add_argument('-c', '--consistency', action='store_true', help='consistency plots') args = parser.parse_args() NEXUS = ViconNexus.ViconNexus() NEXUS_PYTHON_CONNECTED = NEXUS.Client.IsConnected() if NEXUS_PYTHON_CONNECTED: #-----------------------SETTINGS--------------------------------------- normativeData = { "Author": args.normativeData, "Modality": args.normativeDataModality } if normativeData["Author"] == "Schwartz2008": chosenModality = normativeData["Modality"] nds = normativeDatasets.Schwartz2008( chosenModality ) # modalites : "Very Slow" ,"Slow", "Free", "Fast", "Very Fast" elif normativeData["Author"] == "Pinzone2014": chosenModality = normativeData["Modality"] nds = normativeDatasets.Pinzone2014( chosenModality) # modalites : "Center One" ,"Center Two" consistencyFlag = True if args.consistency else False pointSuffix = args.pointSuffix # --------------------------INPUTS ------------------------------------ DATA_PATH, modelledFilenameNoExt = NEXUS.GetTrialName() modelledFilename = modelledFilenameNoExt + ".c3d" logging.info("data Path: " + DATA_PATH) logging.info("file: " + modelledFilename) # ----- Subject ----- # need subject to find input files subjects = NEXUS.GetSubjectNames() subject = nexusTools.checkActivatedSubject(NEXUS, subjects) logging.info("Subject name : " + subject) # --------------------pyCGM2 MODEL ------------------------------ model = files.loadModel(DATA_PATH, subject) modelVersion = model.version # ----- construction of the openMA root instance ----- trialConstructorFilter = nexusFilters.NexusConstructTrialFilter( DATA_PATH, modelledFilenameNoExt, subject) openmaTrial = trialConstructorFilter.build() # --------------------------PROCESSING -------------------------------- analysisInstance = analysis.makeAnalysis(DATA_PATH, [modelledFilename], pointLabelSuffix=pointSuffix, openmaTrials=[openmaTrial]) if not consistencyFlag: if model.m_bodypart in [ enums.BodyPart.LowerLimb, enums.BodyPart.LowerLimbTrunk, enums.BodyPart.FullBody ]: plot.plot_DescriptiveKinematic(DATA_PATH, analysisInstance, "LowerLimb", nds, pointLabelSuffix=pointSuffix, exportPdf=True, outputName=modelledFilename) #plot_DescriptiveKinematic(DATA_PATH,analysis,bodyPart,normativeDataset,pointLabelSuffix=None,type="Gait",exportPdf=False,outputName=None): if model.m_bodypart in [ enums.BodyPart.LowerLimbTrunk, enums.BodyPart.FullBody ]: plot.plot_DescriptiveKinematic(DATA_PATH, analysisInstance, "Trunk", nds, pointLabelSuffix=pointSuffix, exportPdf=True, outputName=modelledFilename) if model.m_bodypart in [ enums.BodyPart.UpperLimb, enums.BodyPart.FullBody ]: pass # TODO plot upperlimb panel else: if model.m_bodypart in [ enums.BodyPart.LowerLimb, enums.BodyPart.LowerLimbTrunk, enums.BodyPart.FullBody ]: plot.plot_ConsistencyKinematic(DATA_PATH, analysisInstance, "LowerLimb", nds, pointLabelSuffix=pointSuffix, exportPdf=True, outputName=modelledFilename) if model.m_bodypart in [ enums.BodyPart.LowerLimbTrunk, enums.BodyPart.FullBody ]: plot.plot_ConsistencyKinematic(DATA_PATH, analysisInstance, "Trunk", nds, pointLabelSuffix=pointSuffix, exportPdf=True, outputName=modelledFilename) if model.m_bodypart in [ enums.BodyPart.UpperLimb, enums.BodyPart.FullBody ]: pass # TODO plot upperlimb panel else: raise Exception("NO Nexus connection. Turn on Nexus")