Skip to main content

ARGscape: interactive ARG visualization and analysis

Project description

ARGscape Banner

ARGscape (v0.2.0) is a comprehensive web application for visualizing and analyzing tree sequences and Ancestral Recombination Graphs (ARGs). Built with React and FastAPI, it aims to provide both an intuitive web interface and powerful computational backend for population genetics research.

๐ŸŒ Live Demo: www.argscape.com (May be blocked on some networks - working on it!)

ARGscape Homepage

Features

Core Functionality

  • File Upload & Management: Upload and visualize .trees and .tsz tree sequence files
  • Tree Sequence Simulation: Generate new tree sequences using msprime with customizable parameters
  • Interactive Visualization:
    • 2D ARG network visualization with force-directed layouts
    • 3D spatial visualization for spatially-embedded tree sequences
    • Multiple sample ordering algorithms
  • Location Inference: Generate spatial coordinates based on genealogical relationships
  • Session Management: Secure temporary file storage with automatic cleanup
  • Data Export: Download processed tree sequences and visualizations

Visualization Capabilities

  • 2D ARG Visualizations: Interactive visualizations of genealogical relationships
  • Sample Ordering: Multiple algorithms for optimal sample arrangement
  • 3D Spatial ARG Visualizations: Three-dimensional visualization of spatially-embedded samples
  • Customizable Rendering: Adjustable node sizes, edge styles, colors, and layouts
  • Tree Filtering: Visualize specific genomic regions or tree index ranges
  • Temporal Filtering: Highlight specific temporal spans

Session Management

  • Temporary storage: Files stored securely for up to 24 hours
  • Session persistence: Continue work across browser sessions
  • Data export: Download processed tree sequences and visualizations
  • Cleanup: Remove files manually or wait for automatic cleanup

Advanced Features

  • Batch Processing: Handle multiple files per session
  • Custom color themes: Personalize visualization appearance
  • Differential Visualization: Compare multiple tree sequences with spatial data

Visualization Gallery

2D Network Visualization

Interactive force-directed layouts showing genealogical relationships with node IDs and genomic spans.

2D ARG Visualization

Genomic Filtering

Navigate through specific genomic regions using the interactive slider.

Genomic Slider

3D Spatial Visualization

Three-dimensional rendering of spatially-embedded tree sequences with geographic context.

3D ARG Visualization

Temporal Filtering

Explore different time periods using the temporal slider controls.

Temporal Slider

Quick Start

Option 1: Use the Live Website

Visit argscape.com to start visualizing tree sequences immediately - no installation required. Storage space and computational power is extremely limited. Please refer to Option 2 below for more intensive uses.

Option 2: Local Installation (Recommended)

Install ARGscape locally for better performance and offline use:

Prerequisites

  • Anaconda, Miniconda, or another Conda distribution (Download here)

Installation Steps

  1. Download the environment file:

  2. Navigate to the download folder:

    cd /path/to/your/folder
    
  3. Create the ARGscape environment:

    conda env create -f environment.yml
    

    Installation takes 5-15 minutes depending on your connection.

  4. Activate the environment:

    conda activate argscape_env
    
  5. Launch ARGscape:

    argscape
    
  6. Open in browser: ARGscape opens automatically at http://127.0.0.1:8000. Wait 2-3 minutes for startup, then refresh if needed.

Command Line Options

argscape [--host HOST] [--port PORT] [--reload] [--no-browser] [--no-tsdate]

# Options:
#   --host HOST       Host to run the server on (default: 127.0.0.1)
#   --port PORT       Port to run the server on (default: 8000)
#   --reload          Enable auto-reload for development
#   --no-browser      Don't automatically open the web browser
#   --no-tsdate       Disable tsdate temporal inference (enabled by default)

Troubleshooting

  • Conda not found? Check PATH or use Anaconda Prompt (Windows)
  • Package conflicts? Add --force-reinstall flag to conda command
  • Web interface not loading? Wait 2-3 minutes, then refresh browser

Option 3: Local Development

Prerequisites

  • Node.js 20+ and npm
  • Python 3.11+ with conda/mamba
  • Git

Setup

  1. Clone the repository:

    git clone https://github.com/chris-a-talbot/argscape.git
    cd argscape
    
  2. Backend setup:

    # Create and activate conda environment
    conda env create -f argscape/backend/environment.yml
    conda activate argscape
    
    # Install the package in development mode
    pip install -e .
    
    # Start the backend server
    uvicorn argscape.backend.main:app --reload --port 8000
    
  3. Frontend setup (in new terminal):

    cd frontend
    npm install
    npm run dev
    
  4. Access the application:

Option 4: Docker Development

# Clone and start the development environment
git clone https://github.com/chris-a-talbot/argscape.git
cd argscape
docker compose up --build

The Docker setup provides a complete development environment with hot-reloading for both frontend and backend. Access at:

Note: The Docker setup mounts your local code directories, so changes to the code will be reflected immediately in the running containers.

API Reference

Full API documentation available at /docs when running locally.

Development

Project Structure

argscape/
โ”œโ”€โ”€ argscape/                     # Main Python package
โ”‚   โ”œโ”€โ”€ cli.py                    # Command-line interface
โ”‚   โ”œโ”€โ”€ frontend_dist/            # Compiled frontend assets
โ”‚   โ””โ”€โ”€ backend/                  # Backend application
โ”‚       โ”œโ”€โ”€ main.py               # Main application entry point
โ”‚       โ”œโ”€โ”€ startup.py            # Application startup logic
โ”‚       โ”œโ”€โ”€ constants.py          # Application constants
โ”‚       โ”œโ”€โ”€ session_storage.py    # Session management
โ”‚       โ”œโ”€โ”€ location_inference.py # Location inference logic
โ”‚       โ”œโ”€โ”€ midpoint_inference.py # Midpoint inference logic
โ”‚       โ”œโ”€โ”€ sparg_inference.py    # SPARG inference logic
โ”‚       โ”œโ”€โ”€ temporal_inference.py # Temporal inference logic
โ”‚       โ”œโ”€โ”€ spatial_generation.py # Spatial data generation
โ”‚       โ”œโ”€โ”€ graph_utils.py        # Graph utility functions
โ”‚       โ”œโ”€โ”€ dev_storage_override.py # Development storage override
โ”‚       โ”œโ”€โ”€ requirements-web.txt  # Web dependencies
โ”‚       โ”œโ”€โ”€ environment.yml       # Conda environment
โ”‚       โ”œโ”€โ”€ env.example           # Environment variables template
โ”‚       โ”œโ”€โ”€ Dockerfile            # Backend container definition
โ”‚       โ”œโ”€โ”€ dev_storage/          # Development storage directory
โ”‚       โ”œโ”€โ”€ geo_utils/            # Geographic utilities
โ”‚       โ”‚   โ””โ”€โ”€ data/             # Geographic data files
โ”‚       โ”‚       โ”œโ”€โ”€ eastern_hemisphere.geojson
โ”‚       โ”‚       โ””โ”€โ”€ ne_110m_land/ # Natural Earth land data
โ”‚       โ”œโ”€โ”€ sparg/                # SPARG algorithm implementation
โ”‚       โ””โ”€โ”€ tskit_utils/          # Tree sequence utilities
โ”œโ”€โ”€ frontend/                    # Frontend application (TypeScript/React)
โ”‚   โ”œโ”€โ”€ src/                     # Source code
โ”‚   โ”‚   โ”œโ”€โ”€ App.tsx              # Main application component
โ”‚   โ”‚   โ”œโ”€โ”€ main.tsx             # Application entry point
โ”‚   โ”‚   โ”œโ”€โ”€ components/          # React components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Home/            # Home page components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ForceDirectedGraph/ # Network visualization
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ SpatialArg3DVisualization/ # 3D spatial visualization
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ SpatialArgDiffVisualization/ # Diff visualization
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ tutorials/       # Tutorial components
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ui/              # UI components
โ”‚   โ”‚   โ”œโ”€โ”€ hooks/               # Custom React hooks
โ”‚   โ”‚   โ”œโ”€โ”€ context/             # React context providers
โ”‚   โ”‚   โ”œโ”€โ”€ lib/                 # Utility libraries
โ”‚   โ”‚   โ”œโ”€โ”€ utils/               # Utility functions
โ”‚   โ”‚   โ”œโ”€โ”€ config/              # Configuration files
โ”‚   โ”‚   โ””โ”€โ”€ types/               # TypeScript type definitions
โ”‚   โ”œโ”€โ”€ public/                  # Static assets
โ”‚   โ”œโ”€โ”€ package.json             # Frontend dependencies
โ”‚   โ”œโ”€โ”€ tsconfig.json            # TypeScript configuration
โ”‚   โ”œโ”€โ”€ nginx.conf               # Nginx configuration
โ”‚   โ”œโ”€โ”€ components.json          # shadcn/ui components config
โ”‚   โ””โ”€โ”€ Dockerfile               # Frontend container definition
โ”œโ”€โ”€ docker-compose.yml          # Docker Compose configuration
โ”œโ”€โ”€ Dockerfile                  # Root Dockerfile
โ”œโ”€โ”€ pyproject.toml              # Python project configuration
โ”œโ”€โ”€ railway.toml                # Railway deployment config
โ”œโ”€โ”€ setup.cfg                   # Python setup configuration
โ”œโ”€โ”€ package.json                # Root package.json

File Formats

Supported Inputs

  • .trees: Standard tskit tree sequence format
  • .tsz: Compressed tree sequence format

Generated Outputs

  • Tree sequences with updated inferred locations or node ages
  • Visualization data

Performance Notes

  • File Size: Recommended < 100MB per upload
  • Samples: Optimal performance with < 1000 nodes
  • Sessions: Automatic cleanup after 24 hours (including on local hosting, for now)

Contributing

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/new-feature)
  3. Follow clean code principles
  4. Add tests for new functionality
  5. Submit pull request

License

This project is licensed under the MIT License.

Citation

Acknowledgments

  • tskit development team for tree sequence simulation and analysis tools
  • Bradburd Lab for funding and support
  • James Kitchens for testing and feedback

Support

  • ๐ŸŒ Website: www.argscape.com
  • ๐Ÿ“– API Docs: Available at /docs endpoint
  • ๐Ÿ› Issues: GitHub Issues for bug reports
  • ๐Ÿ’ฌ Discussions: GitHub Discussions for questions

Note: This is research software under active development. The API may change between versions. Data is stored temporarily and may be cleared during updates.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

argscape-0.2.0.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

argscape-0.2.0-py3-none-any.whl (2.7 MB view details)

Uploaded Python 3

File details

Details for the file argscape-0.2.0.tar.gz.

File metadata

  • Download URL: argscape-0.2.0.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for argscape-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d5b26bd8fec69a9081370b1c586be03e2f08703d63e2ef37746ee4b67507c53a
MD5 1843a75a41a5fbe075e371029091949d
BLAKE2b-256 0cb5ae687fca6ba1a5460677541dc1d8669fbdd1e0a70933299558bb70386b3c

See more details on using hashes here.

File details

Details for the file argscape-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: argscape-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for argscape-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57818a297f19f009e55915e5969b72891c38765fcc1392a7f7ec18ae577765cc
MD5 d9d8b0575de622cf0bbd5c0182041658
BLAKE2b-256 4943a784945b7ec45028a68594a64489ac19b81ef3d51d6ad443f67d10ea8201

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page