transformation — Python Frame Transformations

The ale.transformation module

New in version 0.1.0:

class ale.transformation.FrameChain(incoming_graph_data=None, **attr)

This class is responsible for handling rotations between reference frames. Every node is the reference frame and every edge represents the rotation to between those two nodes. Each edge is directional, where the source –> destination is one rotation and destination –> source is the inverse of that rotation.

Attributes

frame_changeslist

A list of tuples that represent the rotation from one frame to another. These tuples should all be NAIF codes for reference frames

ephemeris_timelist

A of ephemeris times that need to be rotated for each set of frame rotations in the frame chain

add_edge(rotation, **kwargs)

Add an edge between u and v.

The nodes u and v will be automatically added if they are not already in the graph.

Edge attributes can be specified with keywords or by directly accessing the edge’s attribute dictionary. See examples below.

Parameters

u_of_edge, v_of_edgenodes

Nodes can be, for example, strings or numbers. Nodes must be hashable (and not None) Python objects.

attrkeyword arguments, optional

Edge data (or labels or objects) can be assigned using keyword arguments.

See Also

add_edges_from : add a collection of edges

Notes

Adding an edge that already exists updates the edge data.

Many NetworkX algorithms designed for weighted graphs use an edge attribute (by default weight) to hold a numerical value.

Examples

The following all add the edge e=(1, 2) to graph G:

>>> G = nx.Graph()  # or DiGraph, MultiGraph, MultiDiGraph, etc
>>> e = (1, 2)
>>> G.add_edge(1, 2)  # explicit two-node form
>>> G.add_edge(*e)  # single edge as tuple of two nodes
>>> G.add_edges_from([(1, 2)])  # add edges from iterable container

Associate data to edges using keywords:

>>> G.add_edge(1, 2, weight=3)
>>> G.add_edge(1, 3, weight=7, capacity=15, length=342.7)

For non-string attribute keys, use subscript notation.

>>> G.add_edge(1, 2)
>>> G[1][2].update({0: 5})
>>> G.edges[1, 2].update({0: 5})
compute_rotation(source, destination)

Returns the rotation to another node. Returns the identity rotation if the other node is this node.

Parameters

sourceint

Integer id for the source node to rotate from

destinationint

Integer id for the node to rotate into from the source node

Returns

rotationObject

Returns either a TimeDependentRotation object or ConstantRotation object depending on the number of rotations being multiplied together

compute_time_dependent_rotiations(frames, times)

Computes the time dependent rotations based on a list of tuples that define the relationships between frames as (source, destination) and a list of times to compute the rotation at. The rotations are then appended to the frame chain object

frameslist

A list of tuples that define the relationships between frames

timeslist

A list of times to compute the rotation at

static extract_exact_ck_times(observStart, observEnd, targetFrame)

Generates all exact ephemeris data assocaited with a specific frame as defined by targetFrame, between a start and end interval defined by observStart and observEnd

Parameters

observStartfloat

Start time in ephemeris time to extract ephemeris data from

observEndfloat

End time in ephemeris time to extract ephemeris data to

targetFrameint

Target reference frame to get ephemeris data in

Returns

timeslist

A list of times where exact ephemeris data where recorded for the targetFrame

last_time_dependent_frame_between(source, destination)

Find the last time dependent frame between the source frame and the destination frame.

Parameters

sourceint

Integer id of the source node

destinationint

Integer of the destination node

Returns

: tuple, None

Returns the source node id, destination node id, and edge dictionary which contains the rotation from source to destination.

ale.transformation.create_rotations(rotation_table)

Convert an ISIS rotation table into rotation objects.

Parameters

rotation_tabledict

The rotation ISIS table as a dictionary

Returns

: list

A list of time dependent or constant rotation objects from the table. This list will always have either 1 or 2 elements. The first rotation will be time dependent and the second rotation will be constant. The rotations will be ordered such that the reference frame the first rotation rotates to is the reference frame the second rotation rotates from.