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
- ๐ย Installation Guide
- ๐งญย Usage Guide
- ๐งฉย Protocol Guides
- ๐ย INSDC Benchmarking Schema v1.2
๐งญ 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file insdc_benchmarking_scripts-0.1.8.tar.gz.
File metadata
- Download URL: insdc_benchmarking_scripts-0.1.8.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b63f4863c033e6e03086a61579584a03b44c7adcbc3ed8e22b993dae3891cb0
|
|
| MD5 |
f46c66abf2b1f5cbb7ca88ca90f34957
|
|
| BLAKE2b-256 |
739b266b745c5d2fe85b0527ed05d5e94fda67375925eb871f6146871f839b2f
|
File details
Details for the file insdc_benchmarking_scripts-0.1.8-py3-none-any.whl.
File metadata
- Download URL: insdc_benchmarking_scripts-0.1.8-py3-none-any.whl
- Upload date:
- Size: 24.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ec75050de2c3c2f92fe4787c69920ca57e4c742fb97272c415a385fd76c604d
|
|
| MD5 |
d5ec0b6a9e2b7e7b524d039893dcf118
|
|
| BLAKE2b-256 |
883120e73981646cfef5d8ee26c8c62e928af7fe1d7e163ccd1b49a318cf2cf9
|