two_rc_l¶
L0-R0-(R1,C1)-(R2,C2)
As two_rc, plus a series inductor L0 for cable and cell inductance, which appears as a tail below the real axis at high frequency.
ML model: 69k parameter 1D CNN, trained on synthetic data, 1.5 ms per guess. See Training.
Benchmarks¶
Plain LM¶
| source of initial parameters | converged | excess med | p90 | p99 | med sweeps |
|---|---|---|---|---|---|
| floor (truth) | 100.00% | 0 | 0 | 0 | 53 |
| library defaults | 69.30% | 254 | 528 | 1330 | 285 |
| truth x/div 5 | 71.50% | 118 | 317 | 738 | 171 |
| ml guess | 100.00% | 12 | 13 | 39 | 53 |
Circuit.fit()¶
| source of initial parameters | converged | excess med | p90 | p99 | med sweeps |
|---|---|---|---|---|---|
| floor (truth) | 100.00% | 0 | 0 | 0 | 76 |
| library defaults | 90.90% | 295 | 2880 | 10628 | 400 |
| truth x/div 5 | 91.40% | 203 | 1258 | 7074 | 312 |
| ml guess | 100.00% | 1 | 13 | 52 | 76 |
Error of the guess¶
Relative error of each guessed parameter before fitting, in %.
L0.l |
R0.r |
R1.r |
C1.c |
R2.r |
C2.c |
|
|---|---|---|---|---|---|---|
| median | 1.8 | 0.9 | 0.8 | 1.4 | 1.6 | 3.2 |
| p90 | 8.3 | 16.9 | 3.5 | 6.8 | 11.8 | 24.5 |
| p99 | 62.8 | 269.3 | 13.5 | 35.5 | 57.1 | 137.5 |
Benchmark notes¶
Synthetic benchmarks use 1000 spectra drawn from the same distribution as the training data, with a different seed: 4 to 8 decade sweeps of 20 to 100 points, with 0.2% to 5% noise.
- floor (truth): start from the true parameters.
- library defaults: start from the
Circuit()placeholder values. - truth x/div 5: true magnitudes multiplied or divided by 5 at random.
- ml guess: start from
Circuit.guess().
Plain LM is a single-start Levenberg-Marquardt. Circuit.fit() is LM that also screens candidate starts and restarts on bad fits.
Converged: final cost within 1% of the fit from the truth. Sweeps: impedance evaluations of the whole spectrum, including Jacobians. Excess: sweeps beyond the fit from the truth, for converged fits only.