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