turtlend
A turtle that carries its own orthonormal frame through 3- or N-dimensional space.
turtlend provides three classes and depends only on NumPy:
TurtleNDholds a position and an orthonormal frame in N dimensions. It moves along its heading and rotates in the plane of any two basis vectors.Turtle3Dis the three-dimensional turtle thatTurtleNDgeneralizes. It builds molecular geometry from bond lengths, bond angles and dihedral angles.Vector3Dis the vector class thatTurtle3Duses, with helper functions for angles, dihedrals and distances.
Turtle3D began as C code written in 1990 and was ported to Python for
proteusPy. TurtleND was written for
WaveRider. Both packages carried
their own copies of these modules. This package is the single source for both.
Install
pip install turtlend
turtlend requires Python 3.12 or 3.13.
Move a turtle in N dimensions
All angles are in degrees.
from turtlend import TurtleND
turtle = TurtleND(ndim=5)
turtle.move(1.0) # along the heading, frame[0]
turtle.rotate(90.0, 0, 3) # in the plane of basis vectors 0 and 3
turtle.move(1.0)
print(turtle.position) # position in global coordinates
print(turtle.heading) # frame[0]
In three or more dimensions, roll, pitch, yaw and turn are named cases
of rotate and follow the Turtle3D conventions.
To convert a vector between the global frame and the turtle's frame, call
to_local or to_global.
Record a path
To record each position the turtle visits, set recording to True:
turtle.recording = True
turtle.move(1.0)
turtle.turn(30.0)
turtle.move(1.0)
path = turtle.tape # list of position arrays
turtle.reset_tape()
Add a dimension to a live turtle
expand_dim grows the position and the frame from N to N+1 dimensions and
returns the index of the new axis. The existing basis vectors are unchanged.
axis = turtle.expand_dim(label="time")
turtle.orient_in_time(axis) # heading becomes the negative unit vector of that axis
orient_in_time points the heading along the negative direction of the axis.
To rotate the heading toward an arbitrary direction, call orient_toward.
Use the 3-D turtle
from turtlend import Turtle3D
turtle = Turtle3D()
turtle.move(1.53)
turtle.turn(109.5)
turtle.roll(60.0)
To place the turtle on a protein backbone, call orient_from_backbone with
the N, CA, CB and C atom positions as NumPy arrays.
Develop
poetry install --with dev
poetry run pytest
License
BSD-3-Clause. See LICENSE.
Metadata
Release files for turtlend 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| turtlend-0.1.0.tar.gz | 16.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| turtlend-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.1 kB
Release files / turtlend-0.1.0.tar.gz
| Download URL | turtlend-0.1.0.tar.gz |
|---|---|
| Size | 16.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
feba41cd25e4c211080bcdad1e1917ce920ad038bd0ce8254fb97a2f64874152
|
|
BLAKE2b-256 checksum How to use checksums |
1020a31ed555cf633c978d2dc58ecff97cd3b7efb968e1d949748fc2844bbec6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / turtlend-0.1.0-py3-none-any.whl
| Download URL | turtlend-0.1.0-py3-none-any.whl |
|---|---|
| Size | 17.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
40a910ada561088cd64897999c62abecf530db5ead856dad3057685f0a00aa04
|
|
BLAKE2b-256 checksum How to use checksums |
fe654c862ee152b520eb263886f6f24a04b24e4b8447a5665d915288e3b113b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency log