Code Monkey home page Code Monkey logo

htsget-mvp's Introduction

HtsGet implementation for Rust

For now, the aim of this project is to build a Minimal Viable Product (MVP) for a HtsGet API with Rust.

Organization of the project

This repository consists of a workspace composed by the following crates:

  • htsget-search: This crate will contain the core logic needed to run searches in the genomic data according to the HtsGet specs. Things like how to access the genomic data with the reads or the variants from cloud storage, or how to run queries on their indices, or how to provide the information needed by the HtsGet spec. But this crate has nothing to do with the HTTP or REST protocols, only the core logic, which means that it could also be used to build other kind of interfaces on top of it, like Command Line Interfaces (CLI) for example.
  • htsget-devtools: This is just a bunch of code helping us to explore the formats or to proof some concepts. Nothing to take very seriously ;-P

More crates will come as we progress in this project, for example the HTTP/REST layer.

Architecture of htsget-search

This crate provides two basic abstractions:

  • HtsGet: The HtsGet trait represents an entity that can resolve queries according to the HtsGet spec. The HtsGet trait comes together with a basic model to represent basic entities needed to perform a search (Query, Format, Class, Tags, Headers, Url, Response). We include a reference implementation called HtsGetFromStorage that provides the logic to resolve queries using an external Storage. It can only resolve queries for data in BAM format, but we plan to support other formats too.

  • Storage: The Storage trait represents some kind of object based storage (either locally or in the cloud) that can be used to retrieve files for alignments, variants or its respective indexes, as well as to get metadata from them. We include a reference implementation using local files, but there are plans to support AWS S3 too.

References

HtsGet specification and references

SAM/BAM formats and tools

VCF/BCF formats

Previous attempts to work on HtsGet with Rust

Google Summer of Code 2021

This project participates in the GSoC for 2021 under the Global Alliance for Genomics and Health. If you are interested on participating, please apply for the idea "Pure Rust serverless htsget implementation" in this document contacting the primary mentor.

License

This project is distributed under the terms of the MIT license.

See LICENSE for details.

htsget-mvp's People

Contributors

chris-zen avatar brainstorm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.