Skip to content

AoWangg/mrra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MRRA Icon

πŸ—ΊοΈ MRRA

Mobility Retrieve-and-Reflect Agent

GraphRAG + Multi-Agent Reflection for Intelligent Mobility Analysis

PyPI version PyPI downloads Python 3.10+ License: MIT CI

πŸš€ Quick Start β€’ πŸ“– Documentation β€’ 🌟 Features β€’ πŸ› οΈ Installation


🎯 Overview

MRRA is a cutting-edge Python package that revolutionizes mobility trajectory analysis through the fusion of GraphRAG (Graph-based Retrieval-Augmented Generation) and multi-agent reflection. Simply provide trajectory data with user_id, timestamp, latitude, longitude columns, and unlock intelligent predictions for next locations, future positions, and complete daily routes.

MRRA Framework

✨ Key Features

🧠 Intelligent Architecture

  • GraphRAG Integration: Advanced graph-based retrieval system
  • Multi-Agent Reflection: Sophisticated agent orchestration with confidence weighting
  • Temporal-Spatial Reasoning: Deep understanding of mobility patterns

πŸ”§ Developer Friendly

  • Plug-and-Play: Ready-to-use with minimal configuration
  • LangChain Compatible: Seamless integration with LangChain ecosystem
  • MCP Tools: Built-in support for weather, maps, and geospatial services

πŸ“Š Data Processing

  • Flexible Input: Standard trajectory format support
  • Graph Construction: Automatic mobility graph generation
  • Pattern Recognition: Intelligent activity and behavior detection

🎯 Prediction Tasks

  • Next Position: Predict immediate next location
  • Future Position: Forecast location at specific time
  • Full Day Trajectory: Generate complete daily route patterns

πŸ› οΈ Installation

Quick Install

pip install mrra

Development Install

git clone https://github.com/AoWangg/mrra.git
cd mrra
pip install -e .

Optional Dependencies

# For MCP tools integration
pip install mrra[mcp]

# For development
pip install mrra[dev]

πŸš€ Quick Start

Basic Usage

import pandas as pd
from mrra.data.trajectory import TrajectoryBatch
from mrra.retriever.graph_rag import GraphRAGGenerate
from mrra.agents.builder import build_mrra_agent

# πŸ“Š Prepare your trajectory data
df = pd.DataFrame({
    'user_id': ['user_1', 'user_1', 'user_1'],
    'timestamp': ['2023-01-01 09:00:00', '2023-01-01 12:00:00', '2023-01-01 18:00:00'],
    'latitude': [31.2304, 31.2404, 31.2504],
    'longitude': [121.4737, 121.4837, 121.4937],
})

# πŸ”„ Create trajectory batch and retriever
tb = TrajectoryBatch(df)
retriever = GraphRAGGenerate(tb=tb)

# πŸ€– Build MRRA agent
agent = build_mrra_agent(
    llm={
        "provider": "openai-compatible",
        "model": "qwen-plus",
        "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
        "api_key": "YOUR_API_KEY"  # Use environment variables in production
    },
    retriever=retriever,
    reflection={
        "max_round": 3,
        "subAgents": [
            {"name": "temporal", "prompt": "Temporal reasoning specialist", "mcp": {"weather": {}}},
            {"name": "spatial", "prompt": "Spatial analysis expert", "mcp": {"maps": {}}},
            {"name": "pattern", "prompt": "Behavior pattern analyst", "mcp": {}},
        ],
        "aggregator": "confidence_weighted_voting"
    }
)

# 🎯 Make predictions
result = agent.invoke({
    "task": "next_position", 
    "user_id": "user_1", 
    "t": "2023-01-02 09:30:00"
})
print(result)

Advanced MCP Integration

# πŸ—ΊοΈ Configure with real-world services
reflection_config = {
    "subAgents": [
        {
            "name": "spatial", 
            "prompt": "Expert in spatial analysis with real-time map data", 
            "mcp": {
                "gmap": {
                    "url": "https://mcp.amap.com/sse?key=YOUR_AMAP_KEY", 
                    "transport": "sse"
                }
            }
        }
    ]
}

🎯 Supported Tasks

Task Description Input Output
next_position Predict the next location after given time user_id, t Next coordinate prediction
future_position Predict location at specific future time user_id, t Future coordinate prediction
full_day_traj Generate complete daily trajectory user_id, date Full day route sequence

πŸ“Š Data Format

Required Columns

  • user_id: Unique identifier for each user
  • timestamp: ISO format timestamp (e.g., "2023-01-01 09:00:00")
  • latitude: Latitude coordinate (float)
  • longitude: Longitude coordinate (float)

🌍 MCP Tools Integration

MRRA supports multiple MCP integration strategies with graceful fallback:

  1. Primary: langchain-mcp-adapters (recommended)
  2. Fallback: langchain-mcp toolkit
  3. Native: Raw MCP SSE discovery

Supported Services

  • πŸ—ΊοΈ Maps: Google Maps, Amap, OpenStreetMap
  • 🌀️ Weather: Real-time weather data
  • πŸ“ Geocoding: Address to coordinate conversion

πŸ“– Documentation

πŸ§ͺ Examples & Demos

# 🌟 GeoLife dataset demo
python scripts/verify_geolife.py

# πŸ” Retriever testing
python scripts/check_retriever.py

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Setup

# Create environment
conda create -n mrra-dev python=3.10
conda activate mrra-dev

# Install in development mode
pip install -e .[dev]

# Run tests
pytest

# Code formatting
ruff format .
ruff check .

πŸ”’ Security & Best Practices

  • πŸ” Never commit API keys - Use environment variables or secret managers
  • πŸ“ Large datasets are git-ignored by default
  • πŸ›‘οΈ Secure MCP connections with proper authentication

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

Built on the shoulders of giants:

πŸ“Š Project Stats

GitHub stars GitHub forks GitHub issues GitHub pull requests


πŸš€ Ready to revolutionize mobility analysis? Get started now!

About

πŸ—ΊοΈ MRRA: A Mobility Retrieve-and-Reflect Agent for Mobility Prediction.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages