pyPESTO icon indicating copy to clipboard operation
pyPESTO copied to clipboard

Sacess usage example or simplification of usage

Open Doresic opened this issue 5 months ago • 3 comments

It is a bit hard to start using sacess in pyPESTO. There is an example of usage, but it's only in the docstring of the SacessOptimizer. It is a place I would search for, but I don't think that any user would find it quickly. Having an example of usage, a notebook, could help with this. To also give some idea of what it does and which settings one should choose.

It could be a part of "optimizer_choice" notebook that would showcase some of the most common optimizers we supply and which are recommended (according to some preliminary optimizer benchmarking results).

A separate, but connected point: I believe a user's first idea of how they would select sacess would be

sacess_optimizer = SacessOptimizer(options)
pypesto.optimize.minimize(problem, optimizer=sacess_optimizer)

I see issues with this approach and why it's separate, but it would be the most user-friendly approach imo.

Doresic avatar Nov 20 '25 09:11 Doresic

It is a bit hard to start using sacess in pyPESTO. There is an example of usage, but it's only in the docstring of the SacessOptimizer. It is a place I would search for, but I don't think that any user would find it quickly.

If a user wants to use a specific optimizer, I'd expect them to read the respective API documentation. I don't think this is asking too much.

Having an example of usage, a notebook, could help with this. To also give some idea of what it does and which settings one should choose.

So far, this isn't done for any optimizer, and I would avoid duplicating the API documentation.

It could be a part of "optimizer_choice" notebook that would showcase some of the most common optimizers we supply and which are recommended (according to some preliminary optimizer benchmarking results).

Fine with me to add some saCeSS invocation there, but I don't think this is the place to explain the algorithm or hyper-parameters.

A separate, but connected point: I believe a user's first idea of how they would select sacess would be

sacess_optimizer = SacessOptimizer(options)
pypesto.optimize.minimize(problem, optimizer=sacess_optimizer)

I see issues with this approach and why it's separate, but it would be the most user-friendly approach imo.

I don't think it's a good idea to suggest using saCeSS in a multi-start setting.

I am planning to continue the whole scatter search implementation in a separate package where this can evolve faster, independently of the rest of pypesto. There will be more room for examples and documentation and tests then. If pypesto then wants to wrap it in a pypesto.optimize.Optimizer that's fine with me, but currently, I don't want to squeeze it into that.

dweindl avatar Nov 20 '25 10:11 dweindl

I am planning to continue the whole scatter search implementation in a separate package

Started at https://github.com/ICB-DCM/pyscat/. Keep using the pypesto implementation until further notice, but don't update this implementation unless absolutely necessary.

dweindl avatar Nov 27 '25 10:11 dweindl

Started at https://github.com/ICB-DCM/pyscat/.

There is now a first release on PyPI, and some documentation is available at https://pyscat.readthedocs.io/en/latest/.

It would be great if some users could give it a try already. There is a small example for migrating to the new package.

Please post any issues or suggestions for additional documentation / examples at https://github.com/ICB-DCM/pyscat/issues.

I will add a deprecation notice to the scatter search optimizers in pypesto after the next pypesto release.

dweindl avatar Dec 02 '25 08:12 dweindl