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

# With Poetry (recommended)
poetry install

# Or with pip + virtual environment
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

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.4.tar.gz (17.2 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.4-py3-none-any.whl (24.3 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for insdc_benchmarking_scripts-0.1.4.tar.gz
Algorithm Hash digest
SHA256 ee9d143366b25c8ff582560e7ff421a0cf13fce542fc0a3d72482517cab47766
MD5 47fa2e9a9a5478c5693faa3adc9077e1
BLAKE2b-256 d582806e874f4150f24d25a1fa11c16727a71cd463041f0cc1e165b10cb3916d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for insdc_benchmarking_scripts-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3807066a9d9302d2e3b3f594ff1aad55e9fa3fadf0ab61f92e8562396442948d
MD5 918a72ff8ad075c33cb88636d4d2805f
BLAKE2b-256 ec1be2ebfc4cf357cc9de1b746f74530727ff7348d1d5156d228f97c4f893504

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