analyze_batch/
analyze_batch.rs1use astroimage::ImageAnalyzer;
2
3fn main() {
4 let dir = "tests/no_trails";
5 let mut files: Vec<_> = std::fs::read_dir(dir)
6 .unwrap()
7 .filter_map(|e| e.ok())
8 .filter(|e| e.path().extension().map_or(false, |ext| ext == "fits"))
9 .map(|e| e.path())
10 .collect();
11 files.sort();
12
13 println!(
14 "{:<12} {:>5} {:>5} {:>6} {:>6} {:>6} {:>6} {:>7} {:>8} {:>8} {:>6} {:>6} {:>6} {:>7}",
15 "FILE", "DET", "KEPT", "FWHM", "ECC", "SNR", "HFR", "SNR_W", "PSF_SIG", "FR_SNR", "W", "H", "R²", "TRAIL?"
16 );
17 println!("{}", "-".repeat(124));
18
19 for path in &files {
20 let name = path.file_name().unwrap().to_str().unwrap();
21 let short = if let Some(pos) = name.rfind('_') {
23 &name[pos + 1..name.len() - 5] } else {
25 &name[..name.len().min(12)]
26 };
27
28 let analyzer = ImageAnalyzer::new();
29 match analyzer.analyze(path) {
30 Ok(r) => {
31 println!(
32 "{:<12} {:>5} {:>5} {:>6.2} {:>6.3} {:>6.1} {:>6.2} {:>7.3} {:>8.1} {:>8.1} {:>6} {:>6} {:>6.3} {:>7}",
33 short,
34 r.stars_detected,
35 r.stars.len(),
36 r.median_fwhm,
37 r.median_eccentricity,
38 r.median_snr,
39 r.median_hfr,
40 r.snr_weight,
41 r.psf_signal,
42 r.frame_snr,
43 r.width,
44 r.height,
45 r.trail_r_squared,
46 if r.possibly_trailed { "YES" } else { "no" },
47 );
48 }
49 Err(e) => {
50 println!("{:<12} ERROR: {}", short, e);
51 }
52 }
53 }
54}