diff --git a/bifacial_radiance/main.py b/bifacial_radiance/main.py index 6d6b81f2..22955af0 100644 --- a/bifacial_radiance/main.py +++ b/bifacial_radiance/main.py @@ -2769,9 +2769,9 @@ def makeScene1axis(self, trackerdict=None, module=None, sceneDict=None, def analysis1axis(self, trackerdict=None, singleindex=None, accuracy='low', customname=None, modWanted=None, rowWanted=None, sensorsy=9, sensorsx=1, - modscanfront = None, modscanback = None, relative=False, + modscanfront=None, modscanback=None, relative=False, debug=False, sceneNum=0, append=True, - frontsurfaceoffset = None, backsurfaceoffset=None): + frontsurfaceoffset=None, backsurfaceoffset=None): """ Loop through trackerdict and runs linescans for each scene and scan in there. If multiple scenes exist in the trackerdict, only ONE scene can be analyzed at a @@ -3635,7 +3635,7 @@ def _makeSceneNxR(self, modulename=None, sceneDict=None, radname=None, addhubhei ''' INITIALIZE VARIABLES ''' text = '!xform ' - text += '-rx %s -t %s %s %s ' %(tilt, 0, 0, hubheight) + text += '-rx %s -t %s %s %s ' %(tilt, 0, 0, np.float16(hubheight)) # create nMods-element array along x, nRows along y. 1cm module gap. text += '-a %s -t %s 0 0 -a %s -t 0 %s 0 ' %(nMods, self.module.scenex, nRows, pitch) @@ -3674,7 +3674,7 @@ def _makeSceneNxR(self, modulename=None, sceneDict=None, radname=None, addhubhei with open(radfile, 'wb') as f: f.write(text.encode('ascii')) - self.gcr = self.module.sceney / pitch + self.gcr = round(self.module.sceney / pitch, 6) self.text = text self.radfiles = radfile self.sceneDict = sceneDict @@ -4405,7 +4405,7 @@ def results(self): def __printval__(self, attr): try: t = getattr(self,attr, None)[0] - except (TypeError, KeyError): + except (TypeError, KeyError, IndexError): t = None if isinstance(t, (np.floating, float)) : return np.array(getattr(self,attr)).round(3).tolist() @@ -4747,10 +4747,14 @@ def _saveResults(self, data=None, reardata=None, savefile=None, RGB = False): # rename columns if only rear data was originally passed if rearswapflag: - df = df.rename(columns={'Wm2Front':'Wm2Back','mattype':'rearMat'}) + df = df.rename(columns={'Wm2Front':'Wm2Back','mattype':'rearMat', + 'x':'rearX', 'y':'rearY', 'z':'rearZ'}) # set attributes of analysis to equal columns of df for col in df.columns: - setattr(self, col, np.array(df[col])) #cdeline: changed from list to np.array on 3/16/24 + setattr(self, col, np.array(df[col])) #cdeline: changed from list to np.array on 3/16/24 + # swap back for the savefile + if rearswapflag: + df = df.rename(columns={'rearX':'x', 'rearY':'y', 'rearZ':'z'}) # only save a subset df = df.drop(columns=['backRatio'], errors='ignore') df.to_csv(os.path.join("results", savefile), sep=',', @@ -5148,15 +5152,15 @@ def _checkSensors(sensors): print("Final Start Coordinate Front", xstartfront, ystartfront, zstartfront) print("Increase Coordinates", xinc_front, yinc_front, zinc_front) - frontscan = {'xstart': firstsensorxstartfront, 'ystart': firstsensorystartfront, - 'zstart': firstsensorzstartfront, - 'xinc':xinc_front, 'yinc': yinc_front, 'zinc':zinc_front, + frontscan = {'xstart': np.float16(firstsensorxstartfront), 'ystart': np.float16(firstsensorystartfront), + 'zstart': np.float16(firstsensorzstartfront), + 'xinc': np.float16(xinc_front), 'yinc': np.float16(yinc_front), 'zinc': np.float16(zinc_front), 'sx_xinc':sx_xinc_front, 'sx_yinc':sx_yinc_front, 'sx_zinc':sx_zinc_front, 'Nx': sensorsx_front, 'Ny':sensorsy_front, 'Nz':1, 'orient':front_orient } - backscan = {'xstart':firstsensorxstartback, 'ystart': firstsensorystartback, - 'zstart': firstsensorzstartback, - 'xinc':xinc_back, 'yinc': yinc_back, 'zinc':zinc_back, + backscan = {'xstart': np.float16(firstsensorxstartback), 'ystart': np.float16(firstsensorystartback), + 'zstart': np.float16(firstsensorzstartback), + 'xinc': np.float16(xinc_back), 'yinc': np.float16(yinc_back), 'zinc': np.float16(zinc_back), 'sx_xinc':sx_xinc_back, 'sx_yinc':sx_yinc_back, 'sx_zinc':sx_zinc_back, 'Nx': sensorsx_back, 'Ny':sensorsy_back, 'Nz':1, 'orient':back_orient } @@ -5252,9 +5256,9 @@ def groundAnalysis(self, scene, modWanted=None, rowWanted=None, yinc = groundsensorspacing * np.cos((azimuth)*dtor) zinc = 0 - groundscan = {'xstart': xstart, 'ystart': ystart, - 'zstart': zstart, - 'xinc':xinc, 'yinc': yinc, 'zinc':zinc, + groundscan = {'xstart': np.float16(xstart), 'ystart': np.float16(ystart), + 'zstart': np.float16(zstart), + 'xinc':np.float16(xinc), 'yinc': np.float16(yinc), 'zinc':np.float16(zinc), 'sx_xinc':0, 'sx_yinc':0, 'sx_zinc':0, 'Nx': sensorsgroundx, 'Ny':sensorsground, 'Nz':1, @@ -5263,7 +5267,7 @@ def groundAnalysis(self, scene, modWanted=None, rowWanted=None, return groundscan def analyzeRow(self, octfile, scene, rowWanted=None, name=None, - sensorsy=None, sensorsx=None ): + sensorsy=9, sensorsx=1 ): ''' Function to Analyze every module in the row. diff --git a/docs/sphinx/source/whatsnew/v0.5.0.rst b/docs/sphinx/source/whatsnew/v0.5.0.rst index 691efb65..cf2775ef 100644 --- a/docs/sphinx/source/whatsnew/v0.5.0.rst +++ b/docs/sphinx/source/whatsnew/v0.5.0.rst @@ -41,6 +41,9 @@ Bug fixes * Fixed typo on Opacity calculation factor (:issue:`426`) * Updated Github Actions to use Node20: checkout@v4, setup-python@v5, coactions/setup-xvfb, setup-buildx-action@v3 (:pull:`517`) * Fix PerformanceWarning and SettingWithCopyWarning (:issue:`515`) +* Fix error where rearX, rearY, rearZ parameters are not properly saved (:issue:`501`) +* More appropriate significant digits saved and displayed. (this changed some x,y,z values by < .003 due to rounding differences.) (:pull:`558`) +* :py:func:`bifacial_radiance.AnalysisObj.analyzeRow` default values changed for `sensorsy` and `sensorsx` from `None` to 9 and 1, respectively (:pull:`558`) Documentation ~~~~~~~~~~~~~~ diff --git a/docs/tutorials/21 - Weather to Module Performance.ipynb b/docs/tutorials/21 - Weather to Module Performance.ipynb index 168a1fdf..6bdea5d7 100644 --- a/docs/tutorials/21 - Weather to Module Performance.ipynb +++ b/docs/tutorials/21 - Weather to Module Performance.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "07a01d38-bfea-453c-9040-72f6cc872bf3", "metadata": {}, "outputs": [ @@ -41,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "23074a65", "metadata": {}, "outputs": [ @@ -69,7 +69,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "51fe7bf3", "metadata": {}, "outputs": [ @@ -79,7 +79,7 @@ "'0.4.4.dev25+g9486645.d20240925'" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -103,7 +103,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "1423a9f2", "metadata": {}, "outputs": [], @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "fd6a686c", "metadata": {}, "outputs": [ @@ -154,7 +154,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "250eb585", "metadata": {}, "outputs": [ @@ -194,7 +194,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "9370c9c2", "metadata": { "scrolled": true @@ -226,7 +226,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "111bdbd2", "metadata": {}, "outputs": [], @@ -236,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "1f2e3cd4", "metadata": {}, "outputs": [ @@ -267,7 +267,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "10e35e7c", "metadata": {}, "outputs": [ @@ -300,7 +300,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "29c4a111", "metadata": {}, "outputs": [ @@ -321,7 +321,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "71bbd496", "metadata": {}, "outputs": [ @@ -338,33 +338,37 @@ "\n", "Linescan in process: 1axis_2021-01-13_1100_Scene0_Row1_Module3_Front\n", "Linescan in process: 1axis_2021-01-13_1100_Scene0_Row1_Module3_Back\n", - "Saved: results\\irr_1axis_2021-01-13_1100_Scene0_Row1_Module3.csv\n", - "Index: 2021-01-13_1100. Wm2Front: 254.37783333333334. Wm2Back: 40.0465\n", + "Saved: results\\irr_1axis_2021-01-13_1100_Scene0_Row1_Module3_Front.csv\n", + "Saved: results\\irr_1axis_2021-01-13_1100_Scene0_Row1_Module3_Back.csv\n", + "Index: 2021-01-13_1100. Wm2Front: 254.26609999999997. Wm2Back: 39.97652333333334\n", "Linescan in process: 1axis_2021-01-13_1200_Scene0_Row1_Module3_Front\n", "Linescan in process: 1axis_2021-01-13_1200_Scene0_Row1_Module3_Back\n", - "Saved: results\\irr_1axis_2021-01-13_1200_Scene0_Row1_Module3.csv\n", - "Index: 2021-01-13_1200. Wm2Front: 253.61329999999998. Wm2Back: 37.96939666666667\n", + "Saved: results\\irr_1axis_2021-01-13_1200_Scene0_Row1_Module3_Front.csv\n", + "Saved: results\\irr_1axis_2021-01-13_1200_Scene0_Row1_Module3_Back.csv\n", + "Index: 2021-01-13_1200. Wm2Front: 253.4217. Wm2Back: 38.20968333333333\n", "Linescan in process: 1axis_2021-01-13_1100_Scene1_Row1_Module1_Front\n", "Linescan in process: 1axis_2021-01-13_1100_Scene1_Row1_Module1_Back\n", - "Saved: results\\irr_1axis_2021-01-13_1100_Scene1_Row1_Module1.csv\n", - "Index: 2021-01-13_1100. Wm2Front: 253.51493333333335. Wm2Back: 52.92065666666667\n", + "Saved: results\\irr_1axis_2021-01-13_1100_Scene1_Row1_Module1_Front.csv\n", + "Saved: results\\irr_1axis_2021-01-13_1100_Scene1_Row1_Module1_Back.csv\n", + "Index: 2021-01-13_1100. Wm2Front: 253.54973333333336. Wm2Back: 0.0\n", "Linescan in process: 1axis_2021-01-13_1200_Scene1_Row1_Module1_Front\n", "Linescan in process: 1axis_2021-01-13_1200_Scene1_Row1_Module1_Back\n", - "Saved: results\\irr_1axis_2021-01-13_1200_Scene1_Row1_Module1.csv\n", - "Index: 2021-01-13_1200. Wm2Front: 252.98073333333332. Wm2Back: 50.79347333333333\n" + "Saved: results\\irr_1axis_2021-01-13_1200_Scene1_Row1_Module1_Front.csv\n", + "Saved: results\\irr_1axis_2021-01-13_1200_Scene1_Row1_Module1_Back.csv\n", + "Index: 2021-01-13_1200. Wm2Front: 252.57203333333334. Wm2Back: 0.0\n" ] } ], "source": [ - "# Compile both scenes into one octfile. Run 2 different analyses, one on each scene\n", + "# Compile both scenes into one octfile. Run 2 different analyses, one on each scene with different front and rear y scan\n", "trackerdict = demo.makeOct1axis()\n", - "trackerdict = demo.analysis1axis(sensorsy=3, append=False)\n", - "trackerdict = demo.analysis1axis(sensorsy=3, sceneNum=1)" + "trackerdict = demo.analysis1axis(sensorsy=[1,3], append=False)\n", + "trackerdict = demo.analysis1axis(sensorsy=[3,2], sceneNum=1)" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "a3a10f10", "metadata": {}, "outputs": [ @@ -374,10 +378,10 @@ "text": [ "Linescan in process: 1axis_groundscan_2021-01-13_1100Silvanas__Row1_Module1_Front\n", "Saved: results\\irr_1axis_groundscan_2021-01-13_1100Silvanas__Row1_Module1.csv\n", - "Index: 2021-01-13_1100. Wm2Ground: 204.88986. sensorsground: 10\n", + "Index: 2021-01-13_1100. Wm2Ground: 204.79288999999997. sensorsground: 10\n", "Linescan in process: 1axis_groundscan_2021-01-13_1200Silvanas__Row1_Module1_Front\n", "Saved: results\\irr_1axis_groundscan_2021-01-13_1200Silvanas__Row1_Module1.csv\n", - "Index: 2021-01-13_1200. Wm2Ground: 237.75890999999996. sensorsground: 10\n" + "Index: 2021-01-13_1200. Wm2Ground: 237.48879000000002. sensorsground: 10\n" ] } ], @@ -388,7 +392,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "2942a802", "metadata": {}, "outputs": [ @@ -418,17 +422,17 @@ " modNum\n", " rowNum\n", " sceneNum\n", + " Wm2Front\n", + " Wm2Back\n", + " backRatio\n", " x\n", " y\n", " z\n", - " rearZ\n", " mattype\n", - " rearMat\n", - " Wm2Front\n", - " Wm2Back\n", - " backRatio\n", " rearX\n", " rearY\n", + " rearZ\n", + " rearMat\n", " surf_azm\n", " surf_tilt\n", " theta\n", @@ -442,17 +446,17 @@ " 3\n", " 1\n", " 0\n", - " [0.3734448, 0.01462469, -0.3441954]\n", - " [2.28669e-17, 8.955042e-19, -2.107589e-17]\n", - " [1.166863, 1.51507, 1.863277]\n", - " [1.151075, 1.499282, 1.847489]\n", - " [a2.0.a0.test-module.6457, a2.0.a0.test-module...\n", + " [254.26609999999997]\n", + " [39.59574, 39.60611, 40.72772]\n", + " 0.157223\n", + " [0.01462555]\n", + " [0.0]\n", + " [1.514648]\n", + " [a2.0.a0.test-module.6457]\n", + " [0.3581543, -0.0007324219, -0.3596191]\n", + " [0.0, 0.0, 0.0]\n", + " [1.151367, 1.499512, 1.847656]\n", " [a2.0.a0.test-module.2310, a2.0.a0.test-module...\n", - " [253.9854, 254.9895, 254.1586]\n", - " [39.46907, 39.66438, 41.00605]\n", - " [0.1553983599121843, 0.15555238332408464, 0.16...\n", - " [0.3581237, -0.000696414, -0.3595166]\n", - " [2.192875e-17, -4.264306e-20, -2.201404e-17]\n", " 90.0\n", " 44.14\n", " -44.14\n", @@ -464,17 +468,17 @@ " 1\n", " 1\n", " 1\n", - " [-14.62656, -14.98538, -15.3442]\n", - " [2.28669e-17, 8.955042e-19, -2.107589e-17]\n", - " [2.166863, 2.51507, 2.863277]\n", - " [2.151075, 2.499282, 2.847489]\n", + " [253.0651, 253.8192, 253.7649]\n", + " [0.0, 0.0]\n", + " 0.0\n", + " [-14.625, -14.98389, -15.34277]\n", + " [0.0, 0.0, 0.0]\n", + " [2.166016, 2.51416, 2.862305]\n", " [a0.0.a0.test.6457, a0.0.a0.test.6457, a0.0.a0...\n", - " [a0.0.a0.test.2310, a0.0.a0.test.2310, a0.0.a0...\n", - " [253.0249, 253.8044, 253.7155]\n", - " [52.58993, 53.09413, 53.07791]\n", - " [0.20784405865170325, 0.20919227880888272, 0.2...\n", - " [-14.64188, -15.0007, -15.35952]\n", - " [2.192875e-17, -4.264306e-20, -2.201404e-17]\n", + " [-14.75781, -15.23633]\n", + " [0.0, 0.0]\n", + " [2.267578, 2.731934]\n", + " [a0.0.a0.test.6457, a0.0.a0.test.6457]\n", " 90.0\n", " 44.14\n", " -44.14\n", @@ -486,13 +490,13 @@ " 1\n", " 1\n", " 1\n", - " [-15.0, -14.44444, -13.88889, -13.33333, -12.7...\n", - " [0.0, 3.401797e-17, 6.803593e-17, 1.020539e-16...\n", - " [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.0...\n", + " [199.1224, 201.452, 204.5499, 206.0879, 207.14...\n", " NaN\n", - " [groundplane, groundplane, groundplane, ground...\n", " NaN\n", - " [199.43860000000004, 201.74889999999996, 204.7...\n", + " [-15.0, -14.44434, -13.88867, -13.33301, -12.7...\n", + " [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...\n", + " [0.04998779, 0.04998779, 0.04998779, 0.0499877...\n", + " [groundplane, groundplane, groundplane, ground...\n", " NaN\n", " NaN\n", " NaN\n", @@ -508,17 +512,17 @@ " 3\n", " 1\n", " 0\n", - " [0.473756, 0.007594116, -0.4585678]\n", - " [2.900919e-17, 4.650055e-19, -2.807918e-17]\n", - " [1.338767, 1.519579, 1.700391]\n", - " [1.318255, 1.499068, 1.67988]\n", - " [a2.0.a0.test-module.6457, a2.0.a0.test-module...\n", + " [253.4217]\n", + " [37.89736, 37.81097, 38.92072]\n", + " 0.150775\n", + " [0.007595062]\n", + " [0.0]\n", + " [1.519531]\n", + " [a2.0.a0.test-module.6457]\n", + " [0.4658203, -0.0002441406, -0.4663086]\n", + " [0.0, 0.0, 0.0]\n", + " [1.318359, 1.499146, 1.679932]\n", " [a2.0.a0.test-module.2310, a2.0.a0.test-module...\n", - " [253.5078, 253.6133, 253.7188]\n", - " [37.62749, 37.65656, 38.62414]\n", - " [0.14842676072783273, 0.14847964014647438, 0.1...\n", - " [0.4658003, -0.0003616246, -0.4665235]\n", - " [2.852204e-17, -2.214312e-20, -2.856633e-17]\n", " 90.0\n", " 21.20\n", " -21.20\n", @@ -530,17 +534,17 @@ " 1\n", " 1\n", " 1\n", - " [-14.52624, -14.99241, -15.45857]\n", - " [2.900919e-17, 4.650055e-19, -2.807918e-17]\n", - " [2.338767, 2.519579, 2.700391]\n", - " [2.318255, 2.499068, 2.67988]\n", + " [252.4514, 252.5719, 252.6928]\n", + " [0.0, 0.0]\n", + " 0.0\n", + " [-14.52344, -14.9895, -15.45557]\n", + " [0.0, 0.0, 0.0]\n", + " [2.337891, 2.518677, 2.699463]\n", " [a0.0.a0.test.6457, a0.0.a0.test.6457, a0.0.a0...\n", - " [a0.0.a0.test.2310, a0.0.a0.test.2310, a0.0.a0...\n", - " [252.92009999999996, 252.98069999999998, 253.0...\n", - " [50.52337, 50.86739, 50.98965999999999]\n", - " [0.19975941113651652, 0.20107142137158537, 0.2...\n", - " [-14.5342, -15.00036, -15.46652]\n", - " [2.852204e-17, -2.214312e-20, -2.856633e-17]\n", + " [-14.6875, -15.30908]\n", + " [0.0, 0.0]\n", + " [2.378906, 2.619995]\n", + " [a0.0.a0.test.6457, a0.0.a0.test.6457]\n", " 90.0\n", " 21.20\n", " -21.20\n", @@ -552,13 +556,13 @@ " 1\n", " 1\n", " 1\n", - " [-15.0, -14.44444, -13.88889, -13.33333, -12.7...\n", - " [0.0, 3.401797e-17, 6.803593e-17, 1.020539e-16...\n", - " [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.0...\n", + " [227.9177, 230.1437, 233.8727, 236.2223, 238.9...\n", " NaN\n", - " [groundplane, groundplane, groundplane, ground...\n", " NaN\n", - " [227.8342, 230.13659999999996, 233.87209999999...\n", + " [-15.0, -14.44434, -13.88867, -13.33301, -12.7...\n", + " [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...\n", + " [0.04998779, 0.04998779, 0.04998779, 0.0499877...\n", + " [groundplane, groundplane, groundplane, ground...\n", " NaN\n", " NaN\n", " NaN\n", @@ -580,96 +584,88 @@ "4 2021-01-13_1200 1axis_2021-01-13_1200_Scene1 1 1 \n", "5 2021-01-13_1200 1axis_groundscan_2021-01-13_1200Silvanas_ 1 1 \n", "\n", - " sceneNum x \\\n", - "0 0 [0.3734448, 0.01462469, -0.3441954] \n", - "1 1 [-14.62656, -14.98538, -15.3442] \n", - "2 1 [-15.0, -14.44444, -13.88889, -13.33333, -12.7... \n", - "3 0 [0.473756, 0.007594116, -0.4585678] \n", - "4 1 [-14.52624, -14.99241, -15.45857] \n", - "5 1 [-15.0, -14.44444, -13.88889, -13.33333, -12.7... \n", + " sceneNum Wm2Front \\\n", + "0 0 [254.26609999999997] \n", + "1 1 [253.0651, 253.8192, 253.7649] \n", + "2 1 [199.1224, 201.452, 204.5499, 206.0879, 207.14... \n", + "3 0 [253.4217] \n", + "4 1 [252.4514, 252.5719, 252.6928] \n", + "5 1 [227.9177, 230.1437, 233.8727, 236.2223, 238.9... \n", + "\n", + " Wm2Back backRatio \\\n", + "0 [39.59574, 39.60611, 40.72772] 0.157223 \n", + "1 [0.0, 0.0] 0.0 \n", + "2 NaN NaN \n", + "3 [37.89736, 37.81097, 38.92072] 0.150775 \n", + "4 [0.0, 0.0] 0.0 \n", + "5 NaN NaN \n", + "\n", + " x \\\n", + "0 [0.01462555] \n", + "1 [-14.625, -14.98389, -15.34277] \n", + "2 [-15.0, -14.44434, -13.88867, -13.33301, -12.7... \n", + "3 [0.007595062] \n", + "4 [-14.52344, -14.9895, -15.45557] \n", + "5 [-15.0, -14.44434, -13.88867, -13.33301, -12.7... \n", "\n", " y \\\n", - "0 [2.28669e-17, 8.955042e-19, -2.107589e-17] \n", - "1 [2.28669e-17, 8.955042e-19, -2.107589e-17] \n", - "2 [0.0, 3.401797e-17, 6.803593e-17, 1.020539e-16... \n", - "3 [2.900919e-17, 4.650055e-19, -2.807918e-17] \n", - "4 [2.900919e-17, 4.650055e-19, -2.807918e-17] \n", - "5 [0.0, 3.401797e-17, 6.803593e-17, 1.020539e-16... \n", + "0 [0.0] \n", + "1 [0.0, 0.0, 0.0] \n", + "2 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... \n", + "3 [0.0] \n", + "4 [0.0, 0.0, 0.0] \n", + "5 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... \n", "\n", " z \\\n", - "0 [1.166863, 1.51507, 1.863277] \n", - "1 [2.166863, 2.51507, 2.863277] \n", - "2 [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.0... \n", - "3 [1.338767, 1.519579, 1.700391] \n", - "4 [2.338767, 2.519579, 2.700391] \n", - "5 [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.0... \n", - "\n", - " rearZ \\\n", - "0 [1.151075, 1.499282, 1.847489] \n", - "1 [2.151075, 2.499282, 2.847489] \n", - "2 NaN \n", - "3 [1.318255, 1.499068, 1.67988] \n", - "4 [2.318255, 2.499068, 2.67988] \n", - "5 NaN \n", + "0 [1.514648] \n", + "1 [2.166016, 2.51416, 2.862305] \n", + "2 [0.04998779, 0.04998779, 0.04998779, 0.0499877... \n", + "3 [1.519531] \n", + "4 [2.337891, 2.518677, 2.699463] \n", + "5 [0.04998779, 0.04998779, 0.04998779, 0.0499877... \n", "\n", " mattype \\\n", - "0 [a2.0.a0.test-module.6457, a2.0.a0.test-module... \n", + "0 [a2.0.a0.test-module.6457] \n", "1 [a0.0.a0.test.6457, a0.0.a0.test.6457, a0.0.a0... \n", "2 [groundplane, groundplane, groundplane, ground... \n", - "3 [a2.0.a0.test-module.6457, a2.0.a0.test-module... \n", + "3 [a2.0.a0.test-module.6457] \n", "4 [a0.0.a0.test.6457, a0.0.a0.test.6457, a0.0.a0... \n", "5 [groundplane, groundplane, groundplane, ground... \n", "\n", - " rearMat \\\n", - "0 [a2.0.a0.test-module.2310, a2.0.a0.test-module... \n", - "1 [a0.0.a0.test.2310, a0.0.a0.test.2310, a0.0.a0... \n", - "2 NaN \n", - "3 [a2.0.a0.test-module.2310, a2.0.a0.test-module... \n", - "4 [a0.0.a0.test.2310, a0.0.a0.test.2310, a0.0.a0... \n", - "5 NaN \n", + " rearX rearY \\\n", + "0 [0.3581543, -0.0007324219, -0.3596191] [0.0, 0.0, 0.0] \n", + "1 [-14.75781, -15.23633] [0.0, 0.0] \n", + "2 NaN NaN \n", + "3 [0.4658203, -0.0002441406, -0.4663086] [0.0, 0.0, 0.0] \n", + "4 [-14.6875, -15.30908] [0.0, 0.0] \n", + "5 NaN NaN \n", "\n", - " Wm2Front \\\n", - "0 [253.9854, 254.9895, 254.1586] \n", - "1 [253.0249, 253.8044, 253.7155] \n", - "2 [199.43860000000004, 201.74889999999996, 204.7... \n", - "3 [253.5078, 253.6133, 253.7188] \n", - "4 [252.92009999999996, 252.98069999999998, 253.0... \n", - "5 [227.8342, 230.13659999999996, 233.87209999999... \n", - "\n", - " Wm2Back \\\n", - "0 [39.46907, 39.66438, 41.00605] \n", - "1 [52.58993, 53.09413, 53.07791] \n", - "2 NaN \n", - "3 [37.62749, 37.65656, 38.62414] \n", - "4 [50.52337, 50.86739, 50.98965999999999] \n", - "5 NaN \n", - "\n", - " backRatio \\\n", - "0 [0.1553983599121843, 0.15555238332408464, 0.16... \n", - "1 [0.20784405865170325, 0.20919227880888272, 0.2... \n", - "2 NaN \n", - "3 [0.14842676072783273, 0.14847964014647438, 0.1... \n", - "4 [0.19975941113651652, 0.20107142137158537, 0.2... \n", - "5 NaN \n", + " rearZ \\\n", + "0 [1.151367, 1.499512, 1.847656] \n", + "1 [2.267578, 2.731934] \n", + "2 NaN \n", + "3 [1.318359, 1.499146, 1.679932] \n", + "4 [2.378906, 2.619995] \n", + "5 NaN \n", "\n", - " rearX \\\n", - "0 [0.3581237, -0.000696414, -0.3595166] \n", - "1 [-14.64188, -15.0007, -15.35952] \n", - "2 NaN \n", - "3 [0.4658003, -0.0003616246, -0.4665235] \n", - "4 [-14.5342, -15.00036, -15.46652] \n", - "5 NaN \n", + " rearMat surf_azm surf_tilt \\\n", + "0 [a2.0.a0.test-module.2310, a2.0.a0.test-module... 90.0 44.14 \n", + "1 [a0.0.a0.test.6457, a0.0.a0.test.6457] 90.0 44.14 \n", + "2 NaN 90.0 44.14 \n", + "3 [a2.0.a0.test-module.2310, a2.0.a0.test-module... 90.0 21.20 \n", + "4 [a0.0.a0.test.6457, a0.0.a0.test.6457] 90.0 21.20 \n", + "5 NaN 90.0 21.20 \n", "\n", - " rearY surf_azm surf_tilt theta \n", - "0 [2.192875e-17, -4.264306e-20, -2.201404e-17] 90.0 44.14 -44.14 \n", - "1 [2.192875e-17, -4.264306e-20, -2.201404e-17] 90.0 44.14 -44.14 \n", - "2 NaN 90.0 44.14 -44.14 \n", - "3 [2.852204e-17, -2.214312e-20, -2.856633e-17] 90.0 21.20 -21.20 \n", - "4 [2.852204e-17, -2.214312e-20, -2.856633e-17] 90.0 21.20 -21.20 \n", - "5 NaN 90.0 21.20 -21.20 " + " theta \n", + "0 -44.14 \n", + "1 -44.14 \n", + "2 -44.14 \n", + "3 -21.20 \n", + "4 -21.20 \n", + "5 -21.20 " ] }, - "execution_count": 15, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -689,7 +685,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "id": "7bbf6db6", "metadata": {}, "outputs": [ @@ -729,17 +725,17 @@ " modNum\n", " rowNum\n", " sceneNum\n", + " Wm2Front\n", + " Wm2Back\n", + " backRatio\n", " x\n", " y\n", " z\n", - " rearZ\n", " mattype\n", - " rearMat\n", - " Wm2Front\n", - " Wm2Back\n", - " backRatio\n", " rearX\n", " rearY\n", + " rearZ\n", + " rearMat\n", " POA_eff\n", " Gfront_mean\n", " Grear_mean\n", @@ -764,26 +760,26 @@ " 3\n", " 1\n", " 0\n", - " [0.3734448, 0.01462469, -0.3441954]\n", - " [2.28669e-17, 8.955042e-19, -2.107589e-17]\n", - " [1.166863, 1.51507, 1.863277]\n", - " [1.151075, 1.499282, 1.847489]\n", - " [a2.0.a0.test-module.6457, a2.0.a0.test-module...\n", + " [254.26609999999997]\n", + " [39.59574, 39.60611, 40.72772]\n", + " 0.157223\n", + " [0.01462555]\n", + " [0.0]\n", + " [1.514648]\n", + " [a2.0.a0.test-module.6457]\n", + " [0.3581543, -0.0007324219, -0.3596191]\n", + " [0.0, 0.0, 0.0]\n", + " [1.151367, 1.499512, 1.847656]\n", " [a2.0.a0.test-module.2310, a2.0.a0.test-module...\n", - " [253.9854, 254.9895, 254.1586]\n", - " [39.46907, 39.66438, 41.00605]\n", - " [0.1553983599121843, 0.15555238332408464, 0.16...\n", - " [0.3581237, -0.000696414, -0.3595166]\n", - " [2.192875e-17, -4.264306e-20, -2.201404e-17]\n", - " 290.419683\n", - " 254.377833\n", - " 40.046500\n", - " 91.831552\n", - " 80.346050\n", - " 14.168628\n", - " 14.295042\n", - " 0.031494\n", - " 91.802630\n", + " 290.244971\n", + " 254.266100\n", + " 39.976523\n", + " 91.775968\n", + " 80.310389\n", + " 14.150086\n", + " 14.276583\n", + " 0.022931\n", + " 91.754923\n", " 3.8\n", " 144\n", " 149\n", @@ -797,26 +793,26 @@ " 1\n", " 1\n", " 1\n", - " [-14.62656, -14.98538, -15.3442]\n", - " [2.28669e-17, 8.955042e-19, -2.107589e-17]\n", - " [2.166863, 2.51507, 2.863277]\n", - " [2.151075, 2.499282, 2.847489]\n", + " [253.0651, 253.8192, 253.7649]\n", + " [0.0, 0.0]\n", + " 0.0\n", + " [-14.625, -14.98389, -15.34277]\n", + " [0.0, 0.0, 0.0]\n", + " [2.166016, 2.51416, 2.862305]\n", " [a0.0.a0.test.6457, a0.0.a0.test.6457, a0.0.a0...\n", - " [a0.0.a0.test.2310, a0.0.a0.test.2310, a0.0.a0...\n", - " [253.0249, 253.8044, 253.7155]\n", - " [52.58993, 53.09413, 53.07791]\n", - " [0.20784405865170325, 0.20919227880888272, 0.2...\n", - " [-14.64188, -15.0007, -15.35952]\n", - " [2.192875e-17, -4.264306e-20, -2.201404e-17]\n", - " 295.851459\n", - " 253.514933\n", - " 52.920657\n", - " 123.731803\n", - " 106.057563\n", - " 16.699815\n", - " 16.664762\n", - " 0.008722\n", - " 123.721012\n", + " [-14.75781, -15.23633]\n", + " [0.0, 0.0]\n", + " [2.267578, 2.731934]\n", + " [a0.0.a0.test.6457, a0.0.a0.test.6457]\n", + " 253.549733\n", + " 253.549733\n", + " 0.000000\n", + " 106.072139\n", + " 106.072139\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 106.072139\n", " 3.8\n", " 144\n", " 149\n", @@ -830,26 +826,26 @@ " 1\n", " 1\n", " 1\n", - " [-15.0, -14.44444, -13.88889, -13.33333, -12.7...\n", - " [0.0, 3.401797e-17, 6.803593e-17, 1.020539e-16...\n", - " [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.0...\n", + " [199.1224, 201.452, 204.5499, 206.0879, 207.14...\n", " NaN\n", - " [groundplane, groundplane, groundplane, ground...\n", " NaN\n", - " [199.43860000000004, 201.74889999999996, 204.7...\n", + " [-15.0, -14.44434, -13.88867, -13.33301, -12.7...\n", + " [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...\n", + " [0.04998779, 0.04998779, 0.04998779, 0.0499877...\n", + " [groundplane, groundplane, groundplane, ground...\n", " NaN\n", " NaN\n", " NaN\n", " NaN\n", - " 204.889860\n", - " 204.889860\n", + " 204.792890\n", + " 204.792890\n", " 0.000000\n", - " 85.625380\n", - " 85.625380\n", + " 85.584512\n", + " 85.584512\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 85.625380\n", + " 85.584512\n", " 3.8\n", " 144\n", " 149\n", @@ -863,26 +859,26 @@ " 3\n", " 1\n", " 0\n", - " [0.473756, 0.007594116, -0.4585678]\n", - " [2.900919e-17, 4.650055e-19, -2.807918e-17]\n", - " [1.338767, 1.519579, 1.700391]\n", - " [1.318255, 1.499068, 1.67988]\n", - " [a2.0.a0.test-module.6457, a2.0.a0.test-module...\n", + " [253.4217]\n", + " [37.89736, 37.81097, 38.92072]\n", + " 0.150775\n", + " [0.007595062]\n", + " [0.0]\n", + " [1.519531]\n", + " [a2.0.a0.test-module.6457]\n", + " [0.4658203, -0.0002441406, -0.4663086]\n", + " [0.0, 0.0, 0.0]\n", + " [1.318359, 1.499146, 1.679932]\n", " [a2.0.a0.test-module.2310, a2.0.a0.test-module...\n", - " [253.5078, 253.6133, 253.7188]\n", - " [37.62749, 37.65656, 38.62414]\n", - " [0.14842676072783273, 0.14847964014647438, 0.1...\n", - " [0.4658003, -0.0003616246, -0.4665235]\n", - " [2.852204e-17, -2.214312e-20, -2.856633e-17]\n", - " 287.785757\n", - " 253.613300\n", - " 37.969397\n", - " 90.325515\n", - " 79.509085\n", - " 13.474237\n", - " 13.604017\n", - " 0.020285\n", - " 90.307193\n", + " 287.810415\n", + " 253.421700\n", + " 38.209683\n", + " 90.333308\n", + " 79.448352\n", + " 13.569759\n", + " 13.700669\n", + " 0.022662\n", + " 90.312836\n", " 3.9\n", " 97\n", " 200\n", @@ -896,26 +892,26 @@ " 1\n", " 1\n", " 1\n", - " [-14.52624, -14.99241, -15.45857]\n", - " [2.900919e-17, 4.650055e-19, -2.807918e-17]\n", - " [2.338767, 2.519579, 2.700391]\n", - " [2.318255, 2.499068, 2.67988]\n", + " [252.4514, 252.5719, 252.6928]\n", + " [0.0, 0.0]\n", + " 0.0\n", + " [-14.52344, -14.9895, -15.45557]\n", + " [0.0, 0.0, 0.0]\n", + " [2.337891, 2.518677, 2.699463]\n", " [a0.0.a0.test.6457, a0.0.a0.test.6457, a0.0.a0...\n", - " [a0.0.a0.test.2310, a0.0.a0.test.2310, a0.0.a0...\n", - " [252.92009999999996, 252.98069999999998, 253.0...\n", - " [50.52337, 50.86739, 50.98965999999999]\n", - " [0.19975941113651652, 0.20107142137158537, 0.2...\n", - " [-14.5342, -15.00036, -15.46652]\n", - " [2.852204e-17, -2.214312e-20, -2.856633e-17]\n", - " 293.615512\n", - " 252.980733\n", - " 50.793473\n", - " 121.980576\n", - " 105.120321\n", - " 16.062401\n", - " 16.039006\n", - " 0.008120\n", - " 121.970671\n", + " [-14.6875, -15.30908]\n", + " [0.0, 0.0]\n", + " [2.378906, 2.619995]\n", + " [a0.0.a0.test.6457, a0.0.a0.test.6457]\n", + " 252.572033\n", + " 252.572033\n", + " 0.000000\n", + " 104.950213\n", + " 104.950213\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 104.950213\n", " 3.9\n", " 97\n", " 200\n", @@ -929,26 +925,26 @@ " 1\n", " 1\n", " 1\n", - " [-15.0, -14.44444, -13.88889, -13.33333, -12.7...\n", - " [0.0, 3.401797e-17, 6.803593e-17, 1.020539e-16...\n", - " [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.0...\n", + " [227.9177, 230.1437, 233.8727, 236.2223, 238.9...\n", " NaN\n", - " [groundplane, groundplane, groundplane, ground...\n", " NaN\n", - " [227.8342, 230.13659999999996, 233.87209999999...\n", + " [-15.0, -14.44434, -13.88867, -13.33301, -12.7...\n", + " [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...\n", + " [0.04998779, 0.04998779, 0.04998779, 0.0499877...\n", + " [groundplane, groundplane, groundplane, ground...\n", " NaN\n", " NaN\n", " NaN\n", " NaN\n", - " 237.758910\n", - " 237.758910\n", + " 237.488790\n", + " 237.488790\n", " 0.000000\n", - " 98.778151\n", - " 98.778151\n", + " 98.665486\n", + " 98.665486\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", - " 98.778151\n", + " 98.665486\n", " 3.9\n", " 97\n", " 200\n", @@ -968,109 +964,93 @@ "4 2021-01-13_1200 1axis_2021-01-13_1200_Scene1 1 1 \n", "5 2021-01-13_1200 1axis_groundscan_2021-01-13_1200Silvanas_ 1 1 \n", "\n", - " sceneNum x \\\n", - "0 0 [0.3734448, 0.01462469, -0.3441954] \n", - "1 1 [-14.62656, -14.98538, -15.3442] \n", - "2 1 [-15.0, -14.44444, -13.88889, -13.33333, -12.7... \n", - "3 0 [0.473756, 0.007594116, -0.4585678] \n", - "4 1 [-14.52624, -14.99241, -15.45857] \n", - "5 1 [-15.0, -14.44444, -13.88889, -13.33333, -12.7... \n", + " sceneNum Wm2Front \\\n", + "0 0 [254.26609999999997] \n", + "1 1 [253.0651, 253.8192, 253.7649] \n", + "2 1 [199.1224, 201.452, 204.5499, 206.0879, 207.14... \n", + "3 0 [253.4217] \n", + "4 1 [252.4514, 252.5719, 252.6928] \n", + "5 1 [227.9177, 230.1437, 233.8727, 236.2223, 238.9... \n", + "\n", + " Wm2Back backRatio \\\n", + "0 [39.59574, 39.60611, 40.72772] 0.157223 \n", + "1 [0.0, 0.0] 0.0 \n", + "2 NaN NaN \n", + "3 [37.89736, 37.81097, 38.92072] 0.150775 \n", + "4 [0.0, 0.0] 0.0 \n", + "5 NaN NaN \n", + "\n", + " x \\\n", + "0 [0.01462555] \n", + "1 [-14.625, -14.98389, -15.34277] \n", + "2 [-15.0, -14.44434, -13.88867, -13.33301, -12.7... \n", + "3 [0.007595062] \n", + "4 [-14.52344, -14.9895, -15.45557] \n", + "5 [-15.0, -14.44434, -13.88867, -13.33301, -12.7... \n", "\n", " y \\\n", - "0 [2.28669e-17, 8.955042e-19, -2.107589e-17] \n", - "1 [2.28669e-17, 8.955042e-19, -2.107589e-17] \n", - "2 [0.0, 3.401797e-17, 6.803593e-17, 1.020539e-16... \n", - "3 [2.900919e-17, 4.650055e-19, -2.807918e-17] \n", - "4 [2.900919e-17, 4.650055e-19, -2.807918e-17] \n", - "5 [0.0, 3.401797e-17, 6.803593e-17, 1.020539e-16... \n", + "0 [0.0] \n", + "1 [0.0, 0.0, 0.0] \n", + "2 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... \n", + "3 [0.0] \n", + "4 [0.0, 0.0, 0.0] \n", + "5 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... \n", "\n", " z \\\n", - "0 [1.166863, 1.51507, 1.863277] \n", - "1 [2.166863, 2.51507, 2.863277] \n", - "2 [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.0... \n", - "3 [1.338767, 1.519579, 1.700391] \n", - "4 [2.338767, 2.519579, 2.700391] \n", - "5 [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.0... \n", - "\n", - " rearZ \\\n", - "0 [1.151075, 1.499282, 1.847489] \n", - "1 [2.151075, 2.499282, 2.847489] \n", - "2 NaN \n", - "3 [1.318255, 1.499068, 1.67988] \n", - "4 [2.318255, 2.499068, 2.67988] \n", - "5 NaN \n", + "0 [1.514648] \n", + "1 [2.166016, 2.51416, 2.862305] \n", + "2 [0.04998779, 0.04998779, 0.04998779, 0.0499877... \n", + "3 [1.519531] \n", + "4 [2.337891, 2.518677, 2.699463] \n", + "5 [0.04998779, 0.04998779, 0.04998779, 0.0499877... \n", "\n", " mattype \\\n", - "0 [a2.0.a0.test-module.6457, a2.0.a0.test-module... \n", + "0 [a2.0.a0.test-module.6457] \n", "1 [a0.0.a0.test.6457, a0.0.a0.test.6457, a0.0.a0... \n", "2 [groundplane, groundplane, groundplane, ground... \n", - "3 [a2.0.a0.test-module.6457, a2.0.a0.test-module... \n", + "3 [a2.0.a0.test-module.6457] \n", "4 [a0.0.a0.test.6457, a0.0.a0.test.6457, a0.0.a0... \n", "5 [groundplane, groundplane, groundplane, ground... \n", "\n", - " rearMat \\\n", - "0 [a2.0.a0.test-module.2310, a2.0.a0.test-module... \n", - "1 [a0.0.a0.test.2310, a0.0.a0.test.2310, a0.0.a0... \n", - "2 NaN \n", - "3 [a2.0.a0.test-module.2310, a2.0.a0.test-module... \n", - "4 [a0.0.a0.test.2310, a0.0.a0.test.2310, a0.0.a0... \n", - "5 NaN \n", - "\n", - " Wm2Front \\\n", - "0 [253.9854, 254.9895, 254.1586] \n", - "1 [253.0249, 253.8044, 253.7155] \n", - "2 [199.43860000000004, 201.74889999999996, 204.7... \n", - "3 [253.5078, 253.6133, 253.7188] \n", - "4 [252.92009999999996, 252.98069999999998, 253.0... \n", - "5 [227.8342, 230.13659999999996, 233.87209999999... \n", - "\n", - " Wm2Back \\\n", - "0 [39.46907, 39.66438, 41.00605] \n", - "1 [52.58993, 53.09413, 53.07791] \n", - "2 NaN \n", - "3 [37.62749, 37.65656, 38.62414] \n", - "4 [50.52337, 50.86739, 50.98965999999999] \n", - "5 NaN \n", + " rearX rearY \\\n", + "0 [0.3581543, -0.0007324219, -0.3596191] [0.0, 0.0, 0.0] \n", + "1 [-14.75781, -15.23633] [0.0, 0.0] \n", + "2 NaN NaN \n", + "3 [0.4658203, -0.0002441406, -0.4663086] [0.0, 0.0, 0.0] \n", + "4 [-14.6875, -15.30908] [0.0, 0.0] \n", + "5 NaN NaN \n", "\n", - " backRatio \\\n", - "0 [0.1553983599121843, 0.15555238332408464, 0.16... \n", - "1 [0.20784405865170325, 0.20919227880888272, 0.2... \n", - "2 NaN \n", - "3 [0.14842676072783273, 0.14847964014647438, 0.1... \n", - "4 [0.19975941113651652, 0.20107142137158537, 0.2... \n", - "5 NaN \n", - "\n", - " rearX \\\n", - "0 [0.3581237, -0.000696414, -0.3595166] \n", - "1 [-14.64188, -15.0007, -15.35952] \n", - "2 NaN \n", - "3 [0.4658003, -0.0003616246, -0.4665235] \n", - "4 [-14.5342, -15.00036, -15.46652] \n", - "5 NaN \n", + " rearZ \\\n", + "0 [1.151367, 1.499512, 1.847656] \n", + "1 [2.267578, 2.731934] \n", + "2 NaN \n", + "3 [1.318359, 1.499146, 1.679932] \n", + "4 [2.378906, 2.619995] \n", + "5 NaN \n", "\n", - " rearY POA_eff Gfront_mean \\\n", - "0 [2.192875e-17, -4.264306e-20, -2.201404e-17] 290.419683 254.377833 \n", - "1 [2.192875e-17, -4.264306e-20, -2.201404e-17] 295.851459 253.514933 \n", - "2 NaN 204.889860 204.889860 \n", - "3 [2.852204e-17, -2.214312e-20, -2.856633e-17] 287.785757 253.613300 \n", - "4 [2.852204e-17, -2.214312e-20, -2.856633e-17] 293.615512 252.980733 \n", - "5 NaN 237.758910 237.758910 \n", + " rearMat POA_eff Gfront_mean \\\n", + "0 [a2.0.a0.test-module.2310, a2.0.a0.test-module... 290.244971 254.266100 \n", + "1 [a0.0.a0.test.6457, a0.0.a0.test.6457] 253.549733 253.549733 \n", + "2 NaN 204.792890 204.792890 \n", + "3 [a2.0.a0.test-module.2310, a2.0.a0.test-module... 287.810415 253.421700 \n", + "4 [a0.0.a0.test.6457, a0.0.a0.test.6457] 252.572033 252.572033 \n", + "5 NaN 237.488790 237.488790 \n", "\n", " Grear_mean Pout_raw Pout_Gfront BGG BGE Mismatch \\\n", - "0 40.046500 91.831552 80.346050 14.168628 14.295042 0.031494 \n", - "1 52.920657 123.731803 106.057563 16.699815 16.664762 0.008722 \n", - "2 0.000000 85.625380 85.625380 0.000000 0.000000 0.000000 \n", - "3 37.969397 90.325515 79.509085 13.474237 13.604017 0.020285 \n", - "4 50.793473 121.980576 105.120321 16.062401 16.039006 0.008120 \n", - "5 0.000000 98.778151 98.778151 0.000000 0.000000 0.000000 \n", + "0 39.976523 91.775968 80.310389 14.150086 14.276583 0.022931 \n", + "1 0.000000 106.072139 106.072139 0.000000 0.000000 0.000000 \n", + "2 0.000000 85.584512 85.584512 0.000000 0.000000 0.000000 \n", + "3 38.209683 90.333308 79.448352 13.569759 13.700669 0.022662 \n", + "4 0.000000 104.950213 104.950213 0.000000 0.000000 0.000000 \n", + "5 0.000000 98.665486 98.665486 0.000000 0.000000 0.000000 \n", "\n", " Pout Wind Speed DNI DHI GHI \\\n", - "0 91.802630 3.8 144 149 211 \n", - "1 123.721012 3.8 144 149 211 \n", - "2 85.625380 3.8 144 149 211 \n", - "3 90.307193 3.9 97 200 249 \n", - "4 121.970671 3.9 97 200 249 \n", - "5 98.778151 3.9 97 200 249 \n", + "0 91.754923 3.8 144 149 211 \n", + "1 106.072139 3.8 144 149 211 \n", + "2 85.584512 3.8 144 149 211 \n", + "3 90.312836 3.9 97 200 249 \n", + "4 104.950213 3.9 97 200 249 \n", + "5 98.665486 3.9 97 200 249 \n", "\n", " module_CEC_name \n", "0 SunPower SPR-E19-310-COM \n", @@ -1167,23 +1147,23 @@ " 3\n", " 0\n", " 1axis_2021-01-13_1100_Scene0\n", - " [254.0681 254.9558 254.3216]\n", - " [39.50778 39.82523 40.90701]\n", + " [254.2661]\n", + " [39.59574 39.60611 40.72772]\n", " 144\n", " 149\n", " 211\n", - " 4.6\n", + " NaN\n", " 3.8\n", " -44.14\n", " 44.14\n", " 90.0\n", - " 290.520506\n", - " 254.448500\n", - " 40.080007\n", - " 91.863627\n", - " 0.028544\n", - " 91.837406\n", - " 80.368605\n", + " 290.244971\n", + " 254.266100\n", + " 39.976523\n", + " 91.775968\n", + " 0.022931\n", + " 91.754923\n", + " 80.310389\n", " \n", " \n", " 1\n", @@ -1193,23 +1173,23 @@ " 1\n", " 1\n", " 1axis_2021-01-13_1100_Scene1\n", - " [253.0643 253.8386 253.637 ]\n", - " [52.60152 53.10697 52.92946]\n", + " [253.0651 253.8192 253.7649]\n", + " [0. 0.]\n", " 144\n", " 149\n", " 211\n", - " 4.6\n", + " NaN\n", " 3.8\n", " -44.14\n", " 44.14\n", " 90.0\n", - " 295.816753\n", - " 253.513300\n", - " 52.879317\n", - " 123.717364\n", - " 0.008745\n", - " 123.706545\n", - " 106.056879\n", + " 253.549733\n", + " 253.549733\n", + " 0.000000\n", + " 106.072139\n", + " 0.000000\n", + " 106.072139\n", + " 106.072139\n", " \n", " \n", " 2\n", @@ -1219,23 +1199,23 @@ " 1\n", " 1\n", " 1axis_groundscan_2021-01-13_1100Silvanas_\n", - " [198.7301 201.027 204.6268 206.4026 207.4362 ...\n", + " [199.1224 201.452 204.5499 206.0879 207.1438 ...\n", " NaN\n", " 144\n", " 149\n", " 211\n", - " 4.6\n", + " NaN\n", " 3.8\n", " -44.14\n", " 44.14\n", " 90.0\n", - " 205.031480\n", - " 205.031480\n", + " 204.792890\n", + " 204.792890\n", " 0.000000\n", - " 85.685065\n", + " 85.584512\n", " 0.000000\n", - " 85.685065\n", - " 85.685065\n", + " 85.584512\n", + " 85.584512\n", " \n", " \n", " 3\n", @@ -1245,23 +1225,23 @@ " 3\n", " 0\n", " 1axis_2021-01-13_1200_Scene0\n", - " [252.768 252.9163 253.3978]\n", - " [37.82638 37.77132 38.61288]\n", + " [253.4217]\n", + " [37.89736 37.81097 38.92072]\n", " 97\n", " 200\n", " 249\n", - " 6.5\n", + " NaN\n", " 3.9\n", " -21.20\n", " 21.20\n", " 90.0\n", - " 287.290541\n", - " 253.027367\n", - " 38.070193\n", - " 90.169005\n", - " 0.017078\n", - " 90.153606\n", - " 79.323353\n", + " 287.810415\n", + " 253.421700\n", + " 38.209683\n", + " 90.333308\n", + " 0.022662\n", + " 90.312836\n", + " 79.448352\n", " \n", " \n", " 4\n", @@ -1271,23 +1251,23 @@ " 1\n", " 1\n", " 1axis_2021-01-13_1200_Scene1\n", - " [252.9312 253.0649 253.1985]\n", - " [50.65721 51.0674 50.72511]\n", + " [252.4514 252.5719 252.6928]\n", + " [0. 0.]\n", " 97\n", " 200\n", " 249\n", - " 6.5\n", + " NaN\n", " 3.9\n", " -21.20\n", " 21.20\n", " 90.0\n", - " 293.718125\n", - " 253.064867\n", - " 50.816573\n", - " 122.023014\n", - " 0.007130\n", - " 122.014314\n", - " 105.155337\n", + " 252.572033\n", + " 252.572033\n", + " 0.000000\n", + " 104.950213\n", + " 0.000000\n", + " 104.950213\n", + " 104.950213\n", " \n", " \n", " 5\n", @@ -1297,23 +1277,23 @@ " 1\n", " 1\n", " 1axis_groundscan_2021-01-13_1200Silvanas_\n", - " [228.0597 229.9865 233.2411 237.3016 239.1257 ...\n", + " [227.9177 230.1437 233.8727 236.2223 238.9651 ...\n", " NaN\n", " 97\n", " 200\n", " 249\n", - " 6.5\n", + " NaN\n", " 3.9\n", " -21.20\n", " 21.20\n", " 90.0\n", - " 237.717610\n", - " 237.717610\n", + " 237.488790\n", + " 237.488790\n", " 0.000000\n", - " 98.760926\n", + " 98.665486\n", " 0.000000\n", - " 98.760926\n", - " 98.760926\n", + " 98.665486\n", + " 98.665486\n", " \n", " \n", "\n", @@ -1337,36 +1317,36 @@ "5 1axis_groundscan_2021-01-13_1200Silvanas_ \n", "\n", " Wm2Front \\\n", - "0 [254.0681 254.9558 254.3216] \n", - "1 [253.0643 253.8386 253.637 ] \n", - "2 [198.7301 201.027 204.6268 206.4026 207.4362 ... \n", - "3 [252.768 252.9163 253.3978] \n", - "4 [252.9312 253.0649 253.1985] \n", - "5 [228.0597 229.9865 233.2411 237.3016 239.1257 ... \n", + "0 [254.2661] \n", + "1 [253.0651 253.8192 253.7649] \n", + "2 [199.1224 201.452 204.5499 206.0879 207.1438 ... \n", + "3 [253.4217] \n", + "4 [252.4514 252.5719 252.6928] \n", + "5 [227.9177 230.1437 233.8727 236.2223 238.9651 ... \n", "\n", " Wm2Back DNI DHI GHI temp_air wind_speed theta \\\n", - "0 [39.50778 39.82523 40.90701] 144 149 211 4.6 3.8 -44.14 \n", - "1 [52.60152 53.10697 52.92946] 144 149 211 4.6 3.8 -44.14 \n", - "2 NaN 144 149 211 4.6 3.8 -44.14 \n", - "3 [37.82638 37.77132 38.61288] 97 200 249 6.5 3.9 -21.20 \n", - "4 [50.65721 51.0674 50.72511] 97 200 249 6.5 3.9 -21.20 \n", - "5 NaN 97 200 249 6.5 3.9 -21.20 \n", + "0 [39.59574 39.60611 40.72772] 144 149 211 NaN 3.8 -44.14 \n", + "1 [0. 0.] 144 149 211 NaN 3.8 -44.14 \n", + "2 NaN 144 149 211 NaN 3.8 -44.14 \n", + "3 [37.89736 37.81097 38.92072] 97 200 249 NaN 3.9 -21.20 \n", + "4 [0. 0.] 97 200 249 NaN 3.9 -21.20 \n", + "5 NaN 97 200 249 NaN 3.9 -21.20 \n", "\n", " surf_tilt surf_azm POA_eff Gfront_mean Grear_mean Pout_raw \\\n", - "0 44.14 90.0 290.520506 254.448500 40.080007 91.863627 \n", - "1 44.14 90.0 295.816753 253.513300 52.879317 123.717364 \n", - "2 44.14 90.0 205.031480 205.031480 0.000000 85.685065 \n", - "3 21.20 90.0 287.290541 253.027367 38.070193 90.169005 \n", - "4 21.20 90.0 293.718125 253.064867 50.816573 122.023014 \n", - "5 21.20 90.0 237.717610 237.717610 0.000000 98.760926 \n", + "0 44.14 90.0 290.244971 254.266100 39.976523 91.775968 \n", + "1 44.14 90.0 253.549733 253.549733 0.000000 106.072139 \n", + "2 44.14 90.0 204.792890 204.792890 0.000000 85.584512 \n", + "3 21.20 90.0 287.810415 253.421700 38.209683 90.333308 \n", + "4 21.20 90.0 252.572033 252.572033 0.000000 104.950213 \n", + "5 21.20 90.0 237.488790 237.488790 0.000000 98.665486 \n", "\n", " Mismatch Pout Pout_Gfront \n", - "0 0.028544 91.837406 80.368605 \n", - "1 0.008745 123.706545 106.056879 \n", - "2 0.000000 85.685065 85.685065 \n", - "3 0.017078 90.153606 79.323353 \n", - "4 0.007130 122.014314 105.155337 \n", - "5 0.000000 98.760926 98.760926 " + "0 0.022931 91.754923 80.310389 \n", + "1 0.000000 106.072139 106.072139 \n", + "2 0.000000 85.584512 85.584512 \n", + "3 0.022662 90.312836 79.448352 \n", + "4 0.000000 104.950213 104.950213 \n", + "5 0.000000 98.665486 98.665486 " ] }, "execution_count": 16, @@ -1472,70 +1452,82 @@ "Created 1axis_15.0.oct\n", "Linescan in process: 1axis_-15.0_Scene0_Row1_Module2_Front\n", "Linescan in process: 1axis_-15.0_Scene0_Row1_Module2_Back\n", - "Saved: results\\irr_1axis_-15.0_Scene0_Row1_Module2.csv\n", - "Index: -15.0. Wm2Front: 628026.5666666667. Wm2Back: 80798.11666666668\n", + "Saved: results\\irr_1axis_-15.0_Scene0_Row1_Module2_Front.csv\n", + "Saved: results\\irr_1axis_-15.0_Scene0_Row1_Module2_Back.csv\n", + "Index: -15.0. Wm2Front: 627314.8999999999. Wm2Back: 80826.80666666666\n", "Linescan in process: 1axis_-15.0_Scene0_Row1_Module4_Front\n", "Linescan in process: 1axis_-15.0_Scene0_Row1_Module4_Back\n", - "Saved: results\\irr_1axis_-15.0_Scene0_Row1_Module4.csv\n", - "Index: -15.0. Wm2Front: 633042.5666666668. Wm2Back: 74133.11666666665\n", + "Saved: results\\irr_1axis_-15.0_Scene0_Row1_Module4_Front.csv\n", + "Saved: results\\irr_1axis_-15.0_Scene0_Row1_Module4_Back.csv\n", + "Index: -15.0. Wm2Front: 633150.2. Wm2Back: 74338.82666666668\n", "Linescan in process: 1axis_-10.0_Scene0_Row1_Module2_Front\n", "Linescan in process: 1axis_-10.0_Scene0_Row1_Module2_Back\n", - "Saved: results\\irr_1axis_-10.0_Scene0_Row1_Module2.csv\n", - "Index: -10.0. Wm2Front: 146985.56666666665. Wm2Back: 19676.473333333335\n", + "Saved: results\\irr_1axis_-10.0_Scene0_Row1_Module2_Front.csv\n", + "Saved: results\\irr_1axis_-10.0_Scene0_Row1_Module2_Back.csv\n", + "Index: -10.0. Wm2Front: 146242.85. Wm2Back: 19780.77666666667\n", "Linescan in process: 1axis_-10.0_Scene0_Row1_Module4_Front\n", "Linescan in process: 1axis_-10.0_Scene0_Row1_Module4_Back\n", - "Saved: results\\irr_1axis_-10.0_Scene0_Row1_Module4.csv\n", - "Index: -10.0. Wm2Front: 146244.56666666668. Wm2Back: 17398.210000000003\n", + "Saved: results\\irr_1axis_-10.0_Scene0_Row1_Module4_Front.csv\n", + "Saved: results\\irr_1axis_-10.0_Scene0_Row1_Module4_Back.csv\n", + "Index: -10.0. Wm2Front: 148151.5. Wm2Back: 17382.633333333335\n", "Linescan in process: 1axis_0.0_Scene0_Row1_Module2_Front\n", "Linescan in process: 1axis_0.0_Scene0_Row1_Module2_Back\n", - "Saved: results\\irr_1axis_0.0_Scene0_Row1_Module2.csv\n", - "Index: 0.0. Wm2Front: 995.6834666666667. Wm2Back: 149.88930000000002\n", + "Saved: results\\irr_1axis_0.0_Scene0_Row1_Module2_Front.csv\n", + "Saved: results\\irr_1axis_0.0_Scene0_Row1_Module2_Back.csv\n", + "Index: 0.0. Wm2Front: 967.20935. Wm2Back: 151.3741\n", "Linescan in process: 1axis_0.0_Scene0_Row1_Module4_Front\n", "Linescan in process: 1axis_0.0_Scene0_Row1_Module4_Back\n", - "Saved: results\\irr_1axis_0.0_Scene0_Row1_Module4.csv\n", - "Index: 0.0. Wm2Front: 986.0803666666667. Wm2Back: 118.16593333333333\n", + "Saved: results\\irr_1axis_0.0_Scene0_Row1_Module4_Front.csv\n", + "Saved: results\\irr_1axis_0.0_Scene0_Row1_Module4_Back.csv\n", + "Index: 0.0. Wm2Front: 1004.4355. Wm2Back: 118.55160000000001\n", "Linescan in process: 1axis_5.0_Scene0_Row1_Module2_Front\n", "Linescan in process: 1axis_5.0_Scene0_Row1_Module2_Back\n", - "Saved: results\\irr_1axis_5.0_Scene0_Row1_Module2.csv\n", - "Index: 5.0. Wm2Front: 144496.80000000002. Wm2Back: 19746.946666666667\n", + "Saved: results\\irr_1axis_5.0_Scene0_Row1_Module2_Front.csv\n", + "Saved: results\\irr_1axis_5.0_Scene0_Row1_Module2_Back.csv\n", + "Index: 5.0. Wm2Front: 149129.2. Wm2Back: 19709.866666666665\n", "Linescan in process: 1axis_5.0_Scene0_Row1_Module4_Front\n", "Linescan in process: 1axis_5.0_Scene0_Row1_Module4_Back\n", - "Saved: results\\irr_1axis_5.0_Scene0_Row1_Module4.csv\n", - "Index: 5.0. Wm2Front: 147367.13333333333. Wm2Back: 17423.399999999998\n", + "Saved: results\\irr_1axis_5.0_Scene0_Row1_Module4_Front.csv\n", + "Saved: results\\irr_1axis_5.0_Scene0_Row1_Module4_Back.csv\n", + "Index: 5.0. Wm2Front: 149867.15000000002. Wm2Back: 17504.570000000003\n", "Linescan in process: 1axis_10.0_Scene0_Row1_Module2_Front\n", "Linescan in process: 1axis_10.0_Scene0_Row1_Module2_Back\n", - "Saved: results\\irr_1axis_10.0_Scene0_Row1_Module2.csv\n", - "Index: 10.0. Wm2Front: 17125.513333333332. Wm2Back: 2411.7313333333336\n", + "Saved: results\\irr_1axis_10.0_Scene0_Row1_Module2_Front.csv\n", + "Saved: results\\irr_1axis_10.0_Scene0_Row1_Module2_Back.csv\n", + "Index: 10.0. Wm2Front: 17213.73. Wm2Back: 2419.6253333333334\n", "Linescan in process: 1axis_10.0_Scene0_Row1_Module4_Front\n", "Linescan in process: 1axis_10.0_Scene0_Row1_Module4_Back\n", - "Saved: results\\irr_1axis_10.0_Scene0_Row1_Module4.csv\n", - "Index: 10.0. Wm2Front: 16972.87. Wm2Back: 2023.2613333333331\n", + "Saved: results\\irr_1axis_10.0_Scene0_Row1_Module4_Front.csv\n", + "Saved: results\\irr_1axis_10.0_Scene0_Row1_Module4_Back.csv\n", + "Index: 10.0. Wm2Front: 17476.864999999998. Wm2Back: 2028.0343333333333\n", "Linescan in process: 1axis_15.0_Scene0_Row1_Module2_Front\n", "Linescan in process: 1axis_15.0_Scene0_Row1_Module2_Back\n", - "Saved: results\\irr_1axis_15.0_Scene0_Row1_Module2.csv\n", - "Index: 15.0. Wm2Front: 717654.4333333332. Wm2Back: 85762.97000000002\n", + "Saved: results\\irr_1axis_15.0_Scene0_Row1_Module2_Front.csv\n", + "Saved: results\\irr_1axis_15.0_Scene0_Row1_Module2_Back.csv\n", + "Index: 15.0. Wm2Front: 714340.8500000001. Wm2Back: 86047.87\n", "Linescan in process: 1axis_15.0_Scene0_Row1_Module4_Front\n", "Linescan in process: 1axis_15.0_Scene0_Row1_Module4_Back\n", - "Saved: results\\irr_1axis_15.0_Scene0_Row1_Module4.csv\n", - "Index: 15.0. Wm2Front: 714059.2666666667. Wm2Back: 79361.25333333333\n", + "Saved: results\\irr_1axis_15.0_Scene0_Row1_Module4_Front.csv\n", + "Saved: results\\irr_1axis_15.0_Scene0_Row1_Module4_Back.csv\n", + "Index: 15.0. Wm2Front: 721632.25. Wm2Back: 79538.19666666667\n", "Linescan in process: 1axis_groundscan_-15.0_Row1_Module3_Front\n", "Saved: results\\irr_1axis_groundscan_-15.0_Row1_Module3.csv\n", - "Index: -15.0. Wm2Ground: 496813.0500000001. sensorsground: 10\n", + "Index: -15.0. Wm2Ground: 495183.01000000007. sensorsground: 10\n", "Linescan in process: 1axis_groundscan_-10.0_Row1_Module3_Front\n", "Saved: results\\irr_1axis_groundscan_-10.0_Row1_Module3.csv\n", - "Index: -10.0. Wm2Ground: 119790.24000000002. sensorsground: 10\n", + "Index: -10.0. Wm2Ground: 118693.192. sensorsground: 10\n", "Linescan in process: 1axis_groundscan_0.0_Row1_Module3_Front\n", "Saved: results\\irr_1axis_groundscan_0.0_Row1_Module3.csv\n", - "Index: 0.0. Wm2Ground: 769.3495599999999. sensorsground: 10\n", + "Index: 0.0. Wm2Ground: 722.9592299999999. sensorsground: 10\n", "Linescan in process: 1axis_groundscan_5.0_Row1_Module3_Front\n", "Saved: results\\irr_1axis_groundscan_5.0_Row1_Module3.csv\n", - "Index: 5.0. Wm2Ground: 108500.59699999998. sensorsground: 10\n", + "Index: 5.0. Wm2Ground: 110024.954. sensorsground: 10\n", "Linescan in process: 1axis_groundscan_10.0_Row1_Module3_Front\n", "Saved: results\\irr_1axis_groundscan_10.0_Row1_Module3.csv\n", - "Index: 10.0. Wm2Ground: 12322.834200000001. sensorsground: 10\n", + "Index: 10.0. Wm2Ground: 12419.3521. sensorsground: 10\n", "Linescan in process: 1axis_groundscan_15.0_Row1_Module3_Front\n", "Saved: results\\irr_1axis_groundscan_15.0_Row1_Module3.csv\n", - "Index: 15.0. Wm2Ground: 387507.75999999995. sensorsground: 10\n" + "Index: 15.0. Wm2Ground: 388078.31. sensorsground: 10\n" ] } ], @@ -1545,7 +1537,7 @@ "trackerdict = demo.genCumSky1axis()\n", "trackerdict = demo.makeScene1axis(trackerdict, module = mymodule, sceneDict = sceneDict)\n", "trackerdict = demo.makeOct1axis()\n", - "trackerdict = demo.analysis1axis(modWanted = [2,4], sensorsy=3)\n", + "trackerdict = demo.analysis1axis(modWanted = [2,4], sensorsy=[2,3])\n", "trackerdict = demo.analysis1axisground(sensorsground=10)" ] }, @@ -1602,12 +1594,12 @@ " 1\n", " 2\n", " 0\n", - " 11.338927\n", - " 1.655285e+06\n", - " 208546.127300\n", - " [1845372.5030866666, 1840463.504476667, 184309...\n", - " [1658556.0944, 1658093.2835, 1649204.3125, nan...\n", - " [211208.8218, 205754.3789, 208675.18120000002]\n", + " 11.360663\n", + " 1.655209e+06\n", + " 208936.319433\n", + " [1845370.4100300001, 1840857.22746, 1843526.64...\n", + " [1658321.0965, 1652096.3821999999, nan, nan, n...\n", + " [211290.74520000003, 206276.09790000002, 20924...\n", " \n", " \n", " 1\n", @@ -1615,10 +1607,10 @@ " 3\n", " 0\n", " NaN\n", - " 1.125704e+06\n", + " 1.125122e+06\n", " NaN\n", " [0.0, 0.0, 0.0]\n", - " [633171.4857999999, 711829.5524, 862250.9423, ...\n", + " [632528.9293000001, 704530.8141, 871543.067099...\n", " [nan, nan, nan]\n", " \n", " \n", @@ -1626,12 +1618,12 @@ " 1\n", " 4\n", " 0\n", - " 10.334268\n", - " 1.658672e+06\n", - " 190457.407267\n", - " [1832873.54007, 1826657.0977800002, 1830721.81...\n", - " [1665464.9309999999, 1665355.3404000003, 16451...\n", - " [193556.7293, 186649.57120000003, 191165.92130...\n", + " 10.280712\n", + " 1.671282e+06\n", + " 190910.812600\n", + " [1845953.2714499997, 1839710.38887, 1843642.7352]\n", + " [1671845.97, 1670718.8309999998, nan, nan, nan...\n", + " [194078.7455, 187142.2093, 191511.48300000004]\n", " \n", " \n", "\n", @@ -1639,24 +1631,24 @@ ], "text/plain": [ " rowNum modNum sceneNum BGG Gfront_mean Grear_mean \\\n", - "0 1 2 0 11.338927 1.655285e+06 208546.127300 \n", - "1 1 3 0 NaN 1.125704e+06 NaN \n", - "2 1 4 0 10.334268 1.658672e+06 190457.407267 \n", + "0 1 2 0 11.360663 1.655209e+06 208936.319433 \n", + "1 1 3 0 NaN 1.125122e+06 NaN \n", + "2 1 4 0 10.280712 1.671282e+06 190910.812600 \n", "\n", " POA_eff \\\n", - "0 [1845372.5030866666, 1840463.504476667, 184309... \n", + "0 [1845370.4100300001, 1840857.22746, 1843526.64... \n", "1 [0.0, 0.0, 0.0] \n", - "2 [1832873.54007, 1826657.0977800002, 1830721.81... \n", + "2 [1845953.2714499997, 1839710.38887, 1843642.7352] \n", "\n", " Wm2Front \\\n", - "0 [1658556.0944, 1658093.2835, 1649204.3125, nan... \n", - "1 [633171.4857999999, 711829.5524, 862250.9423, ... \n", - "2 [1665464.9309999999, 1665355.3404000003, 16451... \n", + "0 [1658321.0965, 1652096.3821999999, nan, nan, n... \n", + "1 [632528.9293000001, 704530.8141, 871543.067099... \n", + "2 [1671845.97, 1670718.8309999998, nan, nan, nan... \n", "\n", " Wm2Back \n", - "0 [211208.8218, 205754.3789, 208675.18120000002] \n", + "0 [211290.74520000003, 206276.09790000002, 20924... \n", "1 [nan, nan, nan] \n", - "2 [193556.7293, 186649.57120000003, 191165.92130... " + "2 [194078.7455, 187142.2093, 191511.48300000004] " ] }, "metadata": {}, @@ -1713,12 +1705,12 @@ " 1\n", " 2\n", " 0\n", - " 11.339\n", - " 1655284.563\n", - " 208546.127\n", - " [1845372.5030866666, 1840463.504476667, 184309...\n", - " [1658556.0944, 1658093.2835, 1649204.3125, nan...\n", - " [211208.8218, 205754.3789, 208675.18120000002]\n", + " 11.361\n", + " 1655208.739\n", + " 208936.319\n", + " [1845370.4100300001, 1840857.22746, 1843526.64...\n", + " [1658321.0965, 1652096.3821999999, nan, nan, n...\n", + " [211290.74520000003, 206276.09790000002, 20924...\n", " \n", " \n", " 1\n", @@ -1726,10 +1718,10 @@ " 3\n", " 0\n", " NaN\n", - " 1125703.831\n", + " 1125121.777\n", " NaN\n", " [0.0, 0.0, 0.0]\n", - " [633171.4857999999, 711829.5524, 862250.9423, ...\n", + " [632528.9293000001, 704530.8141, 871543.067099...\n", " [nan, nan, nan]\n", " \n", " \n", @@ -1737,12 +1729,12 @@ " 1\n", " 4\n", " 0\n", - " 10.334\n", - " 1658672.484\n", - " 190457.407\n", - " [1832873.54007, 1826657.0977800002, 1830721.81...\n", - " [1665464.9309999999, 1665355.3404000003, 16451...\n", - " [193556.7293, 186649.57120000003, 191165.92130...\n", + " 10.281\n", + " 1671282.400\n", + " 190910.813\n", + " [1845953.2714499997, 1839710.38887, 1843642.7352]\n", + " [1671845.97, 1670718.8309999998, nan, nan, nan...\n", + " [194078.7455, 187142.2093, 191511.48300000004]\n", " \n", " \n", "\n", @@ -1750,24 +1742,24 @@ ], "text/plain": [ " rowNum modNum sceneNum BGG Gfront_mean Grear_mean \\\n", - "0 1 2 0 11.339 1655284.563 208546.127 \n", - "1 1 3 0 NaN 1125703.831 NaN \n", - "2 1 4 0 10.334 1658672.484 190457.407 \n", + "0 1 2 0 11.361 1655208.739 208936.319 \n", + "1 1 3 0 NaN 1125121.777 NaN \n", + "2 1 4 0 10.281 1671282.400 190910.813 \n", "\n", " POA_eff \\\n", - "0 [1845372.5030866666, 1840463.504476667, 184309... \n", + "0 [1845370.4100300001, 1840857.22746, 1843526.64... \n", "1 [0.0, 0.0, 0.0] \n", - "2 [1832873.54007, 1826657.0977800002, 1830721.81... \n", + "2 [1845953.2714499997, 1839710.38887, 1843642.7352] \n", "\n", " Wm2Front \\\n", - "0 [1658556.0944, 1658093.2835, 1649204.3125, nan... \n", - "1 [633171.4857999999, 711829.5524, 862250.9423, ... \n", - "2 [1665464.9309999999, 1665355.3404000003, 16451... \n", + "0 [1658321.0965, 1652096.3821999999, nan, nan, n... \n", + "1 [632528.9293000001, 704530.8141, 871543.067099... \n", + "2 [1671845.97, 1670718.8309999998, nan, nan, nan... \n", "\n", " Wm2Back \n", - "0 [211208.8218, 205754.3789, 208675.18120000002] \n", + "0 [211290.74520000003, 206276.09790000002, 20924... \n", "1 [nan, nan, nan] \n", - "2 [193556.7293, 186649.57120000003, 191165.92130... " + "2 [194078.7455, 187142.2093, 191511.48300000004] " ] }, "execution_count": 20, @@ -1779,6 +1771,14 @@ "# Results are also automatically saved in \\results\\Cumulative_Results.csv\n", "pd.read_csv(os.path.join('results','Cumulative_Results.csv'))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0ab59c71", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/docs/tutorials/21 - Weather to Module Performance.py b/docs/tutorials/21 - Weather to Module Performance.py index 29e76e64..229089f2 100644 --- a/docs/tutorials/21 - Weather to Module Performance.py +++ b/docs/tutorials/21 - Weather to Module Performance.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # coding: utf-8 -# In[2]: +# In[1]: # This information helps with debugging and getting support :) @@ -20,7 +20,7 @@ # This tutorial shows how to use the new function on bifacial_radiance calculatePerformanceModule performance, as well as how to find CEC Module parameters. # -# In[3]: +# In[2]: import os @@ -36,7 +36,7 @@ print ("Your simulation will be stored in %s" % testfolder) -# In[4]: +# In[3]: import bifacial_radiance @@ -49,7 +49,7 @@ # ## Geting a CEC Module to pass into demo.makeModule -# In[5]: +# In[4]: url = 'https://raw.githubusercontent.com/NREL/SAM/patch/deploy/libraries/CEC%20Modules.csv' @@ -60,7 +60,7 @@ # # Make sure you select only 1 module from the database -- sometimes there are similar names. -# In[6]: +# In[5]: modfilter2 = db.index.str.startswith('SunPower') & db.index.str.endswith('SPR-E19-310-COM') @@ -75,7 +75,7 @@ -# In[7]: +# In[6]: # Selecting only two times as examples @@ -88,7 +88,7 @@ # The CEC data should be passed into the ModuleObj, either at time of creation, or sometime before it is passed into makeScene. -# In[8]: +# In[7]: mymodule = demo.makeModule(name='test-module', x=1, y=2, bifi=0.9, CECMod=CECMod) @@ -96,13 +96,13 @@ # The same data could instead be passed after the ModuleObj's definition, or at time of performance analysis: -# In[9]: +# In[8]: mymodule.addCEC(CECMod) -# In[10]: +# In[9]: # Let's make a second module, and set it to the default Prism Solar module type @@ -111,7 +111,7 @@ # We're going to set up two scenes, each with a different module type! -# In[11]: +# In[10]: sceneDict = {'tilt': 0, 'azimuth': 180, 'pitch': 5,'hub_height':1.5, 'nMods':5, 'nRows': 2} @@ -122,30 +122,30 @@ # Make a second scene with the other module type -# In[12]: +# In[11]: sceneDict2 = {'tilt': 0, 'azimuth': 180, 'pitch': 5,'hub_height':2.5, 'nMods':2, 'nRows': 1, 'originx': -15} trackerdict = demo.makeScene1axis(trackerdict, module = mymodule2, sceneDict=sceneDict2, append=True) -# In[13]: +# In[12]: -# Compile both scenes into one octfile. Run 2 different analyses, one on each scene +# Compile both scenes into one octfile. Run 2 different analyses, one on each scene with different front and rear y scan trackerdict = demo.makeOct1axis() -trackerdict = demo.analysis1axis(sensorsy=3, append=False) -trackerdict = demo.analysis1axis(sensorsy=3, sceneNum=1) +trackerdict = demo.analysis1axis(sensorsy=[1,3], append=False) +trackerdict = demo.analysis1axis(sensorsy=[3,2], sceneNum=1) -# In[14]: +# In[13]: # Include an AgriPV groundscan too trackerdict = demo.analysis1axisground(sceneNum=1, sensorsground=10, customname='Silvanas_') -# In[15]: +# In[14]: # show the initial irradiance results before continuing: @@ -154,7 +154,7 @@ # ## Calculating the Performance and Exporting the Results to a CSV -# In[16]: +# In[15]: # Calculate performance. @@ -193,7 +193,7 @@ trackerdict = demo.genCumSky1axis() trackerdict = demo.makeScene1axis(trackerdict, module = mymodule, sceneDict = sceneDict) trackerdict = demo.makeOct1axis() -trackerdict = demo.analysis1axis(modWanted = [2,4], sensorsy=3) +trackerdict = demo.analysis1axis(modWanted = [2,4], sensorsy=[2,3]) trackerdict = demo.analysis1axisground(sensorsground=10) @@ -211,3 +211,9 @@ # Results are also automatically saved in \results\Cumulative_Results.csv pd.read_csv(os.path.join('results','Cumulative_Results.csv')) + +# In[ ]: + + + + diff --git a/tests/test_bifacial_radiance.py b/tests/test_bifacial_radiance.py index 2fd4c187..0b3a160e 100644 --- a/tests/test_bifacial_radiance.py +++ b/tests/test_bifacial_radiance.py @@ -263,7 +263,7 @@ def test_1axis_gencumSky(): trackerdict = demo.makeOct1axis(trackerdict=minitrackerdict, singleindex=-5) # just run this for one timestep: -5 degrees trackerdict = demo.analysis1axis( modWanted=7, rowWanted=3, sensorsy=2, sceneNum=0) - assert trackerdict[-5.0]['AnalysisObj'][0].x[0] == -10.76304 + assert trackerdict[-5.0]['AnalysisObj'][0].x[0] == pytest.approx(-10.766, abs=.001) modscanfront = {} modscanfront = {'xstart': -5} trackerdict = demo.analysis1axis( sensorsy=2, modscanfront=modscanfront, sceneNum=0, customname='_test2') @@ -298,19 +298,17 @@ def test_SceneObj_makeSceneNxR_lowtilt(): (frontscan,backscan) = analysis.moduleAnalysis(scene) assert frontscan.pop('orient') == '-0.000 0.174 -0.985'# was 0,0,-11 in v0.2.4 - assert frontscan == pytest.approx({'Nx': 1, 'Ny': 9, 'Nz': 1, 'xinc': 0, 'yinc': 0.093556736536159757, - 'xstart': 4.627616431348303e-17,'ystart': -0.3778735578756446, - 'zinc': 0.016496576878358378, 'zstart': 0.23717753969161476, - 'sx_xinc': 0.0, 'sx_yinc':0.0, 'sx_zinc':0.0}) + assert frontscan == pytest.approx({'Nx': 1, 'Ny': 9, 'Nz': 1, 'xinc': 0, 'yinc': 0.09357, + 'xstart': 0,'ystart': -0.378, 'zinc': 0.0165, 'zstart': 0.2372, + 'sx_xinc': 0.0, 'sx_yinc':0.0, 'sx_zinc':0.0}, abs=.001) assert backscan.pop('orient') == '0.000 -0.174 0.985' # was 0,0,1 in v0.2.4 - assert backscan == pytest.approx({'Nx': 1, 'Ny': 9, 'Nz': 1, 'xinc': 0, 'yinc': 0.093556736536159757, - 'xstart': 4.580831740657635e-17, 'ystart': -0.3740532979669721, 'zinc': 0.016496576878358378, - 'zstart': 0.21551176912534617, - 'sx_xinc': 0.0, 'sx_yinc':0.0, 'sx_zinc':0.0}) + assert backscan == pytest.approx({'Nx': 1, 'Ny': 9, 'Nz': 1, 'xinc': 0, 'yinc': 0.09356, + 'xstart': 0, 'ystart': -0.374, 'zinc': 0.0165,'zstart': 0.2155, + 'sx_xinc': 0.0, 'sx_yinc':0.0, 'sx_zinc':0.0}, abs=.001) # zstart was 0.01 and zinc was 0 in v0.2.2 #assert scene.text == '!xform -rz -90 -t -0.795 0.475 0 -rx 10 -t 0 0 0.2 -a 20 -t 1.6 0 0 -a 7 -t 0 1.5 0 -i 1 -t -15.9 -4.5 0 -rz 0 objects\\simple_panel.rad' - assert scene.text[0:117] == '!xform -rx 10 -t 0 0 0.2824828843917919 -a 20 -t 1.6 0 0 -a 7 -t 0 1.5 0 -i 1 -t -14.4 -4.5 0 -rz 0 -t 0 0 0 "objects' #linux has different directory structure and will error here. + assert scene.text[0:105] == '!xform -rx 10 -t 0 0 0.2825 -a 20 -t 1.6 0 0 -a 7 -t 0 1.5 0 -i 1 -t -14.4 -4.5 0 -rz 0 -t 0 0 0 "objects' #linux has different directory structure and will error here. def test_SceneObj_makeSceneNxR_hightilt(): # test _makeSceneNxR(tilt, height, pitch, orientation = None, azimuth = 180, nMods = 20, nRows = 7, radname = None) @@ -342,19 +340,19 @@ def test_SceneObj_makeSceneNxR_hightilt(): ''' assert [float(x) for x in temp.split(' ')] == pytest.approx([-0.906, -0.016, -0.423]) #was 0,0,-1 in v0.2.4 - assert frontscan == pytest.approx({'Nx': 1, 'Ny': 9, 'Nz': 1, 'xinc': -0.040142620018581696, 'xstart': 0.1796000448657153, 'yinc': -0.0007006920388131139, - 'ystart': 0.0031349304442418674, 'zinc': 0.08609923976848174,'zstart': 0.2949742232650364, - 'sx_xinc': 0.0, 'sx_yinc':0.0, 'sx_zinc':0.0}) + assert frontscan == pytest.approx({'Nx': 1, 'Ny': 9, 'Nz': 1, 'xinc': -0.04013, 'xstart': 0.1796, 'yinc': -0.0007, + 'ystart': 0.00313, 'zinc': 0.0861,'zstart': 0.295, + 'sx_xinc': 0.0, 'sx_yinc':0.0, 'sx_zinc':0.0}, abs=.001) temp2 = backscan.pop('orient') assert [float(x) for x in temp2.split(' ')] == pytest.approx([0.906, 0.016, 0.423]) #was 0,0,1 in v0.2.4 assert backscan == pytest.approx({'Nx': 1, 'Ny': 9, 'Nz': 1, - 'xinc': -0.040142620018581696, 'xstart': 0.15966431032235584, - 'yinc': -0.0007006920388131139, 'ystart': 0.0027869509033958163, - 'zinc': 0.08609923976848174, 'zstart': 0.28567662150674106, - 'sx_xinc': 0.0, 'sx_yinc':0.0, 'sx_zinc':0.0}) + 'xinc': -0.0401, 'xstart': 0.1597, + 'yinc': -0.0007, 'ystart': 0.002787, + 'zinc': 0.0861, 'zstart': 0.2856, + 'sx_xinc': 0.0, 'sx_yinc':0.0, 'sx_zinc':0.0}, abs=.001) #assert scene.text == '!xform -rz -90 -t -0.795 0.475 0 -rx 65 -t 0 0 0.2 -a 20 -t 1.6 0 0 -a 7 -t 0 1.5 0 -i 1 -t -15.9 -4.5 0 -rz 91 objects\\simple_panel.rad' - assert scene.text[0:118] == '!xform -rx 65 -t 0 0 0.6304961988424087 -a 20 -t 1.6 0 0 -a 7 -t 0 1.5 0 -i 1 -t -14.4 -4.5 0 -rz 91 -t 0 0 0 "objects' + assert scene.text[0:106] == '!xform -rx 65 -t 0 0 0.6304 -a 20 -t 1.6 0 0 -a 7 -t 0 1.5 0 -i 1 -t -14.4 -4.5 0 -rz 91 -t 0 0 0 "objects' @@ -462,17 +460,25 @@ def test_analyzeRow(): scene = demo.makeScene('test-module',sceneDict) #makeScene creates a .rad file with 20 modules per row, 7 rows. octfile = demo.makeOct(demo.getfilelist()) # makeOct combines all of the ground, sky and object files into a .oct file. analysis = bifacial_radiance.AnalysisObj(octfile, demo.name) # return an analysis object including the scan dimensions for back irradiance - rowscan = analysis.analyzeRow(octfile = octfile, scene = scene, name = name, - rowWanted = 1, sensorsy = [3,3]) + rowscan = analysis.analyzeRow(octfile=octfile, scene=scene, name=name, + rowWanted=1, sensorsy=[5,3]) assert len(rowscan) == 2 assert rowscan.keys()[2] == 'z' - assert len(rowscan[rowscan.keys()[2]][0]) == 3 + assert len(rowscan[rowscan.keys()[2]][0]) == 5 # Assert z is the same for two different modules assert rowscan[rowscan.keys()[2]][0][0] == rowscan[rowscan.keys()[2]][1][0] # Assert Y is different for two different modules assert rowscan[rowscan.keys()[1]][0][0]+2 == rowscan[rowscan.keys()[1]][1][0] - assert (analysis.__printval__('x')[1] == 0) & (analysis.x[1] != 0) - + assert (analysis.__printval__('x')[2] == 0) & (analysis.x[2] == 0) + assert any( analysis.__printval__('Wm2Front') != analysis.Wm2Front) + temp = analysis.__repr__() # does the repr compile at all? + assert analysis.rearX == pytest.approx([0.25, 0, -0.25]) + assert analysis.x == pytest.approx([.333, .167, 0, -.167, -.333], abs=.001) + # test default xscan and yscan = 1 + rowscan = analysis.analyzeRow(octfile=octfile, scene=scene, name=name, + rowWanted=1, sensorsy=None, sensorsx=None) + assert analysis.x == pytest.approx([0]) + assert analysis.rearX == pytest.approx([0]) def test_addMaterialGroundRad(): # test addMaterialGroundRad. requires metdata for boulder. @@ -522,7 +528,7 @@ def test_verticalmoduleSouthFacing(): assert analysis.x[1] == analysis.x[2] assert round(analysis.x[0]) == 0 assert round(analysis.x[0]) == 0 - assert analysis.z[3] == 2.9 + assert analysis.z[3] == pytest.approx(2.9, abs=0.002) def test_verticalmoduleEastFacing(): # test full routine for Vertical Modules. @@ -551,7 +557,7 @@ def test_verticalmoduleEastFacing(): assert analysis.x[1] == analysis.x[2] assert round(analysis.y[0]) == 0 assert round(analysis.y[0]) == 0 - assert analysis.z[3] == 2.9 + assert analysis.z[3] == pytest.approx(2.9, abs=0.003) def test_tiltandazimuthModuleTest(): # test full routine for Vertical Modules. diff --git a/tests/test_gencumsky.py b/tests/test_gencumsky.py index d909d3fa..1ae9d1cf 100644 --- a/tests/test_gencumsky.py +++ b/tests/test_gencumsky.py @@ -82,7 +82,9 @@ def test_SingleModule_gencumsky_modelchain(): assert analysis.mattype[0][:12] == 'a4.1.a0.test' assert analysis.rearMat[0][:12] == 'a4.1.a0.test' assert np.mean(analysis.x) == pytest.approx(0) - assert np.mean(analysis.rearY) == pytest.approx(0.00017, abs = 0.00001) + rearY = [-0.374, -0.28, -0.187, -0.093, 0.0, 0.094, 0.188, 0.281, 0.374] + for (a,b) in zip(rearY, analysis.rearY): + assert a == pytest.approx(b, abs=.001) if DEBUG: print(np.mean(analysis.Wm2Front)) print(np.mean(analysis.Wm2Back)) diff --git a/tests/test_module.py b/tests/test_module.py index 7bcb99e9..7e45dbed 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -118,14 +118,14 @@ def test_moduleFrameandOmegas(): scene = demo.makeScene(module,sceneDict) analysis = bifacial_radiance.AnalysisObj() # return an analysis object including the scan dimensions for back irradiance frontscan, backscan = analysis.moduleAnalysis(scene, sensorsy=1) # Gives us the dictionaries with coordinates - assert backscan['zstart'] == expectedModuleZ[ii] + assert backscan['zstart'] == pytest.approx(expectedModuleZ[ii], abs=.001) # read the data back from module.json and check again module = demo.makeModule(name='test-module') scene = demo.makeScene('test-module',sceneDict) analysis = bifacial_radiance.AnalysisObj() # return an analysis object including the scan dimensions for back irradiance frontscan, backscan = analysis.moduleAnalysis(scene, sensorsy=1) - assert backscan['zstart'] == expectedModuleZ[ii] + assert backscan['zstart'] == pytest.approx(expectedModuleZ[ii], abs=.001) # do it again by passing everying at once module = bifacial_radiance.ModuleObj(name='test-module',x=2, y=1, zgap = zgap, frameParams=frameParams, omegaParams=omegaParams, @@ -134,7 +134,7 @@ def test_moduleFrameandOmegas(): scene = demo.makeScene(module, sceneDict) analysis = bifacial_radiance.AnalysisObj() # return an analysis object including the scan dimensions for back irradiance frontscan, backscan = analysis.moduleAnalysis(scene, sensorsy=1) # Gives us the dictionaries with coordinates - assert backscan['zstart'] == expectedModuleZ[0] + assert backscan['zstart'] == pytest.approx(expectedModuleZ[0], abs=.001) # omega default values module.addOmega() @@ -151,7 +151,7 @@ def test_moduleFrameandOmegas(): scene = demo.makeScene(module, sceneDict) analysis = bifacial_radiance.AnalysisObj() # return an analysis object including the scan dimensions for back irradiance frontscan, backscan = analysis.moduleAnalysis(scene, sensorsy=10) # Gives us the dictionaries with coordinates - assert backscan['xstart'] == pytest.approx(0.792) + assert backscan['xstart'] == pytest.approx(0.792, abs=.001) def test_GlassModule(): # test the cell-level module generation