use std::collections::{HashSet, HashMap};
use rust_htslib::bam::{self, Read};
use super::bam_record_ext::BamRecordExt;
#[allow(unused)]
pub fn seperate_dup_nondup_channels(bam_filepath: &str) -> (HashSet<usize>, HashSet<usize>) {
let mut bam_file = bam::Reader::from_path(bam_filepath).unwrap();
bam_file.set_threads(16).unwrap();
let mut counter = HashMap::new();
for record in bam_file.records() {
let record = record.unwrap();
let record_ext = BamRecordExt::new(&record);
let ch = if let Some(n) = record_ext.get_ch() {
n as usize
} else {
record_ext.get_qname().split("/")
.collect::<Vec<&str>>()[1].parse::<usize>().unwrap()
};
* counter.entry(ch).or_insert(0) += 1;
}
let nondup_chs = counter.iter()
.filter(|(_, v)| **v == 1)
.map(|(k, _)| *k)
.collect::<HashSet<usize>>();
let dup_chs = counter.iter()
.filter(|(_, v)| **v > 1)
.map(|(k, _)| *k)
.collect::<HashSet<usize>>();
(dup_chs, nondup_chs)
}