Skip to content

Commit

Permalink
batch runs setup
Browse files Browse the repository at this point in the history
  • Loading branch information
cefect committed Mar 22, 2020
1 parent df47601 commit e0e291b
Show file tree
Hide file tree
Showing 4 changed files with 203 additions and 63 deletions.
20 changes: 13 additions & 7 deletions main.bat
Original file line number Diff line number Diff line change
@@ -1,23 +1,29 @@
REM Setup the paths
set py_dir=C:\LS\06_SOFT\conda\miniconda3\
@ECHO off
set py_dir=C:\LS\06_SOFT\conda\miniconda3
PATH %py_dir%
PATH %PATH%;%py_dir%\DLLs
PATH %PATH%;%py_dir%\lib
PATH %PATH%;%py_dir%\site-packages
PATH %PATH%;%py_dir%\site-packages\win32
PATH %PATH%;%py_dir%\site-packages\win32\lib
PATH %PATH%;%py_dir%\site-packages\Pythonwin
PATH %PATH%;%py_dir%\lib\site-packages
PATH %PATH%;%py_dir%\lib\site-packages\win32
PATH %PATH%;%py_dir%\lib\site-packages\win32\lib
PATH %PATH%;%py_dir%\lib\site-packages\Pythonwin
PATH %PATH%;%py_dir%\Library
PATH %PATH%;%py_dir%\Library\bin
PATH %PATH%;%py_dir%\Lib\R
PATH %PATH%;%py_dir%\Lib\R\library
ECHO %PATH%

REM set R environment variables
set R_USER=MyName
set R_HOME=C:\Program Files\R\R-3.6.3


@ECHO on
REM define the simulation parameters
set sim_cnt=100
set sim_cnt=2
set scen_nm=NoNPI
set threads=4
set threads=2

REM execute the script
%py_dir%\python.exe main.py %sim_cnt% %scen_nm% %threads%
Expand Down
163 changes: 127 additions & 36 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
#===============================================================================
# call check
#===============================================================================
import sys
print('called w/ %i args: \n%s'%(len(sys.argv), sys.argv))
"""
call this module from command line
main runner for Utah SEIR model
"""


assert len(sys.argv) >2, 'failed to call w/ enough arguments'


#==============================================================================
# dependency check
#==============================================================================
# Let users know if they're missing any of our hard dependencies
hard_dependencies = ('pandas', 'numpy','seaborn','matplotlib','geopy','tqdm', 'geopandas','shapely','numba','rpy2')
hard_dependencies = ('pandas', 'numpy','seaborn','geopy','tqdm', 'geopandas','shapely','numba','rpy2')
missing_dependencies = []

for dependency in hard_dependencies:
Expand All @@ -34,17 +35,21 @@


import numpy as np

"""supress FutureWarning: from_items is deprecated"""
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)


import pandas as pd
import datetime, time, multiprocessing, itertools, sys
import matplotlib.pyplot as plt
import datetime, time, multiprocessing, itertools, sys, os
#import matplotlib.pyplot as plt

#===============================================================================
# setup R
#===============================================================================

import os
os.environ["R_USER"] = "R_USER"
os.environ["R_HOME"] = r"C:\Program Files\R\R-3.6.3" #point to your R install


#setup the rinterface
import rpy2.rinterface as rinterface
Expand Down Expand Up @@ -79,56 +84,142 @@ def __init__(self):
self.mobility = np.loadtxt(f'{self.folder}mobility.txt')
self.popnodes = self.data['pop2010'].to_numpy()
self.nnodes = len(self.data)

if __name__ == '__main__': # For windows thread



def run(pars, #parameter files
#directory of scenario files
scen_dir = r'C:\LS\03_TOOLS\_git\COVID_01\scenarios',

#map to scenario files
scen_d = {
'NoNPI':'NPI_Scenario1_None.R',
'BI1918':'NPI_Scenario2_Bootsma_1918Influenza.R',
'SouthKorea':'NPI_Scenario3_SouthKorea.R',
'Reduced':'NPI_Scenario4_ReducedGamma.R',
}
):

"""
call this module from command line
convience fucntion for running simulations
argv[1]: number of s imulations
argv[2]: scenario name (see below)
argv[3]: number of threads to use
"""



#===========================================================================
# precheck
#===========================================================================
assert len(pars)==4, 'unexpected inputs count'
print('pars: \n%s'%pars)

#check the R Environment variables
assert 'R_USER' in os.environ
assert 'R_HOME' in os.environ

#print('R_USER=%s \nR_HOME=%s'%(os.getenv('R_USER'), os.getenv('R_HOME')))







#===========================================================================
# execute
# setup
#===========================================================================
s = setup.Setup(setup_name = 'mid_utah_'+sys.argv[2],
s = setup.Setup(setup_name = 'mid_utah_'+pars[2],
spatial_setup = WestCoastSpatialSetup(),
nsim = int(sys.argv[1]),
nsim = int(pars[1]),
ti = datetime.date(2020, 3, 6),
tf = datetime.date(2020, 10, 1),
interactive = False,
write_csv = True,
dt = 1/4)

#===========================================================================
# set the scenario parmaters
#===========================================================================

if (sys.argv[2] == 'NoNPI'):
s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario1_None.R'
elif (sys.argv[2] == 'SC'):
s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario2_School_Closure.R'
elif (sys.argv[2] == 'BI1918'):
s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario3_Bootsma_1918Influenza.R'
elif (sys.argv[2] == 'KansasCity'):
s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario4_KansasCity.R'
elif (sys.argv[2] == 'Wuhan'):
s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario5_Wuhan.R'
else:
raise IOError('unrecognized value %s'%sys.argv[2])


assert pars[2] in scen_d, 'unrecognized scenario: %s'%pars[2]

rfp = os.path.join(scen_dir, scen_d[pars[2]])
assert os.path.exists(rfp)

s.script_npi = rfp

print('set script_npi=%s'%s.script_npi)

#===========================================================================
# execute
#===========================================================================

print(f">>> Starting {s.nsim} model runs on {sys.argv[3]} processes")
print()
print()
print(f">>> Starting {s.nsim} model runs on {pars[3]} processes")
print(f">>> Setup *** {s.setup_name} *** from {s.ti} to {s.tf} !")
print(f">>> writing to folder : {s.datadir}{s.setup_name}")


print()
print()

tic = time.time()

res_l = seir.run_parallel(s, int(sys.argv[3]))
res_l = seir.run_parallel(s, int(pars[3]))
print(f">>> Runs done in {time.time()-tic} seconds...")



if __name__ == '__main__': # For windows thread





if len(sys.argv)<=1:

import os
#setup the R environment
os.environ["R_USER"] = "R_USER"
os.environ["R_HOME"] = r"C:\Program Files\R\R-3.6.3" #point to your R install


for indxr, sname in enumerate([
'NoNPI',
'SouthKorea',
'Reduced',
#'BI1918'
]):
print('\n \nrun %i: %s \n \n'%(indxr, sname))

try:
run({
0:'placeholder',
1: 1000, #number of s imulations
2: sname,
3: 5, #number of threadas
})
except Exception as e:
print('FAILED on %s w/ \n%s'%(sname, e))
else:


print('called w/ %i args: \n%s'%(len(sys.argv), sys.argv))

assert len(sys.argv) >2, 'failed to call w/ enough arguments'

run(sys.argv)

print('finished')






48 changes: 48 additions & 0 deletions main_all.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
REM Setup the paths
@ECHO off
set py_dir=C:\LS\06_SOFT\conda\miniconda3
PATH %py_dir%
PATH %PATH%;%py_dir%\DLLs
PATH %PATH%;%py_dir%\lib
PATH %PATH%;%py_dir%\lib\site-packages
PATH %PATH%;%py_dir%\lib\site-packages\win32
PATH %PATH%;%py_dir%\lib\site-packages\win32\lib
PATH %PATH%;%py_dir%\lib\site-packages\Pythonwin
PATH %PATH%;%py_dir%\Library
PATH %PATH%;%py_dir%\Library\bin
PATH %PATH%;%py_dir%\Lib\R
PATH %PATH%;%py_dir%\Lib\R\library
ECHO %PATH%

REM set R environment variables
set R_USER=MyName
set R_HOME=C:\Program Files\R\R-3.6.3


@ECHO on
REM define the simulation parameters
set sim_cnt=2

set threads=2

REM execute the script 1
set scen_nm=NoNPI
%py_dir%\python.exe main.py %sim_cnt% %scen_nm% %threads%


REM execute the script 1
set scen_nm=BI1918
%py_dir%\python.exe main.py %sim_cnt% %scen_nm% %threads%


REM execute the script 1
set scen_nm=SouthKorea
%py_dir%\python.exe main.py %sim_cnt% %scen_nm% %threads%


REM execute the script 1
set scen_nm=Reduced
%py_dir%\python.exe main.py %sim_cnt% %scen_nm% %threads%

pause

35 changes: 15 additions & 20 deletions main_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

import os
os.environ["R_USER"] = "R_USER"
#os.environ["R_HOME"] = r"C:\Program Files\R\R-3.6.3" #point to your R install
os.environ["R_HOME"] = r"C:\Program Files\R\R-3.6.3" #point to your R install

#setup the rinterface
import rpy2.rinterface as rinterface
Expand Down Expand Up @@ -92,7 +92,7 @@ def __init__(self):


#===========================================================================
# execute
# setup
#===========================================================================
s = setup.Setup(setup_name = 'mid_utah_'+pars[2],
spatial_setup = WestCoastSpatialSetup(),
Expand All @@ -103,35 +103,30 @@ def __init__(self):
write_csv = True,
dt = 1/4)


#===========================================================================
# set the scenario parmaters
#===========================================================================
scen_d = {
'NoNPI':'NPI_Scenario1_None.R',
'BI1918':'NPI_Scenario2_Bootsma_1918Influenza.R',
'SouthKorea':'NPI_Scenario3_SouthKorea.R',
'ReducedGamma':'NPI_Scenario4_ReducedGamma.R',
'Reduced':'NPI_Scenario4_ReducedGamma.R',
}





assert pars[2] in scen_d, 'unrecognized scenario: %s'%pars[2]

rfp = os.path.join(scen_dir, scen_d[pars[2]])
assert os.path.exists(rfp)

s.script_npi = rfp

print('set script_npi=%s'%s.script_npi)

#===========================================================================
# if (pars[2] == 'NoNPI'):
# s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario1_None.R'
# if (pars[2] == 'SC'):
# s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario2_School_Closure.R'
# if (pars[2] == 'BI1918'):
# s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario3_Bootsma_1918Influenza.R'
# if (pars[2] == 'KansasCity'):
# s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario4_KansasCity.R'
# if (pars[2] == 'Wuhan'):
# s.script_npi = 'COVIDScenarioPipeline/data/NPI_Scenario5_Wuhan.R'
# execute
#===========================================================================

#s.script_import = 'COVIDScenarioPipeline/R/distribute_airport_importations_to_counties.R'

#s.set_filter(np.loadtxt('data/west-coast-AZ-NV/filtergithub.txt'))
print()
print()
print(f">>> Starting {s.nsim} model runs on {pars[3]} processes")
Expand Down

0 comments on commit e0e291b

Please sign in to comment.