SBPath#

This class describes a structural path, i.e. a trajectory of atoms (samson.SBAtom).

You can add, insert, and remove a conformation and parts of a path using samson.SBPath.add(), samson.SBPath.insert(), and samson.SBPath.remove() functions respectively.

You can also add, insert, and remove atoms using samson.SBPath.addAtom(), samson.SBPath.insertAtom(), and samson.SBPath.removeAtom() functions respectively.

You can also get and set position, velocity, and force data for all atoms in a path or for a particular atom.

You can get a node indexer of atoms in the conformation:

# get all paths in the active document
pathIndexer = SAMSON.getNodes('node.type path')

if len(pathIndexer):
        # get the first conformation
        path = pathIndexer[0]

        # get an indexer of atoms in the path
        atomIndexer = path.getAtomIndexer()

You can create a conformation from a path for a particular step:

# create a conformation from the first step in the path
conformationIndexer = path.createConformation(0)
conformation = conformationIndexer[0]
# name the conformation
conformation.name = "Initial state"

# turn the undo system on
SAMSON.beginHolding("Add new conformation")
# hold the cloned folder instance
SAMSON.hold(conformation)

# create the cloned folder
conformation.create()

# add the conformation to the active document
SAMSON.getActiveDocument().addChild(conformation)

# turn the undo system off
SAMSON.endHolding()

You can set the current step in a path:

# make the operation undoable
SAMSON.beginHolding("Change path step")

# set the current step of the path to 10
path.currentStep = 10

# stop holding the undoable operation
SAMSON.endHolding()

You can go through a path to visualize it in SAMSON’s viewport as follows:

    # make the operation undoable
    SAMSON.beginHolding("Change path steps")

# set the step duration in seconds
path.stepDuration = SBQuantity.second(0.05)

# go through all the steps in the path
for step in range(path.numberOfSteps):
    path.currentStep = step
    # request SAMSON to process events
    SAMSON.processEvents()

    # stop holding the undoable operation
    SAMSON.endHolding()

See also

SAMSON SDK: SBMStructuralModelPath

class samson.SBPath(*args, **kwargs)#

Bases: SBNode

This class describes a structural path.

Overloaded function.

  1. __init__(self: samson.SBPath) -> None

Constructs a structural model path

  1. __init__(self: samson.SBPath, name: str, nodeIndexer: samson.SBNodeIndexer) -> None

Constructs a structural model path with the given name from the conformations in nodeIndexer.

Parameters:
  • name (str) – A name of the path

  • nodeIndexer (samson.SBNodeIndexer) – An indexer with conformations.

class AnimationType(self: samson.SBPath.AnimationType, value: int)#

Bases: pybind11_object

Members:

Once : Animate once

Loop : Animate in loops

Bounce : Animate in bouncing loops

Bounce = <AnimationType.Bounce: 3>#
Loop = <AnimationType.Loop: 2>#
Once = <AnimationType.Once: 1>#
property name#
property value#
add(*args, **kwargs)#

Overloaded function.

  1. add(self: samson.SBPath, conformation: samson.SBConformation) -> bool

Adds a frame to the path

  1. add(self: samson.SBPath, path: samson.SBPath) -> bool

Adds frames to the path

  1. add(self: samson.SBPath, positionData: list[samson.SBPhysicalVector3], energy: samson.SBQuantity.unitsSI = 0 (dimensionless), time: samson.SBQuantity.unitsSI = 0 (dimensionless), velocityData: list[samson.SBPhysicalVector3] = [], forceData: list[samson.SBPhysicalVector3] = []) -> bool

Adds a frame to the path

  1. add(self: samson.SBPath, positionData: list[list[samson.SBPhysicalVector3]], energyData: list[samson.SBQuantity.unitsSI] = [], timeData: list[samson.SBQuantity.unitsSI] = [], velocityData: list[list[samson.SBPhysicalVector3]] = [], forceData: list[list[samson.SBPhysicalVector3]] = []) -> bool

Adds frames to the path

addAtom(self: samson.SBPath, atom: SBMStructuralModelNodeAtom, atomPositionVector: list[samson.SBPhysicalVector3] = [], atomVelocityVector: list[samson.SBPhysicalVector3] = [], atomForceVector: list[samson.SBPhysicalVector3] = []) bool#

Adds an atom to the path

copy(self: samson.SBPath, firstStep: int, lastStep: int) samson.SBPath#

Copies frames from the path to create a new path

createConformation(self: samson.SBPath, step: int) samson.SBNodeIndexer#

Create a conformation corresponding to a specific step

createConformations(self: samson.SBPath) samson.SBNodeIndexer#

Create conformations corresponding to all steps

createStructuralModels(*args, **kwargs)#

Overloaded function.

  1. createStructuralModels(self: samson.SBPath, step: int) -> samson.SBNodeIndexer

Create structural models corresponding to a specific step

  1. createStructuralModels(self: samson.SBPath) -> samson.SBNodeIndexer

Create structural models corresponding to all steps

getAtomIndexer(self: samson.SBPath) samson.SBNodeIndexer#

Returns the indexer of atoms for which a position is saved.

Returns:

A node indexer with the associated atoms.

Return type:

samson.SBNodeIndexer

getEnergy(self: samson.SBPath, step: int) samson.SBQuantity.unitsSI#

Returns the energy for a specific step

getEnergyData(self: samson.SBPath) list[samson.SBQuantity.unitsSI]#

Returns the energy data

getForce(*args, **kwargs)#

Overloaded function.

  1. getForce(self: samson.SBPath, step: int, atomIndex: int) -> samson.SBPhysicalVector3

Returns the force of atom with atomIndex for a specific step

  1. getForce(self: samson.SBPath, step: int, atom: SBMStructuralModelNodeAtom) -> samson.SBPhysicalVector3

Returns the force of atom for a specific step

getForceData(self: samson.SBPath) list[list[samson.SBPhysicalVector3]]#

Returns the force array: 2D array, (number of timesteps) x (number of structural nodes)

getNextPath(self: samson.SBPath) samson.SBPath#

Returns the next path in the document

getPosition(*args, **kwargs)#

Overloaded function.

  1. getPosition(self: samson.SBPath, step: int, atomIndex: int) -> samson.SBPhysicalVector3

Returns the position of atom with atomIndex for a specific step

  1. getPosition(self: samson.SBPath, step: int, atom: SBMStructuralModelNodeAtom) -> samson.SBPhysicalVector3

Returns the position of atom for a specific step

getPositionData(self: samson.SBPath) list[list[samson.SBPhysicalVector3]]#

Returns the position array: 2D array, (number of timesteps) x (number of structural nodes)

getPreviousPath(self: samson.SBPath) samson.SBPath#

Returns the previous path in the document

getTime(self: samson.SBPath, step: int) samson.SBQuantity.unitsSI#

Returns the time for a specific step

getTimeData(self: samson.SBPath) list[samson.SBQuantity.unitsSI]#

Returns the time data

getVelocity(*args, **kwargs)#

Overloaded function.

  1. getVelocity(self: samson.SBPath, step: int, atomIndex: int) -> samson.SBPhysicalVector3

Returns the velocity of atom with atomIndex for a specific step

  1. getVelocity(self: samson.SBPath, step: int, atom: SBMStructuralModelNodeAtom) -> samson.SBPhysicalVector3

Returns the velocity of atom for a specific step

getVelocityData(self: samson.SBPath) list[list[samson.SBPhysicalVector3]]#

Returns the velocity array: 2D array, (number of timesteps) x (number of structural nodes)

insert(*args, **kwargs)#

Overloaded function.

  1. insert(self: samson.SBPath, step: int, conformation: samson.SBConformation) -> bool

Inserts a frame to the path at the step

  1. insert(self: samson.SBPath, step: int, path: samson.SBPath) -> bool

Inserts frames to the path starting from the step

  1. insert(self: samson.SBPath, step: int, positionData: list[samson.SBPhysicalVector3], energy: samson.SBQuantity.unitsSI = 0 (dimensionless), time: samson.SBQuantity.unitsSI = 0 (dimensionless), velocityData: list[samson.SBPhysicalVector3] = [], forceData: list[samson.SBPhysicalVector3] = []) -> bool

Inserts a frame in the path at position step

  1. insert(self: samson.SBPath, step: int, positionData: list[list[samson.SBPhysicalVector3]], energyData: list[samson.SBQuantity.unitsSI] = [], timeData: list[samson.SBQuantity.unitsSI] = [], velocityData: list[list[samson.SBPhysicalVector3]] = [], forceData: list[list[samson.SBPhysicalVector3]] = []) -> bool

Inserts frames in the path at position step

insertAtom(self: samson.SBPath, atomIndex: int, atom: SBMStructuralModelNodeAtom, atomPositionVector: list[samson.SBPhysicalVector3] = [], atomVelocityVector: list[samson.SBPhysicalVector3] = [], atomForceVector: list[samson.SBPhysicalVector3] = []) bool#

Inserts an atom at index atomIndex to the path

remove(*args, **kwargs)#

Overloaded function.

  1. remove(self: samson.SBPath, step: int) -> samson.SBConformation

Remove a frame from the path to create a conformation

  1. remove(self: samson.SBPath, firstStep: int, lastStep: int) -> samson.SBPath

Removes frames from the path to create a new path

removeAtom(self: samson.SBPath, atom: SBMStructuralModelNodeAtom) bool#

Removes an atom from the path

setEnergy(self: samson.SBPath, step: int, energy: samson.SBQuantity.unitsSI) None#

Sets the energy for a specific step

setEnergyData(self: samson.SBPath, energyData: list[samson.SBQuantity.unitsSI]) None#

Sets the energy data

setForce(*args, **kwargs)#

Overloaded function.

  1. setForce(self: samson.SBPath, step: int, atomIndex: int, force: samson.SBPhysicalVector3) -> None

Sets the force of atom with atomIndex to position for a specific step

  1. setForce(self: samson.SBPath, step: int, atom: SBMStructuralModelNodeAtom, force: samson.SBPhysicalVector3) -> None

Sets the force of atom to position for a specific step

setForceData(self: samson.SBPath, forceData: list[list[samson.SBPhysicalVector3]]) None#

Sets the force array: 2D array, (number of timesteps) x (number of structural nodes)

setPosition(*args, **kwargs)#

Overloaded function.

  1. setPosition(self: samson.SBPath, step: int, atomIndex: int, position: samson.SBPhysicalVector3) -> None

Sets the position of atom with atomIndex to position for a specific step

  1. setPosition(self: samson.SBPath, step: int, atom: SBMStructuralModelNodeAtom, position: samson.SBPhysicalVector3) -> None

Sets the position of atom to position for a specific step

setPositionData(self: samson.SBPath, positionData: list[list[samson.SBPhysicalVector3]]) None#

Sets the position array: 2D array, (number of timesteps) x (number of structural nodes)

setTime(self: samson.SBPath, step: int, time: samson.SBQuantity.unitsSI) None#

Sets the time for a specific step

setTimeData(self: samson.SBPath, timeData: list[samson.SBQuantity.unitsSI]) None#

Sets the time data

setVelocity(*args, **kwargs)#

Overloaded function.

  1. setVelocity(self: samson.SBPath, step: int, atomIndex: int, velocity: samson.SBPhysicalVector3) -> None

Sets the velocity of atom with atomIndex to position for a specific step

  1. setVelocity(self: samson.SBPath, step: int, atom: SBMStructuralModelNodeAtom, velocity: samson.SBPhysicalVector3) -> None

Sets the velocity of atom to position for a specific step

setVelocityData(self: samson.SBPath, velocityData: list[list[samson.SBPhysicalVector3]]) None#

Sets the velocity array: 2D array, (number of timesteps) x (number of structural nodes)

updateState(self: samson.SBPath) None#

Updates the state along the path according to the animation parameters

Bounce = <AnimationType.Bounce: 3>#
Loop = <AnimationType.Loop: 2>#
Once = <AnimationType.Once: 1>#
property animationFlag#

The animation flag

property animationType#

The animation type

property currentEnergy#

The current energy

property currentStep#

The current step along the path

property currentTime#

The current time

property forwardFlag#

The forward flag, which indicates when the animation is moving forward

property numberOfAtoms#

The number of atoms for which a position is saved

property numberOfSteps#

The number of steps in the path

property smoothingWindowSize#

The size of the smoothing window

property stepDuration#

The step duration

property stride#

The animation stride