Skip to main content

ferro_hgvs/
lib.rs

1// Copyright (c) 2024-2025 Fulcrum Genomics LLC
2// SPDX-License-Identifier: MIT
3
4//! ferro-hgvs: HGVS variant normalizer
5//!
6//! Part of the ferro bioinformatics toolkit.
7//!
8//! # Example
9//!
10//! ```
11//! use ferro_hgvs::{parse_hgvs, Normalizer, MockProvider};
12//!
13//! // Parse an HGVS variant string
14//! let variant = parse_hgvs("NM_000088.3:c.10A>G").unwrap();
15//!
16//! // Create a normalizer with test data
17//! let provider = MockProvider::with_test_data();
18//! let normalizer = Normalizer::new(provider);
19//!
20//! // Normalize the variant
21//! let normalized = normalizer.normalize(&variant).unwrap();
22//! println!("Normalized: {}", normalized);
23//! ```
24
25pub mod backtranslate;
26pub mod batch;
27#[cfg(feature = "benchmark")]
28pub mod benchmark;
29pub mod cache;
30pub mod check;
31pub mod cli;
32pub mod clinvar;
33pub mod commands;
34pub mod config;
35pub mod convert;
36pub mod coords;
37pub mod data;
38pub mod diagnostic;
39pub mod effect;
40pub mod equivalence;
41pub mod error;
42pub mod error_handling;
43pub mod extractor;
44pub mod hgvs;
45pub mod legacy;
46pub mod liftover;
47pub mod mave;
48pub mod normalize;
49#[cfg(feature = "parallel")]
50pub mod parallel;
51pub mod prepare;
52#[cfg(feature = "python")]
53pub mod python;
54pub mod python_helpers;
55pub mod reference;
56pub mod rsid;
57#[cfg(feature = "web-service")]
58pub mod service;
59pub mod spdi;
60pub mod vcf;
61
62// Re-export commonly used types
63pub use error::FerroError;
64pub use hgvs::parser::{parse_hgvs, parse_hgvs_fast};
65pub use hgvs::variant::HgvsVariant;
66pub use normalize::{NormalizeConfig, Normalizer, ShuffleDirection};
67pub use reference::{MockProvider, MultiFastaProvider, ReferenceProvider};
68pub use spdi::{hgvs_to_spdi_simple, parse_spdi, spdi_to_hgvs, ConversionError, SpdiVariant};
69
70// Re-export coordinate types for type-safe position handling
71pub use coords::{
72    cdot_genomic_to_closed, cdot_tx_coords, hgvs_pos_to_index, hgvs_to_spdi_pos, index_to_hgvs_pos,
73    spdi_to_hgvs_pos, OneBasedInterval, OneBasedPos, ZeroBasedInterval, ZeroBasedPos,
74};
75
76/// Result type alias for ferro-hgvs operations
77pub type Result<T> = std::result::Result<T, FerroError>;