Skip to content

Personal DNA variant analysis tool with ClinVar, SNPedia, PharmGKB, GWAS annotations and Claude MCP integration

Notifications You must be signed in to change notification settings

mhudack/FullDNA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FullDNA Browser

A comprehensive personal health dashboard that integrates DNA analysis, wearable data, body composition tracking, workout history, and blood test results into a single unified view.

Features

DNA Analysis

  • Variant Browser - Browse millions of variants with virtual scrolling
  • Clinical Findings - ClinVar pathogenic and clinically significant variants
  • Important Findings - High-magnitude SNPedia annotations
  • Pharmacogenomics - Drug-gene interactions from PharmGKB
  • GWAS Catalog - Trait and disease associations

Health Tracking

  • Oura Ring Integration - Sleep, readiness, activity scores, heart rate, and workouts
  • Withings Integration - Weight, body fat, muscle mass, and body composition trends
  • Workout Tracking - Import Strong app data, unified view with Oura workouts, Big 3 progress charts
  • Blood Test Tracking - Import lab results, track biomarkers over time, flag out-of-range values

Dashboard

  • Unified health overview with all data sources
  • Daily health scores from Oura
  • Recent workouts (excluding walking)
  • Body composition trends
  • Blood test alerts

Claude MCP Integration

  • Query all your health data with natural language
  • Ask about DNA variants, workouts, sleep patterns, blood tests, and more

Architecture

┌─────────────────────────────────────────────────────────────────┐
│                         DATA SOURCES                             │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │
│  │ VCF File │ │ Oura API │ │ Withings │ │ Strong   │ │ Blood  │ │
│  │          │ │          │ │ API      │ │ CSV      │ │ Tests  │ │
│  └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └───┬────┘ │
│       │            │            │            │           │      │
│       ▼            ▼            ▼            ▼           ▼      │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │                   SQLite Database                        │    │
│  │  variants, annotations, oura_*, withings_*, strong_*,   │    │
│  │  blood_test_reports, blood_test_results                 │    │
│  └─────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                        WEB APPLICATION                           │
│  ┌───────────────────┐         ┌────────────────────────────┐   │
│  │   FastAPI Backend │◀───────▶│    React Frontend          │   │
│  │   - REST API      │         │    - Dashboard             │   │
│  │   - SQLite        │         │    - DNA / Oura / Withings │   │
│  └───────────────────┘         │    - Workouts / Blood Tests│   │
│                                └────────────────────────────┘   │
│  ┌───────────────────┐                                          │
│  │   MCP Server      │◀── Claude natural language queries       │
│  └───────────────────┘                                          │
└─────────────────────────────────────────────────────────────────┘

Setup

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • uv (for MCP server)

Installation

  1. Clone the repository:

    git clone https://github.com/mhudack/FullDNA.git
    cd FullDNA
  2. Install Python dependencies:

    pip install -r requirements.txt
  3. Install frontend dependencies:

    cd frontend
    npm install
    cd ..
  4. Initialize the database:

    python -m pipeline.cli init-db

Data Import

DNA Data (VCF)

  1. Parse your VCF file (from 23andMe, Ancestry, etc.):

    python -m pipeline.cli parse-vcf path/to/your.vcf.gz
  2. Fetch annotations (run each as needed):

    python -m pipeline.cli fetch-snpedia    # SNPedia annotations
    python -m pipeline.cli fetch-clinvar    # Clinical significance
    python -m pipeline.cli fetch-pharmgkb   # Drug interactions
    python -m pipeline.cli fetch-gwas       # Trait associations

Oura Ring

  1. Get your Oura Personal Access Token:

  2. Set the environment variable:

    export OURA_ACCESS_TOKEN="your_token_here"
  3. Sync your Oura data:

    python -m pipeline.cli oura-sync --days 365   # Sync last year
    python -m pipeline.cli oura-sync --full       # Sync all historical data

    The sync fetches: daily sleep, activity, readiness scores, heart rate data, sleep sessions, and workouts.

Withings

  1. Create a Withings Developer account at https://developer.withings.com/

  2. Create an application to get your Client ID and Client Secret

  3. Set environment variables:

    export WITHINGS_CLIENT_ID="your_client_id"
    export WITHINGS_CLIENT_SECRET="your_client_secret"
  4. Connect via the web UI:

    • Start the application (see Running the Application below)
    • Go to the Withings page
    • Click "Connect Withings" and complete OAuth flow
    • Click "Sync Now" to fetch your data

Strong App Workouts

  1. Export your data from the Strong app:

    • Open Strong app
    • Go to Settings → Export Data
    • Choose CSV format
    • Save the file
  2. Import the CSV:

    python -m pipeline.cli import-strong path/to/strong_export.csv

    This imports all workouts, exercises, sets, weights, and reps.

Blood Tests

Blood tests are imported by parsing PDF lab reports. Place your PDF files in the dna/ directory (or any folder), then run the parser:

  1. Place your blood test PDF files in a directory:

    mkdir -p dna
    cp ~/Downloads/blood_test_results.pdf dna/
  2. Import all PDFs from a directory:

    python -m pipeline.blood_test_parser dna/

    Or import a single PDF:

    python -m pipeline.blood_test_parser path/to/blood_test.pdf

The parser automatically detects lab formats and extracts biomarker names, values, units, and reference ranges. Supported formats include Alderley Lighthouse Labs, Dr Martin, and other common lab report layouts.

Running the Application

  1. Start the backend:

    uvicorn backend.main:app --reload --port 8000
  2. Start the frontend (in another terminal):

    cd frontend
    npm run dev
  3. Open http://localhost:5173

MCP Server (Claude Integration)

The MCP server allows Claude to query all your health data using natural language.

Setup for Claude Code

Add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "fulldna": {
      "command": "uv",
      "args": ["run", "--script", "/path/to/FullDNA/mcp_server/dna_server.py"]
    }
  }
}

Setup for Claude Desktop

Add to your Claude Desktop config:

{
  "mcpServers": {
    "fulldna": {
      "command": "uv",
      "args": ["run", "--script", "/path/to/FullDNA/mcp_server/dna_server.py"]
    }
  }
}

Example Queries

After setup, restart Claude and ask questions like:

DNA:

  • "What pathogenic variants do I have?"
  • "How might my genetics affect warfarin?"
  • "Search for APOE variants"
  • "What are my pharmacogenomic findings?"

Sleep & Recovery:

  • "How was my sleep last night?"
  • "What's my average sleep score this month?"
  • "Show my readiness trend for the past week"

Workouts:

  • "What workouts did I do this week?"
  • "Show my bench press progress"
  • "How much volume did I lift last month?"

Body Composition:

  • "What's my current weight?"
  • "Show my weight trend over the past year"
  • "What's my body fat percentage?"

Blood Tests:

  • "What blood tests are out of range?"
  • "Show my cholesterol history"
  • "When was my last blood test?"

Project Structure

FullDNA/
├── backend/              # FastAPI REST API
│   ├── routers/          # API endpoints
│   │   ├── dna.py        # DNA variant queries
│   │   ├── oura.py       # Oura data endpoints
│   │   ├── withings.py   # Withings data endpoints
│   │   ├── workouts.py   # Unified workout endpoints
│   │   └── blood_tests.py# Blood test endpoints
│   └── models/           # Pydantic models
├── frontend/             # React + TypeScript + Tailwind
│   └── src/
│       ├── pages/        # Main views (Dashboard, DNA, Oura, etc.)
│       ├── components/   # Reusable components
│       └── hooks/        # Data fetching hooks
├── pipeline/             # Data processing scripts
│   ├── vcf_parser.py     # VCF file parsing
│   ├── oura_client.py    # Oura API sync
│   ├── withings_client.py# Withings API sync
│   ├── strong_client.py  # Strong CSV import
│   ├── snpedia_client.py # SNPedia annotations
│   ├── clinvar_client.py # ClinVar annotations
│   ├── pharmgkb_client.py# PharmGKB annotations
│   ├── gwas_client.py    # GWAS annotations
│   └── schema.sql        # Database schema
├── mcp_server/           # Claude MCP integration
│   └── dna_server.py     # MCP tools for all data
└── data/                 # SQLite database (gitignored)

Data Sources

Source Description
ClinVar Clinical significance of genetic variants
SNPedia Wiki-based SNP annotations with magnitude scores
PharmGKB Pharmacogenomics drug-gene interactions
GWAS Catalog Genome-wide association study findings
Oura Sleep, readiness, activity, and workout data
Withings Weight, body composition measurements
Strong Workout logging and exercise tracking

Disclaimer

This tool is for educational and research purposes only. Genetic information and health data should not be used for self-diagnosis or treatment decisions. Always consult with a qualified healthcare provider or genetic counselor for medical advice.

License

MIT

About

Personal DNA variant analysis tool with ClinVar, SNPedia, PharmGKB, GWAS annotations and Claude MCP integration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published