def read_input(self):
uwg_param_file_path = os.path.join(self.uwgParamDir, self.uwgParamFileName)<EOL>if not os.path.exists(uwg_param_file_path):<EOL><INDENT>raise Exception("<STR_LIT>".format(uwg_param_file_path))<EOL><DEDENT>try:<EOL><INDENT>uwg_param_data = utilities.read_csv(uwg_param_file_path)<EOL><DEDENT>except Exception as e:<EOL><INDENT>raise Exception("<STR_LIT>".format(e.message))<EOL><DEDENT>self._init_param_dict = {}<EOL>count = <NUM_LIT:0><EOL>while count < len(uwg_param_data):<EOL><INDENT>row = uwg_param_data[count]<EOL>row = [row[i].replace("<STR_LIT:U+0020>", "<STR_LIT>") for i in range(len(row))]  <EOL>is_optional_parameter = (<EOL>row != [] and<EOL>(<EOL>row[<NUM_LIT:0>] == "<STR_LIT>" or<EOL>row[<NUM_LIT:0>] == "<STR_LIT>" or<EOL>row[<NUM_LIT:0>] == "<STR_LIT>" or<EOL>row[<NUM_LIT:0>] == "<STR_LIT>" or<EOL>row[<NUM_LIT:0>] == "<STR_LIT>" or<EOL>row[<NUM_LIT:0>] == "<STR_LIT>"<EOL>)<EOL>)<EOL>try:<EOL><INDENT>if row == [] or "<STR_LIT:#>" in row[<NUM_LIT:0>]:<EOL><INDENT>count += <NUM_LIT:1><EOL>continue<EOL><DEDENT>elif row[<NUM_LIT:0>] == "<STR_LIT>":<EOL><INDENT>trafficrows = uwg_param_data[count+<NUM_LIT:1>:count+<NUM_LIT:4>]<EOL>self._init_param_dict[row[<NUM_LIT:0>]] = [utilities.str2fl(r[:<NUM_LIT>]) for r in trafficrows]<EOL>count += <NUM_LIT:4><EOL><DEDENT>elif row[<NUM_LIT:0>] == "<STR_LIT>":<EOL><INDENT>bldrows = uwg_param_data[count+<NUM_LIT:1>:count+<NUM_LIT>]<EOL>self._init_param_dict[row[<NUM_LIT:0>]] = [utilities.str2fl(r[:<NUM_LIT:3>]) for r in bldrows]<EOL>count += <NUM_LIT><EOL><DEDENT>elif is_optional_parameter:<EOL><INDENT>self._init_param_dict[row[<NUM_LIT:0>]] = float(row[<NUM_LIT:1>]) if row[<NUM_LIT:1>] != "<STR_LIT>" else None<EOL>count += <NUM_LIT:1><EOL><DEDENT>else:<EOL><INDENT>self._init_param_dict[row[<NUM_LIT:0>]] = float(row[<NUM_LIT:1>])<EOL>count += <NUM_LIT:1><EOL><DEDENT><DEDENT>except ValueError:<EOL><INDENT>print("<STR_LIT>".format(count, row))<EOL><DEDENT><DEDENT>ipd = self._init_param_dict<EOL>if self.Month is None: self.Month = ipd['<STR_LIT>']<EOL>if self.Day is None: self.Day = ipd['<STR_LIT>']<EOL>if self.nDay is None: self.nDay = ipd['<STR_LIT>']<EOL>if self.dtSim is None: self.dtSim = ipd['<STR_LIT>']<EOL>if self.dtWeather is None: self.dtWeather = ipd['<STR_LIT>']<EOL>if self.autosize is None: self.autosize = ipd['<STR_LIT>']<EOL>if self.sensOcc is None: self.sensOcc = ipd['<STR_LIT>']<EOL>if self.LatFOcc is None: self.LatFOcc = ipd['<STR_LIT>']<EOL>if self.RadFOcc is None: self.RadFOcc = ipd['<STR_LIT>']<EOL>if self.RadFEquip is None: self.RadFEquip = ipd['<STR_LIT>']<EOL>if self.RadFLight is None: self.RadFLight = ipd['<STR_LIT>']<EOL>if self.h_ubl1 is None: self.h_ubl1 = ipd['<STR_LIT>']<EOL>if self.h_ubl2 is None: self.h_ubl2 = ipd['<STR_LIT>']<EOL>if self.h_ref is None: self.h_ref = ipd['<STR_LIT>']<EOL>if self.h_temp is None: self.h_temp = ipd['<STR_LIT>']<EOL>if self.h_wind is None: self.h_wind = ipd['<STR_LIT>']<EOL>if self.c_circ is None: self.c_circ = ipd['<STR_LIT>']<EOL>if self.c_exch is None: self.c_exch = ipd['<STR_LIT>']<EOL>if self.maxDay is None: self.maxDay = ipd['<STR_LIT>']<EOL>if self.maxNight is None: self.maxNight = ipd['<STR_LIT>']<EOL>if self.windMin is None: self.windMin = ipd['<STR_LIT>']<EOL>if self.h_obs is None: self.h_obs = ipd['<STR_LIT>']<EOL>if self.bldHeight is None: self.bldHeight = ipd['<STR_LIT>']<EOL>if self.h_mix is None: self.h_mix = ipd['<STR_LIT>']<EOL>if self.bldDensity is None: self.bldDensity = ipd['<STR_LIT>']<EOL>if self.verToHor is None: self.verToHor = ipd['<STR_LIT>']<EOL>if self.charLength is None: self.charLength = ipd['<STR_LIT>']<EOL>if self.alb_road is None: self.alb_road = ipd['<STR_LIT>']<EOL>if self.d_road is None: self.d_road = ipd['<STR_LIT>']<EOL>if self.sensAnth is None: self.sensAnth = ipd['<STR_LIT>']<EOL>if self.zone is None: self.zone = ipd['<STR_LIT>']<EOL>if self.vegCover is None: self.vegCover = ipd['<STR_LIT>']<EOL>if self.treeCoverage is None: self.treeCoverage = ipd['<STR_LIT>']<EOL>if self.vegStart is None: self.vegStart = ipd['<STR_LIT>']<EOL>if self.vegEnd is None: self.vegEnd = ipd['<STR_LIT>']<EOL>if self.albVeg is None: self.albVeg = ipd['<STR_LIT>']<EOL>if self.rurVegCover is None: self.rurVegCover = ipd['<STR_LIT>']<EOL>if self.latGrss is None: self.latGrss = ipd['<STR_LIT>']<EOL>if self.latTree is None: self.latTree = ipd['<STR_LIT>']<EOL>if self.SchTraffic is None: self.SchTraffic = ipd['<STR_LIT>']<EOL>if self.kRoad is None: self.kRoad = ipd['<STR_LIT>']<EOL>if self.cRoad is None: self.cRoad = ipd['<STR_LIT>']<EOL>if self.bld is None: self.bld = ipd['<STR_LIT>']<EOL>if self.albRoof is None: self.albRoof = ipd['<STR_LIT>']<EOL>if self.vegRoof is None: self.vegRoof = ipd['<STR_LIT>']<EOL>if self.glzR is None: self.glzR = ipd['<STR_LIT>']<EOL>if self.albWall is None: self.albWall = ipd['<STR_LIT>']<EOL>if self.SHGC is None: self.SHGC = ipd['<STR_LIT>']<EOL>
Section 3 - Read Input File (.m, file)
        Note: UWG_Matlab input files are xlsm, XML, .m, file.
        properties:
            self._init_param_dict   # dictionary of simulation initialization parameters

            self.sensAnth           # non-building sensible heat (W/m^2)
            self.SchTraffic         # Traffice schedule

            self.BEM                # list of BEMDef objects extracted from readDOE
            self.Sch                # list of Schedule objects extracted from readDOE