impedance.py
impedance.py copied to clipboard
[BUG] Single-element fitting does not appear to work
Describe the bug When trying to fit impedance data to a single circuit element, this package doesn't appear to pass arguments correctly into curve_fit.
To Reproduce Steps to reproduce the behavior:
- Code which generates the error '...'
from impedance.models.circuits import CustomCircuit
import numpy as np
frequencies = np.array([1, 2, 3])
Z = np.array([4, 5, 6+1j])
circuit_spec = 'C1'
initial_guess = [40e-12]
circuit = CustomCircuit(circuit=circuit_spec, initial_guess=initial_guess)
circuit.fit(frequencies, Z)
- Full error info
Traceback (most recent call last):
File "process_impedance.py", line 72, in <module>
circuit.fit(frequencies, Z)
File "/Users/jordan.e/opt/miniconda3/lib/python3.7/site-packages/impedance/models/circuits/circuits.py", line 119, in fit
**kwargs)
File "/Users/jordan.e/opt/miniconda3/lib/python3.7/site-packages/impedance/models/circuits/fitting.py", line 153, in circuit_fit
p0=initial_guess, bounds=bounds, **kwargs)
File "/Users/jordan.e/opt/miniconda3/lib/python3.7/site-packages/scipy/optimize/minpack.py", line 796, in curve_fit
**kwargs)
File "/Users/jordan.e/opt/miniconda3/lib/python3.7/site-packages/scipy/optimize/_lsq/least_squares.py", line 811, in least_squares
"f0.shape: {0}".format(f0.shape))
ValueError: `fun` must return at most 1-d array_like. f0.shape: (1, 8)
Expected behavior I expect single-element fitting to work either with the initial_guess given as an array or as a single value.
Additional context Add any other context about the problem here.