Skip to main content

Benchmarking scripts for INSDC data transfers

Project description

๐ŸŒ INSDC Benchmarking Scripts

Automated benchmarking tools for testingย INSDC data download performanceย across repositories (ENA,ย SRA, andย DDBJ) and multiple transfer protocols.


๐Ÿš€ Quick Start

1. Install

pip install insdc-benchmarking-scripts

2. Configure

cp config.yaml.example config.yaml
# Edit config.yaml:
# site: nci
# api_endpoint: https://your.api/submit
# api_token: YOUR_TOKEN   # optional

3. Run a Benchmark

HTTP/HTTPS (wget-based)

benchmark-http --dataset DRR12345678 --repository ENA --site nci

SRA Cloud .sra Objects (AWS/GCS)

benchmark-http\
  --dataset DRR000001\
  --repository SRA\
  --sra-mode sra_cloud\
  --mirror auto\
  --no-submit

ENA FASTQ via HTTPS

benchmark-http\
  --dataset SRR000001\
  --repository ENA\
  --no-submit


๐Ÿง  Key Features

  • โœ… HTTP/HTTPS benchmarking using wget
  • โœ… SRA Cloud (AWS/GCS) .sra object downloads
  • โœ… ENA FASTQ over HTTPS
  • ๐Ÿงฉ Automatic system metrics --- CPU%, memory MB, disk write speed
  • ๐ŸŒ Network baselines --- ping/traceroute latency and route
  • ๐Ÿงพ JSON output aligned with INSDC Benchmarking Schema v1.2
  • ๐Ÿ“ค Optional API submission (secure HTTP POST)
  • ๐Ÿงช Repeatable tests withย --repeatsย and aggregate stats
  • ๐Ÿงฐ Mirror control for SRA:ย --mirror [aws|gcs|auto],ย --require-mirror,ย --explain

๐Ÿ“ฆ Supported Protocols

Protocol Implementation Status
HTTP/HTTPS wget โœ… Stable
FTP ftplib โœ… Stable
Globus Python SDK ๐Ÿ”„ Planned
Aspera CLI SDK ๐Ÿ”„ Planned
SRA Toolkit fasterq-dump (wrapper) ๐Ÿ”„ Planned

โš™๏ธ Configuration

Seeย config.yaml.example:

site: nci
api_endpoint: https://your.api/submit
api_token: your-secret-token


๐Ÿ“Š Example Output

{
  "timestamp": "2025-11-06T06:21:33Z",
  "end_timestamp": "2025-11-06T06:23:05Z",
  "site": "nci",
  "protocol": "http",
  "repository": "SRA",
  "dataset_id": "DRR000001",
  "duration_sec": 92.3,
  "file_size_bytes": 596137898,
  "average_speed_mbps": 51.6,
  "cpu_usage_percent": 7.2,
  "memory_usage_mb": 10300.5,
  "status": "success",
  "checksum_md5": "bf11d3ea9d7e0b6e984998ea2dfd53ca",
  "write_speed_mbps": 3350.3,
  "network_latency_ms": 8.9,
  "tool_version": "GNU Wget 1.21.4",
  "notes": "Resolved from AWS ODP mirror"
}


๐Ÿงฑ Repository Structure

insdc-benchmarking-scripts/
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ benchmark_http.py        # HTTP/HTTPS benchmarking CLI (Click)
โ”‚   โ”œโ”€โ”€ benchmark_ftp.py         # FTP benchmarking (ftplib)
โ”‚   โ””โ”€โ”€ benchmark_aspera.py      # Future Aspera integration
โ”‚
โ”œโ”€โ”€ insdc_benchmarking_scripts/
โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ”‚   โ”œโ”€โ”€ repositories/        # ENA/SRA/DDBJ resolvers
โ”‚   โ”‚   โ”œโ”€โ”€ system_metrics.py    # CPU/memory sampler
โ”‚   โ”‚   โ”œโ”€โ”€ network_baseline.py  # ping/traceroute helpers
โ”‚   โ”‚   โ”œโ”€โ”€ submit.py            # HTTP POST to results API
โ”‚   โ”‚   โ””โ”€โ”€ config.py            # Config loader
โ”‚   โ””โ”€โ”€ __init__.py
โ”‚
โ”œโ”€โ”€ docs/
โ”‚   โ”œโ”€โ”€ INSTALLATION.md          # Setup and verification instructions
โ”‚   โ”œโ”€โ”€ USAGE.md                 # CLI usage and examples
โ”‚   โ”œโ”€โ”€ protocols/               # Protocol-specific notes
โ”‚   โ””โ”€โ”€ schema/                  # INSDC Benchmarking Schema v1.2
โ”‚
โ”œโ”€โ”€ config.yaml.example          # Example configuration file
โ”œโ”€โ”€ requirements.txt             # Dependencies for pip installs
โ”œโ”€โ”€ pyproject.toml               # Poetry build config
โ”œโ”€โ”€ README.md                    # This file
โ””โ”€โ”€ LICENSE


๐Ÿ“š Documentation


๐Ÿงญ Roadmap

  • Add Globus and Aspera benchmarking
  • Unified results ingestion API (FastAPI backend)
  • Web dashboard for live performance visualization
  • Scheduled batch benchmarking for curated datasets
  • Add object checksum validation and retry support

๐Ÿค Contributing

Contributions are welcome! Please open an issue or submit a pull request to add protocols, metrics, or infrastructure integrations.

Development Workflow

# Fork and clone
git clone https://github.com/AustralianBioCommons/insdc-benchmarking-scripts
cd insdc-benchmarking-scripts

# Install dependencies
poetry install

# Run a test benchmark
poetry run benchmark-http --dataset DRR000001 --repository ENA --no-submit


Maintained by:ย Australian BioCommons
๐Ÿ“ University of Melbourne
๐Ÿ”— Licensed under the Apache 2.0 License

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

insdc_benchmarking_scripts-0.1.8.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

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

insdc_benchmarking_scripts-0.1.8-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file insdc_benchmarking_scripts-0.1.8.tar.gz.

File metadata

File hashes

Hashes for insdc_benchmarking_scripts-0.1.8.tar.gz
Algorithm Hash digest
SHA256 5b63f4863c033e6e03086a61579584a03b44c7adcbc3ed8e22b993dae3891cb0
MD5 f46c66abf2b1f5cbb7ca88ca90f34957
BLAKE2b-256 739b266b745c5d2fe85b0527ed05d5e94fda67375925eb871f6146871f839b2f

See more details on using hashes here.

File details

Details for the file insdc_benchmarking_scripts-0.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for insdc_benchmarking_scripts-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 5ec75050de2c3c2f92fe4787c69920ca57e4c742fb97272c415a385fd76c604d
MD5 d5ec0b6a9e2b7e7b524d039893dcf118
BLAKE2b-256 883120e73981646cfef5d8ee26c8c62e928af7fe1d7e163ccd1b49a318cf2cf9

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