File Reference Appmain2
File Reference App_main2
Path: App/main2.py
1. Purpose
هذا الملف جزء من نواة HDDS ويخدم طبقة وظيفية محددة داخل منظومة Radar/Audio/GUI orchestration.
2. Responsibilities
- احتواء منطق المجال الخاص بهذا الملف.
- توفير API داخلي لباقي الوحدات.
- تنفيذ جزء من Runtime pipeline.
3. Imports Analysis
- 1:from future import annotations
- 3:import os
- 4:import threading
- 5:import time
- 6:import tkinter as tk
- 7:import warnings
- 8:from dataclasses import dataclass
- 9:from pathlib import Path
- 10:from tkinter import filedialog, messagebox, ttk
- 17:import cv2
- 18:import joblib
- 19:import librosa
- 20:import numpy as np
- 21:import torch
- 22:import tensorflow as tf
- 25:from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Flatten, Dropout
- 64:from audio.classifier import LoadedAudioModels, load_audio_models
- 65:from audio.classifier import predict_window as predict_project_audio_window
- 66:from audio.preprocess import TARGET_SR as PROJECT_AUDIO_TARGET_SR
- 67:from audio.preprocess import load_audio_file, slice_audio
- 68:from radar_sim.channel import simulate_surveillance_matrix
- 69:from radar_sim.constants import load_app_config
- 70:from radar_sim.detection import ca_cfar_2d
- 71:from radar_sim.processing import process_reference_and_surveillance
- 72:from radar_sim.waveform import generate_reference_matrix
4. Main Classes
- 27:class CompatibleLayer:
- 32:class CompatibleDense(CompatibleLayer, Dense): pass
- 33:class CompatibleConv2D(CompatibleLayer, Conv2D): pass
- 34:class CompatibleMaxPooling2D(CompatibleLayer, MaxPooling2D): pass
- 35:class CompatibleFlatten(CompatibleLayer, Flatten): pass
- 36:class CompatibleDropout(CompatibleLayer, Dropout): pass
- 104:class AudioPrediction:
- 112:class RadarRuntime:
- 121:class PlaybackAudio:
- 127:class LoadedAudioBackend:
- 135:class DetectionSnapshot:
- 302:class HybridDetectionDashboard:
5. Main Functions
- 99:def default_config_path() -> Path:
- 144:def extract_features(audio_array: np.ndarray, sr: int) -> np.ndarray:
- 176:def load_audio_backend() -> LoadedAudioBackend:
- 204:def predict_audio_file(backend: LoadedAudioBackend, audio_path: Path) -> list[AudioPrediction]:
- 212:def _predict_audio_file_with_keras_model(
- 245:def _predict_audio_file_with_legacy_model(
- 253:def _predict_audio_file_with_project_model(
- 283:def load_playback_audio(audio_path: Path) -> PlaybackAudio:
- 1019:def main() -> None:
تحليل الدوال (منهج عام):
- input: معاملات runtime/config/data structures.
- output: dataclasses/arrays/reports/state updates.
- algorithm: يعتمد على نوع الملف (DSP/ML/GUI/control flow).
- side effects: I/O، logging، GUI updates، أو model loading.
- runtime behavior: دوال critical قد تنفذ per-frame أو per-window.
6. Internal Workflow
- تهيئة البيانات أو الإعدادات.
- تطبيق المعالجة الأساسية.
- إعادة النتائج أو تحديث state خارجي.
7. Data Flow
- inbound: من ملفات config أو callers أعلى.
- processing: transformations حسب domain.
- outbound: structures تستخدمها ملفات أخرى أو GUI.
8. Mathematical Concepts
إذا كان الملف Radar/Audio DSP فإنه يستخدم مفاهيم مثل FFT, Doppler Shift, log-Mel, thresholding حسب السياق.
9. Important Variables
- 75:LEGACY_AUDIO_TARGET_SR = 22050
- 76:AUDIO_WINDOW_S = 2.0 # Matches the new model's training duration
- 77:AUDIO_HOP_S = 0.5
- 78:N_MELS = 128
- 79:VISION_CONFIDENCE = 0.5
- 80:VISION_EVERY_N_FRAMES = 3
- 82:YOLO_DIR = REPO_ROOT / "yolov5"
- 83:YOLO_WEIGHTS = YOLO_DIR / "best.pt"
- 85:AUDIO_MODEL_PATH = REPO_ROOT / "Project v1" / "src" / "audio" / "drone_sound_model.h5"
- 87:BG = "#0f172a"
- 88:SURFACE = "#111827"
- 89:SURFACE_2 = "#182235"
- 90:BORDER = "#293548"
- 91:TEXT = "#e5e7eb"
- 92:MUTED = "#94a3b8"
- 93:GREEN = "#22c55e"
- 94:AMBER = "#f59e0b"
- 95:RED = "#ef4444"
- 96:BLUE = "#38bdf8"
10. Integration Points
- Used By: يعتمد على استدعاءات بقية النظام لهذا الملف.
- Calls: وحدات داخلية وخارجية (NumPy/TensorFlow/PyTorch/OpenCV).
11. Runtime Sequence
ينفذ هذا الملف ضمن التسلسل العام الموضح في Runtime Execution Flow.
12. Error Handling
- يعتمد على
raise/exceptions المحلية في الملف. - في GUI يتم غالبًا احتواء الخطأ عبر dialogs أو status messages.
13. Performance Notes
- الملفات التشغيلية per-frame/per-window حساسة للأداء.
- عمليات ML inference وFFT هي الأعلى كلفة عادة.
14. Future Improvements
- إضافة profiling موحد.
- توحيد metrics logging.
- تقليل التكرار بين و عند الإمكان.
15. Related Notes
Metadata
- Source path: App/main2.py
- Lines: 1027