- 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))
freq=int(document.getElementById("fsinput").value)/len(indexes)
freqhertz=[freq*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()