dissertation/src/visualise/__init__.py
2024-11-25 12:15:35 +00:00

54 lines
1.2 KiB
Python

from flask import Flask, render_template, request
from flask_sock import Sock
import numpy as np
import numpy.typing as npt
import json
app = Flask(__name__)
sock = Sock(app)
data: npt.NDArray[np.complex128] = np.array([], dtype=complex)
@app.route("/preprocessed")
def preprocessed():
return render_template("preprocessed.html")
subscribers = {}
@sock.route("/data")
def get_data(sock):
while True:
msg = sock.receive()
subscribers[sock] = list(map(int, msg.split()))
def add_data(new_data):
global data
if data.size == 0:
data = np.expand_dims(new_data, axis=0)
else:
data = np.concat([data, np.expand_dims(new_data, axis=0)], axis=0)
# Only keep latest 100 entries
if data.shape[0] > 100:
data = data[-100:]
to_remove = []
for subscriber in subscribers:
try:
subcarrier, rx, tx = subscribers[subscriber]
subscriber.send(new_data.real[subcarrier, rx, tx])
except Exception as e:
to_remove.append(subscriber)
print(e)
for subscriber in to_remove:
del subscribers[subscriber]
def start():
app.run(debug=True, use_reloader=False)