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.7.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.7-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for insdc_benchmarking_scripts-0.1.7.tar.gz
Algorithm Hash digest
SHA256 0bb16a52ee9d2c297aea08b78cdaaf6a26b7d1fa518bc712a8e79c93e938c2b3
MD5 18fda2d7692afb0f7de4775494a533fc
BLAKE2b-256 03e51a46a95cc93b6141ca6f5fb23b5c2748b10f1c65e87d8782945cb1faf2fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for insdc_benchmarking_scripts-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 55190c65aaab61ee46bbed680e8a623ef751826c0eecee9c1dbd74f9b2bdedcc
MD5 546bda780962a3a9f4c23e3bc87caba0
BLAKE2b-256 526dd5a95c9303e496f6150b58fd55756104b7455de53f980cce1a276fd49516

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