Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

strain introduction lists mirror strain enum. #319

Open
arik-shurygin opened this issue Jan 10, 2025 · 1 comment
Open

strain introduction lists mirror strain enum. #319

arik-shurygin opened this issue Jan 10, 2025 · 1 comment
Labels
enterprise_practices Governance housekeeping trying to keep projects usable and secure.

Comments

@arik-shurygin
Copy link
Collaborator

the current system is best shown through an example. lets say we have the following config parameters:

{
"STRAIN_IDX": ["STRAINX", "STRAINY", "STRAINZ"],
"STRAIN_R0s": [1.2, 1.8, 3.0],
"INTRODUCTION_TIMES": [60, 100],
"INTRODUCTION_PCTS": [0.01, 0.02],
"INTRODUCTION_SCALES": [10, 10],
}

It is fairly clear from the example that there are two strains being introduced here, but which ones, first two or last two? Those who use DynODE already know that it is STRAINY and STRAINZ but this is not immediately obvious. Lets revamp this system so that it is more clear to someone learning DynODE how to introduce strains.

Proposed schema:

{
"STRAIN_IDX": ["STRAINX", "STRAINY", "STRAINZ"],
"STRAIN_R0s": [1.2, 1.8, 3.0],
"INTRODUCTION_FLAG": [false, true, true]
"INTRODUCTION_TIMES": [-1, 60, 100],
"INTRODUCTION_PCTS": [0.0, 0.01, 0.02],
"INTRODUCTION_SCALES": [0, 10, 10],
}

this way it is explicitly shown to the user which strain is being introduced and which are not. It also grants users the ability to introduce STRAINX and STRAINZ but NOT STRAINY which is currently not possible.

This will likely require the following changes:

  • in order to ignore filler values placed by the user in non-introduced strains, some changes to the validate functions of the existing introduction parameters will be required within config.py
  • the abstract_parameters.external_i() function will also need to read this INTRODUCTION_FLAG, but this should be fairly easy to implement.
@arik-shurygin arik-shurygin added the enterprise_practices Governance housekeeping trying to keep projects usable and secure. label Jan 10, 2025
@kokbent
Copy link
Collaborator

kokbent commented Jan 10, 2025

looks good to me... in theory negative intro time could have meant the strain is not introduced... then abstract_parameters.external_i() wouldn't need to read INTRODUCTION_FLAG but I guess being more explicit is good and you could actually have introduction time of -1 in our model and that makes things a bit complicated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enterprise_practices Governance housekeeping trying to keep projects usable and secure.
Projects
None yet
Development

No branches or pull requests

2 participants