diff --git a/bifacial_radiance/main.py b/bifacial_radiance/main.py index 5c6e7de1..11c314ca 100644 --- a/bifacial_radiance/main.py +++ b/bifacial_radiance/main.py @@ -264,9 +264,9 @@ def _subhourlydatatoGencumskyformat(gencumskydata, label='right'): #Resample to hourly. Gencumsky wants right-labeled data. try: - gencumskydata = gencumskydata.resample('60T', closed='right', label='right').mean() + gencumskydata = gencumskydata.resample('60min', closed='right', label='right').mean() except TypeError: # Pandas 2.0 error - gencumskydata = gencumskydata.resample('60T', closed='right', label='right').mean(numeric_only=True) + gencumskydata = gencumskydata.resample('60min', closed='right', label='right').mean(numeric_only=True) if label == 'left': #switch from left to right labeled by adding an hour gencumskydata.index = gencumskydata.index + pd.to_timedelta('1H') @@ -293,7 +293,7 @@ def _subhourlydatatoGencumskyformat(gencumskydata, label='right'): gencumskydata.loc[padend]=0 gencumskydata=gencumskydata.sort_index() # Fill empty timestamps with zeros - gencumskydata = gencumskydata.resample('60T').asfreq().fillna(0) + gencumskydata = gencumskydata.resample('60min').asfreq().fillna(0) # Mask leap year leapmask = ~(_is_leap_and_29Feb(gencumskydata)) gencumskydata = gencumskydata[leapmask] @@ -2250,7 +2250,8 @@ def makeOct1axis(self, trackerdict=None, singleindex=None, customname=None): trackerdict[index]['octfile'] = self.makeOct(filelist, octname) except KeyError as e: print('Trackerdict key error: {}'.format(e)) - + + self.trackerdict = trackerdict return trackerdict @@ -2883,7 +2884,6 @@ def analysis1axis(self, trackerdict=None, singleindex=None, accuracy='low', #frontWm2 = 0 # container for tracking front irradiance across module chord. Dynamically size based on first analysis run #backWm2 = 0 # container for tracking rear irradiance across module chord. - for index in trackerkeys: # either full list of trackerdict keys, or single index octfile = trackerdict[index]['octfile'] scene = trackerdict[index]['scenes'][sceneNum] @@ -2927,9 +2927,13 @@ def analysis1axis(self, trackerdict=None, singleindex=None, accuracy='low', return trackerdict[index]['Results'].append(Results) """ - print('Index: {}. Wm2Front: {}. Wm2Back: {}'.format(index, - np.mean(analysis.Wm2Front), np.mean(analysis.Wm2Back))) - + try: + print('Index: {}. Wm2Front: {}. Wm2Back: {}'.format(index, + np.mean(analysis.Wm2Front), np.mean(analysis.Wm2Back))) + except AttributeError: #no Wm2Front + warnings.warn('AnalysisObj not successful.') + + self.trackerdict = trackerdict return trackerdict @@ -3074,7 +3078,7 @@ def _printRow(analysisobj, key): self.CompiledResults.to_csv(os.path.join('results', 'Cumulative_Results.csv')) - + self.trackerdict = trackerdict return self.CompiledResults diff --git a/tests/test_bifacial_radiance.py b/tests/test_bifacial_radiance.py index db7ed692..2444ce18 100644 --- a/tests/test_bifacial_radiance.py +++ b/tests/test_bifacial_radiance.py @@ -224,7 +224,7 @@ def test_1axis_gencumSky(): assert trackerdict[-5.0]['scenes'][0].sceneDict['tilt'] == 5 sceneDict = {'pitch': pitch,'clearance_height':hub_height, 'nMods':10, 'nRows':3} # testing height filter too - trackerdict = demo.makeScene1axis(sceneDict=sceneDict, module = 'test-module', append=True) + trackerdict = demo.makeScene1axis(sceneDict=sceneDict, module = 'test-module', append=False) # assert trackerdict[-5.0]['radfile'] == 'objects\\1axis-5.0_1.825_11.42_5.0_10x3_origin0,0.rad' sceneDict = {'pitch': pitch,'height':hub_height, 'nMods':10, 'nRows':3} # testing height filter too trackerdict = demo.makeScene1axis(sceneDict=sceneDict, module = 'test-module', append=True) @@ -233,23 +233,28 @@ def test_1axis_gencumSky(): trackerdict = demo.makeScene1axis(sceneDict=sceneDict, module = 'test-module', append=True) # assert trackerdict[-5.0]['radfile'] == 'objects\\1axis-5.0_1.825_11.42_5.0_10x3_origin0,0.rad' sceneDict = {'pitch': pitch,'height':hub_height, 'hub_height':hub_height, 'nMods':10, 'nRows':3} # testing height filter too - trackerdict = demo.makeScene1axis(sceneDict=sceneDict, module = 'test-module', append=True) - assert trackerdict[-5.0]['scenes'].__len__() == 5 - + customObject = demo.makeCustomObject('whiteblock','! genbox white_EPDM whiteblock 1.6 4.5 0.5 | xform -t -0.8 -2.25 0') + #demo.appendtoScene(scene.radfiles, customObject, '!xform -rz 0') + trackerdict = demo.makeScene1axis(sceneDict=sceneDict, module = 'test-module', customtext='!xform -rz 90 '+customObject, append=True)# + assert trackerdict[-5.0]['scenes'].__len__() == 4 + fname = trackerdict[-5.0]['scenes'][3].radfiles + with open(fname, 'r') as f: + assert f.readline().__len__() == 131 + assert f.readline()[-14:] == 'whiteblock.rad' - assert trackerdict[-5.0]['scenes'][4].radfiles[0:7] == 'objects' - assert trackerdict[-5.0]['scenes'][4].sceneDict['tilt'] == 5 + assert trackerdict[-5.0]['scenes'][3].radfiles[0:7] == 'objects' + assert trackerdict[-5.0]['scenes'][3].sceneDict['tilt'] == 5 #assert trackerdict[-5.0]['radfile'] == 'objects\\1axis-5.0_1.825_11.42_5.0_10x3_origin0,0.rad' minitrackerdict = {} minitrackerdict[list(trackerdict)[0]] = trackerdict[list(trackerdict.keys())[0]] - minitrackerdict[list(trackerdict)[0]]['scenes'] = [trackerdict[list(trackerdict)[0]]['scenes'][4]] + minitrackerdict[list(trackerdict)[0]]['scenes'] = [trackerdict[list(trackerdict)[0]]['scenes'][3]] - trackerdict = demo.makeOct1axis(trackerdict=minitrackerdict) # just run this for one timestep: Jan 1 11am - trackerdict = demo.analysis1axis(trackerdict=trackerdict, modWanted=7, rowWanted=3, sensorsy=2, sceneNum=0) + trackerdict = demo.makeOct1axis(trackerdict=minitrackerdict, singleindex=-5) # just run this for one timestep: Jan 1 11am + trackerdict = demo.analysis1axis( modWanted=7, rowWanted=3, sensorsy=2, sceneNum=0) assert trackerdict[-5.0]['AnalysisObj'][0].x[0] == -10.76304 modscanfront = {} modscanfront = {'xstart': -5} - trackerdict = demo.analysis1axis(trackerdict=trackerdict, modWanted=7, rowWanted=3, sensorsy=2, modscanfront=modscanfront, sceneNum=0, customname='_test2') + trackerdict = demo.analysis1axis( sensorsy=2, modscanfront=modscanfront, sceneNum=0, customname='_test2') assert trackerdict[-5.0]['AnalysisObj'][1].x[0] == -5 demo.exportTrackerDict(trackerdict, savefile = 'results\exportedTrackerDict2.csv') @@ -523,7 +528,7 @@ def test_tiltandazimuthModuleTest(): sceneDict = {'gcr': 0.35,'hub_height':2.3, 'tilt': 45, 'azimuth': 135, 'nMods':1, 'nRows': 1} scene = demo.makeScene('test-module',sceneDict) - octfile = demo.makeOct(demo.getfilelist()) + octfile = demo.makeOct() analysis = bifacial_radiance.AnalysisObj(octfile, demo.basename) frontscan, backscan = analysis.moduleAnalysis(scene, sensorsy = [4,4]) results = analysis.analysis(octfile, demo.basename, frontscan, backscan) @@ -629,6 +634,7 @@ def test_customObj(): sceneDict = {'tilt':10,'pitch':1.5,'hub_height':.5, 'azimuth':180, 'nMods': 10, 'nRows': 3} scene = demo.makeScene(module=module, sceneDict=sceneDict) + assert demo.sceneNames() == ['Scene0'] objname='Marker' text='! genbox white_EPDM mymarker 0.02 0.02 2.5 | xform -t -.01 -.01 0'