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

Initial version of updated README #8

Open
wants to merge 1 commit into
base: staging
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,58 @@
# covid19-india

## Repo Structure
The repository is structured as follows:
./
|-- config : Various config params to be entered by humans go here
|-- data : All data go in here, files are tracked by git-lfs
sumodm marked this conversation as resolved.
Show resolved Hide resolved
|-- outputs : All output data go in here, files are tracked by git-lfs
|-- docs : All documentation other than README goes here
|-- Makefile : Makefile to clean data, run tests etc
|-- notebooks : All notebooks go here
|-- setup.sh : Setup script to setup path etc
`-- src : All production code, resusable code components go here
|-- configs : All configs params go here
sumodm marked this conversation as resolved.
Show resolved Hide resolved
|-- data_fetchers : These are utilities for fetching data etc
sumodm marked this conversation as resolved.
Show resolved Hide resolved
|-- driver.py : Sample Code
sumodm marked this conversation as resolved.
Show resolved Hide resolved
|-- entities : Important entities, these are provided for data verification
sumodm marked this conversation as resolved.
Show resolved Hide resolved
|-- model_wrappers : wraps main models, currently seir.py wraps the seirsplus models
|-- base.py : has Abstract Base Class for wrapping models
|-- model_factory.py : has model factory to build models
|-- seir.py : SEIR model wrapper, which wraps around seirsplus model
|-- intervention_enabled_model_base.py : General Wrapper for allowing interventions
`-- intervention_enabled_seir.py : Wrapper for seir model, only just maps variables
|-- modules :
|-- forecasting_module.py : Makes prediction for a given region (and region type) for start-end date.
|-- model_evaluator.py : Various evaluation utils, for_region, for various loss funcs etc
|-- training_module.py : Training module, this currently used hyperopt to optimize
|-- data_fetcher_module.py : Data fetcher module for fetching various data into requisite format
`-- scenario_forecasting_module.py : Scenario based forecasting module.
`-- utils : Various tools like loss_funcs, hyperopt wrapper etc
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readme description is fine but directory requires cleanup



## Class Structure

## Work-Flow
1. We follow [git-flow](https://nvie.com/posts/a-successful-git-branching-model/) with staging in our parlance being develop in theirs.
2. Ensure that your code satisfies [pep8](https://www.python.org/dev/peps/pep-0008/)
3. Ensure that you have documentation as per [pep257](https://www.python.org/dev/peps/pep-0257/)
4. TODO: Decide PEP257, PEP287, something else.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you mean by todo decide ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's task reminder for me to decide which docstring format we want to use.


## Adding new models to Notebooks (notebooks)
1. Checkout a branch from staging called feature/nb_(branch_name).
2. Either write your own models in (labs) and import in your notebook. If this a pypi, then add to your requirements file. If you are modidying an external folder, then add the external model folder inside extern_libs.
sumodm marked this conversation as resolved.
Show resolved Hide resolved
3. Now you can run your algorithms, provided you can marshall our data into what your model requires.
4. TODO: Need to expand this and verify this.

## Adding new model wrapper to Production (src)
1. If you need new parameters, then update that in entities in forecast_variables.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean new time series variables as inputs (parameters sounds like model parameters)?

2. If you are adding new model
a. Then add that in model_class.py
b. Create your new_model.py in model_wrappers and update the model_factory
3. if you want this model to be intervention enabled, then write the wrapper that maps variables call it intervention_enabled_your_model.py and place in model_wrappers.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I understand Anupama's point. This intervention_enabled_X is clunky. Next round of refactoring, let us think through and fix it

4. TODO: Add more here

#### Data References
sumodm marked this conversation as resolved.
Show resolved Hide resolved
Country | Data Source
--- | ---
US | https://www.kaggle.com/sudalairajkumar/covid19-in-usa
Expand Down