Skip to content

Commit

Permalink
Update deps; doc cleanup (#11)
Browse files Browse the repository at this point in the history
* bump deps

* slim deps

* add root:docs

* cleamup readme. move most of the list to GH issues.
  • Loading branch information
zachcp authored Jul 22, 2024
1 parent db6c292 commit 17b003d
Show file tree
Hide file tree
Showing 12 changed files with 376 additions and 511 deletions.
200 changes: 11 additions & 189 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,6 @@
# The Bioinformatics Toolkit

RUST-backed utilities for bioinformatic data processing.


## Get started

The fastest way to get started it to download the applications found in the [Release]()https://github.com/zachcp/bioinformaticstoolkit/releases section. This project aims to demonstrate how the Rust toolchain enables efficient cross-platform support for high-performance applications. By using [Tauri](https://tauri.app/) you can write the entire frontend in any tool that compiles to HMLT+Javascript, in this case I used [Quarto](https://quarto.org/) to take advantage of its simple composition (its mostly markdown +yaml) as well as it's built-in use of the [observable](https://github.com/observablehq/stdlib) runtime.


### Screenshots

Below are screenshots of a native application demonstrating the home page, the guide page, an example RNA secondary strucutre visualization using [rnapkin](https://github.com/ukmrs/rnapkin);statistics of a fasta file including a histrogram of sequence lengths using [noodles](https://docs.rs/noodles-fasta/latest/noodles_fasta/) for IO; and DNA translation using the [protein_translation](https://docs.rs/protein-translate/latest/protein_translate/) crate.


![](images/intro.png)
![](images/guide.png)
![](images/rna.png)
![](images/fasta_histogram)
![](images/translation.png)
RUST-backed utilities for bioinformatic data processing. Rust on the backend with JS on the front.


## Develop
Expand All @@ -33,11 +16,11 @@ cargo install tauri-cli
# add cargo bind dir to the path
export PATH=$PATH:~/.cargo/bin/

# to develop
cargo-tauri dev
# to develop
npm run tauri dev

# to package. this build is ~8MB.
cargo-tauri build
# to package. this build is ~8MB.
npm run tauri build

# to test
cd src-tauri && cargo test
Expand All @@ -46,171 +29,10 @@ cd src-tauri && cargo test -- --nocapture

```

### Screenshots

## Other Ideas/Tools for Rust Incorporation


FASTX:
- [x] convert fasta to fastq
- [x] basic stats of fasta/fastq
- [ ] histrogram of read lengths (possibly set max number)
- [ ] merge PE reads // split interleaved
- [ ] splitting into multiple files ( create directory ?)
- [ ] filter-fastx length // quality
- [ ] sample the fasta/x files
- [ ] plot: length x quality metrics ( optional hexagon plots )
- [ ] plot: coverage by location.

GFA:
- [ ] Utilites from [GFATK](https://docs.rs/gfatk/latest/gfatk/) including filtering
- [ ] GFAStats


DNA Analysis:
- Digestability of DNA sequences:
- [ ] Search for RE locations
- [ ] Other Patterns to Avoid
- [ ] Data: Standard RE enzymes
- [ ] Plot: Genome View of RE sites.
- [ ] Global view of Palettes and coding types
- [ ] Insilico PCR: https://github.com/dlesl/pcr
- Clonifier: https://github.com/dlesl/clonifier
- Phenogram
- Pangenome TK: https://github.com/GeneDx/pgr-tk (cdep in the build)
- RE digest and assembly calculations


VCF:
- [ ] convert
- [ ] concat
- [ ] split

RNA Secondary Structure:
- [x] RNApkin https://lib.rs/crates/rnapkin


rna-seq:
- [ ] gencounts https://github.com/NKI-GCF/gensum
- [ ] rust-lapper https://crates.io/crates/rust-lapper


Taxonomy:
- [ ] load and display a tree file
- [ ] load and display kraken
- [ ] load and display bracken

Peptides and Proteomics:
- [unipept](https://crates.io/crates/umgap)


Javascript:
- [SGTK](https://olga24912.github.io/SGTK/)
- [ribbon](https://github.com/MariaNattestad/ribbon?tab=readme-ov-file)
- [jbrowse](https://jbrowse.org/jb2/docs/quickstart_web/
- [ideogram](https://eweitz.github.io/ideogram/differential-expression)
- [genomegraphviewer]()

Rust Software:
- [Pangenomer](https://github.com/marschall-lab/panacus)
- [rust-bio](https://github.com/rust-bio/rust-bio)
- [rust-bio-tools](https://github.com/rust-bio/rust-bio-tools)
- [Slyph](https://github.com/bluenote-1577/sylph/wiki/sylph-cookbook)
- [Alignoth](https://github.com/alignoth/alignoth)


Miscelleaneous:
- Genome Card: e.g viz with global genome statistics.
- Genome name, overview, produces compounds
- Utilities for Codons
- [VCF plotein](https://vcfplotein.liigh.unam.mx/)
- [ASGArt](https://github.com/delehef/asgart) (cdep in the build)
- [UDON](https://github.com/ocxtal/udon)
- [GFAESTUS](https://github.com/chfi/gfaestus) (c++ dep )
- [BioSeq](https://github.com/jeff-k/bio-seq)
- [10x Genomics Rust](https://github.com/10XGenomics/rust-toolbox)
- [fq parser](https://crates.io/crates/fastq)
- [fastats](https://crates.io/crates/fakit)
- [fqmerge](https://crates.io/crates/fqkit)
- [ggcat](https://github.com/algbio/ggcat)
- [light motif](https://crates.io/crates/lightmotif)
- [liftover with crusmapr](liftover)
- [exon](https://docs.rs/exon/latest/exon)
- [phylogeny](https://docs.rs/phylogeny/latest/phylogeny/) # not much action
- [chemical Reaction networks](https://lib.rs/crates/rebop)
- [gb-io](https://lib.rs/crates/gb-io)
- [charming - a nive gui library](https://github.com/yuankunzhang/charming)
- [met map](https://lib.rs/crates/shu)
- [barcode counter](https://lib.rs/crates/barcode-count)
- [hpo](https://lib.rs/crates/hpo)
- nanopore read assessment: https://lib.rs/crates/nanoq#readme-read-report
- [niffler](https://github.com/luizirber/niffler/)
- [OBO Validatio](https://lib.rs/crates/fastobo-validator)
- [rustyms](https://lib.rs/crates/rustyms)
- [preotienogenic](https://lib.rs/crates/proteinogenic)
- [rdkit](https://lib.rs/crates/rdk)
- [bigwig2bam](https://lib.rs/crates/bigwig2bam)
- Plasmapr: https://github.com/BradyAJohnston/plasmapR
- [flate2](https://docs.rs/flate2/latest/flate2/)use flate2::read::MultiGzDecoder;
- [bio_streams](https://github.com/jeff-k/bio-streams)
- [BRICK Webapp](https://brick.ink/)
- Streaming iterators for bioinformatics data
- [quickdna](https://github.com/SecureDNA/quickdna)
- [Conway-Bromage-Lyndon](https://github.com/imartayan/CBL)
- https://github.com/weng-lab/logojs-package
- [fiber-seq](https://github.com/fiberseq/fibertools-rs)
- []()


# bioinformatics-toolkit

This is an [Observable Framework](https://observablehq.com/framework) project. To start the local preview server, run:

```
npm run dev
```

Then visit <http://localhost:3000> to preview your project.

For more, see <https://observablehq.com/framework/getting-started>.

## Project structure

A typical Framework project looks like this:

```sh
.
├─ docs
│ ├─ components
│ │ └─ timeline.js # an importable module
│ ├─ data
│ │ ├─ launches.csv.js # a data loader
│ │ └─ events.json # a static data file
│ ├─ example-dashboard.md # a page
│ ├─ example-report.md # another page
│ └─ index.md # the home page
├─ .gitignore
├─ observablehq.config.ts # the project config file
├─ package.json
└─ README.md
```

**`docs`** - This is the “source root” — where your source files live. Pages go here. Each page is a Markdown file. Observable Framework uses [file-based routing](https://observablehq.com/framework/routing), which means that the name of the file controls where the page is served. You can create as many pages as you like. Use folders to organize your pages.

**`docs/index.md`** - This is the home page for your site. You can have as many additional pages as you’d like, but you should always have a home page, too.

**`docs/data`** - You can put [data loaders](https://observablehq.com/framework/loaders) or static data files anywhere in your source root, but we recommend putting them here.

**`docs/components`** - You can put shared [JavaScript modules](https://observablehq.com/framework/javascript/imports) anywhere in your source root, but we recommend putting them here. This helps you pull code out of Markdown files and into JavaScript modules, making it easier to reuse code across pages, write tests and run linters, and even share code with vanilla web applications.

**`observablehq.config.ts`** - This is the [project configuration](https://observablehq.com/framework/config) file, such as the pages and sections in the sidebar navigation, and the project’s title.

## Command reference

| Command | Description |
| ----------------- | -------------------------------------------------------- |
| `npm install` | Install or reinstall dependencies |
| `npm run dev` | Start local preview server |
| `npm run build` | Build your static site, generating `./dist` |
| `npm run deploy` | Deploy your project to Observable |
| `npm run clean` | Clear the local data loader cache |
| `npm run observable` | Run commands like `observable help` |
![](images/intro.png)
![](images/guide.png)
![](images/rna.png)
![](images/fasta_histogram)
![](images/translation.png)
33 changes: 15 additions & 18 deletions observablehq.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,46 +3,43 @@ export default {
// The project’s title; used in the sidebar and webpage titles.
title: "bioinformatics-toolkit",
search: true,
root: "docs",
// The pages and sections in the sidebar. If you don’t specify this option,
// all pages will be listed in alphabetical order. Listing pages explicitly
// lets you organize them into sections and have unlisted pages.
pages: [
{
name: "Fasta Utiliies",
pages: [
{name: "Simple", path: "fastx/fasta_simple"},
{name: "FQ->Fasta", path: "fastx/fastq_to_fasta"},
{name: "Fastx Stats", path: "fastx/fastx_stats"},
]
{ name: "Simple", path: "fastx/fasta_simple" },
{ name: "FQ->Fasta", path: "fastx/fastq_to_fasta" },
{ name: "Fastx Stats", path: "fastx/fastx_stats" },
],
},
{
name: "DNA Utiliies",
pages: [
{name: "RE_Analysis", path: "dna/restriction_enzyme_analysis"},
{name: "Translation", path: "dna/translation"},
]
{ name: "RE_Analysis", path: "dna/restriction_enzyme_analysis" },
{ name: "Translation", path: "dna/translation" },
],
},
{
name: "RNA Utiliies",
pages: [
{name: "RNAnapkin", path: "rna/rna_rnapkin_viz"},
]
pages: [{ name: "RNAnapkin", path: "rna/rna_rnapkin_viz" }],
},
{
name: "Javascript Utiliies",
pages: [
{name: "IGVJS", path: "JSApps/igvjs"},
{ name: "IGVJS", path: "JSApps/igvjs" },
// {name: "Gosling", path: "JSApps/gosling"},
{name: "graphgenomeviewer", path: "JSApps/genomegraph"},
{name: "msaviewer", path: "JSApps/msa-viewer"},
{name: "ribbon", path: "JSApps/ribbon"},
{name: "ideogram", path: "JSApps/ideogram"},

]
{ name: "graphgenomeviewer", path: "JSApps/genomegraph" },
{ name: "msaviewer", path: "JSApps/msa-viewer" },
{ name: "ribbon", path: "JSApps/ribbon" },
{ name: "ideogram", path: "JSApps/ideogram" },
],
},
],


// Some additional configuration options and their defaults:
theme: "default", // try "light", "dark", "slate", etc.
// header: "", // what to show in the header (HTML)
Expand Down
14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@
"dependencies": {
"@observablehq/framework": "latest",
"@tauri-apps/api": "^2.0.0-beta.13",
"@tauri-apps/plugin-dialog": "^2.0.0-beta.2",
"@tauri-apps/plugin-shell": "^2.0.0-beta.2",
"@tauri-apps/plugin-dialog": "^2.0.0-beta.7",
"@tauri-apps/plugin-shell": "^2.0.0-beta.8",
"d3-dsv": "^3.0.1",
"d3-time-format": "^4.1.0",
"gosling.js": "^0.17.0",
"higlass": "^1.13.4",
"ideogram": "^1.45.1",
"igv": "2.15.12",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"igv": "2.15.13",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"@tauri-apps/cli": "^2.0.0-beta.10",
"typescript": "^5.0.2",
"vite": "^5.0.0"
"typescript": "^5.5.3",
"vite": "^5.3.4"
},
"engines": {
"node": ">=20.6"
Expand Down
Loading

0 comments on commit 17b003d

Please sign in to comment.