use crate::prelude::*;
pub mod candidates;
pub mod deviants;
pub mod direct;
pub mod dissolve;
pub mod downsample;
pub mod knn;
pub mod params;
pub mod partition;
pub mod pile;
pub mod seeds;
pub mod select;
pub mod similarity;
pub use candidates::{compute_candidate_metacells, make_incoming_view};
pub use deviants::find_deviant_cells;
pub use direct::{DirectMetacellsResult, compute_direct_metacells};
pub use dissolve::dissolve_metacells;
pub use downsample::downsample_pile;
pub use knn::build_knn_graph;
pub use params::{
DeviantsParams, DissolveParams, MC2KnnParams, MetacellsParams, PartitionParams, SelectParams,
SimilarityMethod, SimilarityParams,
};
pub use partition::{optimise_partitions, score_partitions};
pub use pile::Pile;
pub use seeds::{choose_seeds, seeds_count_for};
pub use select::select_features;
pub use similarity::compute_similarity;
pub fn compute_metacells_single_pile(
f_path: &str,
cell_indices: &[usize],
params: &MetacellsParams,
seed: usize,
verbose: bool,
) -> Result<DirectMetacellsResult, BixverseErrors> {
let reader = ParallelSparseReader::new(f_path)?;
if verbose {
println!("Loading {} cells into a single pile...", cell_indices.len());
}
let mut pile = Pile::from_reader(&reader, cell_indices)?;
compute_direct_metacells(&mut pile, params, seed, verbose)
}