deeptrack.backend.core Module#

Core data structures for DeepTrack2.

This module defines the data structures used throughout DeepTrack2 to construct, manage, and evaluate computational graphs with flexible data storage and dependency management.

Key Features#

  • Hierarchical Data Management

    Provides validated, hierarchical data containers (DeepTrackDataObject and DeepTrackDataDict) to store data and manage complex, nested data structures. Supports dependency tracking and flexible indexing.

  • Computation Graphs with Lazy Evaluation

    Implements the DeepTrackNode class, the core abstraction for nodes in a computational graph. Supports lazy evaluation, caching, dependency tracking, and operator overloading for intuitive composition of complex computational pipelines.

  • Citation Support

    Provides citation metadata to ensure proper academic attribution for work built on DeepTrack2.

Module Structure#

Classes:

  • DeepTrackDataObject: Basic container for data with validation status.

    Simple data container that stores data and tracks its validity (valid/invalid).

  • DeepTrackDataDict: Hierarchical dictionary for multiple data objects.

    Stores multiple DeepTrackDataObject instances indexed by tuples of integers, enabling the creation of flexible, nested data hierarchies.

  • DeepTrackNode: Node in a computation graph with operator overloading.

    Represents a node in a computation graph, capable of storing and computing values based on dependencies, with support for lazy evaluation, dependency tracking, and operator overloading.

Functions:

  • _equivalent(a, b) -> bool

    Determines whether two objects should be considered equivalent, according to DeepTrack2’s internal rules (identity, empty lists, etc).

  • _create_node_with_operator(op, a, b) -> DeepTrackNode

    Internal helper function to create a new computation node by applying a specified operator to two operands, establishing correct graph relationships and supporting operator overloading.

Attributes:

  • CITATION_MIDTVEDT2021QUANTITATIVE: str

    BibTeX citation for the original DeepTrack2 publication.

Examples#

>>> import deeptrack as dt

Create a simple computational pipeline using DeepTrack2 nodes:

>>> parent = dt.DeepTrackNode()
>>> child = dt.DeepTrackNode(lambda: 2 * parent())
>>> parent.add_child(child)
>>> parent.store(5)
>>> child()  # Compute child
10

Operator overloading for computation nodes:

>>> a = dt.DeepTrackNode(lambda: 3)
>>> b = dt.DeepTrackNode(lambda: 4)
>>> sum_node = a + b
>>> sum_node()
7

Create and use a hierarchical data dictionary:

>>> data_dict = dt.DeepTrackDataDict()
>>> data_dict.create_index((0, 1))
>>> data_dict[(0, 1)].store("Example data")
>>> data_dict[(0, 1)].current_value()
'Example data'

Validate and invalidate a data object:

>>> data_obj = dt.DeepTrackDataObject()
>>> data_obj.is_valid()
False
>>> data_obj.store(42)
>>> data_obj.is_valid()
True
>>> data_obj.invalidate()
>>> data_obj.is_valid()
False

Classes#

DeepTrackDataDict()

Store multiple data objects indexed by tuples of integers (_ID).

DeepTrackDataObject()

Basic data container for DeepTrack2.

DeepTrackNode([action, node_name])

Node in a DeepTrack2 computation graph, supporting operator overloading.