← All projects
Category 02

Analysis tools with a GUI.

Measurement work produces spreadsheets nobody wants to read. These are the small interfaces I build around that data — plan the experiment, see the design space, catch the runs that were never going to work before the lab time is spent.

01 / Live app

EIS electrolyte DoE visualiser.

My master's thesis runs impedance spectroscopy over salt solutions, which means deciding — before touching the bench — which combinations of NaCl, KCl and MgCl₂ are actually worth measuring. This tool builds that experiment design in the browser, computes the chemistry behind each run, and shows the whole design space at once.

Design of experiments Impedance spectroscopy Interactive plots CSV export Live app
eis-doe-visualizer.vercel.app Open full ↗

The real app, embedded — set the design parameters and the grid regenerates as you go.

What it does

  • Three-axis full-factorial design. Pick salt A, salt B and the water volume, give each a range and a number of levels, and the complete run grid is generated for you.
  • Chemistry, not just numbers. Every run carries its molarity and ionic strength, computed from the masses you entered — in grams, millimolar or molar, whichever you think in.
  • Saturation guard. Runs that exceed the solubility limit at 20 °C are flagged and drawn as red diamonds, so impossible mixtures are visible in the design space rather than discovered at the bench.
  • Custom salts and custom runs. Any salt can be defined with its molecular weight and solubility; one-off runs can be added by hand alongside the generated grid.
  • Colour by what matters. The design space can be coloured by ionic strength, total molarity or a single salt's concentration.
  • Run sheet out. The finished table downloads as CSV and goes straight to the measurement automation.

Why it exists

The thesis question is what electrolyte impedance spectra can tell us once machine learning is pointed at them — and that only works if the spectra come from a design that covers the space evenly. Building the grid in a spreadsheet was slow and silently produced mixtures that would not dissolve.

Putting it behind a GUI moved that judgement forward: the design, the ionic strength it spans, and the runs that violate solubility are all on screen before a single measurement is queued. The CSV it exports is the same run sheet the automated measuring system consumes.

Context

Built for
M.Eng. thesis — data-driven analysis of electrolyte impedance spectra
With
THWS · IMES, in collaboration with Fresenius Medical Care
Salts
NaCl, KCl, MgCl₂ — or any salt you define
Output
Run sheet as CSV, with molarity, ionic strength and saturation status
Deployed
Static web app on Vercel
02 / Live app

Impedance variance analysis.

Originally a PySide6 desktop application for Windows, ported to JavaScript so it runs in the browser — the version embedded below.

EIS repeatability Drift inference PySide6 → JavaScript Runs in-browser Live app
varianceanalysis-demo.vercel.app Open full ↗

Running in the page at desktop width — press Load Sample & Run to put the built-in dataset through it. Reading your own folder of measurements works best in its own tab.

The analyser wants a desktop-sized window — open it in its own tab to try it. Below is a run it produced.

Step-wise difference plot: two measurement series sit inside a green noise band while two others climb steadily out of it and are flagged as drift
Sample outputOne of the eight figures from a run of the built-in dataset.
Built for
M.Eng. thesis — EIS repeatability & drift inference
Origin
PySide6 desktop application for Windows, ported to JavaScript for the browser
Input
Folders of CSV/XLSX runs, glob and channel filters
Domains
Z, Y or C over a chosen frequency window
Statistics
σ_η · √2·σ_η · σ²_η, E_n, CR_n, weighted and relative forms, grand and mega grand variance
Output
8 interactive figures, a 3D per-frequency surface, standalone HTML export
Privacy
Entirely client-side — nothing is uploaded
Deployed
Static web app on Vercel

Full write-up to follow.

Both of these are the public end of the same thesis work. The Python measurement GUIs behind them — a 24-sample impedance rig on an EVAL-AD5940ELCZ front end and the automation around it — belong to the labs they were built for, so they stay unpublished.