When I first started this project, many of the Covid-19 forecast tools I came across don’t include a clear mathematical model as the base and also at that time my country didn’t have any open source tools which people can have access to.
So I built a fairly simple mathematical model but still sophisticated enough to produce a good reproduction rate time series.
Users can twist parameters to change processing and modeling step to their liking. And since this is a local application, the speed is mainly relied on your machine and no heavy interaction with a server is needed.
Future plan is that it can be customized to create new models (SIR, SRID, etc.) and handles other type of infectious disease.
If anyone is interested, they can have a look at (intructions included):
In my opinion, it’s possible to deploy it already just by changing local cache of diskcache to a server like Redis or something, but with some modifications it will run better.
I came across some limitations to make it happen:
Sadly but I don’t have much experience handling a server yet.
I can’t code in Javascript yet so I can’t take advantage of clientside callback to do the process on clientside.
Since the database is really big (worldwide database) and I mostly use serverside callbacks to do the process and dump the result to local disk for faster speed (DataFrame de/serialization takes so long I don’t do this). If I deploy it to a server it might make a heavy load on the server to run all of these. One way to solve it is to cache each pair of unique input-output on the server and return that to the next user. The other way I can think of is to convert some callback to clientside callback so most of the work is on the clientside.
These are the reasons why I’m trying to deploy this app as a stand-alone executable folder, so even people without coding background can still use it. But I’m having problem with background callback not working when converting using PyInstaller as mentioned in #1885
If anyone can give me a hand with some of these problems, I’ll give it a try. Otherwise, I’ll learn some Javascript before I can try again