Skip to main content

Crate segul_core

Crate segul_core 

Source
Expand description

§Utilities for alignment manipulation and summary statistics

SEGUL provides fast and memory efficient utilities for alignment manipulation and summary statistics.

§Features:

  1. Alignment concatenation
  2. Alignment conversion
  3. Alignment filtering
  4. Alignment pairwise genetic distances
  5. Alignment partition conversion
  6. Alignment splitting
  7. Alignment summary statistics
  8. Unalign alignments
  9. Contiguous sequence summary statistics
  10. Raw read summary statistics
  11. Sample distribution mapping
  12. Sequence extraction
  13. Sequence filtering
  14. Sequence ID renaming
  15. Sequence removal
  16. Sequence translation
  17. Sequence transposition
  18. Sequence unique ID parsing

§Cargo features

All features are enabled by default. Disable default features and pick the ones you need to reduce compile time and dependencies:

FeatureProvides
alignAlignment concat, convert, distance, filter, split, summary, trim
sequenceSequence extract, filter, rename, remove, translate, transpose, ID
readRaw read (FASTQ) summary statistics
contigContiguous sequence summary statistics
mafMultiple alignment format (MAF) conversion
segul-core = { version = "0.24", default-features = false, features = ["read"] }

§Example

§Convert fasta to philip alignment

use std::path::Path;

use tempfile::TempDir;

use segul_core::helper::types::{DataType, Header, InputFmt, OutputFmt, SeqMatrix};
use segul_core::helper::sequence::SeqParser;
use segul_core::writer::sequences::SeqWriter;

let input = Path::new("tests/files/simple.fas");
let input_fmt = InputFmt::Fasta;
let datatype = DataType::Dna;
// Replace binding with your output directory, for example:
// let output_path = Path::new("output").join("my_output_alignment");
let binding = TempDir::with_prefix("temp").unwrap();
let output_path = binding.path().join("my_output_alignment");
let output_fmt = OutputFmt::Phylip;
let (sequence_matrix, header) = SeqParser::new(input, &datatype).parse(&input_fmt);
let mut writer = SeqWriter::new(&output_path, &sequence_matrix, &header);
writer.write_sequence(&output_fmt).unwrap()

Modules§

core
Handle segul main functions.
helper
Helper functions for the SEGUL features.
parser
All the parsers for the supported formats.
stats
Sequence summary statistics
writer
Writer trait and its implementations.