An open API service indexing awesome lists of open source software.

https://github.com/alejandrogzi/packbed

pack a .bed into overlapping components
https://github.com/alejandrogzi/packbed

bed bioinformatics overlapping transcript

Last synced: 3 months ago
JSON representation

pack a .bed into overlapping components

Awesome Lists containing this project

README

          



packbed



Version Badge


Crates.io Version


GitHub License


Crates.io Total Downloads


pack a .bed into overlapping components



## Features
- pack any number of .bed files into overlapping components through a binary, Rust library or Python module
- write a unique overlapping-component-colorized bed file out of any number of .bed files through a binary, Rust library or Python module
- split components into separate .bed files through a binary, Rust library or Python module
- write serialized components to a binary file through a binary and Rust library
- read serialized components from a binary file through a Rust library or Python module
- write specific components each to a different .bed file through a Rust library or Python module

> What's new on packbed v0.0.7!
>
> - Implements a new query range algorithm to pack components
> - Reduces time by more than x25 when working with more than 1 million reads

## Usage
### Binary
``` bash
Usage: packbed [OPTIONS] --bed ... --output

Arguments:
-b, --bed ... Paths to BED12 files delimited by comma
-o, --output Path to output BED12 file [not required if -c flag is set]

Options:
-t, --threads Number of threads [default: 8]
--type Type of output [default: bed] [possible values: bin, comp, bed]
--overlap_type Type of overlap [default: exon]
-s, --subdirs Flag to split components into separate BED files in subdirectories
--colorize Flag to colorize components in output BED(s) file
-h, --help Print help
--version: Print version
```

> [!TIP]
> If you want to get components in separate .bed files use:
> ```bash
> packbed -b path/to/b1.bed,path/to/b2.bed -o path/to/output --type comp
> ```
> in case you want to send each component to a different subdirectory (good to parallelize processes):
> ```bash
> packbed -b path/to/b1.bed,path/to/b2.bed -o path/to/output --type comp -s
> ```
> if you want to colorize the components but send them all to just 1.bed file [default]:
> ```bash
> packbed -b path/to/b1.bed,path/to/b2.bed -o path/to/output --colorize
> ```

### Library
``` rust
use packbed::packbed;

fn main() {

let bed1 = PathBuf::new("/path/to/b1.bed");
let bed2 = PathBuf::new("/path/to/b2.bed");
let beds = vec![bed1, bed2];

let overlap_type = OverlapType::Exon;
let colorize = true;

let comps: HashMap>>> = packbed(
beds,
overlap_type,
colorize)
.unwrap();
}
```
### Python
build the port to install it as a pkg:
```bash
git clone https://github.com/alejandrogzi/packbed.git && cd packbed/py-packbed
hatch shell
maturin develop --release
```
use it:
``` python
from packbed import pack

beds = ["path/to/bed1.bed", "path/to/bed2.bed"]
comps = pack(beds)
```

### crate: [https://crates.io/crates/packbed](https://crates.io/crates/packbed)