From e5ce19599ca759320e665a85706050ee265840d5 Mon Sep 17 00:00:00 2001 From: Daniel Klein Date: Fri, 26 Jan 2024 14:38:33 -0800 Subject: [PATCH 1/2] Small speed increase in making new cases with multirng. --- starsim/diseases/disease.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/starsim/diseases/disease.py b/starsim/diseases/disease.py index 6c2e890c..cdc17375 100644 --- a/starsim/diseases/disease.py +++ b/starsim/diseases/disease.py @@ -344,7 +344,9 @@ def _make_new_cases_multirng(self, people): n = len(people.uid) # TODO: possibly could be shortened to just the people who are alive p_acq_node = np.zeros(n) - dfs = [] + avec = [] + bvec = [] + pvec = [] for lkey, layer in people.networks.items(): if lkey in self.pars['beta']: contacts = layer.contacts @@ -358,12 +360,12 @@ def _make_new_cases_multirng(self, people): continue a, b = contacts[lbl_src], contacts[lbl_tgt] - df = pd.DataFrame({'p1': a, 'p2': b}) - df['p'] = (rel_trans[a] * rel_sus[b] * contacts.beta * beta * people.dt).values - df = df.loc[df['p'] > 0] - dfs.append(df) + nzi = (rel_trans[a]>0) & (rel_sus[b]>0) & (contacts.beta>0) + avec.append(a[nzi]) + bvec.append(b[nzi]) + pvec.append(rel_trans[a[nzi]].__array__() * rel_sus[b[nzi]].__array__() * contacts.beta[nzi] * beta * people.dt) - df = pd.concat(dfs) + df = pd.DataFrame({'p1': np.concatenate(avec), 'p2': np.concatenate(bvec), 'p': np.concatenate(pvec)}) if len(df) == 0: return [], [] From 847f1ecfdc754a8e949f5ea7ba0832e80fffc255 Mon Sep 17 00:00:00 2001 From: Cliff Kerr Date: Sat, 27 Jan 2024 12:17:33 -0500 Subject: [PATCH 2/2] update changelog --- CHANGELOG.rst | 6 ++++++ starsim/version.py | 4 ++-- tests/benchmark.json | 8 ++++---- tests/update_baseline.py | 0 4 files changed, 12 insertions(+), 6 deletions(-) mode change 100644 => 100755 tests/update_baseline.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 8b71f980..59cfe6ca 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,6 +9,12 @@ All notable changes to the codebase are documented in this file. Changes that ma :depth: 1 +Version 0.1.7 (2024-01-27) +-------------------------- +- Performance enhancement for disease transmission, leading to a 10% decrease in runtime. +- *GitHub info*: PR `217 `_ + + Version 0.1.6 (2024-01-23) -------------------------- - Adds template interventions and products for diagnostics and treatment diff --git a/starsim/version.py b/starsim/version.py index 22e5236f..c0a63bdf 100644 --- a/starsim/version.py +++ b/starsim/version.py @@ -4,6 +4,6 @@ __all__ = ['__version__', '__versiondate__', '__license__'] -__version__ = '0.1.6' -__versiondate__ = '2024-01-23' +__version__ = '0.1.7' +__versiondate__ = '2024-01-27' __license__ = f'STIsim {__version__} ({__versiondate__}) — © 2024 by IDM' diff --git a/tests/benchmark.json b/tests/benchmark.json index 7693a8fa..6586565f 100644 --- a/tests/benchmark.json +++ b/tests/benchmark.json @@ -1,13 +1,13 @@ { "time": { - "people": 0.019, - "initialize": 0.046, - "run": 0.275 + "people": 0.018, + "initialize": 0.041, + "run": 0.251 }, "parameters": { "n_agents": 10000, "n_years": 20, "dt": 0.2 }, - "cpu_performance": 0.30820661368745095 + "cpu_performance": 0.9938153654580599 } \ No newline at end of file diff --git a/tests/update_baseline.py b/tests/update_baseline.py old mode 100644 new mode 100755