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!(" Frame SNR: {:.1}", r.frame_snr);
18 println!(" Trail R²: {:.4}", r.trail_r_squared);
19 println!(" Possibly trailed: {}", r.possibly_trailed);
20
21 let n = r.stars.len();
23 if n >= 5 {
24 let mut thetas: Vec<f32> = r.stars.iter().map(|s| s.theta.to_degrees()).collect();
25 thetas.sort_by(|a, b| a.total_cmp(b));
26
27 let (sum_cos, sum_sin) = r.stars.iter().fold((0.0f64, 0.0f64), |(sc, ss), s| {
28 let a = 2.0 * s.theta as f64;
29 (sc + a.cos(), ss + a.sin())
30 });
31 let mean_theta = (sum_sin.atan2(sum_cos) * 0.5).to_degrees();
32
33 println!("\n Theta ({} measured stars):", n);
34 println!(" Mean theta: {mean_theta:.1}deg");
35 println!(
36 " min={:.1} p25={:.1} median={:.1} p75={:.1} max={:.1}",
37 thetas[0],
38 thetas[n / 4],
39 thetas[n / 2],
40 thetas[3 * n / 4],
41 thetas[n - 1]
42 );
43 }
44
45 if !r.stars.is_empty() {
46 println!("\n Top 5 stars:");
47 for (i, s) in r.stars.iter().take(5).enumerate() {
48 println!(
49 " #{}: ecc={:.3} theta={:.1}deg fwhm={:.2} peak={:.0}",
50 i + 1,
51 s.eccentricity,
52 s.theta.to_degrees(),
53 s.fwhm,
54 s.peak
55 );
56 }
57 }
58 println!();
59}
60
61fn main() {
62 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";
63 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";
64 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";
65
66 analyze_file("GOOD STARS (0281)", good);
67 analyze_file("S-SHAPED TRAILS (0381)", s_trail);
68 analyze_file("LINEAR TRAILS (0236)", linear_trail);
69}