Closed cliffckerr closed 7 months ago
I have mixed feelings about what sensible defaults would be, considering the vast space of usages. In Atomica we've gotten a lot of mileage out of at.demo()
as a way to construct valid demo projects, that has the advantage of being able to very quickly produce different demos e.g., if you wanted a simple demo for super quick testing, but for HIV rather than SIR
I don't mind ss.demo()
, but I also don't see a downside of having 'sir'
and 'random'
as the defaults, since there are almost no use cases (that I can think of) where you'd actively want None
instead, and of course if you supply something then the defaults will be overwritten
Can't say I feel super strongly about it, but in reducing surprise factor, I'd kind of expect that if I make a Sim
and don't give it any diseases, then there won't be any diseases in the Sim
. If there isn't an obvious choice for a default value, then it can be confusing for users to know when and what things are going to appear by default. That said - it's very context dependent, probably more qualitative than anything about whether a default is 'obvious' or not.
Regardless, ss.demo()
would be great to have to provide shortcuts for other common models shipped with the code 👍
I like the idea of a ss.demo() for simplicity of running a demo. Do we want to have a default disease (or shifting randomly selected disease) that can run with Sim.run() or does that go against the spirit and design goal of *sim/Starsim?
I find myself wishing that
ss.Sim().run().plot()
would actually produce something, for super quick testing. I thinkdiseases='sir', networks='random'
would be a reasonable default setting, to be overwritten if the user supplied something.