use anyhow::Result;
use ragc_core::{Decompressor, DecompressorConfig};
fn main() -> Result<()> {
let archive_path = std::env::args()
.nth(1)
.unwrap_or_else(|| "data.agc".to_string());
println!("Opening archive: {archive_path}");
let mut decompressor = Decompressor::open(&archive_path, DecompressorConfig::default())?;
let samples = decompressor.list_samples();
println!("\nFound {} samples:", samples.len());
for (i, sample) in samples.iter().enumerate() {
println!(" {}: {}", i + 1, sample);
if i >= 9 {
println!(" ... ({} more)", samples.len() - 10);
break;
}
}
if let Some(first_sample) = samples.first() {
println!("\nExtracting sample: {first_sample}");
let contigs = decompressor.get_sample(first_sample)?;
println!(" Found {} contigs:", contigs.len());
for (contig_name, sequence) in &contigs {
println!(" {}: {} bp", contig_name, sequence.len());
}
if let Some((contig_name, sequence)) = contigs.first() {
let preview = String::from_utf8_lossy(&sequence[..sequence.len().min(100)]);
println!("\nFirst 100bp of {contig_name}:");
println!("{preview}");
}
}
decompressor.close()?;
Ok(())
}