Projects and Industry Applications
From laboratory automation to production ML systems: systematic thinking applied to solve real problems, with documented decisions and measurable results.
VAJRA: PEPICO Data Acquisition System
The acquisition system for our coincidence spectrometer. It records every detector timestamp and turns them into calibrated physics data.
Challenge
Our experiment fires a UV laser at a molecular beam a thousand times a second. Each shot can knock out an electron and leave an ion behind, and a time-to-digital converter records when each one arrived. The software has to hold on to every one of those timestamps through hours of running, on hardware that does not always behave. The old setup lost data when it was pushed. Worse, the raw capture and the processed output were tangled together, so reanalysing a run put the original at risk.
Solution
I specified the architecture and own the system. One core library does the hardware talking and the file writing, with no interface code in it at all. Three thin applications sit on top: a headless command-line runner as the safety net, the live acquisition GUI, and a separate offline analysis tool. The rule underneath all of it is that the raw capture gets written once and never touched again; everything else is derived from it. I also measured how the converter actually behaves on the bench instead of trusting the manual, and those measurements are in the repository.
Impact
- +Every run writes two files: the untouched raw capture, and an HDF5 product holding the histograms, the metadata and a SHA-256 checksum. The HDF5 is written under a temporary name and renamed only once it is complete, so a crash cannot leave a half-written file that looks finished
- +Found that our time-to-digital converter rejects external marker signals at the device level, which is nowhere in the manual. Confirmed it with the manufacturer, then wrote a fallback that stamps the angle in software on the same timebase. One codebase covers both
- +Validated on a live run of 945,000 events while stepping the polarization angle; the angle stored in the file matched the independent log
- +136 unit tests that need no hardware attached, so the analysis can be checked from a laptop. The hardware tests are a separate suite
- +Operator manuals for the acquisition and the analysis side, plus an API reference that CI rebuilds on every push
VAJRA Analysis
The offline half of VAJRA. It reads a recorded run and turns it into physics: calibrated spectra, coincidences, and dichroism yields.
Challenge
A recorded run is a few hundred megabytes of timestamps and nothing else. Getting physics out of it means calibrating two different time axes, working out which electron belongs with which ion, and correcting for the pairs that only look related. Three different people want to do that three different ways: click through one run, explore it in a notebook, or leave it running over a whole folder overnight. Write those as three codebases and they drift, and then two analyses of the same file disagree with each other.
Solution
One set of functions with three ways in. A desktop application for working through a single run, Jupyter notebooks for the exploratory pass, and a command line for batch work. All three call the same code, so the same file gives the same numbers whichever route you take. It handles the electron-energy and ion-mass calibration, strict one-to-one electron-ion coincidences with the Stert correction for accidental pairs, and dichroism yields grouped by waveplate angle. It grew out of the notebook pipeline I had been running by hand, which is where the requirements came from.
Impact
- +Three interfaces over one implementation, so a number from the notebook and a number from the GUI cannot disagree
- +Strict 1+1 coincidence sorting with the Stert false-background correction. That is the difference between counting real events and counting pairs that landed in the same window by chance
- +Reads a whole scan from one file, so a power or temperature series is a single dataset instead of forty loose runs
- +Generates physically plausible test data in the real file formats, so the analysis can be checked without spending beamtime on it
- +Knows how a run was marked, and analyses hardware-marked and software-marked runs the same way
- +10x faster than the hand-run pipeline it grew out of; the experiment sets the pace now, not the analysis
Automated Laser Polarimetry Platform
Full Stokes polarization characterisation. Reduced scan time from 2 hours to 5 minutes.
Challenge
Characterizing polarization at each focus of a Twin-Foci ultrafast laser setup required manually rotating a motorized waveplate, reading power at each angle, and fitting data in a spreadsheet. The process took over 2 hours per dataset and was error-prone.
Solution
I specified and own a PyQt5 platform that drives the rotation stage and an Ophir NOVAII power meter together, then pulls out the full Stokes vector using the Fourier method of Schaefer et al. The stage is not hardwired into the code: the same build runs a Newport ESP301 or the newer Trinamic TMCM-6110, picked by a config setting. There is also a simulation mode, so the interface and the fitting can be tested without occupying the laser.
Impact
- +What took more than two hours by hand now takes about five minutes
- +Full Stokes vector with uncertainties propagated from the fit covariance matrix, not quoted without them
- +Swapping the motion controller costs a config change, not a rewrite
- +Flags near-perfect circular polarization on the Ring criterion, and reports the fit quality next to every result
- +Publication-quality export at 300 DPI in PNG, PDF, and SVG
Probabilistic Solar Forecasting: Physics-Informed, Calibrated
Day-ahead solar generation forecasts for the German grid. Physics handles geometry; XGBoost learns only the residual.
Challenge
Germany's Energiewende targets 80% renewables by 2030. Solar is volatile and weather-dependent. A 10% forecasting error at midday peak costs real money on the balancing market. Operators need calibrated probabilistic forecasts, not point estimates: 12 GW plus or minus 2 GW, with a coverage guarantee.
Solution
Built a two-layer physics-informed architecture on 3 years of public SMARD and Open-Meteo data (26,000+ hourly records in TimescaleDB). The physics layer uses pvlib to compute what solar output should be on a geometrically perfect day. XGBoost learns only the residual: what physics cannot see, namely clouds, curtailments, and measurement noise. Calibrated P10/P50/P90 intervals via split conformal prediction. Managed as a 22-day research sprint with 5 ADRs, 3 weekly reports, 2 retrospectives, and a public Kanban board.
Impact
- +Physics baseline alone: R2=0.78; Physics plus XGBoost: R2=0.92, MAE reduced 60%
- +physics_pred is XGBoost's top feature by importance; model amplifies physics, not ignores it
- +Split conformal prediction: P90 empirical coverage 0.869, distribution-free guarantee
- +CRPS=514.6 MW evaluated with reliability diagrams; calibration reported honestly
- +Full stack: TimescaleDB, FastAPI, and Streamlit dashboard starts with one command
- +GitHub Actions CI: ruff and pytest on every push; 5 Architecture Decision Records
Intelligent Predictive Maintenance System
Predicts turbofan engine remaining useful life with SHAP explainability, served via a production-grade API and auto-generated diagnostic reports.
Challenge
Industrial turbofan engines degrade gradually across hundreds of sensor channels. Threshold-based monitoring catches failures too late. Engineers need to know not just when failure occurs, but why: which sensors are driving the risk and what to do about it.
Solution
Built a complete end-to-end ML pipeline on NASA's CMAPSS dataset. The core insight: capping RUL targets at 125 cycles (treating early healthy cycles as interchangeable) dropped RMSE from 51 to 19, a domain decision that outperformed any algorithm choice. XGBoost with SHAP explainability, a 3-page Streamlit dashboard, FastAPI REST endpoint, and auto-generated PDF diagnostic reports in German DIN format. Everything runs with one command via Docker Compose.
Impact
- +XGBoost RMSE: 18.83 cycles with a train/test gap of only 2.0 (vs. 12.6 for baseline RF)
- +SHAP layer: top sensor drivers ranked per prediction with plain-language explanation
- +PDF diagnostic report auto-generated in German DIN format from both API and dashboard
- +FastAPI: POST /predict returns RUL, anomaly score, and status label in under 100ms
- +Full MLflow experiment tracking: 162 logged runs, fully reproducible
- +Docker Compose: TimescaleDB, API, and Dashboard starts with one command
Active Development
LangGraph · Claude API · ChromaDB
Sensor Intelligence Assistant
An agentic AI system that reasons across predictive maintenance tools to diagnose turbofan engine anomalies, grounded in real APIs, not hallucinated context.
Challenge
An operator types: What is happening with engine 14? A useful AI system should reason across multiple tools, deciding which to call and in what order based on what it finds at each step, and cite real sources rather than inventing them.
Solution
A LangGraph multi-agent system orchestrating three tools built in P1: Tool A calls the FastAPI prediction endpoint for remaining useful life. Tool B returns SHAP-grounded sensor explanations. Tool C retrieves relevant maintenance documentation from a ChromaDB vector store. The LLM synthesises a diagnostic report citing real API responses, then pauses for human confirmation before any action. Read-only by design. LangSmith tracing from Day 1.
Impact
- +LangGraph agent with human-in-the-loop confirmation before any action
- +Tool calls grounded in real FastAPI endpoints from P1; no hallucinated outputs
- +ChromaDB vector store for maintenance documentation retrieval
- +LangSmith tracing: every decision logged and fully auditable
INSPIRE Fellowship Research Program
5-year national research fellowship delivered end-to-end: budgeting, compliance, multi-institution coordination, and 12 first-author publications.
Challenge
Manage a competitive national fellowship (DST, Government of India) as principal researcher while completing PhD research, coordinating across institutions in Germany and India over 5 years.
Solution
End-to-end program delivery including annual financial reporting, procurement planning, progress tracking for government review, and multi-institution collaboration. Applied the same systematic documentation discipline to project management that underpins the current ML portfolio.
Impact
- +Delivered 12 first-author publications over the fellowship period
- +Contributed to one granted Indian patent for gas-separation membranes
- +Maintained full regulatory compliance across a 5-year, multi-institution program
- +Coordinated stakeholders across institutions in India and Germany
Real Code. Real Impact.
Each project includes documented decisions, measurable results, and production-grade architecture. Not just notebooks.