Bioutils

Simple Biological Utilities in Rust

Bioutils provides simple biological utilities including:

Check back as more functionality gets added, pull requests welcome, suggestions for improvement always welcome!

Quick Start

//! Check out the examples for a full practical walkthrough from downloading files, finding read positions, and making images! //! // Examples for using checks: //! //! use bioutils::charsets; //! use bioutils::utils; //! use crate::bioutils::utils::check::value::CheckU8; //! use bioutils::utils::new::random::random_dna; //! use bioutils::utils::new::random::random_quality; //! use bioutils::utils::mutate::random::AsMutRandomU8; //! use rand::rngs::ThreadRng; //! use rand::seq::SliceRandom; //! use std::string::String; //! use std::str; //! //! let dna = b"ACTG"; //! let rna = b"ACUG"; //! let homopolymerN = b"NNNN"; //! let homopolymerA = b"AAAA"; //! let gapna = b"AC-G"; //! let nna = b"ACnG"; //! let quality = b"@ABC"; //! //! assert!(homopolymerN.is_homopolymer()); //! assert!(homopolymerA.is_homopolymer_not_n()); //! assert!(homopolymerN.is_homopolymer_n()); //! //! assert!(gapna.has_gap()); //! assert!(nna.has_n()); //! assert!(dna.is_iupac()); //! assert!(rna.is_basic_rna()); //! //! assert!(quality.is_phred33()); //! assert!(quality.is_phred64()); //! assert!(quality.is_solexa()); //! //! // We can also do checks this way: //! assert!(quality.check_u8("is_phred33").unwrap()); //! assert!(dna.check_u8("is_basic_dna").unwrap()); //! //! // Examples for creating a new random sequence and quality //! //! let mut rng1 = rand::thread_rng(); // Create a random number generator //! let dna = random_dna(4,rng1); // Create a random dna sequence //! let mut rng2 = rand::thread_rng(); //! let quality = random_quality(4,rng2); // Create a random quality string //! println!("{:?}", dna.to_owned()); //! println!("{:?}", quality.to_owned()); //! //! // Examples for replacing nucleotides //! //! let mut rng3 = rand::thread_rng(); //create a random number generator //! let mut rng4 = rand::thread_rng(); //create a random number generator //! let mut seq = b"acugnnnqqq".to_owned(); // or by *: let mut seq = *b"acugnnnqqq"; //! let mut seq = seq.mut_random_replace_non_basic("RNA", rng4).mut_random_replace_n("RNA", rng3).mut_to_upper_basic(); //! let printseq = str::from_utf8(seq).unwrap(); //! println!("{:?}", printseq);

Modules

charsets

Numerous IUPAC character sets to either use directly or create your own mix and match

files

Download human and mouse Gencode references, download fastq sample files

references

Currently includes human NCBI gencode GRCh38. Automatically downloads the latest version of user's choice.

utils

Functions for sequence checks, pseudorandom replacement of N or gaps, and functions to create new pseudoranndom sequences