From 6c33c8e37ec5248792a41164fd8dab9a5eb9683c Mon Sep 17 00:00:00 2001 From: Christos Falas Date: Thu, 15 May 2025 16:52:13 +0100 Subject: [PATCH] use new api for run command in examples --- examples/measurements.py | 52 +++++++++++++++++++++---------------- examples/motion_detector.py | 15 ++++++++--- examples/music.py | 15 ++++------- 3 files changed, 46 insertions(+), 36 deletions(-) diff --git a/examples/measurements.py b/examples/measurements.py index b2d5cc9..eebb00d 100644 --- a/examples/measurements.py +++ b/examples/measurements.py @@ -10,15 +10,22 @@ from where_fi.collection.ingest import RealtimeCSIProducer from where_fi.config import config from where_fi.visualise import server as visualise -producer = RealtimeCSIProducer() -app = CSIApplication(producer, visualise_raw=True) +app = CSIApplication(visualise_raw=True) visualise.figures.all_figures["median"] = visualise.figures.RandomVariable( "Median Phase" ) -visualise.figures.all_figures["magn"] = visualise.figures.RandomVariable( +visualise.figures.all_figures["median_magn"] = visualise.figures.RandomVariable( "Median Magnitude" ) - +visualise.figures.all_figures["denoised"] = visualise.figures.PerAntennaFigure( + [ + visualise.figures.SimpleLineChart("Denoised CSI Phase", "Subcarrier", "Phase"), + visualise.figures.SimpleLineChart( + "Denoised CSI Amplitude", "Subcarrier", "Amplitude" + ), + ], + [np.angle, np.abs], +) measurements: list[np.complex64] = [] @@ -76,27 +83,28 @@ def _(proc: CSIMatrix) -> None: if proc_magn[i].full(): proc_magn[i].get() proc_magn[i].put(magn) - if cnt % 100 == 0: - print(sum(proc_phase[0, 0, 0].queue)) - app.visualise_data( - np.array([x.queue for x in proc_phase.values()]), - "median", - ) - app.visualise_data( - np.array([x.queue for x in proc_magn.values()]), - "magn", - ) - app.visualise_data( - np.array([x.queue for x in subcarrier_phase.values()]), - visualise.figures.Figure.PHASE_ANALYSIS, - ) - app.visualise_data( - np.array([x.queue for x in subcarrier_magn.values()]), - visualise.figures.Figure.MAGN_ANALYSIS, - ) + print(sum(proc_phase[0, 0, 0].queue)) + app.visualise_data( + np.array([x.queue for x in proc_phase.values()]), + "median", + ) + app.visualise_data( + np.array([x.queue for x in proc_magn.values()]), + "median_magn", + ) + app.visualise_data( + np.array([x.queue for x in subcarrier_phase.values()]), + visualise.figures.Figure.PHASE_ANALYSIS, + ) + app.visualise_data( + np.array([x.queue for x in subcarrier_magn.values()]), + visualise.figures.Figure.MAGN_ANALYSIS, + ) + app.visualise_data(proc, "denoised") cnt += 1 if __name__ == "__main__": print("Starting app") + app.set_producer(RealtimeCSIProducer()) app.start() diff --git a/examples/motion_detector.py b/examples/motion_detector.py index 3bd11c7..82b49f2 100644 --- a/examples/motion_detector.py +++ b/examples/motion_detector.py @@ -12,8 +12,7 @@ from where_fi.application import CSIApplication from where_fi.collection.ingest import RealtimeCSIProducer # Connect to a FeitCSI host -producer = RealtimeCSIProducer() -app = CSIApplication(producer) +app = CSIApplication(visualise_raw=True) # Stores historical data for each receiving antenna, for each subcarrier @@ -21,7 +20,7 @@ historical: dict[tuple[int, int], Queue[np.complex64]] = {} MAGN_THRESHOLD = 20 PHASE_THRESHOLD = 0.5 -QUEUE_SIZE = 2000 +QUEUE_SIZE = 20 @app.on_process @@ -62,6 +61,10 @@ def _(sample: npt.NDArray[np.complex64]) -> None: np.abs(mean - current) > MAGN_THRESHOLD or np.abs(np.angle(mean) - np.angle(current)) > PHASE_THRESHOLD ): + print( + f"Change detected in antenna {antenna}, subcarrier {subcarrier}: " + f"magn: {np.abs(mean - current)}, angle: {np.abs(np.angle(mean) - np.angle(current))}" + ) change = True if change: print("Motion detected!") @@ -69,4 +72,8 @@ def _(sample: npt.NDArray[np.complex64]) -> None: print("No motion detected!") -app.start() +if __name__ == "__main__": + # Start the application + print("Starting app") + app.set_producer(RealtimeCSIProducer()) + app.start() diff --git a/examples/music.py b/examples/music.py index fc32b5a..976d498 100644 --- a/examples/music.py +++ b/examples/music.py @@ -8,16 +8,8 @@ from where_fi.collection import CSIMatrix from where_fi.collection.ingest import RealtimeCSIProducer from where_fi.config import config from where_fi.processing import aoa -from where_fi.visualise import server as visualise -producer = RealtimeCSIProducer() -app = CSIApplication(producer, visualise_raw=True) -visualise.figures.all_figures["median"] = visualise.figures.RandomVariable( - "Median Phase" -) -visualise.figures.all_figures["magn"] = visualise.figures.RandomVariable( - "Median Magnitude" -) +app = CSIApplication(visualise_raw=True) logging.basicConfig(level=logging.INFO) @@ -65,4 +57,7 @@ def _(_: CSIMatrix) -> None: # return torch.abs(c)[:, 0, 0] -app.start() +if __name__ == "__main__": + producer = RealtimeCSIProducer() + app.set_producer(producer) + app.start()