"""
Woseco: WOrd SEntence COoccurrence

A Python package for extracting and analyzing concept associations in writing.
"""

__version__ = "0.1.2"
__author__ = "Owen Saunders"
__email__ = "56914238+owen-saunders@users.noreply.github.com"

from .core import WosecoExtractor
from .graph import (
    build_graph,
    build_graphs_from_list,
    export_graph,
    export_graphs,
    load_graph,
    merge_graphs,
    get_graph_summary,
)
from .metrics import (
    calculate_aspl,
    calculate_mlcc,
    calculate_modularity,
    calculate_num_components,
    calculate_avg_component_size,
    calculate_gcc_size,
    calculate_all_metrics,
    stats,
    aggregate_metrics,
    compare_metrics,
)
from .analysis import (
    unexpectedness_arrays,
    group_by_rating,
    filter_by_prompt,
    calculate_rating_statistics,
    pca_analysis,
    create_metrics_matrix,
    compare_raters,
    analyze_prompt_groups,
)
from .visualization import (
    plot_network_stats,
    plot_rating_distribution,
    plot_graph,
    plot_metrics_comparison,
    plot_pca,
    plot_unexpectedness,
    plot_heatmap,
)
from .language import (
    extract_svo_en,
    extract_svo_de,
    extract_nouns_en,
    extract_nouns_de,
    detect_language,
    load_language_model,
    BilingualProcessor,
)

__all__ = [
    # Core
    "WosecoExtractor",
    # Graph
    "build_graph",
    "build_graphs_from_list",
    "export_graph",
    "export_graphs",
    "load_graph",
    "merge_graphs",
    "get_graph_summary",
    # Metrics
    "calculate_aspl",
    "calculate_mlcc",
    "calculate_modularity",
    "calculate_num_components",
    "calculate_avg_component_size",
    "calculate_gcc_size",
    "calculate_all_metrics",
    "stats",
    "aggregate_metrics",
    "compare_metrics",
    # Analysis
    "unexpectedness_arrays",
    "group_by_rating",
    "filter_by_prompt",
    "calculate_rating_statistics",
    "pca_analysis",
    "create_metrics_matrix",
    "compare_raters",
    "analyze_prompt_groups",
    # Visualization
    "plot_network_stats",
    "plot_rating_distribution",
    "plot_graph",
    "plot_metrics_comparison",
    "plot_pca",
    "plot_unexpectedness",
    "plot_heatmap",
    # Language
    "extract_svo_en",
    "extract_svo_de",
    "extract_nouns_en",
    "extract_nouns_de",
    "detect_language",
    "load_language_model",
    "BilingualProcessor",
]