Applied machine learning scientist. Real world evidence, and health data systems

I answer medical questions with data I am never allowed to see.

I build machine learning systems for health data that cannot be brought into one place.

The records sit in many places, in many countries, and the rules keep them there. So I send the model to the data instead. And I keep it simple enough that a small team can run it without me.

Research handed me the problem. Building them showed me where it breaks. Now I take it into a company, with Johnson & Johnson Innovative Medicine.

See what that produced Bring me a data problem Read the CV

  • Doctorates Dual PhD, electrical engineering at KU Leuven and biomedical sciences at Hasselt University. Both defended in 2024 2024
  • Next Won a two year grant to take my own work out of the university and into a company. It pays for one researcher at a time 2026
  • Award Won a personal grant at the largest multiple sclerosis conference in the world, for the method behind the paper below 2025
  • Paper First study to train a model across countries without gathering the records, in npj Digital Medicine. First author 2025

01Result

Real patient records. Federation simulated

Keeping the data apart costs you. Fitting each place pays it back

Privacy is supposed to cost you. Keep the data apart, get a worse model. That much is true, and the bottom bar is what it costs. The top bar is what you get back when you let the model fit each place instead of forcing one model on all of them. What is measured is one question: two years ahead, will this person get worse? All three models answer it on the same patients. The score is area under the curve, where 0.50 is a coin toss and 1.00 is perfect.

How it was run. These records were already gathered into one research registry. I split them back into country groups and made each group train on its own, passing only the model between them. So it measures what federation does to the score, not a live federation.

0.50, a coin toss1.00, perfect

Federated, and fitted to each country. 0.8398
All data pooled in one place. 0.8092
Federated, one shared model for everyone. 0.7840

Standard deviations were 0.0019, 0.0012 and 0.0019, across ten repetitions. The three rows differ in more than where the data sat: the top one is also a different model shape, which is the whole point of it. All three rows are the paper, table 1.

What the top bar beats, and by how much. Against the same setup with the country by country fitting switched off, it is 7.2% better at telling apart who will get worse from who will not, and 31% better at finding them without flagging half the group. Against the middle bar, everything pooled in one place, it is 3.8% better.

Those first two numbers compare the top bar with its own switched off version, which is not the bar drawn at the bottom. The bottom bar is the plainest way to do this and it is drawn because it is where everybody starts.

Measured on

26,246patients
283,115clinical episodes
146centers contributed
32country groups

The middle bar is the ceiling everyone assumes. It is not the ceiling. What made the difference was letting the model fit each site, instead of forcing one model on all of them. Plain federated averaging, the bottom bar, is worse than pooling. That is why the field keeps saying privacy is expensive.

One caveat I will make myself, before you make it for me. The pooled model is a single global model. The winner is fitted to each country. So what won here is that fitting, not the sharing on its own. What the sharing did was make the fitting possible without gathering the records first. That is the claim I stand behind, and it is the more useful one. The next thing to prove is that it holds when the groups are real and separate, not split apart after the fact. Pirmani et al., npj Digital Medicine 8(478), 2025. Code is public.

02Work

What I built, and what it does

Start here if none of this is your field. A model normally learns by having all the data in one place. Mine does the opposite: it travels to each center or registry in turn, learns there, and moves on. The records never go anywhere. Everything below is built on that one idea.

Two rules run through all of it. If a site needs its own engineer before it can begin, it will never begin. And if it needs me in the room to run, it is not finished.

FL4E

Working prototype, run on Azure Drag it, or use the arrow keys Designed and built. 2024

Sharing is treated as all or nothing, so groups that cannot do all of it walk away. I introduced the degree of federation: every center decides for itself whether its data leaves, and the middle is a real place to stand. Turn the dial.

Fully federated 0.846

A benchmark, not the clinical study. Public data, small on purpose, so the shape of the effect is easy to check. Fed-Heart-Disease, 740 records across 4 centers, logistic regression, federated averaging, five repeats. Area under the curve. JMIR Formative Research 8:e55496, 2024.

Global Data Sharing Initiative

In use across registries Press a stream, or tab to it Architected. 2023

Two ways in already existed. Send your data, or fill in a form. Any registry that could do neither was simply out. I built the third one, the federated route, so those registries could run the analysis themselves and send back only the result. Five registries came in that way. They added 45.5% on top of everything the other two routes had collected. In the first year of covid, with a rare disease, every record was worth having. Switch a stream off to see what one way in would have cost.

The worldwide multiple sclerosis and COVID-19 effort. 18 registries, 11,284 records in total. JMIR Medical Informatics 11(1):e48030, 2023.

These two are real in different ways. The first one we built and tested ourselves. The second was run by eighteen registries on their own machines, for a study that was published. Every number under both came out of the paper cited beside it.

Built with

Python, PyTorch and Flower are what the federated training in every project above actually runs on. PySyft, scikit-learn and pandas for the study code behind the npj paper. R and SQL for the registry work, because that is what registries already speak. Docker, Kubernetes and continuous integration because a method a site cannot install is not a method. Azure is where FL4E was evaluated.

Publications

03Networks

None of this works alone

I follow one thread the whole way along. What a patient leaves behind, how it gets out of the system holding it, who is allowed to touch it, what the clinician actually meant when they typed it, the model, and then the evidence that goes back to a patient. Most people work on one link in that chain. My work has had to connect all of them, and the hard part was never the model.

Before any of this I spent two years working out where Iran Post should put its sorting hubs. I built a simulation of the national network and searched it for a better layout. The scenario it found came out 15% lower on projected transport cost, on paper and never in the road network. I turned it into a decision support dashboard and put it in front of the executives who decide. Moving parcels and moving models turn out to be the same problem. You are always deciding what travels and what stays.

I grew up speaking Turkish, Azerbaijani and Persian. English came fourth, and Dutch is still coming. It is probably why I write in short sentences. It is also why I am hard to lose in a room where nobody shares a first language, which is most of the rooms this work happens in.

The people I sit between

Clinicians, epidemiologists, registry custodians, engineers and lawyers, across more than thirty countries. None of them share a vocabulary. Getting one definition of the same thing to hold across all of them is the work behind every number on this page.

The networks I work in

The MSBase registry, 146 centers in 32 countries. Where I built the pipeline for it. OHDSI Belgium, and the organizing team for OHDSI Europe 2025. ELIXIR supports FLkit. It all runs on Flower.

Who I build with

The people I am about to do this with, and the ones who got me here. At Johnson & Johnson Innovative Medicine I work with Patrick Ryan, who leads Global Epidemiology there and chairs OHDSI. On the academic side, Liesbet Peeters at Hasselt and Yves Moreau at KU Leuven.

Explaining it to people

Seven master's theses supervised in machine learning at KU Leuven, and Data Science in Healthcare lectured at Hasselt University. Explaining a thing to somebody who has never seen it is still the fastest way to find out whether it is simple enough yet.

04Contact

Get in touch

If you have data that cannot move, a question that needs more patients than one place holds, or you are putting a team together around real world health data, I would like to hear about it.

Email