1use astroimage::ImageAnalyzer;
2
3fn analyze_file(label: &str, path: &str) {
4 println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
5 println!("{label}");
6 println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
7
8 let analyzer = ImageAnalyzer::new();
9 let r = analyzer.analyze(path).unwrap();
10
11 println!(" Stars detected: {}", r.stars_detected);
12 println!(" Stars after filter: {}", r.stars.len());
13 println!(" Median FWHM: {:.3}", r.median_fwhm);
14 println!(" Median eccentricity: {:.3}", r.median_eccentricity);
15 println!(" Median SNR: {:.1}", r.median_snr);
16 println!(" PSF signal: {:.1}", r.psf_signal);
17 println!(" Trail R²: {:.4}", r.trail_r_squared);
18 println!(" Possibly trailed: {}", r.possibly_trailed);
19
20 let n = r.stars.len();
22 if n >= 5 {
23 let mut thetas: Vec<f32> = r.stars.iter().map(|s| s.theta.to_degrees()).collect();
24 thetas.sort_by(|a, b| a.total_cmp(b));
25
26 let (sum_cos, sum_sin) = r.stars.iter().fold((0.0f64, 0.0f64), |(sc, ss), s| {
27 let a = 2.0 * s.theta as f64;
28 (sc + a.cos(), ss + a.sin())
29 });
30 let mean_theta = (sum_sin.atan2(sum_cos) * 0.5).to_degrees();
31
32 println!("\n Theta ({} measured stars):", n);
33 println!(" Mean theta: {mean_theta:.1}deg");
34 println!(
35 " min={:.1} p25={:.1} median={:.1} p75={:.1} max={:.1}",
36 thetas[0],
37 thetas[n / 4],
38 thetas[n / 2],
39 thetas[3 * n / 4],
40 thetas[n - 1]
41 );
42 }
43
44 if !r.stars.is_empty() {
45 println!("\n Top 5 stars:");
46 for (i, s) in r.stars.iter().take(5).enumerate() {
47 println!(
48 " #{}: ecc={:.3} theta={:.1}deg fwhm={:.2} peak={:.0}",
49 i + 1,
50 s.eccentricity,
51 s.theta.to_degrees(),
52 s.fwhm,
53 s.peak
54 );
55 }
56 }
57 println!();
58}
59
60fn main() {
61 let good = "/Volumes/BigMac/Users/astrobureau/Pictures/Unsorted/edph/NINA/COPIED/CAMERA_DUO/Barnard 150/2024-09-28/LIGHT/2024-09-28_23-16-30_-10.00_180.00s_0281.fits";
62 let s_trail = "/Volumes/BigMac/Users/astrobureau/Pictures/Unsorted/edph/NINA/COPIED/CAMERA_DUO/Barnard 150/2024-09-28/LIGHT/2024-09-29_05-41-37_-9.90_180.00s_0381.fits";
63 let linear_trail = "/Volumes/BigMac/Users/astrobureau/Pictures/Unsorted/edph/NINA/COPIED/CAMERA_DUO/Barnard 150/2024-09-27/LIGHT/2024-09-28_05-41-28_-10.00_180.00s_0236.fits";
64
65 analyze_file("GOOD STARS (0281)", good);
66 analyze_file("S-SHAPED TRAILS (0381)", s_trail);
67 analyze_file("LINEAR TRAILS (0236)", linear_trail);
68}