htsget-actix
[!IMPORTANT]
The functionality of htsget-axum is identical to this crate, and it is recommended for all projects to use htsget-axum instead.This crate will be maintained to preserve backwards compatibility, however htsget-axum is favoured because it contains components that better fit with the rest of htsget-rs.
Framework dependent code for a server instance of htsget-rs, using Actix Web.
Overview
This crate is used for running a local instance of htsget-rs. It is based on:
- Actix Web for endpoints, routes, and middleware.
- htsget-http for htsget-rs specific HTTP responses
Quickstart
Launch a server instance:
And fetch tickets from localhost:8080:
This crate uses htsget-config for configuration. All options supported in htsget-axum are also supported here.
As a library
There shouldn't be any need to interact with this crate as a library, however some functions which deal with configuring routes are exposed in the public API.
Feature flags
This crate has the following features:
aws: used to enableS3location functionality.url: used to enableUrllocation functionality.experimental: used to enable experimental features that aren't necessarily part of the htsget spec, such as Crypt4GH support throughC4GHStorage.
Benchmarks
Benchmarks for this crate written using Criterion.rs, and aim to compare the performance of this crate with the htsget Reference Server. There are a set of light benchmarks, and one heavy benchmark. For light benchmarks run:
cargo bench -p htsget-actix -- LIGHT
To run the heavy benchmark, an additional vcf file needs to be downloaded, and placed in the data/vcf directory:
curl ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/data_collections/1000_genomes_project/release/20190312_biallelic_SNV_and_INDEL/ALL.chr14.shapeit2_integrated_snvindels_v2a_27022019.GRCh38.phased.vcf.gz > data/vcf/internationalgenomesample.vcf.gz
Then run the heavy benchmark:
cargo bench -p htsget-actix -- HEAVY
License
This project is licensed under the MIT license.