Topology

Find Bonds

Finds bonds between atoms based on distance. Based on the vdw_radii for each point, finds other points within a certain radius to create a bond to. Does not preserve the index for the points, detect bond type, or transfer all attributes

Inputs

Name Type Description Default
Atoms Geometry Atomic geometry that contains vertices and edges. required
Selection Bool Selection of atoms to check for bonds on True
Scale Float Scale the VDW radii of the atoms when searching for bonds 1.0

Outputs

Name Type Description Default
Atoms Geometry required

Break Bonds

Will delete a bond between atoms that already exists based on a distance cutoff, or is selected in the Selection input. Leaves the atoms unaffected

Inputs

Name Type Description Default
Atoms Geometry Atomic geometry that contains vertices and edges required
Selection Bool Delete selected bonds, regardless of the cutoff False
Cutoff Float Cutoff distance over which to remove bonds (Angstrom) 2.5

Outputs

Name Type Description Default
Atoms Geometry Atomic geometry that contains vertices and edges required

Edge Info

Get information for the selected edge, evaluated on the point domain. The “Edge Index” selects the edge from all possible connected edges. Edges are unfortunately stored somewhat randomly. The resulting information is between the evaluating point and the point that the edge is between. Point Index returns -1 if not connected.

In the video example, cones are instanced on each point where the Edge Index returns a valid connection. The Edge Vector can be used to align the instanced cone along that edge. The length of the edge can be used to scale the cone to the other point. As the “Edge Index” is changed, the selected edge changes. When “Edge Index” == 3, only the atoms with 4 connections are selected, which in this model (1BNA) are just the phosphates.

Inputs

Name Type Description Default
Edge Index Int Index within the gorup of edges that are connected to this point 0

Outputs

Name Type Description Default
Is Valid Bool Whether there is a valid edge corresponding to the given index False
Point Index Int The index for the other point involved in this edge, -1 if not connected -1
Point Position Vector The position for the other point involved in this edge, (0, 0, 0) if not connected [0.0, 0.0, 0.0]
Edge Index Int The index on the edge domain for the selected edge. -1 if not connected -1
Edge Vector Vector The vector along the selected edge. (0, 0, 0) if not connected [0.0, 0.0, 0.0]
Edge Length Float Length of the selected edge, -1 if not connected -1.0

Edge Angle

Calculate the angle between two edges, selected with the edge indices. For molecule bonds, combinations of [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)] will select all possible bond angles.

In the video example, two edges are selected with their “Edge Index” values. Those atoms which aren’t valid return false and do not get instanced. The two edge vectors are used to calculate the perpendicular vector through cross product, around which the rotation for the cone is rotated. This demonstrates the ability to calculate the edge angle between the two selected edges.

Inputs

Name Type Description Default
Edge A Int Index within the gorup of edges that are connected to this point 0
Edge B Int Index within the gorup of edges that are connected to this point 1

Outputs

Name Type Description Default
Is Valid Bool Whether both edges are valid corresponding to the given indices and are not the same False
Angle Float Angle between the two selected edges in radians. Returns -1 if not valid. -1.0
Edge Index A Int Index for “Edge A” in the Edge domain of the geometry. Returns -1 if not valid -1
Edge Index B Int Index for “Edge B” in the Edge domain of the geometry. Returns -1 if not valid -1
Edge Vector A Vector Vector from the current point to the other point in Edge A. Returns (0, 0, 0) if not valid. [0.0, 0.0, 0.0]
Edge Vector B Vector Vector from the current point to the other point in Edge B. Returns (0, 0, 0) if not valid. [0.0, 0.0, 0.0]

Connected Points For Edge Point

Finds the conntected point for the selected “Edge Index”, and returns each point index for all of the points connected to that point. If the connection doesn’t exist, or the connection is back to the original point, -1 is returned.

In the video example, a new point is selected based on the “Edge Index”. At that point, all of the connecting points are exposed as indices 0, 1, 2, 3. If that index is not a valid point or connection, or the point is the same as the original point that is being evaluated, then -1 is returned.

This is one of the more complicated topology nodes, but allows indexing of the atoms that are bonded to a bonded atom. This helps with doing calculations for planar molecules.

Inputs

Name Type Description Default
Edge Index Int Index within the gorup of edges that are connected to this point 0

Outputs

Name Type Description Default
0 Int Index for the 0th point, connected to the point at the end of the selected edge. Returns -1 if not connected or self -1
1 Int Index for the 1th point, connected to the point at the end of the selected edge. Returns -1 if not connected or self -1
2 Int Index for the 2th point, connected to the point at the end of the selected edge. Returns -1 if not connected or self -1
3 Int Index for the 3th point, connected to the point at the end of the selected edge. Returns -1 if not connected or self -1
Total Int Number of edges conncted to the connected point, including this edge 0

Backbone Positions

If the atoms have been through the “Compute Backbone” node, then the backbone atom positions will be available as attributes through this node.

In the video example, the Alpha Carbons output is styled as spheres, where the position is mixed with some of the backbone posiitons. The backbone positions can also be selected from the AA residue higher or lower with the specified offset.

Inputs

Name Type Description Default
Offset Int 0

Outputs

Name Type Description Default
O Vector [0.0, 0.0, 0.0]
C Vector [0.0, 0.0, 0.0]
CA Vector [0.0, 0.0, 0.0]
N Vector [0.0, 0.0, 0.0]

Compute Backbone

Gets the backbone positions for each AA residue and stores them as attributes, and additionally computes the phi and psi angles for each residue in radians.

In the video example, the Phi and Psi angles are mapped from (-Pi, Pi) to (0, 1), which is used in the Color Ramp node to choose colors. This is computed on the alpha carbons, but can be used on any of the resulting atoms for the corresponding residues, which is shown in the second video.

Inputs

Name Type Description Default
Atoms Geometry The atomic geometry, contiaining backbone peptide atoms to compute Phi and Psi angles required

Outputs

Name Type Description Default
Atoms Geometry All of the Atomic Geometry, with the Phi & Psi attributes assigned to all corresponding atoms required
Alpha Carbons Geometry Just the alpha carbons, with the computed Phi and Psi angles required
Phi Float Compute Phi angle for the AA in radians 0.0
Psi Float Compute Psi angle for the AA in radians 0.0

3-Point Angle

Calculate the angle between 3 different points. These points are selected based on their index in the point domain, with Index B being the centre of the calculation.

In the video example, the same calculation that is occurring internally inside of the MN_topo_edge_angle node, is being handled explicity by this node. If the Index is being used as Index B then the current point that is being evaluated is the centre of the angle calculation. If this value is changed, then the point at the corresponding index is used, which results in a smaller angle in the example video.

Inputs

Name Type Description Default
Index A Int First of the points for the angle calculation 0
Index B Int The middle point for the angle calculation 1
Index C Int Last of the points for the angle calculation 2

Outputs

Name Type Description Default
Angle Float Angle between the points around Index B in radians 0.0

2-Point Angle

Calculate the angle that two points make, relative to the current point being evaluated. Points are selected based on their index, with the centre of the angle calculation being the current point’s position. Equivalent to using 3-Point angle and using Index as the Index B.

In the example video, the angle calculation is similar to that of the 3-Point Angle node, but the middle point is always the current point.

Inputs

Name Type Description Default
Index A Int First end point for the angle calculation around the current point 0
Index C Int Last end point for the angle calculation around the current point 2

Outputs

Name Type Description Default
Angle Float Angle of the line A -> Self -> C in radians 0.0

Point Distance

Calculate the distance and the vector between the evaluating point and the point selected via the Index.

In the example video, each point is calculating a vector and a distance between itself and the indexed point. When the Point Mask node is used, this index is then on a per-group basis, so each point in the group points to just the group’s corresponding point.

Inputs

Name Type Description Default
Index Int Index for the selected point to measure to 100

Outputs

Name Type Description Default
Vector Vector Vector from the current point to the indexed point [0.0, 0.0, 0.0]
Distance Float Distance from the current point to the indexed point 0.0

Group Point Mask

Returns the index for the atom for each unique group (from res_id) for each point in that group. Allows for example, all atoms in a group to be rotated around the position of the selected atom.

In the video example, the atom_name is used to select an atom within the groups. Each atom’s position is then offset to that position, showing the group-wise selection.

Inputs

Name Type Description Default
atom_name Int Atom to pick from the group 1

Outputs

Name Type Description Default
Is Valid Bool Group contains only one occurrance of the selected atom. None or more than one returns False False
Index Int Index for the group’s atom with specified name, returns -1 if not valid 0
Position Vector Position of the picked point in the group, returns (0, 0, 0) if not valid [0.0, 0.0, 0.0]