"""
oximiR_utils
============
Shared utility library for `OximiR <https://github.com/GuerreroVazquez/OximiR>`_
and `OximiR_studio <https://github.com/GuerreroVazquez/OximiR_studio>`_.

Stable public API
-----------------
Analysis functions::

    from oximiR_utils import calculate_burden_richness
    from oximiR_utils import get_metadata_mapping
    from oximiR_utils import calc_enrichment_matrix
    from oximiR_utils import get_enrichment_score
    from oximiR_utils import filter_enrichment_noise
    from oximiR_utils import run_distribution_tests
    from oximiR_utils import calculate_gt_rates
    from oximiR_utils import extract_gt_positions
    from oximiR_utils import run_diff_mutation_test
    from oximiR_utils import run_mutation_rate_burden
    from oximiR_utils import find_differentially_oxidized_mirs
    from oximiR_utils import extract_first_position

QC functions::

    from oximiR_utils import filter_mirnas
    from oximiR_utils import run_pca_and_plot_samples
    from oximiR_utils import get_correlation_matrix
    from oximiR_utils import run_outlier_detection

Pipeline utilities::

    from oximiR_utils import prepare_core_data
    from oximiR_utils import get_elbow_threshold
    from oximiR_utils import calculate_group_consistency
    from oximiR_utils import get_exclusion_lists

Plotting::

    from oximiR_utils import plot_barplot_difference_mirs
    from oximiR_utils import plot_boxplot_difference_mirs
    from oximiR_utils import plot_burden_and_richness
    from oximiR_utils import plot_global_enrichment
    from oximiR_utils import plot_kde
    from oximiR_utils import ECDF_plot
    from oximiR_utils import plot_positional_vulnerability
    from oximiR_utils import plot_differential_heatmap
    from oximiR_utils import plot_pca_separation
    from oximiR_utils import plot_enrichment_distribution
    from oximiR_utils import plot_mir
"""

from .analysis_functions import (
    calculate_burden_richness,
    get_metadata_mapping,
    calc_enrichment_matrix,
    get_enrichment_score,
    filter_enrichment_noise,
    run_distribution_tests,
    calculate_gt_rates,
    extract_gt_positions,
    run_diff_mutation_test,
    run_mutation_rate_burden,
    find_differentially_oxidized_mirs,
    extract_first_position,
)

from .qc_functions import (
    filter_mirnas,
    run_pca_and_plot_samples,
    get_correlation_matrix,
    run_outlier_detection,
)

from .pipeline_utils import (
    prepare_core_data,
    get_elbow_threshold,
    calculate_group_consistency,
    get_exclusion_lists,
)

from .plotting import (
    plot_barplot_difference_mirs,
    plot_boxplot_difference_mirs,
    plot_burden_and_richness,
    plot_global_enrichment,
    plot_kde,
    ECDF_plot,
    plot_positional_vulnerability,
    plot_differential_heatmap,
    plot_pca_separation,
    plot_enrichment_distribution,
    plot_mir,
)

__version__ = "0.1.0"

__all__ = [
    # analysis_functions
    "calculate_burden_richness",
    "get_metadata_mapping",
    "calc_enrichment_matrix",
    "get_enrichment_score",
    "filter_enrichment_noise",
    "run_distribution_tests",
    "calculate_gt_rates",
    "extract_gt_positions",
    "run_diff_mutation_test",
    "run_mutation_rate_burden",
    "find_differentially_oxidized_mirs",
    "extract_first_position",
    # qc_functions
    "filter_mirnas",
    "run_pca_and_plot_samples",
    "get_correlation_matrix",
    "run_outlier_detection",
    # pipeline_utils
    "prepare_core_data",
    "get_elbow_threshold",
    "calculate_group_consistency",
    "get_exclusion_lists",
    # plotting
    "plot_barplot_difference_mirs",
    "plot_boxplot_difference_mirs",
    "plot_burden_and_richness",
    "plot_global_enrichment",
    "plot_kde",
    "ECDF_plot",
    "plot_positional_vulnerability",
    "plot_differential_heatmap",
    "plot_pca_separation",
    "plot_enrichment_distribution",
    "plot_mir",
    # version
    "__version__",
]
