Carl Philipp Klemm 62a586a17c add rul support
2024-11-20 22:05:06 +01:00

25 lines
595 B
Python

from scipy.interpolate import splrep, splev
import numpy
from spectrafile import SpectraFile
def add_soc_estimate(spectras: list[SpectraFile]):
data = [list(), list()]
for spectra in spectras:
if not spectra.meta.soc <= 0:
data[0].append(spectra.ocv)
data[1].append(spectra.meta.soc)
ndata = numpy.asarray(data)
ndata.sort(1)
knots = 9
qs = numpy.linspace(0, 1, knots)[1:-1]
knots = numpy.quantile(ndata[0], qs)
tck = splrep(ndata[0], ndata[1], t=knots, k=3)
estimates = splev(ndata[0], tck)
for spectra in spectras:
spectra.meta.soc_estimate = splev(spectra.ocv, tck)