Dft
- pandas - numpy - scipy import numpy as np import re import js import os from math import log import pandas as pd import asyncio from scipy.fft import fft from js import document, FileReader from pyodide import create_proxy async def fftjs(event): document.getElementById("test-table").innerHTML="" document.getElementById("test-graph").innerHTML="" target = document.getElementById("input") fl =target.files.to_py() for i in fl: data = str(await i.text()) data=re.sub('\s+', '|', data).split("|") data.pop() if len(data[0])>7: data2=[] for i in data: if ";" in i: data2.append(i.split(";")) elif "," in i: data2.append(i.split(",")) data2=np.array(data2,dtype="float").T thisdict = {} i=1 for array in data2: str1="Column" str2=str(i) column=str1+str2 thisdict[column]=array i+=1 df = pd.DataFrame(thisdict) pyscript.write("test-table",df.to_html(justify='center')) arrayofdftarrays=[[]] i=0 for data in data2: arrayofdftarrays.insert(i,list(fft(np.array(data,dtype="float")))) i+=1 arrayofdftarrays.pop() else: data=np.array(data,dtype="float") thisdict = {} str1="Column 1" thisdict[str1]=data df = pd.DataFrame(thisdict) pyscript.write("test-table",df.to_html(justify='center')) arrayofdftarrays=[list(fft(np.array(data,dtype="float")))] i=0 pisagors=[[]] freqhertzs=[[]] for dftarray in arrayofdftarrays: pisagor=[] referance=np.mean(dftarray) for cn in dftarray: f=20*log(abs(cn)/abs(referance)) pisagor.append(f) indexes=list(range(1,len(pisagor)+1)) freqhertz=[1*i for i in indexes] pisagors.insert(i,pisagor) freqhertzs.insert(i,freqhertz) i+=1 js.createObject(create_proxy(arrayofdftarrays), "arrayofdftarrays") js.createObject(create_proxy(pisagors), "pisagors") js.createObject(create_proxy(freqhertzs), "freqhertzs") js.plot() def main(): file_event = create_proxy(fftjs) e = document.getElementById("submit-button") e.addEventListener("click", file_event, False) main()