htsget-actix 0.6.2

A webserver instance of htsget-rs using actix-web.
Documentation

htsget-actix

MIT licensed Build Status

[!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

Usage

This application has the same functionality as [htsget-axum]. To use it, following the [htsget-axum][htsget-axum-usage] instructions, and replace any calls to htsget-axum with htsget-actix.

It is recommended to use [htsget-axum] because it better fits with the rest of htsget-rs. For example htsget-actix uses the actix-web framework for the ticket server, however it depends on [htsget-axum] for the data server. Also, components in htsget-lambda use Axum dependencies.

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:

  • s3-storage: used to enable S3Storage functionality.
  • url-storage: used to enable UrlStorage functionality.

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. Light benchmarks can be performed by executing:

cargo bench -p htsget-axum -- 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 to run the heavy benchmark:

cargo bench -p htsget-axum -- HEAVY

License

This project is licensed under the MIT license.