parasail-rs 0.7.4

Rust bindings and wrapper for parasail, a SIMD C library for pairwise sequence alignment.
Documentation
# Change Log

All notable changes will be documented here in reverse chronological order the headers \<VERSION\> - <YY.MM.DD>.

## 0.7.4 - 2024-08-24

### Bug Fixes

- Add `solution_width` method to `AlignerBuilder` (#8)
- Add copy trait to aligner (#7)

## 0.7.3 - 2024.04.22

### Features

- Add SSW library emulation. The `ssw` method on `Aligner` performs
striped Smith-Waterman local alignment using SSE2 instructions. Support for
profiles will be supported in a later release.
- A new `SSWResult` has been added and is returned from successful `ssw`
alignment. With SSWResult, you can get the primary alignment score, along with
start and end locations of the alignment on the query or reference.
- Add banded global (Needleman-Wuncsh) alignment. The `banded_ssw` method
on `Aligner` performs a banded global alignment.
- Add `bandwith` method on `AlignerBuilder` to set the band with for banded nw
alignment.

### Improvements

- Updated doc strings in lib.rs

## 0.7.2 - 2024.04.17

### Bug Fixes

- AlignerFn enum uses *const c_char in expected fn signature instead of *const i8 as before
- With fix above, we can use as_ptr() as in the query/ref and parasail fn name as
before without casting to *const i8!

## 0.7.1 - 2024.04.17

- Upgrade dependencies. Notably libparasail-sys -> 0.1.6

### Bug Fixes

- Use *const i8 casting for passing fn_name into `parasail_lookup_function`
and query/reference to alignment fn. This attempts to solve a compilation
issue on aarch64 linux with gcc-multilib available.

## 0.7.0 - 2024.03.20

### Features

- Add Display trait on Matrix for easy printing to stdout.

### Breaking Changes

- Matrix methods returning results:
    - `create`, `from`, and `create_pssm`, `from_file` now return `Result<Self, MatrixError>`.
- Profile `create` method now returns `Result<Self, ProfileError>`.
- `align` method returns `Result<AlignResult, AlignError>`.
- `convert_square_to_pssm` renamed to `to_pssm` for succinctness.

### Bug Fixes

- `set_value` method can only modify valid matrix indices.

## 0.6.0 - 2024.03.18

### Features

- Add `set_value` method to change values in substitution matrices.
- Add methods on AlignResult:
    - `print_traceback` (print alignment strings and statistics).
    - `get_traceback_strings` (return a Traceback struct that includes query, ref, and comparison strings).
    - `get_cigar` (get CIGAR strings).

## Breaking Changes

- Removed `mode` method from AlignerBuilder. Use `global`, `semi_global`, or `local` methods instead.
- Removed `vec_strategy` method from AlignerBuilder. Use `striped`, `scan`, and `diag` methods instead.

## 0.5.1 - 2024.03.13

### Features

- Add `global`, `semi_global`, and `local` methods to `AlignerBuilder` to set alignment algorithm.
- Add `striped`, `scan`, and `diag` methods to `AlignerBuilder` to set vectorization method. 

## 0.5.0 - 2024.03.11

### Breaking Changes

- Aligner builder takes now has a mode method to set alignment algorithm (nw, sg, sw).
- Many wrapper alignment methods removed in favor of single align method.

### Bug Fixes

- constructing parasail fn names from Aligner builder to avoid building on every alignment.

## 0.4.0 - 2024.03.06

### Features

- Better support for allowing various gap configurations in semi-global alignments [\#1].

### Breaking Changes

- removed allow_gaps
- use allow_query_gaps and allow_ref_gaps in AlignerBuilder / Aligner for semi-global alignment.

### Bug Fixes

- use_table and use_trace disable each other if called to be mutually exclusive [\#2].
- use_table and use_stats disable each other if called to be mutually exclusive [\#2].

## 0.3.0 - 2024.03.03

- Note that currenlty use_trace and use_stats can both be set to true. However, traceback is only compatible without stats.

### Breaking Changes

- use_stats method changed to is_stats on AlignResult.
- use_stats and use_table methods on AlignerBuilder do not take a bool. Simply
call the methods to set them to true. By default, these extra params for alignment
are not used.

### Features

New methods for AlignResults:

- [x] get_score_table
- [x] get_matches_table
- [x] get_similar_table
- [x] get_length_table
- [x] get_score_row
- [x] get_matches_row
- [x] get_similar_row
- [x] get_length_row
- [x] get_score_col
- [x] get_matches_col
- [x] get_similar_col
- [x] get_length_col
- [x] get_trace_table
- [x] is_blocked
- [x] is_stats_table
- [x] is_stats_rowcol
- [x] is_rowcol
- [x] is_stats_trace

### Bug Fixes

- Check that aligner was initialized with use_stats = true before calling methods that requires additional stats:
    - get_matches
    - get_length 
- Check that use_stats for profile and aligner match before aligning
- Avoid calling `parasail_matrix_free` on drop for builtin matrices

## 0.2.3 - 2024.02.28

### Changes

- Pass use_stats to aligner builder to use alignment functions that return additional statistics

### Bug Fixes

- Some AlignResult getter functions returning wrong boolean

## 0.2.2 - 2024.02.28

### Bug Fixes

- Add Send and Sync traits to profile and matrix structs

## 0.2.1 - 2024.02.28

### Changes

- Use Arc for profile and matrix instead of Rc for thread safety

## 0.2.0 - 2024.02.25

### Changes 

- Use new builder pattern for aligner.
- Better Matrix and Profile handling with Rc.
- Methods for AlignResults struct.

## 0.1.0 - 2024.02.21

### Initial release.

- Implements global, semi-global, and local alignment.
- Supports query profiles or one-off alignments.