Temporal Memory

Overview

Temporal memory in the memories-dev framework enables AI systems to develop an understanding of Earth’s processes across multiple time scales - from real-time data to historical records spanning decades or longer.

Key Concepts

Temporal Scales

The framework organizes temporal data across different scales:

  • Real-time: Current observations (seconds to minutes)

  • Short-term: Recent history (hours to days)

  • Medium-term: Seasonal patterns (weeks to months)

  • Long-term: Annual and multi-year trends

  • Historical: Archival data (decades to centuries)

Time Series Structure

Each temporal memory contains structured time series data:

from memories.earth.temporal import TimeSeries

# Create a time series for temperature data
temperature_series = TimeSeries(
    name="surface_temperature",
    unit="celsius",
    temporal_resolution="1d",  # daily
    spatial_context="amazon_basin"
)

# Add observations
temperature_series.add_observation(
    timestamp="2023-01-01",
    value=28.5,
    uncertainty=0.2,
    source="satellite_thermal_infrared"
)

Temporal Patterns

The framework identifies and stores temporal patterns:

from memories.earth.temporal import PatternDetector

# Create a pattern detector
detector = PatternDetector(
    methods=["seasonality", "trend", "anomaly"],
    min_confidence=0.8
)

# Detect patterns in time series
patterns = detector.detect_patterns(temperature_series)

# Example output
for pattern in patterns:
    print(f"Pattern: {pattern.type}")
    print(f"Confidence: {pattern.confidence}")
    print(f"Parameters: {pattern.parameters}")

Implementation

Temporal Memory Architecture

The core components of temporal memory:

from memories.architecture import TemporalMemory

# Create a temporal memory system
temporal_memory = TemporalMemory(
    name="climate_memory",
    storage_path="/data/climate",
    retention_policies={
        "real_time": "7d",
        "short_term": "90d",
        "medium_term": "5y",
        "long_term": "permanent"
    }
)

Temporal Queries

Querying data across time scales:

# Simple time range query
recent_data = temporal_memory.query(
    variables=["temperature", "precipitation"],
    time_range=("2023-01-01", "2023-03-31"),
    spatial_context="amazon_basin",
    temporal_resolution="1d"
)

# Aggregated query
monthly_avg = temporal_memory.query_aggregate(
    variable="temperature",
    time_range=("2020-01-01", "2023-12-31"),
    spatial_context="amazon_basin",
    aggregation="monthly_mean"
)

# Pattern query
seasonal_patterns = temporal_memory.query_patterns(
    variable="vegetation_index",
    pattern_type="seasonality",
    min_confidence=0.7,
    spatial_context="amazon_basin"
)

Temporal Analysis

Time Series Decomposition

Breaking down time series into components:

from memories.earth.analysis import TimeSeriesDecomposition

# Create decomposition analyzer
decomposer = TimeSeriesDecomposition(method="STL")

# Decompose time series
components = decomposer.decompose(temperature_series)

# Access components
trend = components.trend
seasonality = components.seasonality
residuals = components.residuals

Change Detection

Identifying significant changes in temporal data:

from memories.earth.analysis import ChangeDetector

# Create change detector
detector = ChangeDetector(
    method="CUSUM",
    sensitivity=0.8
)

# Detect changes
changes = detector.detect_changes(temperature_series)

# Output detected changes
for change in changes:
    print(f"Change detected at {change.timestamp}")
    print(f"Magnitude: {change.magnitude}")
    print(f"Confidence: {change.confidence}")

Forecasting

Predicting future values based on historical patterns:

from memories.earth.forecast import Forecaster

# Create forecaster
forecaster = Forecaster(
    method="prophet",
    uncertainty=True
)

# Train on historical data
forecaster.train(temperature_series)

# Generate forecast
forecast = forecaster.forecast(
    periods=90,  # 90 days ahead
    frequency="1d"
)

# Access forecast results
predicted_values = forecast.values
prediction_intervals = forecast.intervals

Best Practices

  1. Resolution Selection: Choose appropriate temporal resolution for your use case

  2. Missing Data Handling: Define strategies for gaps in time series

  3. Periodic Reanalysis: Schedule regular pattern detection as new data arrives

  4. Uncertainty Tracking: Always maintain uncertainty metrics with temporal data

  5. Correlation Analysis: Examine relationships between different time series

  6. Retention Policies: Define clear policies for data retention across time scales

  7. Seasonality Awareness: Account for seasonal patterns in all temporal analyses

Advanced Topics

  • Cross-Scale Analysis: Methods for relating patterns across different time scales

  • Causal Inference: Techniques for identifying causal relationships in temporal data

  • Multi-Scale Decomposition: Advanced decomposition for complex temporal patterns

  • Temporal Knowledge Graphs: Representing temporal relationships in knowledge graphs