Skip to content

Commit

Permalink
fixed many bugs and started migrating to pyproject.toml
Browse files Browse the repository at this point in the history
  • Loading branch information
fccoelho committed Dec 18, 2024
1 parent 5a94cbc commit d9761ac
Show file tree
Hide file tree
Showing 10 changed files with 431 additions and 130 deletions.
5 changes: 4 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

227 changes: 128 additions & 99 deletions .idea/workspace.xml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.12
22 changes: 9 additions & 13 deletions Epigrass/epigdal.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ def _check_map(self):
assert map_size == unique_gcs
except AssertionError as e:
print(f"Column {self.geocfield} should have {map_size} unique values, but it has {unique_gcs}.")
raise(e)

raise (e)

def get_layer_list(self):
return self.layers
Expand All @@ -87,7 +86,7 @@ def draw_layer(self, l):
else:
print(f'Layer {l} not available.')

def get_hex_color(self, value, cmap="YlOrRd" ):
def get_hex_color(self, value, cmap="YlOrRd"):
cols = cm.get_cmap(cmap, 256)
rgba = cols(value * 256)
bgrcol = list(rgba[:-1]) # rgb(list)
Expand Down Expand Up @@ -123,13 +122,11 @@ def create_node_layer(self):
self.get_node_list()
if not self.nodesource:
centroids = self.map.geometry.centroid
nodes = gpd.GeoDataFrame(columns=[self.geocfield, self.namefield, 'x', 'y'])
for gc, xy in self.centdict.items():
nodes = nodes.append({self.geocfield: gc,
self.namefield: self.namedict[gc],
'x': xy[0],
'y': xy[1]
}, ignore_index=True)
nodes = gpd.GeoDataFrame(columns=[self.geocfield, self.namefield, 'x', 'y'],
data=[
{self.geocfield: gc, self.namefield: self.namedict[gc], 'x': xy[0], 'y': xy[1]}
for gc, xy in self.centdict.items()]
)

nodes['geometry'] = gpd.points_from_xy(nodes.x, nodes.y)
nodes.to_file(os.path.join(self.outdir, 'Nodes.gpkg'), driver='GPKG')
Expand Down Expand Up @@ -181,13 +178,13 @@ def create_data_layer(self, varlist, data):
os.remove(os.path.join(self.outdir, 'Data.gpkg'))
# Creates a new shape file to hold the data
if not self.datasource:
dsd = gpd.GeoDataFrame(columns=['geocode', 'name', 'colors']+varlist+['geometry'])
dsd = gpd.GeoDataFrame(columns=['geocode', 'name', 'colors'] + varlist + ['geometry'])

dsd['geocode'] = data[:, 0]
dsd['name'] = [self.namedict[int(gc)] for gc in data[:, 0]]
dsd['colors'] = [str([self.get_hex_color(norms[i](v)) for i, v in enumerate(l[1:])]) for l in data]
for i, v in enumerate(varlist):
dsd[v] = data[:, i+1]
dsd[v] = data[:, i + 1]
for i, row in dsd.iterrows():
geom = self.map[self.map[self.geocfield] == row.geocode].geometry.values[0]
dsd.at[i, 'geometry'] = geom
Expand Down Expand Up @@ -821,7 +818,6 @@ def writeToFile(self, dir):
f.write(self.kmldoc.toxml())
f.close()


# def gdal_error_handler(err_class, err_num, err_msg):
# errtype = {
# gdal.CE_None: 'None',
Expand Down
28 changes: 14 additions & 14 deletions Epigrass/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
import sys
import redis
from epimodels.continuous.models import SIR, SEIR
import numba
from numba.typed import List
# import numba
# from numba.typed import List

redisclient = redis.StrictRedis()

Expand Down Expand Up @@ -182,7 +182,7 @@ def selectModel(modtype):
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepFlu(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None) -> tuple:
"""
Flu model with classes S,E,I subclinical, I mild, I medium, I serious, deaths
Expand Down Expand Up @@ -295,7 +295,7 @@ def stepFlu(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=N
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSIS(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None) -> tuple:
"""
calculates the model SIS, and return its values (no demographics)
Expand Down Expand Up @@ -338,7 +338,7 @@ def stepSIS(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=N
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSIS_s(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None,
dist='poisson') -> tuple:
"""
Expand Down Expand Up @@ -495,7 +495,7 @@ def stepSIR_cont(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, val
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSEIS(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None) -> tuple:
"""
Defines the model SEIS:
Expand Down Expand Up @@ -533,7 +533,7 @@ def stepSEIS(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSEIS_s(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None,
dist='poisson') -> tuple:
"""
Expand Down Expand Up @@ -704,7 +704,7 @@ def stepSEIR_cont(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, va
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSIpRpS(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None) -> tuple:
"""
calculates the model SIpRpS, and return its values (no demographics)
Expand Down Expand Up @@ -742,7 +742,7 @@ def stepSIpRpS(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, value
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSIpRpS_s(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None,
dist='poisson') -> tuple:
"""
Expand Down Expand Up @@ -787,7 +787,7 @@ def stepSIpRpS_s(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, val
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True)
# @numba.jit(forceobj=True)
def stepSEIpRpS(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None) -> tuple:
"""
Defines the model SEIpRpS:
Expand Down Expand Up @@ -825,7 +825,7 @@ def stepSEIpRpS(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, valu
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSEIpRpS_s(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None,
dist='poisson') -> tuple:
"""
Expand Down Expand Up @@ -870,7 +870,7 @@ def stepSEIpRpS_s(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, va
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSIpR(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None) -> tuple:
"""
calculates the model SIpR, and return its values (no demographics)
Expand Down Expand Up @@ -962,7 +962,7 @@ def stepSIpR_s(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, value
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSEIpR(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None) -> tuple:
"""
calculates the model SEIpR, and return its values (no demographics)
Expand Down Expand Up @@ -1059,7 +1059,7 @@ def stepSEIpR_s(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, valu
# beta='double', alpha='double', E='double', I='double', S='double', N='long',
# r='double', b='double', w='double', Lpos='double', Lpos_esp='double', R='double',
# Ipos='double', Spos='double', Rpos='double')
@numba.jit(forceobj=True, cache=True)
# @numba.jit(forceobj=True, cache=True)
def stepSIRS(inits, simstep, totpop, theta=0, npass=0, bi=None, bp=None, values=None, model=None) -> tuple:
"""
calculates the model SIRS, and return its values (no demographics)
Expand Down
4 changes: 2 additions & 2 deletions Epigrass/simobj.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,8 @@ def runModel(self, parallel=True):
pipe.rpush("{}:ts".format(self.geocode), str(inits))
pipe.set("{}:npass".format(self.geocode), float(npass))
pipe.set("{}:theta".format(self.geocode), int(nan_to_num(theta)))
pipe.hmset("{}:bi".format(self.geocode), self.bi)
pipe.hmset("{}:bp".format(self.geocode), self.bp)
pipe.hset("{}:bi".format(self.geocode), mapping=self.bi)
pipe.hset("{}:bp".format(self.geocode), mapping=self.bp)
pipe.execute()
# ------------------------
if parallel:
Expand Down
Loading

0 comments on commit d9761ac

Please sign in to comment.