Skip to content
Emilio Righi edited this page Dec 12, 2023 · 3 revisions

BioGenome Portal

A web-based platform to manage biodiversity genomics metadata

DOI

About The Project

This project aims to provide a user-friendly web-platform to show, coordinate and manage biodiversity genomic metadata.

API page and current online instances

API

Built With

This project is built with the following stack:

Getting Started

To launch this application locally you must have docker-compose installed!

Follow this instructions to install it: install docker-compose

Containers

This app is composed by 4 docker containers that are built and launched via a docker-compose file.

Front End

The Front-end container compile the Vue3 SPA with Vite and serve the SPA via NGINX, it also contains a user authenticated Content Management System, where authenticated users can perform CRUD operations agains the database. IMPORTANT: right now it works only on Firefox Browser.

Back end

The Back-end container consists in a uWSGI/Flask web server that communicates with the NGINX proxy present in the front-end container. This container is the one that manages the client requests from the front-end container, query the database and return the JSON response to the front-end container.

Database

The database container is a MongoDB image

Cronjob

The cronjob container is optional as it is necessary only to run scheduled jobs.

The scheduled jobs can perform the following tasks:

  • Download the metadata already published in INSDC, either under a bioproject accession umbrella or via specific attributes (ex. biosamples).
  • Parse, map and integrate data from any other source.

External APIs

This project consumes different externals APIs to retrieve taxonomic and genomic informations about species, therefore changes in these APIs might break the species creation. Please open an issue if this is the case.

Here is a list of the APIs consumed:

CMS area

The admin area allows to manage all the data present in the database:

  • Reads, Biosamples and Assemblies published in INSDC can be manually imported via form by their respective accession number. These data cannot be further modified, from the CMS, but can be deleted.

  • Organisms(taxons) can be imported by their NCBI taxonomic identifier, or will be automatically imported when other related metadata (Samples, reads or assemblies) are created. Data such as urls of images, vernacular names, key-value metadata and related publications can be added via form.THIS

  • Samples metadata can be imported locally via a spreadsheet file (.xlsx), through a form it will be necessary to declare the column names for the taxon identifier, the scientific name and the unique identifier of the sample. This feature can be useful to manage sample metadata before submission to INSDC. Column names containing "ORCID" will not be imported

  • Annotations can be added from an imported assembly (link to download the annotation + metadata)

  • GoaT reports compliant with THIS format, can be uploaded.

Genome Browser

The app provides a genome browser (JBrowse2: https://jbrowse.org/jb2/ ) to visualize genomic annotations related to an imported chromosome-level assembly.

Annotation (the gff must be sorted): genes.gff.gz genes.gff.gz.tbi

To generate the files above follow this steps:

gt gff3 -sortlines -tidy -retainids genes.gff3 > genes.sorted.gff3

bgzip genes.gff

tabix genes.gff.gz

Files can be uploaded or if stored in other servers (supporting range requests:206), for instance AWS, the link to their location can be provided instead.

In case the chromosome/sequence name contained in the annotation differ to the chromosome/sequence of the genome assembly a tab-separated text file can be provided, more info HERE For more informations visit: https://jbrowse.org/jb2/docs/

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Emilio Righi - [email protected]