A free and open-source DNA Sequencing/Visualization software for bioinformatics research.

Overview

dnarchery logo

DNArchery 🧬

A free and open-source cross-platform DNA Sequencing/Visualization Software for bioinformatics research.

A toolkit for instantly performing sequencing, alignment, distance algorithms on DNA strings and visualizing their structure. It's like GParted but for genome sequencing.

The core goal of the project is to be a good general-purpose toolkit for DNA sequencing/alignment/distance analysis and to bring more open-source attention to bioinformatics by promoting more research software in the industry to be open-source. (Read Goals)

Built with ❤️ at FOSSHack 3.0!

version github license

Table of Contents

Goals

  • First goal is to make DNArchery a good general-purpose toolkit for DNA sequencing/alignment/distance analysis.
  • Most utility bioinformatics software used by the industry are commercial (See List), this project is intended to bring a groundwork into making more utilities in the industry open-source.
  • The structure of the project is written in such a way that implementing new functionality like algorithms/visualizations are just plugging new functions to the set of utils already present, this is intended to reduce the barrier of entry in encouraging more open-source contributions. (Read Contribution)
  • This tool comprises of an amalgamation of sequencing/alignment/distance algorithms like Needleman–Wunsch algorithm , Smith–Waterman algorithm, and LCSk++ etc. in a single package such that for a general-purpose DNA analysis this could be a go-to utility.
  • A secondary goal being, promoting the usage of Rust 🦀 in building more open-source research software as it brings the performance and correctness required for parallel processing like in the case of this utility.

Features

  • The core of the utility is exposed as a Webservice API (Rust backend) along with an OpenAPI schema such that UIs or Apps can be built on top, just the like main UI toolkit DNArchery comes with. (See GUI)
  • Toolsets:
  • Performance - Processing large FASTA files/DNA sequences are pretty fast as most of them utilize vectorized or parallelized algorithms[example].

Installation

Install the executable with the following command:

Note You would need the assets for the GUI integration to work, follow the Build From Source instructions to set up.

$ cargo install --git https://github.com/DNArchery/DNArchery.git
$ dnarchery

Install Rust/Cargo

Build From Source

Prerequisites:

  • Git
  • Rust
  • Cargo (Automatically installed when installing Rust)
  • A C linker (Only for Linux, generally comes pre-installed)
$ git clone https://github.com/DNArchery/DNArchery.git
$ cd DNArchery/
$ # < GUI dependencies >
$ sudo apt-get install -y gir1.2-javascriptcoregtk-4.0
$ sudo apt-get install -y libwebkit2gtk-4.1-dev
$ # </ GUI dependencies >
$ cargo build --release
$ ./target/release/dnarchery

The first command clones this repository into your local machine and the last two commands enters the directory and builds the source in release mode.

Web API

You can see the OpenAPI Schema (Swagger UI) at http://127.0.0.1:1337/swagger-ui/.

GUI

The integrated GUI is a proof-of-concept into how the underlying API schema can be utilized.

Contribution

As stated in the goals section, one of our primary goal is to provide a low barrier contributing opportunity to the bioinformatics open-source space. If you want to add more DNA sequencing/alignment/conversion algorithms, you can browse to src -> core -> and chose which part you want to extend. Every super module in the tree have the same structure, a utils.rs file which contain all functions, you can add a new function and implement it as an exposed actix-web endpoint in the src -> api -> endpoints.rs and that's it.

Ways to contribute:

  • Suggest a feature
  • Report a bug
  • Fix something and open a pull request
  • Help me document the code
  • Spread the word

License

Licensed under the MIT License, see LICENSE for more information.

Citations & Acknowledgements

This project wouldn't exist without these resources (libraries/blogs):

FAQ

FOSSHack Questionnaire:

Q. What was the initial stage of the project?

The idea of the project is to create a utility box of various DNA sequencing algorithms exposed via a API schema such that UIs, Apps can be built on top. The integratred GUI is an example of this.

The initial stage is just a code structure that provides an easy way to embed new algorithms just by adding a new function to one of the utils.rs files. (Either in dna/sequence/fasta)

This is then exposed via a Web API (Rust backend) (See Code). This API is utilized for the integrated GUI app.

Q. What stage is it in now?

The Rust backend is complete. The GUI on top is a proof-of-concept stage.

Q. How did you get there?

Authors of the project are interested in bioinformatics, during the course of development of this project, we researched about the basic needs in a DNA sequencing software and looked into resources to implement it in code. Thanks to the resources (See Citations & Acknowledgments for Credits), we were able to utilize some libraries for algorithms and we implemented the rest with the documentation.

We chose Rust as the primary language as that's what we are comfortable with and it provides the necessary performance in running compute intensive algorithms.

Q. What is working/not working?

The backend is stable and works according to the specified schema. The GUI is just a wrapper around it that does I/O from the same API.


You might also like...
An open source artifact manager. Written in Rust back end and an Vue front end to create a fast and modern experience

nitro_repo Nitro Repo is an open source free artifact manager. Written with a Rust back end and a Vue front end to create a fast and modern experience

Over-simplified, featherweight, open-source and easy-to-use authentication and authorization server.

concess ⚠️ Early Development: This is not production ready, yet. Do not use it for anything important. Introduction concess is a over-simplified, feat

Horus is an open source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual machine, and the Rust programming language.
Horus is an open source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual machine, and the Rust programming language.

Horus Horus is an open-source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual mach

Get your loadshedding schedule in your calendar and never be left in the dark! Open-source, up-to-date, and developer friendly.
Get your loadshedding schedule in your calendar and never be left in the dark! Open-source, up-to-date, and developer friendly.

Loadshedding schedules in your digital calendar. No apps, no ads, up-to-date, and developer friendly. Get it • Key Features • Using the data • Project

zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files
This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

An open source, programmed in rust, privacy focused tool for reading programming resources (like stackoverflow) fast, efficient and asynchronous from the terminal.

Falion An open source, programmed in rust, privacy focused tool for reading programming resources (like StackOverFlow) fast, efficient and asynchronou

Open source email client written in Rust and Dioxus. Under 🏗️
Open source email client written in Rust and Dioxus. Under 🏗️

Blazemail A full-featued, beautiful, mail client that doesn't suck. Works on mac, windows, linux, mobile, web, etc. Features, status Blazemail is curr

botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing & RPA

botwork botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing, acceptance test driven develo

Comments
  • Use cargo `features` to separate out components

    Use cargo `features` to separate out components

    Currently, running the binary starts up the desktop UI also.

    We could maybe use rust package features to effectively separate out the ui component and also the api-server component. This would allow for different modes of operation: as a library, a lib-server or a desktop app.

    For example: In the cargo.toml,dnarchery = { version = "1.0", features = ["ui", 'api-server'] }

    enhancement good first issue 
    opened by 123vivekr 0
Owner
null
H2O Open Source Kubernetes operator and a command-line tool to ease deployment (and undeployment) of H2O open-source machine learning platform H2O-3 to Kubernetes.

H2O Kubernetes Repository with official tools to aid the deployment of H2O Machine Learning platform to Kubernetes. There are two essential tools to b

H2O.ai 16 Nov 12, 2022
A project management tool for data science and bioinformatics. If you want it, Kerblam it!

Warning kerblam run and kerblam package are complete but still untested. Please do use them, but be careful. Always have a backup of your data and cod

Luca 4 Dec 18, 2023
Provide free GPT-3.5 API service by reverse engineering the login-free ChatGPT website.

ChatGPT Free API Provide free GPT-3.5 API service by reverse engineering the login-free ChatGPT website. Note: This service requires the IP to be able

null 21 May 5, 2024
command line tools for coprolite research (paleontology and archaeology): estimate the producer's body mass based on coprolite diameter by the use of regression models

OVERVIEW OF COPROSIZE coprosize employs power, exponential and cubic regression models allowing to estimate the producer's body mass based on coprolit

Piotr Bajdek 7 Nov 25, 2022
A high-performance web-based geospatial visualization tool with an emphasis LEO satellites and lunar missions.

A high-performance web-based geospatial visualization tool with an emphasis LEO satellites and lunar missions. Written in Rust to target WebGPU, with WebGL2 backwards compatibility.

Shane B. 5 Dec 20, 2023
Free and open public transport routing.

Transitous Free and open public transport routing. Goal A community-run provider-neutral international public transport routing service. Using openly

Public Transport 108 Mar 24, 2024
Reviving the Research Edition Unix speak command

This repository contains the source code of Unix speak program that appeared in the Third (1973) to Sixth (1975) Research Unix editions, slightly adjusted to run on a modern computer. Details on the code's provenance and the methods employed for reviving it can be found in this blog post.

Diomidis Spinellis 31 Jul 27, 2022
A shell for research papers

Reason: A Shell for Research Papers Did I ever read this paper? Which OSDI 2021 papers did I read? Which ones have the word 'Distributed' in their tit

Jae-Won Chung 121 Nov 27, 2022
DeFiChain octopus is a codename research & development for DFIP 2111-B: VOC: Ethereum Virtual Machine (EVM) Support.

DeFiCh/octopus DeFiChain octopus is a codename research & development for DFIP 2111-B: VOC: Ethereum Virtual Machine (EVM) Support . Proposed as a DFI

DeFi Meta Chain 6 Apr 18, 2022
An NTP implementation in Rust, supported by Internet Security Research Group's Prossimo project.

NTPD-rs NTPD-rs is an implementation of NTP completely written in Rust, with a focus on exposing a minimal attack surface. The project is currently in

Prossimo (ISRG) 302 Jan 4, 2023