Type Parameter%20Node | Space%20Node | Event%20Node | Marker%20Node | Segment%20Node | Template%20Node[]
File match *.calqulus.yaml *.calqulus.yml
Schema URL https://catalog.lintel.tools/schemas/schemastore/calqulus-pipeline/latest.json
Source https://raw.githubusercontent.com/qualisys/qualisys-schemas/master/calqulus-pipeline.schema.json

Validate with Lintel

npx @lintel/lintel check
Type: Parameter%20Node | Space%20Node | Event%20Node | Marker%20Node | Segment%20Node | Template%20Node[]

A document describing calculations to be done on biomechanical data for presentation in a report.

Items

Parameter%20Node | Space%20Node | Event%20Node | Marker%20Node | Segment%20Node | Template%20Node

Definitions

parameter string

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

space string

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

event string

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

marker string

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

segment string

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

template string

A template node imports a separate Calqulus pipeline file into the current pipeline. This enables, for example, splitting a pipeline up into parts that can be reused in multiple pipelines, or to make the pipelines more readable.

export boolean

Toggle export on/off for this node. Defaults to true.

steps object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object[]

A step node takes an input and some options and outputs a value.

where object

When importing a signal or defining an output node, you can specify a measurement from which the signal should be imported – or for which measurement an output node should run.

You can filter measurements by name and by field values and you can use wildcard characters * to formulate patterns to match partial values. The matching of values is case-insensitive.

When using a measurement filter, a list of matching measurements is created. By specifying the index option, you can define which of the matching measurements should apply.

name string

Target a measurement by name

index integer | string

Out of a number of matching measurements, pick the nth match. Either a 1-based index, or the values first or last to select the first or last match, respectively.

fields Record<string, string>

Target a measurement by a field value.

force string

Target a measurement by a the existence of forces.

Values: "any" "both" "left" "none" "right"
set string

Used to specify which set the exported parameter will use. In most cases, this will be either left or right.

If not set, the JSON output will use set: null.

spaceOrigin string | array

Sets the origin of a custom coordinate system.

spacePrimaryAxis string | array

Sets the primary axis of a custom coordinate system. The primary axis of the custom coordinate system will always be a unit vector with the same direction as this vector.

If more than one vectors is given, for example [myMarker1, myMarker2], the vector difference between the first two vectors is used as the primary axis.

spaceSecondaryAxis string | array

Sets the secondary axis of a custom coordinate system. The actual secondary axis of the custom coordinate system might differ from the vector specified, since the secondary axis must be a unit vector perpendicular to the primary axis.

If more than one vectors is given, for example [myMarker1, myMarker2], the vector difference between the first two vectors is used as the secondary axis.

spaceOrder string

Defines what axis the primary and secondary axis corresponds to. The first letter defines the name of the primary axis, and the second letter defines the name of the secondary axis.

Possible values: xy - Primary axis: x, secondary axis: y yx - Primary axis: y, secondary axis: x xz - Primary axis: x, secondary axis: z yz - Primary axis: y, secondary axis: z zy - Primary axis: z, secondary axis: y

spaceAlignWithSegment object

Used to create a space that aligns with the specified segment. The resulting space will be rotated in 90 degree increments relative to the world space.

The rotation is based on the average orientation of the segment during a measurement.

segment string required

Used to create a space that aligns with the specified segment. The resulting space will be rotated in 90 degree increments relative to the world space.

The rotation is based on the average orientation of the segment during a measurement.

Parameter Node object

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

parameter string required

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

export boolean

Toggle export on/off for this node. Defaults to true.

where object

When importing a signal or defining an output node, you can specify a measurement from which the signal should be imported – or for which measurement an output node should run.

You can filter measurements by name and by field values and you can use wildcard characters * to formulate patterns to match partial values. The matching of values is case-insensitive.

When using a measurement filter, a list of matching measurements is created. By specifying the index option, you can define which of the matching measurements should apply.

4 nested properties
name string

Target a measurement by name

index integer | string

Out of a number of matching measurements, pick the nth match. Either a 1-based index, or the values first or last to select the first or last match, respectively.

fields Record<string, string>

Target a measurement by a field value.

force string

Target a measurement by a the existence of forces.

Values: "any" "both" "left" "none" "right"
set string

Used to specify which set the exported parameter will use. In most cases, this will be either left or right.

If not set, the JSON output will use set: null.

Space Node object
space string

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

Sets the origin of a custom coordinate system.

primaryAxis string | array

Sets the primary axis of a custom coordinate system. The primary axis of the custom coordinate system will always be a unit vector with the same direction as this vector.

If more than one vectors is given, for example [myMarker1, myMarker2], the vector difference between the first two vectors is used as the primary axis.

secondaryAxis string | array

Sets the secondary axis of a custom coordinate system. The actual secondary axis of the custom coordinate system might differ from the vector specified, since the secondary axis must be a unit vector perpendicular to the primary axis.

If more than one vectors is given, for example [myMarker1, myMarker2], the vector difference between the first two vectors is used as the secondary axis.

order string

Defines what axis the primary and secondary axis corresponds to. The first letter defines the name of the primary axis, and the second letter defines the name of the secondary axis.

Possible values: xy - Primary axis: x, secondary axis: y yx - Primary axis: y, secondary axis: x xz - Primary axis: x, secondary axis: z yz - Primary axis: y, secondary axis: z zy - Primary axis: z, secondary axis: y

Values: "xy" "yx" "xz" "yz" "zy"
alignWithSegment object

Used to create a space that aligns with the specified segment. The resulting space will be rotated in 90 degree increments relative to the world space.

The rotation is based on the average orientation of the segment during a measurement.

1 nested properties
segment string required

Used to create a space that aligns with the specified segment. The resulting space will be rotated in 90 degree increments relative to the world space.

The rotation is based on the average orientation of the segment during a measurement.

where object

When importing a signal or defining an output node, you can specify a measurement from which the signal should be imported – or for which measurement an output node should run.

You can filter measurements by name and by field values and you can use wildcard characters * to formulate patterns to match partial values. The matching of values is case-insensitive.

When using a measurement filter, a list of matching measurements is created. By specifying the index option, you can define which of the matching measurements should apply.

4 nested properties
name string

Target a measurement by name

index integer | string

Out of a number of matching measurements, pick the nth match. Either a 1-based index, or the values first or last to select the first or last match, respectively.

fields Record<string, string>

Target a measurement by a field value.

force string

Target a measurement by a the existence of forces.

Values: "any" "both" "left" "none" "right"
set string

Used to specify which set the exported parameter will use. In most cases, this will be either left or right.

If not set, the JSON output will use set: null.

Event Node object
event string required

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

export boolean

Toggle export on/off for this node. Defaults to true.

where object

When importing a signal or defining an output node, you can specify a measurement from which the signal should be imported – or for which measurement an output node should run.

You can filter measurements by name and by field values and you can use wildcard characters * to formulate patterns to match partial values. The matching of values is case-insensitive.

When using a measurement filter, a list of matching measurements is created. By specifying the index option, you can define which of the matching measurements should apply.

4 nested properties
name string

Target a measurement by name

index integer | string

Out of a number of matching measurements, pick the nth match. Either a 1-based index, or the values first or last to select the first or last match, respectively.

fields Record<string, string>

Target a measurement by a field value.

force string

Target a measurement by a the existence of forces.

Values: "any" "both" "left" "none" "right"
set string

Used to specify which set the exported parameter will use. In most cases, this will be either left or right.

If not set, the JSON output will use set: null.

Marker Node object
marker string required

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

export boolean

Toggle export on/off for this node. Defaults to true.

where object

When importing a signal or defining an output node, you can specify a measurement from which the signal should be imported – or for which measurement an output node should run.

You can filter measurements by name and by field values and you can use wildcard characters * to formulate patterns to match partial values. The matching of values is case-insensitive.

When using a measurement filter, a list of matching measurements is created. By specifying the index option, you can define which of the matching measurements should apply.

4 nested properties
name string

Target a measurement by name

index integer | string

Out of a number of matching measurements, pick the nth match. Either a 1-based index, or the values first or last to select the first or last match, respectively.

fields Record<string, string>

Target a measurement by a field value.

force string

Target a measurement by a the existence of forces.

Values: "any" "both" "left" "none" "right"
set string

Used to specify which set the exported parameter will use. In most cases, this will be either left or right.

If not set, the JSON output will use set: null.

Segment Node object
segment string required

A parameter node defines steps used to calculate a value or a sequence of values. The result is exported to the global scope and exported in the resulting JSON file.

export boolean

Toggle export on/off for this node. Defaults to true.

where object

When importing a signal or defining an output node, you can specify a measurement from which the signal should be imported – or for which measurement an output node should run.

You can filter measurements by name and by field values and you can use wildcard characters * to formulate patterns to match partial values. The matching of values is case-insensitive.

When using a measurement filter, a list of matching measurements is created. By specifying the index option, you can define which of the matching measurements should apply.

4 nested properties
name string

Target a measurement by name

index integer | string

Out of a number of matching measurements, pick the nth match. Either a 1-based index, or the values first or last to select the first or last match, respectively.

fields Record<string, string>

Target a measurement by a field value.

force string

Target a measurement by a the existence of forces.

Values: "any" "both" "left" "none" "right"
set string

Used to specify which set the exported parameter will use. In most cases, this will be either left or right.

If not set, the JSON output will use set: null.

Template Node object

A template node imports a separate Calqulus pipeline file into the current pipeline. This enables, for example, splitting a pipeline up into parts that can be reused in multiple pipelines, or to make the pipelines more readable.

template string required

A template node imports a separate Calqulus pipeline file into the current pipeline. This enables, for example, splitting a pipeline up into parts that can be reused in multiple pipelines, or to make the pipelines more readable.

where object

When importing a signal or defining an output node, you can specify a measurement from which the signal should be imported – or for which measurement an output node should run.

You can filter measurements by name and by field values and you can use wildcard characters * to formulate patterns to match partial values. The matching of values is case-insensitive.

When using a measurement filter, a list of matching measurements is created. By specifying the index option, you can define which of the matching measurements should apply.

4 nested properties
name string

Target a measurement by name

index integer | string

Out of a number of matching measurements, pick the nth match. Either a 1-based index, or the values first or last to select the first or last match, respectively.

fields Record<string, string>

Target a measurement by a field value.

force string

Target a measurement by a the existence of forces.

Values: "any" "both" "left" "none" "right"
globalOption export string

If this option is set, the result of this step will be exposed on the global scope, as well as being exported to the resulting JSON file.

The value of this option will be the name of the exported data and can be used to load the resulting data in other steps.

globalOption output string

If this option is set, the result of this step will be exposed on the local scope.

The value of this option will be the name of the output data and can be used to load the resulting data in other steps within the same output node.

You can also use the short-form "arrow syntax" to define an output.

globalOption set string

Used to specify which set the exported parameter will use. In most cases, this will be either left or right.

This option is only used in two cases; where there is also an export option set, or on the last step in a list. In the latter case, the step's set is used only if there's no set defined on the parent output node.

If this option is not set, the JSON output will use set: null.

globalOption space string

This option lets you reference a space where you want the input data for the step to be translated into.

All named inputs will automatically be converted.

NOTE: This is not yet implemented for segments.

categoryOption Angle project string

If set to a string, the angle will be calculated in two dimensions on the specified coordinate plane by ignoring the component of the input signals which is not part of the plane.

Using a PlaneSequence, projects the input vectors on the provided plane.

Note: The projection is only applied for vector-based angles and is ignored when calculating joint angles.

categoryOption Angle rotationOrder string

The rotation order to use for calculating the Euler angle. Possible rotation orders are:

Cardan sequence: XYZ YZX ZXY XZY YXZ ZYX

Euler sequence: XYX XZX YXY YZY ZXZ ZYZ

categoryOption Angle unwrap string | boolean | number

When set to true, an event, or a numeric value, the unwrap option shifts the angle phases in order to achieve a continuous curve, i.e., it tries to detect when an angle crosses over its available range (-PI to PI for radians, -180 to 180 degrees).

This allows for tracking angles on movements that goes outside of the typical angle range.

To do this, it looks for jumps between consecutive angles. If the jump is greater than a threshold of half the range (PI for radians, 180 for degrees), the angle is shifted by adding multiples of of the range until the jump no longer crosses the threshold.

The unwrap algorithm is run over all available components.

If set to true or 0, the algorithm aligns the unwrap to the start of the sequence. I.e., it assumes the first frame is correct in being within the original range and the following angles are moved to follow suit.

If set to an Event or a Number, the algorithm will assume that the corresponding frame is correct in being within the original range. All other angles will be shifted to follow suit. This enables tracking a rotational movement where the angle for a specific event is intended to be within the standard range (-PI to PI for radians, -180 to 180 degrees).

IF a supplied event has more than one instance, the first instance is used.

Note: The unwrap algorithm is sensitive to noise, which may introduce unexpected artifacts. Please consider filtering the signal(s) before calculating its angle using unwrap.

categoryOption Aggregation useCycles string | boolean

If the signal has cycles defined, the aggregation will be run separately over each signal, and a list of values are returned, one for each cycle.

To avoid this behavior, set useCycles to false.

For information on how to set event cycles on a signal, see the eventMask step.

categoryOption Arithmetic frameSequenceOrder string

If set to any value but none, the input signals will pass through a function which returns a list of signals where each value is from a frame greater than or equal to the frame of the corresponding value from the preceding Signal.

If set to forward, it will start from the first value of the first (leftmost) input signal (operand) and the algorithm will look at subsequent operands (to the right) one "row" at a time.

Conversely, if set to reverse, the event sequencing uses the reverse order of operands and goes from right to left.

If a full "row" of values could not be matched, it is not included in the result, i.e., all operands will be of the same length.

This is useful, for example, when calculating the distance between two signals at a certain event.

The function will only apply if all input signals have applied a Frames filter, otherwise the signals are left untouched.

Example

subtract: [LeftFoot.y@LFS, RightFoot.y@RFS] frameSequenceOrder: reverse

Creates an event sequence from the inputs, starting from the second operand (RFS event) and creates event pairs RFS -> LFS out of the values. It then subtracts each frame from the RightFoot from the corresponding LeftFoot frame.

If frameSequenceOrder had been set to forward, it would have created pairs going from LFS -> RFS instead.

Using the frameSequenceOrder option ensures that the operands starts with the intended event and that both operands have the same length.