loculus-project / loculus

An open-source software package to power microbial genomic databases
https://loculus.org
GNU Affero General Public License v3.0
37 stars 2 forks source link

Loculus

Loculus is a software package to power microbial genomial databases. Major features include:

Loculus targets any group managing sequencing data. It can be used by small public health or research laboratories with a few members for storing their own, internal data as well as by international databases facilitating global pathogen sequence sharing.

πŸ“š Visit our documentation website

Current state and roadmap

The Loculus software is already in a stable stage and used for production systems (see "Known instances" below) and you are welcome to explore this repository and try it out. However, please note that we are planning to revise the configuration files and the APIs before we release the official 1.0. Further, the documentation is so far quite sparse. We plan to release 1.0 with stable APIs and comprehensive documentation by the end of 2024.

If you are looking for a software to manage sequencing data and would like to know whether Loculus might be a suitable tool for you, please feel free to reach out. We would love to hear about your project and take your needs and requirements into consideration when we plan the further development.

Known instances

Pathoplexus is a new initiative to facilitate open sharing of genetic sequencing data for the ebola virus, the West Nile virus and the CCHF virus. See: https://pathoplexus.org

GenSpectrum uses Loculus internally to store sequencing data and power its interactive dashboards for analyzing and tracking variants and mutations of viruses. It is currently under development and will be released soon.

If you also host a Loculus instance and would like it to be added to this list, please reach out!

Development

Additional documentation for development is available in each folder's README. This file contains a high-level overview of the project and shared development information that is best kept in one place.

If you would like to develop with a full local loculus instance for development you need to:

  1. Deploy a local Kubernetes instance: Kubernetes
  2. Deploy the backend: backend
  3. Deploy the frontend/website: website

Note that if you are developing the backend or frontend/website in isolation a full local loculus instance is not required. See the individual READMEs for more information.

Architecture

architecture_docs/ contains the architecture documentation of Loculus.

TLDR:

The following diagram shows a rough overview of the involved software components:

architecture

GitHub Actions

While the documentation is still a work in progress, a look at the .github/workflows folder might be helpful:

Authentication

User management

We use Keycloak for authentication. The Keycloak instance is deployed in the loculus namespace and exposed to the outside either under localhost:8083 or authentication-[your-argo-cd-path]. The Keycloak instance is configured with a realm called loculus and a client called backend-client. The realm is configured to use the exposed URL of Keycloak as a frontend URL. For testing we added multiple users to the realm. The users are:

Group management

For testing we added all users declared above to the group testGroup.

Contributing to Loculus

Contributions are very welcome! Please see CONTRIBUTING.md for more information or ping us in case you need help.