saf_v3_intersect/
saf_v3_intersect.rs1use std::{
4 env,
5 io::{self, Write},
6};
7
8use angsd_saf as saf;
9
10fn main() -> io::Result<()> {
11 let readers = env::args()
12 .skip(1)
13 .map(|p| saf::reader::Builder::v3().build_from_member_path(p))
14 .collect::<io::Result<Vec<_>>>()?;
15
16 let mut intersect = saf::Intersect::new(readers);
19
20 let stdout = io::stdout();
21 let mut writer = stdout.lock();
22
23 let mut bufs = intersect.create_record_bufs();
24 while intersect.read_records(&mut bufs)?.is_not_done() {
25 for (reader, buf) in intersect.get_readers().iter().zip(bufs.iter()) {
26 let contig = reader.index().records()[*buf.contig_id()].name();
27 let position = buf.position();
28 write!(writer, "{contig}\t{position}")?;
29
30 for v in buf.item().iter() {
31 write!(writer, "\t{v:.2}")?;
32 }
33
34 writeln!(writer)?;
35 }
36 }
37
38 Ok(())
39}