Like many engineers working in labs, I often deal with instruments that still work mechanically, but whose software feels stuck in the past. One of those was an old Oxford NMR I had access to. It still produces valid data, but the user interface is almost unusable — a tiny screen with no report, no plot, and just a pair of .txt
files saved on a local mini PC.
Rather than accept those limitations, I decided to build something better.
The Problem
The NMR system outputs two plain text files:
-
One contains the raw data (FID)
-
The other contains measurement parameters
That's it. No way to view plots, no easy export, no remote access. For such a scientifically valuable tool, the user experience was frustrating.
The Goal
I wanted to build a modern, interactive, and configurable user interface — not by modifying the instrument itself, but by building a simple web app that reads its output files. It had to be simple, fast, and accessible from any device in the lab.
What I Built
I created a Flask-based web application using Python, HTML, and a lightweight frontend framework. Here's what it does:
-
Reads the NMR’s
.txt
output files -
Displays results in a clean table with timestamps and sample names
-
Lets me input or adjust T1 and T2 values
-
Automatically calculates SFC (solid fat content), S1, and S2
-
Includes buttons to view plots, check parameters, or export a report
-
Allows exporting the data and charts into a PDF format
-
Fully responsive, works on phones, tablets, laptops, and lab monitors
The Interface
Each result row shows:
-
Date and time of the measurement
-
Sample name
-
Editable T1 and T2 input fields
-
Calculated SFC, S1, and S2 values
-
Three action buttons:
-
View the data plot
-
View scan parameters
-
Export the report as a PDF
-
This small web app runs on a mini PC connected to the NMR. I can access it from any browser on the local network, whether on a lab tablet, PC, or even a big TV screen near the instrument.
Why This Matters
Even though the NMR hardware is old, the science behind it still works. What was missing was a way to interact with the data more efficiently. With this tool, I can quickly analyze, interpret, and share results without manual Excel work or jumping through file directories.
I no longer rely on the built-in screen or limited vendor software. The web app gives me a flexible, modern interface to manage measurements and reporting.
What I Learned
I’m not a professional software developer. My background is in electronics engineering and little knowledge about instrumentation. But with a bit of Python and a real-world problem to solve, I created something that works — and works well.
This project taught me that sometimes, you don’t need to wait for better software or buy expensive upgrades. You can build what you need, even starting from a pair of .txt
files.
Final Thoughts
If you’re working with legacy lab instruments and frustrated with their limitations, consider what you can build around them. You don’t have to change the instrument itself — sometimes, just building a modern interface on top of old data formats can make all the difference.
This little project has saved me time, improved accuracy, and made the NMR much more useful to our team. I’m still considering whether to open-source the code, but I wanted to share the journey — in case it inspires someone else to do the same.