Skip to content

New model: Mixed-SuStaIn#80

Open
Sterre26 wants to merge 13 commits intoucl-pond:masterfrom
Sterre26:new_MixedSustain
Open

New model: Mixed-SuStaIn#80
Sterre26 wants to merge 13 commits intoucl-pond:masterfrom
Sterre26:new_MixedSustain

Conversation

@Sterre26
Copy link

Hi all,

I’m requesting to merge the Mixed‑SuStaIn implementation into PySuStaIn. This work was developed in collaboration with Alex Young. The methods are described in a paper that is accepted for ISBI 2026 (April 8-11, London). If possible, I would greatly appreciate a review before the conference.

Implemented changes:

  • Added MixedSustain.py, implemented in line with the existing SuStaIn models, with consistent function definitions and input/output structure.
  • Updated simulation support: simrun.py now runs Mixed-SuStaIn via the new simfuncs_mixed.py.
  • Added tests/MixedSustain_results.csv; the validation test in validation.py passes successfully.

The method has been tested across different biomarker configurations (z-score only, ordinal only, event-based only). The mixed likelihood matches the corresponding single‑modality likelihood when run in single‑modality settings.

Please let me know if any clarification or additional documentation would be helpful.

Best,
Sterre

@noxtoby
Copy link
Member

noxtoby commented Feb 20, 2026

Hi @Sterre26 — thanks for this!

Before giving it a full review, I had a quick scan of the commits and I think it would be great to have a Jupyter notebook demonstrating usage. This can come later if you like, but it will help users greatly.

Additionally, if you have suggestions for updates to the global README file, I think now would be a good time to add them.

@LeonAksman
Copy link
Collaborator

Hi @Sterre26, awesome work, we've been wanting to do this for a while!

One small suggestion: I think the name MixedSuStaIn is too similar to MixtureSuStaIn and risks confusing people. What about something like MixedTypeSuStaIn or something along those lines?

@Sterre26
Copy link
Author

Hi @noxtoby and @LeonAksman, thanks both for your replies!

Good idea to include a notebook. I’ll work on that. I’ll also update the README later this week. I’ve submitted the manuscript to ArXiv, once the link is available, I’ll add it to the README as well.

Regarding the name: you’re right that it’s a bit confusing. I'll change the name to MixedTypeSuStaIn.

Let me first wait for the ArXiv link before updating the README and model name.

@Sterre26
Copy link
Author

Hi all, @noxtoby, @LeonAksman, I've updated the name to MixedTypeSustain, and I've also updated the readme with a link to the article on ArXiv. 😃

When reinstalling/cloning the repo this morning and setting up a fresh venv (python 3.13), I ran into issues with both the NumPy and Dill dependencies. The dill package in the requirements.txt resulted in errors, and I updated it to a newer version (I'm not sure if that breaks other things). Given the old requirements.txt my computer installed the newest numpy version (2.4.X); this resulted in errors in the mcmc block. The code here relies on implicit conversion of size-1 arrays to scalar indices, which is rejected in numpy 2.24+ with TypeError: only 0-dimensional arrays can be converted to Python scalars. It's probably better to update the algoritmh code to be compatible with this numpy version, but I don't want myself to get into that 😁

@noxtoby
Copy link
Member

noxtoby commented Feb 26, 2026

Thanks @Sterre26, we are overdue to update pySuStaIn for the latest versions of all the dependencies.

I have a local version of this that works with python 3.14 and also replaces the outdated setup.py method with a pyproject.toml approach. I should probably push that to the repo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants