viconnexusapi
version 1.0.3
ViconNexus
- class pyCGM2.External.NexusSDK.viconnexusapi.ViconNexus.ViconNexus(host='localhost')
ViconNexus Creates a connection to Vicon Nexus for offline data access
Documentation and usage examples provided assume that an object named vicon has been created to access the class methods
vicon = ViconNexus()
- ClearAllEvents()
Delete all events currently defined in the loaded trial
Usage Example: vicon.ClearAllEvents();
- CloseTrial(timeout)
Close the trial currently open in the connected host application without saving. This command may be used from within Python but can not be used in a script that is executing from the application. The trial will fail to close if a pipeline is running or the application is is live mode.
- Input
- timeout = integer value, timeout value (in seconds) used to return control in the case that
the trial does not close in a timely fashion. It is important to note that the timeout value has no effect in the host application itself and the trial may continue to save after the time allocated has expired.
Usage Example: vicon.CloseTrial( 30 )
- Connect(host='localhost')
Re-connect to the host application if we are not currently connected
- CreateAnEvent(subject, context, event, frame, offset)
Create a new event at the specifed ( frame + offset )
- Input
subject = string, name of an existing subject context = string, name of the context. Valid values are: Left, Right, General event = string, name of the event type. Valid values are: Foot Strike, Foot Off, General frame = integer value, trial frame number as displayed in the application time bar offset = double value, offset (in seconds) from the beginning of the frame to the event occurrence
The value should be in the range of 0.00 to 1/FrameRate
Usage Example: vicon.CreateAnEvent( 'Patricia', 'Foot Strike', 'Left', 137, 0.0 )
- CreateAnalysisParam(subject, param, value, unit)
Create a new analysis parameter for the specified subject. Analysis parameter names must be unique within the subject.
- Input
subject = string, name of an existing subject param = string, name of the new analysis parameter value = floating point number, desired value of the analysis parameter unit = string, unit associated with the value
Usage Example: create a new analysis parameter vicon.CreateAnalysisParam( 'Colin', 'MyParam', 1.23, 'mm' )
- CreateModelOutput(subject, modelOutputName, groupName, componentNames, QuantityTypes)
Create a new model output Add data to the newly created model output using SetModelOutput or SetModelOutputAtFrame
- Input
subject = string, name of an existing subject modelOutputName = string, name of new model output associated with the subject group = string, name of the group the model output belongs to components = list of strings, list of component names for the model output types = list of strings, list of the quantity types for each component
Valid values are: Length, Mass, Angle, Acceleration, Angular Acceleration, Angular Velocity, Frequency, Force, ForceNormalized, Torque, TorqueNormalized, Power, PowerNormalized, Pressure, Electric Potential, Velocity
Usage Example: Create model output matching the Plug-in Gait Bone HED BonesNames = ['RX','RY','RZ','TX','TY','TZ','SX','SY','SZ'] BonesTypes = ['Angle','Angle','Angle','Length','Length','Length','Length','Length','Length'] vicon.CreateModelOutput( 'Patricia', 'HED', 'Plug-in Gait Bones', BonesNames, BonesTypes )
- CreateModeledMarker(subject, modelOutputName)
Creates a new model output that can be displayed in the application workspace Add data to the newly created model output using SetModelOutput or SetModelOutputAtFrame
- Input
subject = string, name of an existing subject modelOutputName = string, name of new model output associated with the subject
Usage Example: Create a midpoint vicon.CreateModeledMarker( 'Colin', 'Midpoint' ) kneeX, kneeY, kneeZ, kneeExists = vicon.GetTrajectory( 'Colin', 'RKNE' ) ankX, ankY, ankZ, ankExists = vicon.GetTrajectory( 'Colin', 'RANK' ) data, exists = vicon.GetModelOutput( 'Colin', 'Midpoint' ) framecount = vicon.GetFrameCount() for i in xrange(framecount): if kneeExists[i] and ankExists[i] exists[i] = True data[0][i] = ( kneeX[i] + ankX[i] ) / 2 data[1][i] = ( kneeY[i] + ankY[i] ) / 2 data[2][i] = ( kneeZ[i] + ankZ[i] ) / 2 else: exists[i] = False vicon.SetModelOutput( 'Colin', 'Midpoint', data, exists )
- CreateSubjectParam(subject, param, value, unit, default, required)
Create a new subject parameter for the specified subject. Subject parameter names must be unique within the subject.
- Input
subject = string, name of an existing subject param = string, name of the new subject parameter value = floating point number, desired value of the subject parameter unit = string, unit associated with the value. Valid values are none, mm, deg, kg, s default = floating point number, PRIOR value of the subject parameter required = logical, indication as to whether the subject parameter is a required parameter
Usage Example: create a new subject parameter vicon.CreateSubjectParam( 'Colin', 'MyParam', 1.23, 'mm', 0, False )
- Disconnect()
Disconnect to the host application if we are currently connected
- GetAnalysisParam(subject, param)
Retrieve the current value of an analysis parameter
- Input
subject = string, name of an existing subject param = string, name of an existing analysis parameter
- Returns
value = floating point number, current value of the analysis parameter hasvalue = logical, indication as to whether the analysis parameter has a value
Usage Example: negate the value of a analysis parameter value = vicon.GetAnalysisParam( 'Colin', 'MyParam' ) value = value * (-1) vicon.SetAnalysisParam( 'Colin', 'MyParam', value )
- GetAnalysisParamDetails(subject, param)
Retrieve detailed information about an analysis parameter
- Input
subject = string, name of an existing subject param = string, name an existing analysis parameter
- Returns
value = floating point number, current value of the analysis parameter unit = string, unit associated with the value hasvalue = logical, indication as to whether the analysis parameter has a value
Usage Example: Display analysis parameter details value, unit, default, required = vicon.GetAnalysisParamDetails( 'Colin', 'MyParam' ) ParamInfo = 'MyParam = {0} [{1}]'.format( value, unit ) print ParamInfo
- GetAnalysisParamNames(subject)
Retrieve the names of the analysis parameters associated with the specified subject
- Input
subject = string, name of an existing subject
- Returns
names = list of strings, one for each analysis parameter
Usage Example: Display all of the analysis parameters params = vicon.GetAnalysisParamNames( 'Colin' ) print params
- GetDeviceChannel(deviceID, deviceOutputID, channelID)
Returns a single channel of device data from the channel identified by deviceID:deviceOutputID:channelID A device can have multiple device outputs and each device output can have multiple channels associated with it
Devices can run at different rates than the trial data. Channel data could have multiple samples for each trial frame. All samples for a channel are output. For data that has a higher sample rate than the trial frame rate, channel data can be interpreted as: frame1[sample1], frame1[sample2], … frame1[sampleN], … frameN[sample1], frameN[sample2], … frameN[sampleN]
- Input
deviceID = unsigned int, DeviceID of and existing device deviceOutputID = unsigned int, DeviceOutputID of the device output you are interested in channelID = unsigned int, ID of the channel
- Returns
channelData = numerical(double) list, component data list of size NumberOfFrames * samplesPerFrame ready = logical, T/F indication as to whether or not the device output is in the ready state
if the device output is not in the ready state, there will not be any valid data associated with this device output component
rate = double value, sample rate of the channel data
Usage Example: deviceIDs = vicon.GetDeviceIDs(); _,_,_,outputIDs,_,_ = vicon.GetDeviceDetails(deviceIDs[0]); _,_,_,_,_,channelIDs = vicon.GetDeviceOutputDetails(deviceIDs[0],outputIDs[0]); data, ready, rate = vicon.GetDeviceChannel(deviceIDs[0],outputIDs[0],channelIDs[0]);
- GetDeviceChannelAtFrame(deviceID, deviceOutputID, channelID, frame)
Retrieve a single frame of data from the channel identified by deviceID:deviceOutputID:channelID A device can have multiple device outputs and each device output can have multiple channels associated with it
Devices can run at different rates than the trial data. Channel data could have multiple samples for each trial frame. All samples for a channel are output. Channel data list will be in the format:
[sample1], [sample2], … [sampleN]
- Input
deviceID = unsigned int, DeviceID of and existing device deviceOutputID = unsigned int, DeviceOutputID of the device output you are interested in channelID = unsigned int, ID of the channel frame = integer value, trial frame number as displayed in the application time bar
- Returns
channelData = numerical(double) list, component data list for the frame of size samplesPerFrame ready = logical, T/F indication as to whether or not the device output is in the ready state
if the device output is not in the ready state, there will not be any valid data associated with this device output component
rate = double value, sample rate of the channel data
Usage Example: deviceIDs = vicon.GetDeviceIDs(); _,_,_,outputIDs,_,_ = vicon.GetDeviceDetails(deviceIDs[0]); _,_,_,_,_,channelIDs = vicon.GetDeviceOutputDetails(deviceIDs[0],outputIDs[0]); data, ready, rate = vicon.GetDeviceChannelAtFrame(deviceIDs[0],outputIDs[0],channelIDs[0], 200);
- GetDeviceChannelForFrame(deviceID, deviceOutputID, channelID, frame)
Retrieve a single frame of data from the channel identified by deviceID:deviceOutputID:channelID This function will return data corresponding to the requested optical frame. A device can have multiple device outputs and each device output can have multiple channels associated with it
Devices can run at different rates than the trial data. Channel data could have multiple samples for each trial frame. All samples for a channel are output. Channel data list will be in the format:
[sample1], [sample2], … [sampleN]
- Input
deviceID = unsigned int, DeviceID of and existing device deviceOutputID = unsigned int, DeviceOutputID of the device output you are interested in channelID = unsigned int, ID of the channel frame = integer value, trial frame number as displayed in the application time bar
- Returns
channelData = numerical(double) list, component data list for the frame of size samplesPerFrame ready = logical, T/F indication as to whether or not the device output is in the ready state
if the device output is not in the ready state, there will not be any valid data associated with this device output component
rate = double value, sample rate of the channel data
Usage Example: deviceIDs = vicon.GetDeviceIDs(); _,_,_,outputIDs,_,_ = vicon.GetDeviceDetails(deviceIDs[0]); _,_,_,_,_,channelIDs = vicon.GetDeviceOutputDetails(deviceIDs[0],outputIDs[0]); data, ready, rate = vicon.GetDeviceChannelForFrame(deviceIDs[0],outputIDs[0],channelIDs[0], 200);
- GetDeviceChannelGlobal(deviceID, deviceOutputID, channelID)
Returns a single channel of global device data from the channel identified by deviceID:deviceOutputID:channelID A device can have multiple device outputs and each device output can have multiple channels associated with it
Devices can run at different rates than the trial data. Channel data could have multiple samples for each trial frame. All samples for a channel are output. For data that has a higher sample rate than the trial frame rate, channel data can be interpreted as: frame1[sample1], frame1[sample2], … frame1[sampleN], … frameN[sample1], frameN[sample2], … frameN[sampleN]
- Input
deviceID = unsigned int, DeviceID of and existing device deviceOutputID = unsigned int, DeviceOutputID of the device output you are interested in channelID = unsigned int, ID of the channel
- Returns
channelData = numerical(double) list, component data list of size NumberOfFrames * samplesPerFrame ready = logical, T/F indication as to whether or not the device output is in the ready state
if the device output is not in the ready state, there will not be any valid data associated with this device output component
rate = double value, sample rate of the channel data
Usage Example: deviceIDs = vicon.GetDeviceIDs(); _,_,_,outputIDs,_,_ = vicon.GetDeviceDetails(deviceIDs[0]); _,_,_,_,_,channelIDs = vicon.GetDeviceOutputDetails(deviceIDs[0],outputIDs[0]); data, ready, rate = vicon.GetDeviceChannelGlobal(deviceIDs[0],outputIDs[0],channelIDs[0]);
- GetDeviceChannelGlobalAtFrame(deviceID, deviceOutputID, channelID, frame)
Retrieve a single frame of global data from a channel identified by deviceID:deviceOutputID:channelID A device can have multiple device outputs and each device output can have multiple channels associated with it
Devices can run at different rates than the trial data. Channel data could have multiple samples for each trial frame. All samples for a channel are output. Channel data list will be in the format:
[sample1], [sample2], … [sampleN]
- Input
deviceID = unsigned int, DeviceID of and existing device deviceOutputID = unsigned int, DeviceOutputID of the device output you are interested in channelID = unsigned int, ID of the channel frame = integer value, trial frame number as displayed in the application time bar
- Returns
channelData = numerical(double) list, component data list for the frame of size samplesPerFrame ready = logical, T/F indication as to whether or not the device output is in the ready state
if the device output is not in the ready state, there will not be any valid data associated with this device output component
rate = double value, sample rate of the channel data
Usage Example: deviceIDs = vicon.GetDeviceIDs(); _,_,_,outputIDs,_,_ = vicon.GetDeviceDetails(deviceIDs[0]); _,_,_,_,_,channelIDs = vicon.GetDeviceOutputDetails(deviceIDs[0],outputIDs[0]); data, ready, rate = vicon.GetDeviceChannelGlobalAtFrame(deviceIDs[0],outputIDs[0],channelIDs[0], 200);
- GetDeviceChannelGlobalForFrame(deviceID, deviceOutputID, channelID, frame)
Retrieve a single frame of global data from a channel identified by deviceID:deviceOutputID:channelID A device can have multiple device outputs and each device output can have multiple channels associated with it This function will return data corresponding to the requested optical frame.
Devices can run at different rates than the trial data. Channel data could have multiple samples for each trial frame. All samples for a channel are output. Channel data list will be in the format:
[sample1], [sample2], … [sampleN]
- Input
deviceID = unsigned int, DeviceID of and existing device deviceOutputID = unsigned int, DeviceOutputID of the device output you are interested in channelID = unsigned int, ID of the channel frame = integer value, trial frame number as displayed in the application time bar
- Returns
channelData = numerical(double) list, component data list for the frame of size samplesPerFrame ready = logical, T/F indication as to whether or not the device output is in the ready state
if the device output is not in the ready state, there will not be any valid data associated with this device output component
rate = double value, sample rate of the channel data
Usage Example: deviceIDs = vicon.GetDeviceIDs(); _,_,_,outputIDs,_,_ = vicon.GetDeviceDetails(deviceIDs[0]); _,_,_,_,_,channelIDs = vicon.GetDeviceOutputDetails(deviceIDs[0],outputIDs[0]); data, ready, rate = vicon.GetDeviceChannelGlobalForFrame(deviceIDs[0],outputIDs[0],channelIDs[0], 200);
- GetDeviceChannelIDFromName(deviceID, deviceOutputID, name)
Returns the channel ID for the named device output channel ‘name’ associated with device output ‘deviceOutputID’ for the device with the ID ‘deviceID’ GetDeviceChannelIDFromName will search the specified device output and return the channel ID with the name ‘name’. The deviceChannelID is used for all device output channel communication.
- Input
deviceID = unsigned int, DeviceID of and existing device deviceOutputID = unsigned int, DeviceOutputID of the device output you are interested in name = string, name of a known channel, names are case sensitive
- Returns
channelID = unsigned int, ChannelID of the device with name ‘name’
Usage Example: channelID = vicon.GetDeviceChannelIDFromName( 1, 1, 'Fx' )
- GetDeviceDetails(deviceID)
Return detailed information about a specific device. Every device will have associated device outputs. Communication with the device outputs is done by using a DeviceOutputID to identify the specific device output.
- Input
deviceID = string, DeviceID of the device you are interested in
- Returns
name = string, name of the device (may be blank) device_type = string, device type. Valid options are
‘ForcePlate’, ‘EyeTracker’, ‘Other’
rate = double value, rate at which the device runs deviceOutputIDs = unsigned int, list of the DeviceOutputIDs forceplate = NexusForcePlate, additional info if the device
is a force plate
- eyetracker = NexusEyeTracker, additional info if the device
is an eye tracker
Usage Example: Display the name and type of a device name, type, rate, deviceOutputIDs, forceplate, eyetracker = vicon.GetDeviceDetails( '1' ) DeviceDisplay = 'DeviceID: {0} is named {1} and it is a {2} device' ].format( deviceID, name, type ) print DeviceDisplay
- GetDeviceIDFromName(name)
Returns the device ID for the device using the specified name The DeviceID is used for all device communication.
- Input
name = string, name of a known device, device names are case sensitive
- Returns
deviceID = string, DeviceID of the device with name ‘name’
Usage Example: retrieve the DeviceID for a named forceplate DeviceID = vicon.GetDeviceIDFromName( 'MyForcePlate' )
- GetDeviceIDs()
Retrieve a list of the unique identifiers of the analog devices The DeviceID is used for all device communication. A device may also be ‘named’ although having a device name is not a requirement.
- Returns
deviceIDs = list of unsigned ints, one for each device
Usage Example: retrieve the list of device identifiers devices = vicon.GetDeviceIDs() for device in devices: print device
- GetDeviceNames()
Retrieve a list device names. Device names are not required, access to device data is done using the DeviceID
- Returns
deviceNames = list of strings, one for each named device
Usage Example: deviceNames = vicon.GetDeviceNames()
- GetDeviceOutputDetails(deviceID, deviceOutputID)
Returns detailed information about a specific device output.
- Input
deviceID = unsigned int, DeviceID of and existing device deviceOutputID = unsigned int, DeviceOutputID of the device output you are interested in
- Returns
name = string, name of the device (may be blank) output_type = string, device output type. unit = string, unit name ready = logical value, indication of whether or not the output is in the ready state channelNames = string list, list of channel names associated with the output,
channel names are not required, data access is acheived using the channelID
channelIDs = unsigned int list, list of channel IDs associated with the output
Usage Example: name, type, unit, ready, channelNames, channelIDs = vicon.GetDeviceOutputDetails( 1, 1 );
- GetDeviceOutputIDFromName(deviceID, name)
Returns the device output ID for the named device output ‘name’ associated with device with the ID ‘deviceID’ The DeviceOutputID is used for all device output communication.
- Input
deviceID = unsigned int, DeviceID of and existing device name = string, name of a known device output, names are case sensitive
- Returns
deviceOutputID = unsigned int, DeviceOutputID of the device output with name ‘name’ from device with the ID ‘deviceID’
Usage Example: retrieve the DeviceOutputID for a named output DeviceOutputID = vicon.GetDeviceOutputIDFromName( 1, 'Force' )
- GetEvents(subject, context, event)
Return all of the events that match the specified subject, context, and event type
- Input
subject = string, name of an existing subject context = string, name of the context. Valid values are: Left, Right, General event = string, name of the event type. Valid values are: Foot Strike, Foot Off, General
- Returns
frames = integer list, list of the event frame numbers offsets = double list, offset (in seconds) from the beginning of the frame
to the event occurrence for each event The value should be in the range of 0.00 to 1/FrameRate
Usage Example: frames, offsets = vicon.GetEvents( 'Patricia', 'Left', 'Foot Strike' )
- GetFrameCount()
Retrieves the number of frames in the loaded trial
- GetFrameRate()
Retrieves the base frame rate for the loaded trial
- GetJointDetails(subject, joint)
Retrieves detailed information about a joint
- Input
subject = string, name of an existing subject joint = string, name of an existing joint for the subject
- Returns
parent = string, name of the parent segment child = string, name of the child segment
Usage Example: Display information about the first joint joints = vicon.GetJointNames( 'Colin' ) firstjoint = joints[0] parent, child = vicon.GetJointDetails( 'Colin', firstjoint ) JointDisplay = 'Joint: ' % firstjoint % ' ( ' % parent % ' - ' % child, ' )' print JointDisplay
- GetJointNames(subject)
Retrieve the names of the joints associated with the specified subject
- Input
subject = string, name of an existing subject
- Returns
names = list of strings, one for each joint
Usage Example: Display the name of the first joint joints = vicon.GetJointNames( 'Colin' ) firstjoint = joints[0] print firstjoint
- GetMarkerNames(subject)
Retrieve the names of the markers associated with the specified subject
- Input
subject = string, name of an existing subject
- Returns
names = list of strings, one for each marker
Usage Example: Display the name of the first marker markers = vicon.GetMarkerNames( 'Colin' ) firstmarker = markers[0] print firstmarker
- GetModelOutput(subject, modelOutputName)
Get the data values for all components of a model output for all frames in the trial
- Input
subject = string, name of an existing subject modelOutputName = string, name of an existing model output associated with the subject
- Returns
components = numerical(double) NxM matrix where N is the number of components, M is the number of frames e = logical list, T/F indication as to whether the data exists for each frame
Usage Example: Copy the data from one model output to another [data, exists] = vicon.GetModelOutput( 'Colin', 'LeftHipAngle' ) vicon.SetModelOutput( 'Colin', 'NewAngle', data, exists )
- GetModelOutputAtFrame(subject, modelOutputName, frame)
Get the data values for all components of a model output at a specific frame
- Input
subject = string, name of an existing subject modelOutputName = string, name of an existing model output associated with the subject frame = integer value, trial frame number as displayed in the application time bar
- Returns
components = numerical(double) list, one value for each component e = logical value, T/F indication as to whether the data exists for the frame
Usage Example: offset model output data by 100.0 at frame 50 data, exists = vicon.GetModelOutputAtFrame( 'Colin', 'NewAngle', 50 ) for value in data: value = value + 100.0 vicon.SetModelOutputAtFrame( 'Colin', 'NewAngle', 50, data, True )
- GetModelOutputDetails(subject, modelOutputName)
Retrieve detailed information about a model output
- Input
subject = string, name of an existing subject modelOutputName = string, name of an existing model output associated with the subject
- Returns
group = string, name of the group the model output belongs to components = list of strings, list of component names for the model output types = list of strings, list of the quantity types for each component
Usage Example: Create a new model output with the same properties as an existing model output group, components, types = vicon.GetModelOutputDetails( 'Colin', 'LeftHipAngle' ) vicon.CreateModelOutput( 'Colin', 'NewModelOutput', group, components, types )
- GetModelOutputNames(subject)
Retrieve the names of the model outputs associated with the specified subject
- Input
subject = string, name of an existing subject
- Returns
names = list of strings, one for each model output
Usage Example: Display the name of the first model output modeloutputs = vicon.GetModelOutputNames( 'Colin' ) firstmodeloutput = modeloutputs[0] print firstmodeloutput
- GetRootSegment(subject)
Retrieve the name of the root segment associated with the specified subject
- Input
subject = string, name of an existing subject
- Returns
name = string, name of the root segment
Usage Example: Display the children of the root segment root = vicon.GetRootSegment( 'Colin' ) children = vicon.GetSegmentDetails( 'Colin', root )[1] for child in children: print child
- GetSegmentDetails(subject, segment)
Retrieves detailed information about a segment
- Input
subject = string, name of an existing subject segment = string, name of an existing segment for the subject
- Returns
- parent = string, name of the parent segment
*** the root segment will have a parent named ‘World’
children = list of strings, names of the child segments markers = list of strings, names of the markers associated with the segment
Usage Example: Display the children of the root segment root = vicon.GetRootSegment( 'Colin' ) children = vicon.GetSegmentDetails( 'Colin', root )[1] for child in children: print child
- GetSegmentNames(subject)
Retrieve the names of the segments associated with the specified subject
- Input
subject = string, name of an existing subject
- Returns
names = list of strings, one for each segment
Usage Example: Display the name of the first segment segments = vicon.GetSegmentNames( 'Colin' ) firstsegment = segments[0] print firstsegment
- GetServerInfo()
Return information about the connected server
- GetSplineResults(derivative)
Return derivative values from an initialized spline object.
- Input
frames = numerical(int) list, frame numbers of the supplied data x = numerical(double) list, x-coordinate of the trajectory y = numerical(double) list, y-coordinate of the trajectory z = numerical(double) list, z-coordinate of the trajectory frameRate = double, frame rate of the supplied data
Usage Example: frameRate = vicon.GetFrameRate() startFrame, endFrame = vicon.GetTrialRange() frames = range( startFrame, endFrame + 1 ) [trajX, trajY, trajZ, e] = vicon.GetTrajectory( 'Colin', 'LKNE' ) # get valid indices; we only want to submit good values here! validIndices = [ x for x, y in enumerate(e) if y ] validF = [ frames[ Index ] for Index in validIndices ] validX = [ trajX[ Index ] for Index in validIndices ] validY = [ trajY[ Index ] for Index in validIndices ] validZ = [ trajZ[ Index ] for Index in validIndices ] vicon.SubmitSplineTrajectory(validF, validX, validY, validZ, frameRate) accX, accY, accZ = vicon.GetSplineResults(2);
- GetSubjectInfo()
Retrieves the names, templates and active states of the currently loaded subjects
- Returns
names = list of strings, one for each subject templates = list of strings, one for each subject active = list of bools, one for each subject
Usage Example: list the names of the currently loaded subjects subjects, templates, activeStates = vicon.GetSubjectInfo() for subject, template, active in zip( subjects, templates, activeStates ): print 'Subject Name: {}, Template Name: {}, Active: {}'.format( subject, template, active )
- GetSubjectNames()
Retrieves the names of the currently loaded subjects
- Returns
names = list of strings, one for each subject
Usage Example: list the names of the currently loaded subjects subjects = vicon.GetSubjectNames() for subject in subjects: print subject
- GetSubjectParam(subject, param)
Retrieve the current value of a static subject parameter
- Input
subject = string, name of an existing subject param = string, name of an existing subject parameter
- Returns
value = floating point number, current value of the subject parameter hasvalue = logical, indication as to whether the subject parameter has a value
Usage Example: negate the value of a subject parameter value = vicon.GetSubjectParam( 'Colin', 'MyParam' ) value = value * (-1) vicon.SetSubjectParam( 'Colin', 'MyParam', value )
- GetSubjectParamDetails(subject, param)
Retrieve detailed information about a subject parameter
- Input
subject = string, name of an existing subject param = string, name an existing subject parameter
- Returns
value = floating point number, current value of the subject parameter unit = string, unit associated with the value default = floating point number, PRIOR value of the subject parameter required = logical, indication as to whether the subject parameter is a required parameter hasvalue = logical, indication as to whether the subject parameter has a value
Usage Example: Display subject parameter details value, unit, default, required = vicon.GetSubjectParamDetails( 'Colin', 'MyParam' ) isRequired = ' Not Required' if( required ): isRequired = ' Required' SubjectParamInfo = 'MyParam = {0} [{1}] Default={2}, {3}'.format( value, unit, default, isRequired ) print SubjectParamInfo
- GetSubjectParamNames(subject)
Retrieve the names of the static subject parameters associated with the specified subject
- Input
subject = string, name of an existing subject
- Returns
names = list of strings, one for each subject parameter
Usage Example: Display all of the subject parameters subjectparams = vicon.GetSubjectParamNames( 'Colin' ) print subjectparams
- GetTrajectory(subject, marker)
Get all frames of data for the trial for the specified marker.
- Input
subject = string, name of an existing subject marker = string, name of an existing marker
- Returns
x = numerical(double) list, x-coordinates of the trajectory y = numerical(double) list, y-coordinates of the trajectory z = numerical(double) list, z-coordinates of the trajectory e = logical list, T/F indication as to whether the data exists for each frame
Usage Example: Display trajectory coordinate at frame 50 trajX, trajY, trajZ, trajExists = vicon.GetTrajectory( 'Colin', 'C7' ) doesexist = ' - Missing Data' if( trajExists[49] ): doesexist = ' - exists' framedata = 'frame 50 = ({0}, {1}, {2}){3}'.format( trajX[49], trajY[49], trajZ[49], doesexist ) print framedata
- GetTrajectoryAtFrame(subject, marker, frame)
Get trajectory data at a specific frame for the specified marker
- Input
subject = string, name of an existing subject marker = string, name of an existing marker frame = integer value, trial frame number as displayed in the application time bar
- Returns
x = double value, x-coordinate of the trajectory y = double value, y-coordinate of the trajectory z = double value, z-coordinate of the trajectory e = logical value, T/F indication as to whether the data exists for the frame
Usage Example: Display trajectory coordinate at frame 50 markerX, markerY, markerZ, markerExists = vicon.GetTrajectoryAtFrame( 'Colin', 'C7', 50 ) doesexist = ' - Missing Data' if markerExists: doesexist = ' - exists' framedata = 'frame 50 = {}, {}, {}, {}'.format(markerX, markerY, markerZ, doesexist) print framedata
- GetTrialName()
Retrieves the name and path for the loaded trial
- Returns
path = string, path to the trial on disk name = string, name of the trial
Usage Example: create a filename to be used for a user generated output file path, name = vicon.gettrialname() MyFilename = path % name %'.MyFile'
- GetTrialRange()
Retrieves the starting and ending frame numbers of the updateable range for the loaded trial
- GetTrialRegionOfInterest()
Retrieves the starting and ending frame numbers of the user set region of interest for the loaded trial
- GetUnlabeled(index)
Get all frames of data for the trial for the specified unlabeled trajectory.
- Input
index = index of the unlabeled trajectory to return
- Returns
x = numerical(double) list, x-coordinates of the trajectory y = numerical(double) list, y-coordinates of the trajectory z = numerical(double) list, z-coordinates of the trajectory e = logical list, T/F indication as to whether the data exists for each frame
Usage Example: Display trajectory coordinate at frame 50 of unlabeled trajectory 25 trajX, trajY, trajZ, trajExists = vicon.GetUnlabeled( 25 ) doesexist = ' - Missing Data' if( trajExists[49] ): doesexist = ' - exists' framedata = 'frame 50 = ({0}, {1}, {2}){3}'.format( trajX[49], trajY[49], trajZ[49], doesexist ) print framedata
- GetUnlabeledCount()
Returns the number of unlabeled trajectories in the loaded trial
- Returns
count = integer value, the number of unlabeled trajectories in the loaded trial
Usage Example: nUnlabeled = vicon.GetUnlabeledCount();
- HasTrajectory(subject, marker)
Returns true if the specified marker is associated with a trajectory
- Input
subject = string, name of an existing subject marker = string, name of an existing marker
- Returns
exists = T/F indication as to whether the specified marker is associated with a trajectory
Usage Example: bExists = vicon.HasTrajectory( 'Colin', 'C7' );
- IsConnected()
Check if we are connected to the host application
- OpenTrial(trial, timeout)
Open a trial in the connected host application. This command may be used from within Python but can not be used in a script that is executing from the application. The trial will fail to load if a pipeline is running, the application is in live mode, the ENF file for the trial can not be located, or the application is in a state where trial opening is prohibited.
If unsaved data is currently loaded in the application, the application may prompt you to save the data. To prevent the application prompt, you should save the current trial data prior to attempting to load another trial.
- Input
trial = string, name of an existing trial including its full path, excluding any file extensions. timeout = integer value, timeout value (in seconds) used to return control in the case that
the trial does not open in a timely fashion. It is important to note that the timeout value has no effect in the host application itself and the trial may continue to load after the time allocated has expired.
Usage Example: vicon.OpenTrial('C:\Users\Public\Documents\Vicon\Nexus Sample Data\Colin\Walking Trials\Walking 2', 30)
- RunPipeline(pipeline, location, timeout)
Run a pipeline in the connected host application. This command may be used from within Python but can not be used in a script that is executing from the application. The pipeline will fail to run if another pipeline is already in progress.
- Input
pipeline = string, name of an existing pipeline. location = string, location of the pipeline. Pass a blank string to use the default
searching mechanism to locate the pipeline. Valid options when specifying the pipeline location are Private, Shared or System.
- timeout = integer value, timeout value (in seconds) used to return control in the case that
the pipeline does not complete in a timely fashion. It is important to note that the timeout value has no effect in the host application itself and the pipeline may continue to run after the time allocated has expired.
Usage Example: vicon.RunPipeline( 'Reconstruct', '', 45 )
- SaveTrial(timeout)
Save the trial currently open in the connected host application to disk. This command may be used from within Python but can not be used in a script that is executing from the application. The trial will fail to save if a pipeline is running or the application is is live mode.
- Input
- timeout = integer value, timeout value (in seconds) used to return control in the case that
the trial does not save in a timely fashion. It is important to note that the timeout value has no effect in the host application itself and the trial may continue to save after the time allocated has expired.
Usage Example: vicon.SaveTrial( 30 )
- SetAnalysisParam(subject, param, value)
Set the current value of an analysis parameter
- Input
subject = string, name of an existing subject param = string, name of an existing analysis parameter value = floating point number, desired value of the analysis parameter
Usage Example: negate the value of a analysis parameter value = vicon.GetAnalysisParam( 'Colin', 'MyParam' ) value = value * (-1) vicon.SetAnalysisParam( 'Colin', 'MyParam', value )
- SetDeviceChannel(deviceID, deviceOutputID, channelID, channelData)
Update a single channel of device data for the specified deviceID:deviceOutputID:channelID combination A device can have multiple device outputs and each device output can have multiple channels associated with it
You may not update frames of data that have been marked as missing in the originally captured data, data for missing frames will be presented with zero values when retrieving data and input values for those frames will be ignored when updating the device data, although it must be supplied.
Devices can run at different rates than the trial data. Channel data could have multiple samples for each data frame. Channel data must be supplied for all of the samples. In the case that the channel sample rate is higher than the trial frame rate channel data is interpreted as:
frame1[sample1], frame1[sample2], … frame1[sampleN], … frameN[sample1], frameN[sample2], … frameN[sampleN]
- Input
deviceID = unsigned int, DeviceID of an existing device deviceOutputID = unsigned int, DeviceOutputID of the device output channelID = unsigned int, ID of the channel channelData = numerical(double) list, channel data list of size NumberOfFrames * samplesPerFrame
Usage Example: # Threshold forceplate data at 25N magnitude import math deviceIDs = vicon.GetDeviceIDs(); for deviceID in deviceIDs: _,type,_,_,_,_ = vicon.GetDeviceDetails(deviceID); if type == 'ForcePlate' forceID = vicon.GetDeviceOutputIDFromName(deviceID, 'Force'); _,_,_,_,_,channelIDs = vicon.GetDeviceOutputDetails(deviceID,forceID); fx = vicon.GetDeviceChannel(deviceID,forceID,channelIDs[0]); fy = vicon.GetDeviceChannel(deviceID,forceID,channelIDs[1]); fz = vicon.GetDeviceChannel(deviceID,forceID,channelIDs[2]); fmag = [x for x in map(lambda x,y: math.sqrt( x**2 + y**2 ), a, b) ] for (i, item) in enumerate(fmag): if item < 25: fx[i] = 0 fy[i] = 0 fz[i] = 0 vicon.SetDeviceChannel(deviceID,forceID,channelIDs[0], fx); vicon.SetDeviceChannel(deviceID,forceID,channelIDs[1], fy); vicon.SetDeviceChannel(deviceID,forceID,channelIDs[2], fz);
- SetDeviceChannelAtFrame(deviceID, deviceOutputID, channelID, frame, channelData)
Update a single frame for a single channel of device data for the specified deviceID:deviceOutputID combination A device can have multiple channels associated with it
You may not update frames of data that have been marked as missing in the originally captured data, data for missing frames will be presented with zero values when retrieving data and input values for those frames will be ignored when updating the device data, although it must be supplied.
CAUTION: updating multiple frames of device data using this may execute noticably slower than using a single call to SetDeviceChannel supplying sample data for each trial frame even if they have not changed depending on the number of samples you are updating.
Devices can run at different rates than the trial data. Channel data could have multiple samples for each trial frame. Channel data list must be in the format:
[sample1], [sample2], … [sampleN]
- Input
deviceID = unsigned int, DeviceID of and existing device deviceOutputID = unsigned int, DeviceOutputID of the device output you are interested in channelID = unsigned int, ID of the channel frame = integer value, trial frame number as displayed in the application time bar channelData = numerical(double) list, component data list for the frame of size samplesPerFrame
Usage Example: fx,_,_ = vicon.GetDeviceChannelAtFrame(1,1,1,200); fx = [x/2 for x in fx]; vicon.SetDeviceChannelAtFrame(1,1,1,200,fx);
- SetModelOutput(subject, modelOutputName, components, e)
Set the data values for all components of a model output for all frames in the trial
- Input
subject = string, name of the subject modelOutputName = string, name of an existing model output associated with the subject components = numerical(double) NxM matrix where N is the number of components, M is the number of frames e = logical list, T/F indication as to whether the data exists for each frame
Usage Example: Copy the data from one model output to another [data, exists] = vicon.GetModelOutput( 'Colin', 'LeftHipAngle' ) vicon.SetModelOutput( 'Colin', 'NewAngle', data, exists )
- SetModelOutputAtFrame(subject, modelOutputName, frame, components, e)
Set the data values for all components of a model output at a specific frame
- Input
subject = string, name of an existing subject modelOutputName = string, name of an existing model output associated with the subject frame = integer value, trial frame number as displayed in the application time bar components = numerical(double) list, one value for each component e = logical value, T/F indication as to whether the data exists for the frame
Usage Example: offset model output data by 100.0 at frame 50 data, exists = vicon.GetModelOutputAtFrame( 'Colin', 'NewAngle', 50 ) for value in data: value = value + 100.0 vicon.SetModelOutputAtFrame( 'Colin', 'NewAngle', 50, data, True )
- SetSubjectActive(subjectName, activeState)
Set the active state of a subject by name
- Input
SubjectName = string, name of an existing subject ActiveState = either: boolean True/False
or integer value 1/0 or string value ‘1’/’0’/’Exclusive’ specifying the active/inactive state of the subject
- Usage Examples:
subjects = vicon.GetSubjectNames(); for subject in subjects:
# enable all subjects vicon.SetSubjectActive( subject, ‘1’ )
- for subject in subjects:
# disable all subjects vicon.SetSubjectActive( subject, False )
- for subject in subjects:
# enable all subjects again vicon.SetSubjectActive( subject, 1 )
# enable only the first subject vicon.SetSubjectActive( subjects[0], ‘Exclusive’ )
- SetSubjectParam(subject, param, value, bForce=False)
Set the current value of a static subject parameter
- Input
subject = string, name of an existing subject param = string, name of an existing subject parameter value = floating point number, desired value of the subject parameter
Usage Example: negate the value of a subject parameter value = vicon.GetSubjectParam( 'Colin', 'MyParam' ) value = value * (-1) vicon.SetSubjectParam( 'Colin', 'MyParam', value )
- SetTrajectory(subject, marker, x, y, z, e)
Update all of the data values for all frames in the trial for the specified marker.
- Input
subject = string, name of an existing subject marker = string, name of an existing marker x = numerical(double) list, x-coordinate of the trajectory y = numerical(double) list, y-coordinate of the trajectory z = numerical(double) list, z-coordinate of the trajectory e = logical list, T/F indication as to whether the data exists for each frame
Usage Example: Put the trajectory at 0,0,0 for all frames frameCount = vicon.GetFrameCount() trajX = [0]*frameCount trajY = [0]*frameCount trajZ = [0]*frameCount exists = [True]*frameCount vicon.SetTrajectory('Colin','C7',trajX,trajY,trajZ,exists)
- SetTrajectoryAtFrame(subject, marker, frame, x, y, z, e)
Update the trajectory data values at a specific frame for the specified marker
- Input
subject = string, name of an existing subject marker = string, name of an existing marker frame = integer value, trial frame number as displayed in the application time bar x = double value, x-coordinate of the trajectory y = double value, y-coordinate of the trajectory z = double value, z-coordinate of the trajectory e = logical value, T/F indication as to whether the data exists for the frame
Usage Example: Create a gap at frame 50 vicon.SetTrajectoryAtFrame( 'Colin', 'C7', 50, 0.0, 0.0, 0.0, False )
- SetTrialRegionOfInterest(startFrame, EndFrame)
Sets the starting and ending frame numbers of the user set region of interest for the loaded trial
- SubmitSplineTrajectory(frames, xData, yData, zData, frameRate)
Initialize a spline object
- Input
frames = numerical(int) list, frame numbers of the supplied data x = numerical(double) list, x-coordinate of the trajectory y = numerical(double) list, y-coordinate of the trajectory z = numerical(double) list, z-coordinate of the trajectory frameRate = double, frame rate of the supplied data
Usage Example: frameRate = vicon.GetFrameRate() startFrame, endFrame = vicon.GetTrialRange() frames = range( startFrame, endFrame + 1 ) [trajX, trajY, trajZ, e] = vicon.GetTrajectory( 'Colin', 'LKNE' ) # get valid indices; we only want to submit good values here! validIndices = [ x for x, y in enumerate(e) if y ] validF = [ frames[ Index ] for Index in validIndices ] validX = [ trajX[ Index ] for Index in validIndices ] validY = [ trajY[ Index ] for Index in validIndices ] validZ = [ trajZ[ Index ] for Index in validIndices ] vicon.SubmitSplineTrajectory(validF, validX, validY, validZ, frameRate)
- exception pyCGM2.External.NexusSDK.viconnexusapi.ViconNexus.ViconNexusException(message, additional='')
Exception generated by the Nexus API
The exception class covers the range of errors experienced in Nexus API use.
NexusForcePlate
ViconUtils
- pyCGM2.External.NexusSDK.viconnexusapi.ViconUtils.AngleAxisFromMatrix(RotMat)
Calculate the AngleAxis representation of the rotation described by a rotation matrix
- pyCGM2.External.NexusSDK.viconnexusapi.ViconUtils.AngleAxisFromQuaternion(Quaternion)
Calculates the AngleAxis representation of the rotation described by a quaternion (x,y,z,w)
- pyCGM2.External.NexusSDK.viconnexusapi.ViconUtils.EulerFromMatrix(matrix, order)
Convert a rotation matrix into Euler angles based on the supplied axis order
- pyCGM2.External.NexusSDK.viconnexusapi.ViconUtils.QuaternionFromMatrix(RotMat)
Calculates the quaternion representation of the rotation described by RotMat Algorithm in Ken Shoemake’s article in 1987 SIGGRAPH course notes article “Quaternion Calculus and Fast Animation”.
- pyCGM2.External.NexusSDK.viconnexusapi.ViconUtils.RotationMatrixFromAngleAxis(k)
Convert angleaxis k to a 3x3 rotation matrix where k is a 3-vector defining the axis of rotation and norm(k) = angle of rotation about this axis