netview 0.1.0

Netview: mutual nearest neighbor graphs for genome-wide, fine-scale population structure determination and visualization
Documentation
#![allow(dead_code)]
#![allow(unused_variables)]
#![allow(unreachable_code)]

use netview::dist::{parse_distance_matrix, euclidean_distance_of_distances};
use netview::mknn::{k_mutual_nearest_neighbors, convert_to_graph, write_graph_to_file};
use netview::terminal::{App, Commands};
use netview::error::NetviewError;
use netview::log::init_logger;

use clap::Parser;

pub fn main() -> Result<(), NetviewError> {
    
    init_logger();

    let cli = App::parse();

    match &cli.command {
        Commands::Graph(args) => {
           
            let distance = parse_distance_matrix(&args.distance_matrix)?;

            let distance_of_distances = euclidean_distance_of_distances(&distance, false, false, None)?;
            
            let mutual_nearest_neighbors = k_mutual_nearest_neighbors(&distance_of_distances, args.k)?;

            let mknn_graph = convert_to_graph(
                &mutual_nearest_neighbors, 
                match args.weights { true => Some(&distance), false => None }
            )?;

            let adj_matrix = netview::mknn::graph_to_adjacency_matrix(&mknn_graph, false)?;

            write_graph_to_file(&mknn_graph, &args.output, &args.output_format)?;
        }
    }
    Ok(())
}