From 4175a4fe658315a46b9b9784d92aa5a496a0c720 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Fri, 11 Nov 2022 19:19:08 -0800 Subject: [PATCH 01/40] implemented gpoa limit lorenz check --- pvanalytics/data/lorenz_poa_test_dataset.csv | 577 +++++++++++++++++++ pvanalytics/quality/irradiance.py | 132 +++++ pvanalytics/tests/quality/test_irradiance.py | 28 + 3 files changed, 737 insertions(+) create mode 100644 pvanalytics/data/lorenz_poa_test_dataset.csv diff --git a/pvanalytics/data/lorenz_poa_test_dataset.csv b/pvanalytics/data/lorenz_poa_test_dataset.csv new file mode 100644 index 000000000..48ea64a6c --- /dev/null +++ b/pvanalytics/data/lorenz_poa_test_dataset.csv @@ -0,0 +1,577 @@ +Time stamp,ghi,poa_global,solar_zenith,azimuth,surface_tilt,aoi,poa_global_limit_bool_flag,poa_global_limit_int_flag +1/1/2022 0:00,0,0,163.276,356.877,0,0,TRUE,0 +1/1/2022 0:05,0,0,163.295,0.875773,0,0,TRUE,0 +1/1/2022 0:10,0,0,163.247,4.86776,0,0,TRUE,0 +1/1/2022 0:15,0,0,163.132,8.82456,0,0,TRUE,0 +1/1/2022 0:20,0,0,162.952,12.7191,0,0,TRUE,0 +1/1/2022 0:25,0,0,162.709,16.5273,0,0,TRUE,0 +1/1/2022 0:30,0,0,162.406,20.2283,0,0,TRUE,0 +1/1/2022 0:35,0,0,162.045,23.8058,0,0,TRUE,0 +1/1/2022 0:40,0,0,161.631,27.2477,0,0,TRUE,0 +1/1/2022 0:45,0,0,161.166,30.5457,0,0,TRUE,0 +1/1/2022 0:50,0,0,160.655,33.6958,0,0,TRUE,0 +1/1/2022 0:55,0,0,160.1,36.6968,0,0,TRUE,0 +1/1/2022 1:00,0,0,159.507,39.5502,0,0,TRUE,0 +1/1/2022 1:05,0,0,158.877,42.2597,0,0,TRUE,0 +1/1/2022 1:10,0,0,158.215,44.8305,0,0,TRUE,0 +1/1/2022 1:15,0,0,157.523,47.2687,0,0,TRUE,0 +1/1/2022 1:20,0,0,156.804,49.5813,0,0,TRUE,0 +1/1/2022 1:25,0,0,156.061,51.7756,0,0,TRUE,0 +1/1/2022 1:30,0,0,155.295,53.8588,0,0,TRUE,0 +1/1/2022 1:35,0,0,154.509,55.8383,0,0,TRUE,0 +1/1/2022 1:40,0,0,153.705,57.7212,0,0,TRUE,0 +1/1/2022 1:45,0,0,152.884,59.5143,0,0,TRUE,0 +1/1/2022 1:50,0,0,152.049,61.224,0,0,TRUE,0 +1/1/2022 1:55,0,0,151.2,62.8565,0,0,TRUE,0 +1/1/2022 2:00,0,0,150.339,64.4175,0,0,TRUE,0 +1/1/2022 2:05,0,0,149.467,65.9122,0,0,TRUE,0 +1/1/2022 2:10,0,0,148.585,67.3457,0,0,TRUE,0 +1/1/2022 2:15,0,0,147.693,68.7224,0,0,TRUE,0 +1/1/2022 2:20,0,0,146.794,70.0468,0,0,TRUE,0 +1/1/2022 2:25,0,0,145.887,71.3225,0,0,TRUE,0 +1/1/2022 2:30,0,0,144.973,72.5533,0,0,TRUE,0 +1/1/2022 2:35,0,0,144.054,73.7426,0,0,TRUE,0 +1/1/2022 2:40,0,0,143.128,74.8932,0,0,TRUE,0 +1/1/2022 2:45,0,0,142.198,76.0082,0,0,TRUE,0 +1/1/2022 2:50,0,0,141.263,77.09,0,0,TRUE,0 +1/1/2022 2:55,0,0,140.325,78.1411,0,0,TRUE,0 +1/1/2022 3:00,0,0,139.383,79.1638,0,0,TRUE,0 +1/1/2022 3:05,0,0,138.437,80.1601,0,0,TRUE,0 +1/1/2022 3:10,0,0,137.489,81.1319,0,0,TRUE,0 +1/1/2022 3:15,0,0,136.538,82.0809,0,0,TRUE,0 +1/1/2022 3:20,0,0,135.585,83.0088,0,0,TRUE,0 +1/1/2022 3:25,0,0,134.631,83.9172,0,0,TRUE,0 +1/1/2022 3:30,0,0,133.674,84.8074,0,0,TRUE,0 +1/1/2022 3:35,0,0,132.717,85.6807,0,0,TRUE,0 +1/1/2022 3:40,0,0,131.758,86.5385,0,0,TRUE,0 +1/1/2022 3:45,0,0,130.798,87.3818,0,0,TRUE,0 +1/1/2022 3:50,0,0,129.838,88.2117,0,0,TRUE,0 +1/1/2022 3:55,0,0,128.877,89.0293,0,0,TRUE,0 +1/1/2022 4:00,0,0,127.916,89.8354,0,0,TRUE,0 +1/1/2022 4:05,0,0,126.955,90.631,0,0,TRUE,0 +1/1/2022 4:10,0,0,125.994,91.4169,0,0,TRUE,0 +1/1/2022 4:15,0,0,125.034,92.1939,0,0,TRUE,0 +1/1/2022 4:20,0,0,124.074,92.9628,0,0,TRUE,0 +1/1/2022 4:25,0,0,123.115,93.7242,0,0,TRUE,0 +1/1/2022 4:30,0,0,122.156,94.4788,0,0,TRUE,0 +1/1/2022 4:35,0,0,121.198,95.2272,0,0,TRUE,0 +1/1/2022 4:40,0,0,120.242,95.9701,0,0,TRUE,0 +1/1/2022 4:45,0,0,119.287,96.7081,0,0,TRUE,0 +1/1/2022 4:50,0,0,118.333,97.4416,0,0,TRUE,0 +1/1/2022 4:55,0,0,117.381,98.1713,0,0,TRUE,0 +1/1/2022 5:00,0,0,116.431,98.8975,0,0,TRUE,0 +1/1/2022 5:05,0,0,115.482,99.6209,0,0,TRUE,0 +1/1/2022 5:10,0,0,114.536,100.342,0,0,TRUE,0 +1/1/2022 5:15,0,0,113.591,101.061,0,0,TRUE,0 +1/1/2022 5:20,0,0,112.65,101.778,0,0,TRUE,0 +1/1/2022 5:25,0,0,111.71,102.495,0,0,TRUE,0 +1/1/2022 5:30,0,0,110.773,103.21,0,0,TRUE,0 +1/1/2022 5:35,0,0,109.839,103.925,0,0,TRUE,0 +1/1/2022 5:40,0,0,108.908,104.641,0,0,TRUE,0 +1/1/2022 5:45,0,0,107.979,105.356,0,0,TRUE,0 +1/1/2022 5:50,0,0,107.054,106.073,0,0,TRUE,0 +1/1/2022 5:55,0,0,106.132,106.791,0,0,TRUE,0 +1/1/2022 6:00,0,0,105.214,107.51,0,0,TRUE,0 +1/1/2022 6:05,0,0,104.299,108.231,0,0,TRUE,0 +1/1/2022 6:10,0,0,103.388,108.954,0,0,TRUE,0 +1/1/2022 6:15,0,0,102.482,109.68,0,0,TRUE,0 +1/1/2022 6:20,0,0,101.579,110.408,0,0,TRUE,0 +1/1/2022 6:25,0,0,100.68,111.14,0,0,TRUE,0 +1/1/2022 6:30,0,0,99.786,111.875,0,0,TRUE,0 +1/1/2022 6:35,0,0,98.8964,112.614,0,0,TRUE,0 +1/1/2022 6:40,0,0,98.0117,113.357,0,0,TRUE,0 +1/1/2022 6:45,0,0,97.1319,114.104,0,0,TRUE,0 +1/1/2022 6:50,0,0,96.2572,114.856,0,0,TRUE,0 +1/1/2022 6:55,0,0,95.3878,115.613,0,0,TRUE,0 +1/1/2022 7:00,0,0,94.524,116.375,0,0,TRUE,0 +1/1/2022 7:05,0,0,93.6658,117.143,0,0,TRUE,0 +1/1/2022 7:10,0,0,92.8136,117.916,0,0,TRUE,0 +1/1/2022 7:15,0,0,91.9674,118.696,0,0,TRUE,0 +1/1/2022 7:20,0,0,91.1275,119.482,0,0,TRUE,0 +1/1/2022 7:25,0,0,89.8597,120.275,25,77.568,TRUE,0 +1/1/2022 7:30,0,0,89.1277,121.074,25,76.5906,TRUE,0 +1/1/2022 7:35,9,8.578377274,88.3761,121.881,25,75.5932,TRUE,0 +1/1/2022 7:40,14,13.34416513,87.6119,122.696,25,74.5822,TRUE,0 +1/1/2022 7:45,18,17.75723823,86.8419,123.518,25,73.5639,TRUE,0 +1/1/2022 7:50,25.1649,31.65355269,86.0707,124.348,25,72.5427,TRUE,0 +1/1/2022 7:55,25,25.10147149,85.3014,125.187,25,71.5212,TRUE,0 +1/1/2022 8:00,31,32.01611145,84.5359,126.034,25,70.5014,TRUE,0 +1/1/2022 8:05,31,30.86473874,83.7757,126.89,25,69.4847,TRUE,0 +1/1/2022 8:10,41,42.70760951,83.0219,127.755,25,68.472,TRUE,0 +1/1/2022 8:15,54.9143,72.87008652,82.2752,128.629,25,67.4642,TRUE,0 +1/1/2022 8:20,79.1681,142.7961714,81.5363,129.513,25,66.462,TRUE,0 +1/1/2022 8:25,142.129,340.2019892,80.8059,130.407,25,65.4658,TRUE,0 +1/1/2022 8:30,156.227,362.8414742,80.0844,131.311,25,64.4763,TRUE,0 +1/1/2022 8:35,60,61.44389945,79.3722,132.225,25,63.4939,TRUE,0 +1/1/2022 8:40,104.898,160.6907828,78.6698,133.149,25,62.5193,TRUE,0 +1/1/2022 8:45,138.613,256.2299884,77.9776,134.084,25,61.5527,TRUE,0 +1/1/2022 8:50,140.278,238.7972614,77.2959,135.03,25,60.5948,TRUE,0 +1/1/2022 8:55,165.521,306.3328565,76.6252,135.986,25,59.6461,TRUE,0 +1/1/2022 9:00,172.938,313.0325635,75.9658,136.954,25,58.7069,TRUE,0 +1/1/2022 9:05,199.473,377.750528,75.318,137.934,25,57.778,TRUE,0 +1/1/2022 9:10,188.045,327.783909,74.6824,138.924,25,56.8598,TRUE,0 +1/1/2022 9:15,274.055,542.4279583,74.0591,139.927,25,55.9529,TRUE,0 +1/1/2022 9:20,285.151,558.6245657,73.4485,140.94,25,55.0579,TRUE,0 +1/1/2022 9:25,229.749,403.7468492,72.8511,141.966,25,54.1755,TRUE,0 +1/1/2022 9:30,309.241,593.6303563,72.2673,143.004,25,53.3062,TRUE,0 +1/1/2022 9:35,319.783,610.0858369,71.6972,144.053,25,52.4508,TRUE,0 +1/1/2022 9:40,330.092,624.8654541,71.1414,145.115,25,51.6099,TRUE,0 +1/1/2022 9:45,290.263,525.1141086,70.6002,146.188,25,50.7843,TRUE,0 +1/1/2022 9:50,248.897,391.3345596,70.0739,147.273,25,49.9748,TRUE,0 +1/1/2022 9:55,257.562,403.9750664,69.5629,148.37,25,49.1823,TRUE,0 +1/1/2022 10:00,314.22,554.9322161,69.0676,149.479,25,48.4074,TRUE,0 +1/1/2022 10:05,275.345,430.1144492,68.5883,150.6,25,47.6512,TRUE,0 +1/1/2022 10:10,183.217,223.8326862,68.1254,151.732,25,46.9146,TRUE,0 +1/1/2022 10:15,301.55,488.4188296,67.6793,152.876,25,46.1984,TRUE,0 +1/1/2022 10:20,199.55,246.8655903,67.2503,154.031,25,45.5037,TRUE,0 +1/1/2022 10:25,107,106.3686218,66.8387,155.197,25,44.8315,TRUE,0 +1/1/2022 10:30,101,99.67334287,66.4449,156.374,25,44.1828,TRUE,0 +1/1/2022 10:35,111,110.4424688,66.0692,157.561,25,43.5587,TRUE,0 +1/1/2022 10:40,158.993,169.4522788,65.712,158.758,25,42.9602,TRUE,0 +1/1/2022 10:45,112,111.2575789,65.3656,159.965,25,42.3809,TRUE,0 +1/1/2022 10:50,117,116.6125077,65.0463,161.182,25,41.8371,TRUE,0 +1/1/2022 10:55,160.973,170.1573677,64.7464,162.408,25,41.3223,TRUE,0 +1/1/2022 11:00,129,129.6317869,64.466,163.642,25,40.8376,TRUE,0 +1/1/2022 11:05,224.766,274.08645,64.2055,164.885,25,40.384,TRUE,0 +1/1/2022 11:10,321.48,471.2991348,63.9652,166.135,25,39.9626,TRUE,0 +1/1/2022 11:15,239.813,296.6932352,63.7453,167.392,25,39.5744,TRUE,0 +1/1/2022 11:20,388.905,629.7295456,63.5459,168.656,25,39.2205,TRUE,0 +1/1/2022 11:25,168.724,178.3684175,63.3673,169.926,25,38.9018,TRUE,0 +1/1/2022 11:30,298.244,407.3131685,63.2097,171.201,25,38.6191,TRUE,0 +1/1/2022 11:35,137.906,139.4696505,63.0733,172.481,25,38.3733,TRUE,0 +1/1/2022 11:40,178.638,190.6689829,62.9581,173.765,25,38.165,TRUE,0 +1/1/2022 11:45,136.456,137.4613393,62.8644,175.052,25,37.995,TRUE,0 +1/1/2022 11:50,80,76.99264255,62.7921,176.342,25,37.8636,TRUE,0 +1/1/2022 11:55,122,121.2207916,62.7414,177.635,25,37.7714,TRUE,0 +1/1/2022 12:00,160.126,166.3597657,62.7123,178.928,25,37.7185,TRUE,0 +1/1/2022 12:05,117,115.7909258,62.7049,180.222,25,37.7052,TRUE,0 +1/1/2022 12:10,138.917,140.4285033,62.7192,181.516,25,37.7315,TRUE,0 +1/1/2022 12:15,374.936,581.8482185,62.7551,182.809,25,37.7973,TRUE,0 +1/1/2022 12:20,136.457,137.4385176,62.8127,184.1,25,37.9025,TRUE,0 +1/1/2022 12:25,98,95.58791471,62.8917,185.39,25,38.0466,TRUE,0 +1/1/2022 12:30,130,130.0728932,62.9923,186.676,25,38.2293,TRUE,0 +1/1/2022 12:35,116,114.8337761,63.1142,187.959,25,38.45,TRUE,0 +1/1/2022 12:40,361.793,547.0604265,63.2574,189.237,25,38.708,TRUE,0 +1/1/2022 12:45,137.895,139.6263369,63.4216,190.511,25,39.0027,TRUE,0 +1/1/2022 12:50,132,132.5556918,63.6068,191.779,25,39.3331,TRUE,0 +1/1/2022 12:55,116,115.0585871,63.8127,193.041,25,39.6984,TRUE,0 +1/1/2022 13:00,229.145,280.6189114,64.0392,194.296,25,40.0976,TRUE,0 +1/1/2022 13:05,122,121.7974658,64.2859,195.544,25,40.5297,TRUE,0 +1/1/2022 13:10,138.289,140.9656652,64.5527,196.784,25,40.9936,TRUE,0 +1/1/2022 13:15,321.979,482.4477144,64.8393,198.016,25,41.4884,TRUE,0 +1/1/2022 13:20,369.987,618.942026,65.1454,199.239,25,42.0129,TRUE,0 +1/1/2022 13:25,413.807,725.3729818,65.4708,200.453,25,42.5659,TRUE,0 +1/1/2022 13:30,441.017,783.2720213,65.8151,201.657,25,43.1465,TRUE,0 +1/1/2022 13:35,434.488,773.81293,66.1781,202.851,25,43.7534,TRUE,0 +1/1/2022 13:40,427.123,763.4409701,66.5594,204.035,25,44.3856,TRUE,0 +1/1/2022 13:45,418.519,751.4101778,66.9587,205.209,25,45.042,TRUE,0 +1/1/2022 13:50,410.682,740.4285033,67.3757,206.371,25,45.7216,TRUE,0 +1/1/2022 13:55,401.619,727.81184,67.81,207.523,25,46.4234,TRUE,0 +1/1/2022 14:00,392.967,715.5664555,68.2613,208.663,25,47.1462,TRUE,0 +1/1/2022 14:05,383.117,701.7167382,68.7292,209.792,25,47.8893,TRUE,0 +1/1/2022 14:10,326.23,2000,69.2133,210.909,25,48.6515,FALSE,3 +1/1/2022 14:15,340.548,2000,69.7134,212.014,25,49.4321,FALSE,3 +1/1/2022 14:20,277.837,,70.229,213.108,25,50.2302,FALSE,1 +1/1/2022 14:25,341.918,,70.7598,214.189,25,51.0448,FALSE,1 +1/1/2022 14:30,331.587,,71.3054,215.259,25,51.8753,FALSE,1 +1/1/2022 14:35,320.523,,71.8654,216.317,25,52.7208,FALSE,1 +1/1/2022 14:40,308.697,595.4050003,72.4395,217.363,25,53.5806,TRUE,0 +1/1/2022 14:45,299.135,583.0403978,73.0273,218.397,25,54.454,TRUE,0 +1/1/2022 14:50,286.813,565.1747394,73.6285,219.419,25,55.3404,TRUE,0 +1/1/2022 14:55,274.188,546.7061789,74.2426,220.43,25,56.239,TRUE,0 +1/1/2022 15:00,262.563,529.6239526,74.8693,221.428,25,57.1492,TRUE,0 +1/1/2022 15:05,249.7,510.6546767,75.5083,222.416,25,58.0706,TRUE,0 +1/1/2022 15:10,236.644,491.235779,76.1591,223.392,25,59.0024,TRUE,0 +1/1/2022 15:15,222.441,470.0354248,76.8215,224.356,25,59.9442,TRUE,0 +1/1/2022 15:20,209.138,449.894407,77.4949,225.31,25,60.8954,TRUE,0 +1/1/2022 15:25,195.786,429.4911097,78.1791,226.252,25,61.8555,TRUE,0 +1/1/2022 15:30,182.433,408.8970638,78.8736,227.184,25,62.824,TRUE,0 +1/1/2022 15:35,168.949,387.7307719,79.578,228.105,25,63.8003,TRUE,0 +1/1/2022 15:40,154.593,365.1304585,80.2919,229.016,25,64.784,TRUE,0 +1/1/2022 15:45,141.418,344.0050412,81.0148,229.917,25,65.7745,TRUE,0 +1/1/2022 15:50,128.628,324.7782546,81.7463,230.808,25,66.7713,TRUE,0 +1/1/2022 15:55,115.488,302.7372437,82.4857,231.689,25,67.7737,TRUE,0 +1/1/2022 16:00,101.656,279.269705,83.2323,232.561,25,68.7812,TRUE,0 +1/1/2022 16:05,88.1263,255.6260644,83.9854,233.423,25,69.7928,TRUE,0 +1/1/2022 16:10,74.9488,231.689829,84.7439,234.277,25,70.8076,TRUE,0 +1/1/2022 16:15,62.3854,206.0586552,85.5065,235.121,25,71.8243,TRUE,0 +1/1/2022 16:20,50.5179,179.6965052,86.2711,235.958,25,72.841,TRUE,0 +1/1/2022 16:25,39.4322,153.3193678,87.035,236.786,25,73.8551,TRUE,0 +1/1/2022 16:30,29.4753,118.320049,87.7938,237.606,25,74.8626,TRUE,0 +1/1/2022 16:35,10,9.531541658,88.5412,238.418,25,75.8576,TRUE,0 +1/1/2022 16:40,0,0,89.2679,239.223,25,76.8317,TRUE,0 +1/1/2022 16:45,0,0,89.9669,240.021,25,77.7782,TRUE,0 +1/1/2022 16:50,0,0,91.3925,240.812,0,0,TRUE,0 +1/1/2022 16:55,0,0,92.2343,241.597,0,0,TRUE,0 +1/1/2022 17:00,0,0,93.0824,242.375,0,0,TRUE,0 +1/1/2022 17:05,0,0,93.9365,243.147,0,0,TRUE,0 +1/1/2022 17:10,0,0,94.7965,243.914,0,0,TRUE,0 +1/1/2022 17:15,0,0,95.6621,244.675,0,0,TRUE,0 +1/1/2022 17:20,0,0,96.5331,245.43,0,0,TRUE,0 +1/1/2022 17:25,0,0,97.4094,246.181,0,0,TRUE,0 +1/1/2022 17:30,0,0,98.2907,246.928,0,0,TRUE,0 +1/1/2022 17:35,0,0,99.177,247.67,0,0,TRUE,0 +1/1/2022 17:40,0,0,100.068,248.408,0,0,TRUE,0 +1/1/2022 17:45,0,0,100.963,249.143,0,0,TRUE,0 +1/1/2022 17:50,0,0,101.863,249.874,0,0,TRUE,0 +1/1/2022 17:55,0,0,102.767,250.602,0,0,TRUE,0 +1/1/2022 18:00,0,0,103.676,251.328,0,0,TRUE,0 +1/1/2022 18:05,0,0,104.588,252.051,0,0,TRUE,0 +1/1/2022 18:10,0,,105.503,252.772,0,0,FALSE,1 +1/1/2022 18:15,0,,106.423,253.491,0,0,FALSE,1 +1/1/2022 18:20,0,,107.345,254.209,0,0,FALSE,1 +1/1/2022 18:25,0,,108.271,254.926,0,0,FALSE,1 +1/1/2022 18:30,0,,109.201,255.643,0,0,FALSE,1 +1/1/2022 18:35,0,,110.133,256.359,0,0,FALSE,1 +1/1/2022 18:40,0,,111.068,257.075,0,0,FALSE,1 +1/1/2022 18:45,0,,112.005,257.792,0,0,FALSE,1 +1/1/2022 18:50,0,,112.946,258.509,0,0,FALSE,1 +1/1/2022 18:55,0,,113.888,259.228,0,0,FALSE,1 +1/1/2022 19:00,0,1000,114.833,259.949,0,0,FALSE,3 +1/1/2022 19:05,0,1000,115.78,260.671,0,0,FALSE,3 +1/1/2022 19:10,0,1000,116.729,261.397,0,0,FALSE,3 +1/1/2022 19:15,0,1000,117.68,262.125,0,0,FALSE,3 +1/1/2022 19:20,0,1000,118.632,262.857,0,0,FALSE,3 +1/1/2022 19:25,0,1000,119.586,263.593,0,0,FALSE,3 +1/1/2022 19:30,0,1000,120.542,264.334,0,0,FALSE,3 +1/1/2022 19:35,0,1000,121.498,265.079,0,0,FALSE,3 +1/1/2022 19:40,0,1000,122.456,265.831,0,0,FALSE,3 +1/1/2022 19:45,0,1000,123.414,266.589,0,0,FALSE,3 +1/1/2022 19:50,0,1000,124.374,267.354,0,0,FALSE,3 +1/1/2022 19:55,0,1000,125.334,268.127,0,0,FALSE,3 +1/1/2022 20:00,0,1000,126.294,268.908,0,0,FALSE,3 +1/1/2022 20:05,0,1000,127.255,269.699,0,0,FALSE,3 +1/1/2022 20:10,0,1000,128.215,270.499,0,0,FALSE,3 +1/1/2022 20:15,0,1000,129.176,271.311,0,0,FALSE,3 +1/1/2022 20:20,0,1000,130.136,272.134,0,0,FALSE,3 +1/1/2022 20:25,0,1000,131.096,272.97,0,0,FALSE,3 +1/1/2022 20:30,0,0,132.055,273.819,0,0,TRUE,0 +1/1/2022 20:35,0,0,133.013,274.684,0,0,TRUE,0 +1/1/2022 20:40,0,0,133.97,275.565,0,0,TRUE,0 +1/1/2022 20:45,0,0,134.925,276.463,0,0,TRUE,0 +1/1/2022 20:50,0,0,135.879,277.379,0,0,TRUE,0 +1/1/2022 20:55,0,0,136.831,278.316,0,0,TRUE,0 +1/1/2022 21:00,0,0,137.78,279.274,0,0,TRUE,0 +1/1/2022 21:05,0,0,138.727,280.256,0,0,TRUE,0 +1/1/2022 21:10,0,0,139.67,281.263,0,0,TRUE,0 +1/1/2022 21:15,0,0,140.611,282.298,0,0,TRUE,0 +1/1/2022 21:20,0,0,141.548,283.361,0,0,TRUE,0 +1/1/2022 21:25,0,0,142.48,284.456,0,0,TRUE,0 +1/1/2022 21:30,0,0,143.408,285.585,0,0,TRUE,0 +1/1/2022 21:35,0,0,144.331,286.751,0,0,TRUE,0 +1/1/2022 21:40,0,0,145.247,287.956,0,0,TRUE,0 +1/1/2022 21:45,0,0,146.158,289.205,0,0,TRUE,0 +1/1/2022 21:50,0,0,147.062,290.499,0,0,TRUE,0 +1/1/2022 21:55,0,0,147.957,291.843,0,0,TRUE,0 +1/1/2022 22:00,0,0,,293.241,0,,FALSE,1 +1/1/2022 22:05,0,0,,294.698,0,,FALSE,1 +1/1/2022 22:10,0,0,,296.217,0,,FALSE,1 +1/1/2022 22:15,0,0,,297.804,0,,FALSE,1 +1/1/2022 22:20,0,0,,299.465,0,,FALSE,1 +1/1/2022 22:25,0,0,,301.204,0,,FALSE,1 +1/1/2022 22:30,0,0,,303.029,0,,FALSE,1 +1/1/2022 22:35,0,0,,304.946,0,,FALSE,1 +1/1/2022 22:40,0,0,,306.962,0,,FALSE,1 +1/1/2022 22:45,0,0,,309.083,0,,FALSE,1 +1/1/2022 22:50,0,0,,311.318,0,,FALSE,1 +1/1/2022 22:55,0,0,,313.673,0,,FALSE,1 +1/1/2022 23:00,0,0,,316.155,0,,FALSE,1 +1/1/2022 23:05,0,0,,318.771,0,,FALSE,1 +1/1/2022 23:10,0,0,,321.527,0,,FALSE,1 +1/1/2022 23:15,0,0,,324.428,0,,FALSE,1 +1/1/2022 23:20,0,0,,327.475,0,,FALSE,1 +1/1/2022 23:25,0,0,,330.67,0,,FALSE,1 +1/1/2022 23:30,0,0,,334.01,0,,FALSE,1 +1/1/2022 23:35,0,0,,337.49,0,0,FALSE,1 +1/1/2022 23:40,0,0,,341.101,0,0,FALSE,1 +1/1/2022 23:45,0,0,,344.828,0,0,FALSE,1 +1/1/2022 23:50,0,0,,348.655,0,0,FALSE,1 +1/1/2022 23:55,0,0,,352.559,0,0,FALSE,1 +1/2/2022 0:00,0,0,163.189,356.515,0,0,TRUE,0 +1/2/2022 0:05,0,0,163.213,0.495524,0,0,TRUE,0 +1/2/2022 0:10,0,0,163.171,4.47276,0,0,TRUE,0 +1/2/2022 0:15,0,0,163.063,8.41791,0,0,TRUE,0 +1/2/2022 0:20,0,0,162.89,12.3041,0,0,TRUE,0 +1/2/2022 0:25,0,0,162.654,16.107,0,0,TRUE,0 +1/2/2022 0:30,0,0,162.357,19.8059,0,0,TRUE,0 +1/2/2022 0:35,0,0,162.003,23.3841,0,0,TRUE,0 +1/2/2022 0:40,0,0,161.595,26.8291,0,0,TRUE,0 +1/2/2022 0:45,0,0,161.137,30.1324,0,0,TRUE,0 +1/2/2022 0:50,0,0,160.631,33.2895,0,0,TRUE,0 +1/2/2022 0:55,0,0,160.083,36.2987,0,0,TRUE,0 +1/2/2022 1:00,0,0,159.494,39.1614,0,0,TRUE,0 +1/2/2022 1:05,0,0,158.87,41.8809,0,0,TRUE,0 +1/2/2022 1:10,0,0,158.212,44.4621,0,0,TRUE,0 +1/2/2022 1:15,0,0,157.524,46.911,0,0,TRUE,0 +1/2/2022 1:20,0,0,156.809,49.2342,0,0,TRUE,0 +1/2/2022 1:25,0,0,156.069,51.439,0,0,TRUE,0 +1/2/2022 1:30,0,0,155.306,53.5326,0,0,TRUE,0 +1/2/2022 1:35,0,0,154.524,55.5222,0,0,TRUE,0 +1/2/2022 1:40,0,0,153.723,57.4148,0,0,TRUE,0 +1/2/2022 1:45,0,0,152.905,59.2173,0,0,TRUE,0 +1/2/2022 1:50,0,0,152.072,60.936,0,0,TRUE,0 +1/2/2022 1:55,0,0,151.225,62.577,0,0,TRUE,0 +1/2/2022 2:00,0,0,150.366,64.1461,0,0,TRUE,0 +1/2/2022 2:05,0,0,149.496,65.6486,0,0,TRUE,0 +1/2/2022 2:10,0,0,148.615,67.0895,0,0,TRUE,0 +1/2/2022 2:15,0,0,147.725,68.4733,0,0,TRUE,0 +1/2/2022 2:20,0,0,146.827,69.8042,0,0,TRUE,0 +1/2/2022 2:25,0,0,145.922,71.0863,0,0,TRUE,0 +1/2/2022 2:30,0,0,145.009,72.323,0,0,TRUE,0 +1/2/2022 2:35,0,0,144.091,73.5178,0,0,TRUE,0 +1/2/2022 2:40,0,0,143.166,74.6738,0,0,TRUE,0 +1/2/2022 2:45,0,0,142.237,75.7938,0,0,TRUE,0 +1/2/2022 2:50,0,0,141.303,76.8804,0,0,TRUE,0 +1/2/2022 2:55,0,0,140.365,77.936,0,0,TRUE,0 +1/2/2022 3:00,0,0,139.424,78.963,0,0,TRUE,0 +1/2/2022 3:05,0,0,138.479,79.9633,0,0,TRUE,0 +1/2/2022 3:10,0,0,137.531,80.9388,0,0,TRUE,0 +1/2/2022 3:15,0,0,136.581,81.8915,0,0,TRUE,0 +1/2/2022 3:20,0,0,135.629,82.8228,0,0,TRUE,0 +1/2/2022 3:25,0,0,134.674,83.7344,0,0,TRUE,0 +1/2/2022 3:30,0,0,133.718,84.6277,0,0,TRUE,0 +1/2/2022 3:35,0,0,132.761,85.5039,0,0,TRUE,0 +1/2/2022 3:40,0,0,131.802,86.3644,0,0,TRUE,0 +1/2/2022 3:45,0,0,130.843,87.2103,0,0,TRUE,0 +1/2/2022 3:50,0,0,129.882,88.0427,0,0,TRUE,0 +1/2/2022 3:55,0,0,128.922,88.8626,0,0,TRUE,0 +1/2/2022 4:00,0,0,127.961,89.6709,0,0,TRUE,0 +1/2/2022 4:05,0,0,127,90.4686,0,0,TRUE,0 +1/2/2022 4:10,0,0,126.039,91.2564,0,0,TRUE,0 +1/2/2022 4:15,0,0,125.078,92.0353,0,0,TRUE,0 +1/2/2022 4:20,0,0,124.118,92.8059,0,0,TRUE,0 +1/2/2022 4:25,0,0,123.159,93.5689,0,0,TRUE,0 +1/2/2022 4:30,0,0,122.2,94.3251,0,0,TRUE,0 +1/2/2022 4:35,0,0,121.242,95.075,0,0,TRUE,0 +1/2/2022 4:40,0,0,120.285,95.8193,0,0,TRUE,0 +1/2/2022 4:45,0,0,119.33,96.5585,0,0,TRUE,0 +1/2/2022 4:50,0,0,118.376,97.2933,0,0,TRUE,0 +1/2/2022 4:55,0,0,117.423,98.0241,0,0,TRUE,0 +1/2/2022 5:00,0,0,116.473,98.7515,0,0,TRUE,0 +1/2/2022 5:05,0,0,115.524,99.4759,0,0,TRUE,0 +1/2/2022 5:10,0,0,114.577,100.198,0,0,TRUE,0 +1/2/2022 5:15,0,0,113.632,100.918,0,0,TRUE,0 +1/2/2022 5:20,0,0,112.69,101.636,0,0,TRUE,0 +1/2/2022 5:25,0,0,111.75,102.353,0,0,TRUE,0 +1/2/2022 5:30,0,0,110.812,103.069,0,0,TRUE,0 +1/2/2022 5:35,0,0,109.877,103.785,0,0,TRUE,0 +1/2/2022 5:40,0,0,108.945,104.501,0,0,TRUE,0 +1/2/2022 5:45,0,0,108.017,105.217,0,0,TRUE,0 +1/2/2022 5:50,0,0,107.091,105.934,0,0,TRUE,0 +1/2/2022 5:55,0,0,106.168,106.652,0,0,TRUE,0 +1/2/2022 6:00,0,0,105.249,107.372,0,0,TRUE,0 +1/2/2022 6:05,0,0,104.334,108.093,0,0,TRUE,0 +1/2/2022 6:10,0,0,103.422,108.817,0,0,TRUE,0 +1/2/2022 6:15,0,0,102.515,109.543,0,0,TRUE,0 +1/2/2022 6:20,0,0,101.611,110.272,0,0,TRUE,0 +1/2/2022 6:25,0,0,100.712,111.003,0,0,TRUE,0 +1/2/2022 6:30,0,0,99.8166,111.739,0,0,TRUE,0 +1/2/2022 6:35,0,0,98.9261,112.478,0,0,TRUE,0 +1/2/2022 6:40,0,0,98.0405,113.221,0,0,TRUE,0 +1/2/2022 6:45,0,0,97.1597,113.968,0,0,TRUE,0 +1/2/2022 6:50,0,0,96.2841,114.72,0,0,TRUE,0 +1/2/2022 6:55,0,0,95.4137,115.477,0,0,TRUE,0 +1/2/2022 7:00,0,0,94.5489,116.239,0,0,TRUE,0 +1/2/2022 7:05,0,0,93.6897,117.007,0,0,TRUE,0 +1/2/2022 7:10,0,0,92.8363,117.78,0,0,TRUE,0 +1/2/2022 7:15,0,0,91.9891,118.56,0,0,TRUE,0 +1/2/2022 7:20,0,0,91.1481,119.346,0,0,TRUE,0 +1/2/2022 7:25,0,0,89.8693,120.138,25,77.6279,TRUE,0 +1/2/2022 7:30,0,0,89.1387,120.938,25,76.6517,TRUE,0 +1/2/2022 7:35,10,9.531541658,88.3873,121.745,25,75.6543,TRUE,0 +1/2/2022 7:40,15,14.29729546,87.6231,122.559,25,74.6432,TRUE,0 +1/2/2022 7:45,20.2078,28.59966619,86.8528,123.381,25,73.6244,TRUE,0 +1/2/2022 7:50,26.4605,40.1233054,86.081,124.211,25,72.6024,TRUE,0 +1/2/2022 7:55,33.905,55.67443286,85.3108,125.049,25,71.58,TRUE,0 +1/2/2022 8:00,42.9372,80.19449554,84.5443,125.896,25,70.5591,TRUE,0 +1/2/2022 8:05,52.1037,96.96573336,83.783,126.752,25,69.5411,TRUE,0 +1/2/2022 8:10,53.9825,82.88745827,83.0279,127.616,25,68.5272,TRUE,0 +1/2/2022 8:15,58.3286,85.00374685,82.28,128.491,25,67.518,TRUE,0 +1/2/2022 8:20,61.6205,78.92874174,81.5398,129.374,25,66.5142,TRUE,0 +1/2/2022 8:25,70.9041,99.41923837,80.808,130.267,25,65.5165,TRUE,0 +1/2/2022 8:30,75.4703,96.65917297,80.085,131.171,25,64.5254,TRUE,0 +1/2/2022 8:35,173.022,391.8250562,79.3713,132.084,25,63.5414,TRUE,0 +1/2/2022 8:40,100.384,146.5586893,78.6674,133.008,25,62.5649,TRUE,0 +1/2/2022 8:45,200.107,432.6452756,77.9736,133.943,25,61.5966,TRUE,0 +1/2/2022 8:50,109.341,151.689829,77.2903,134.888,25,60.6368,TRUE,0 +1/2/2022 8:55,149.647,247.5154983,76.6178,135.845,25,59.6861,TRUE,0 +1/2/2022 9:00,240.315,491.777369,75.9567,136.812,25,58.745,TRUE,0 +1/2/2022 9:05,252.605,509.7179644,75.3073,137.791,25,57.814,TRUE,0 +1/2/2022 9:10,265.426,528.0230261,74.6698,138.782,25,56.8936,TRUE,0 +1/2/2022 9:15,278.251,546.3451189,74.0447,139.784,25,55.9845,TRUE,0 +1/2/2022 9:20,290.07,563.304721,73.4324,140.797,25,55.0872,TRUE,0 +1/2/2022 9:25,302.279,580.4346345,72.8331,141.823,25,54.2024,TRUE,0 +1/2/2022 9:30,313.419,596.1271204,72.2473,142.86,25,53.3306,TRUE,0 +1/2/2022 9:35,283.081,519.5074596,71.6753,143.91,25,52.4726,TRUE,0 +1/2/2022 9:40,336.444,628.5714286,71.1175,144.971,25,51.6292,TRUE,0 +1/2/2022 9:45,346.976,643.3033585,70.5743,146.044,25,50.8009,TRUE,0 +1/2/2022 9:50,358.037,658.583691,70.0459,147.129,25,49.9886,TRUE,0 +1/2/2022 9:55,367.941,672.324409,69.5329,148.227,25,49.1932,TRUE,0 +1/2/2022 10:00,378.679,687.2028067,69.0355,149.335,25,48.4154,TRUE,0 +1/2/2022 10:05,387.878,699.8467198,68.5541,150.456,25,47.6561,TRUE,0 +1/2/2022 10:10,396.879,712.2419783,68.0891,151.589,25,46.9163,TRUE,0 +1/2/2022 10:15,406.292,725.0289529,67.6409,152.732,25,46.1969,TRUE,0 +1/2/2022 10:20,414.479,736.1877512,67.2096,153.888,25,45.4989,TRUE,0 +1/2/2022 10:25,422.43,747.053614,66.7959,155.054,25,44.8232,TRUE,0 +1/2/2022 10:30,431.139,758.9583759,66.3999,156.231,25,44.171,TRUE,0 +1/2/2022 10:35,439.724,768.4481232,66.022,157.419,25,43.5433,TRUE,0 +1/2/2022 10:40,446.451,777.5631855,65.6625,158.616,25,42.9412,TRUE,0 +1/2/2022 10:45,452.909,786.3376252,65.3218,159.824,25,42.3657,TRUE,0 +1/2/2022 10:50,460.093,796.0930581,65.0001,161.042,25,41.818,TRUE,0 +1/2/2022 10:55,465.999,804.1760338,64.6977,162.268,25,41.2992,TRUE,0 +1/2/2022 11:00,471.189,811.1417672,64.415,163.503,25,40.8104,TRUE,0 +1/2/2022 11:05,477.082,819.0510253,64.1522,164.747,25,40.3527,TRUE,0 +1/2/2022 11:10,481.675,825.2639826,63.9095,165.998,25,39.9272,TRUE,0 +1/2/2022 11:15,485.962,831.0954425,63.6872,167.256,25,39.5348,TRUE,0 +1/2/2022 11:20,489.941,836.5385925,63.4856,168.521,25,39.1768,TRUE,0 +1/2/2022 11:25,493.159,840.8065945,63.3047,169.792,25,38.8538,TRUE,0 +1/2/2022 11:30,496.509,845.4560937,63.1449,171.069,25,38.5669,TRUE,0 +1/2/2022 11:35,499.633,849.4447851,63.0061,172.35,25,38.3169,TRUE,0 +1/2/2022 11:40,501.428,851.7031133,62.8887,173.635,25,38.1045,TRUE,0 +1/2/2022 11:45,503.352,854.3429389,62.7928,174.924,25,37.9304,TRUE,0 +1/2/2022 11:50,504.948,856.5672049,62.7183,176.216,25,37.7949,TRUE,0 +1/2/2022 11:55,505.756,857.5822604,62.6655,177.51,25,37.6987,TRUE,0 +1/2/2022 12:00,506.233,858.17835,62.6343,178.805,25,37.642,TRUE,0 +1/2/2022 12:05,506.837,859.1559371,62.6249,180.1,25,37.6249,TRUE,0 +1/2/2022 12:10,506.65,858.9175012,62.6371,181.396,25,37.6475,TRUE,0 +1/2/2022 12:15,505.672,857.4630424,62.671,182.691,25,37.7098,TRUE,0 +1/2/2022 12:20,504.822,856.3900811,62.7266,183.985,25,37.8115,TRUE,0 +1/2/2022 12:25,503.184,854.1079093,62.8037,185.276,25,37.9524,TRUE,0 +1/2/2022 12:30,501.674,852.2038286,62.9024,186.565,25,38.1319,TRUE,0 +1/2/2022 12:35,498.928,848.3071054,63.0225,187.85,25,38.3496,TRUE,0 +1/2/2022 12:40,496.313,844.7918796,63.1639,189.13,25,38.6048,TRUE,0 +1/2/2022 12:45,492.928,840.0912869,63.3265,190.406,25,38.8968,TRUE,0 +1/2/2022 12:50,489.675,835.7755978,63.51,191.676,25,39.2247,TRUE,0 +1/2/2022 12:55,485.662,830.2847605,63.7143,192.941,25,39.5876,TRUE,0 +1/2/2022 13:00,481.782,825.1788269,63.9391,194.198,25,39.9846,TRUE,0 +1/2/2022 13:05,476.154,817.5999728,64.1844,195.448,25,40.4147,TRUE,0 +1/2/2022 13:10,470.795,810.1982424,64.4497,196.691,25,40.8769,TRUE,0 +1/2/2022 13:15,465.576,803.1882281,64.7349,197.925,25,41.3699,TRUE,0 +1/2/2022 13:20,459.642,795.0643777,65.0397,199.151,25,41.8929,TRUE,0 +1/2/2022 13:25,452.431,785.2748825,65.3639,200.367,25,42.4445,TRUE,0 +1/2/2022 13:30,445.947,776.4629743,65.707,201.574,25,43.0238,TRUE,0 +1/2/2022 13:35,438.791,766.5849172,66.0688,202.77,25,43.6296,TRUE,0 +1/2/2022 13:40,431.386,756.3968935,66.449,203.957,25,44.2609,TRUE,0 +1/2/2022 13:45,423.737,745.9057156,66.8473,205.133,25,44.9164,TRUE,0 +1/2/2022 13:50,414.853,733.7999864,67.2633,206.298,25,45.5953,TRUE,0 +1/2/2022 13:55,406.739,722.7229375,67.6967,207.452,25,46.2964,TRUE,0 +1/2/2022 14:00,397.03,709.3671231,68.1471,208.594,25,47.0188,TRUE,0 +1/2/2022 14:05,388.121,697.0808638,68.6142,209.725,25,47.7614,TRUE,0 +1/2/2022 14:10,378.018,683.2311465,69.0976,210.844,25,48.5234,TRUE,0 +1/2/2022 14:15,368.383,669.8208325,69.597,211.952,25,49.3037,TRUE,0 +1/2/2022 14:20,357.587,654.8913414,70.112,213.048,25,50.1016,TRUE,0 +1/2/2022 14:25,347.308,640.4659718,70.6422,214.132,25,50.9162,TRUE,0 +1/2/2022 14:30,335.905,624.5622999,71.1873,215.204,25,51.7468,TRUE,0 +1/2/2022 14:35,325.387,609.847401,71.7469,216.264,25,52.5924,TRUE,0 +1/2/2022 14:40,313.461,593.0785476,72.3207,217.312,25,53.4524,TRUE,0 +1/2/2022 14:45,301.165,575.6386675,72.9082,218.348,25,54.3261,TRUE,0 +1/2/2022 14:50,288.824,558.1442878,73.5092,219.372,25,55.2129,TRUE,0 +1/2/2022 14:55,277.176,541.3958717,74.1232,220.384,25,56.1119,TRUE,0 +1/2/2022 15:00,264.526,523.3190272,74.7499,221.385,25,57.0228,TRUE,0 +1/2/2022 15:05,251.634,504.7346549,75.3889,222.374,25,57.9447,TRUE,0 +1/2/2022 15:10,238.546,485.6972546,76.0399,223.352,25,58.8773,TRUE,0 +1/2/2022 15:15,225.307,466.2681382,76.7024,224.319,25,59.8199,TRUE,0 +1/2/2022 15:20,211.965,446.5154302,77.3762,225.274,25,60.7719,TRUE,0 +1/2/2022 15:25,198.568,426.4970366,78.0608,226.218,25,61.7331,TRUE,0 +1/2/2022 15:30,184.971,405.8212412,78.756,227.152,25,62.7027,TRUE,0 +1/2/2022 15:35,171.359,385.8982219,79.4612,228.075,25,63.6803,TRUE,0 +1/2/2022 15:40,157.895,365.018053,80.176,228.987,25,64.6655,TRUE,0 +1/2/2022 15:45,144.448,343.7734178,80.9002,229.89,25,65.6577,TRUE,0 +1/2/2022 15:50,130.257,321.2855099,81.6331,230.782,25,66.6564,TRUE,0 +1/2/2022 15:55,117.113,299.6804959,82.3743,231.665,25,67.6612,TRUE,0 +1/2/2022 16:00,103.151,276.313441,83.1233,232.538,25,68.6713,TRUE,0 +1/2/2022 16:05,89.6141,253.1344097,83.8793,233.402,25,69.6862,TRUE,0 +1/2/2022 16:10,39.3504,64.33374208,84.6415,234.257,25,70.7049,TRUE,0 +1/2/2022 16:15,64.7454,205.9479529,85.4087,235.103,25,71.7265,TRUE,0 +1/2/2022 16:20,51.7826,178.0952381,86.1795,235.941,25,72.7495,TRUE,0 +1/2/2022 16:25,21.0208,33.05010559,86.9516,236.77,25,73.7718,TRUE,0 +1/2/2022 16:30,14,13.34416513,87.7219,237.591,25,74.7905,TRUE,0 +1/2/2022 16:35,8,7.625246951,88.4854,238.405,25,75.801,TRUE,0 +1/2/2022 16:40,0,0,89.2351,239.211,25,76.7968,TRUE,0 +1/2/2022 16:45,0,0,89.9641,240.01,25,77.7715,TRUE,0 +1/2/2022 16:50,0,0,91.2536,240.803,0,0,TRUE,0 +1/2/2022 16:55,0,0,92.0954,241.588,0,0,TRUE,0 +1/2/2022 17:00,0,0,92.9434,242.368,0,0,TRUE,0 +1/2/2022 17:05,0,0,93.7974,243.141,0,0,TRUE,0 +1/2/2022 17:10,0,0,94.6573,243.908,0,0,TRUE,0 +1/2/2022 17:15,0,0,95.5229,244.67,0,0,TRUE,0 +1/2/2022 17:20,0,0,96.3939,245.427,0,0,TRUE,0 +1/2/2022 17:25,0,0,97.2701,246.179,0,0,TRUE,0 +1/2/2022 17:30,0,0,98.1514,246.927,0,0,TRUE,0 +1/2/2022 17:35,0,0,99.0377,247.67,0,0,TRUE,0 +1/2/2022 17:40,0,0,99.9286,248.409,0,0,TRUE,0 +1/2/2022 17:45,0,0,100.824,249.144,0,0,TRUE,0 +1/2/2022 17:50,0,0,101.724,249.876,0,0,TRUE,0 +1/2/2022 17:55,0,0,102.628,250.605,0,0,TRUE,0 +1/2/2022 18:00,0,0,103.536,251.332,0,0,TRUE,0 +1/2/2022 18:05,0,0,104.448,252.056,0,0,TRUE,0 +1/2/2022 18:10,0,0,105.364,252.778,0,0,TRUE,0 +1/2/2022 18:15,0,0,106.283,253.498,0,0,TRUE,0 +1/2/2022 18:20,0,0,107.206,254.217,0,0,TRUE,0 +1/2/2022 18:25,0,0,108.132,254.934,0,0,TRUE,0 +1/2/2022 18:30,0,0,109.061,255.651,0,0,TRUE,0 +1/2/2022 18:35,0,0,109.994,256.368,0,0,TRUE,0 +1/2/2022 18:40,0,0,110.929,257.085,0,0,TRUE,0 +1/2/2022 18:45,0,0,111.866,257.802,0,0,TRUE,0 +1/2/2022 18:50,0,0,112.807,258.521,0,0,TRUE,0 +1/2/2022 18:55,0,0,113.749,259.24,0,0,TRUE,0 +1/2/2022 19:00,0,0,114.694,259.961,0,0,TRUE,0 +1/2/2022 19:05,0,0,115.641,260.685,0,0,TRUE,0 +1/2/2022 19:10,0,0,116.59,261.41,0,0,TRUE,0 +1/2/2022 19:15,0,0,117.541,262.139,0,0,TRUE,0 +1/2/2022 19:20,0,0,118.493,262.872,0,0,TRUE,0 +1/2/2022 19:25,0,0,119.447,263.609,0,0,TRUE,0 +1/2/2022 19:30,0,0,120.403,264.35,0,0,TRUE,0 +1/2/2022 19:35,0,0,121.359,265.096,0,0,TRUE,0 +1/2/2022 19:40,0,0,122.317,265.848,0,0,TRUE,0 +1/2/2022 19:45,0,0,123.276,266.607,0,0,TRUE,0 +1/2/2022 19:50,0,0,124.235,267.372,0,0,TRUE,0 +1/2/2022 19:55,0,0,125.195,268.145,0,0,TRUE,0 +1/2/2022 20:00,0,0,126.155,268.927,0,0,TRUE,0 +1/2/2022 20:05,0,0,127.116,269.718,0,0,TRUE,0 +1/2/2022 20:10,0,0,128.076,270.518,0,0,TRUE,0 +1/2/2022 20:15,0,0,129.037,271.33,0,0,TRUE,0 +1/2/2022 20:20,0,0,129.997,272.153,0,0,TRUE,0 +1/2/2022 20:25,0,0,130.957,272.989,0,0,TRUE,0 +1/2/2022 20:30,0,0,131.916,273.839,0,0,TRUE,0 +1/2/2022 20:35,0,0,132.874,274.704,0,0,TRUE,0 +1/2/2022 20:40,0,0,133.831,275.584,0,0,TRUE,0 +1/2/2022 20:45,0,0,134.786,276.482,0,0,TRUE,0 +1/2/2022 20:50,0,0,135.74,277.399,0,0,TRUE,0 +1/2/2022 20:55,0,0,136.691,278.335,0,0,TRUE,0 +1/2/2022 21:00,0,0,137.641,279.293,0,0,TRUE,0 +1/2/2022 21:05,0,0,138.587,280.275,0,0,TRUE,0 +1/2/2022 21:10,0,0,139.531,281.281,0,0,TRUE,0 +1/2/2022 21:15,0,0,140.471,282.314,0,0,TRUE,0 +1/2/2022 21:20,0,0,141.408,283.377,0,0,TRUE,0 +1/2/2022 21:25,0,0,142.34,284.471,0,0,TRUE,0 +1/2/2022 21:30,0,0,143.268,285.599,0,0,TRUE,0 +1/2/2022 21:35,0,0,144.191,286.763,0,0,TRUE,0 +1/2/2022 21:40,0,0,145.108,287.966,0,0,TRUE,0 +1/2/2022 21:45,0,0,146.018,289.213,0,0,TRUE,0 +1/2/2022 21:50,0,0,146.922,290.504,0,0,TRUE,0 +1/2/2022 21:55,0,0,147.817,291.846,0,0,TRUE,0 +1/2/2022 22:00,0,0,148.705,293.241,0,0,TRUE,0 +1/2/2022 22:05,0,0,149.582,294.693,0,0,TRUE,0 +1/2/2022 22:10,0,0,150.45,296.208,0,0,TRUE,0 +1/2/2022 22:15,0,0,151.306,297.791,0,0,TRUE,0 +1/2/2022 22:20,0,0,152.149,299.446,0,0,TRUE,0 +1/2/2022 22:25,0,0,152.978,301.18,0,0,TRUE,0 +1/2/2022 22:30,0,0,153.792,302.998,0,0,TRUE,0 +1/2/2022 22:35,0,0,154.589,304.907,0,0,TRUE,0 +1/2/2022 22:40,0,0,155.367,306.913,0,0,TRUE,0 +1/2/2022 22:45,0,0,156.124,309.025,0,0,TRUE,0 +1/2/2022 22:50,0,0,156.859,311.248,0,0,TRUE,0 +1/2/2022 22:55,0,0,157.568,313.591,0,0,TRUE,0 +1/2/2022 23:00,0,0,158.249,316.059,0,0,TRUE,0 +1/2/2022 23:05,0,0,158.9,318.66,0,0,TRUE,0 +1/2/2022 23:10,0,0,159.517,321.398,0,0,TRUE,0 +1/2/2022 23:15,0,0,160.097,324.28,0,0,TRUE,0 +1/2/2022 23:20,0,0,160.637,327.307,0,0,TRUE,0 +1/2/2022 23:25,0,0,161.133,330.48,0,0,TRUE,0 +1/2/2022 23:30,0,0,161.582,333.798,0,0,TRUE,0 +1/2/2022 23:35,0,0,161.98,337.254,0,0,TRUE,0 +1/2/2022 23:40,0,0,162.323,340.84,0,0,TRUE,0 +1/2/2022 23:45,0,0,162.609,344.543,0,0,TRUE,0 +1/2/2022 23:50,0,0,162.834,348.346,0,0,TRUE,0 +1/2/2022 23:55,0,0,162.996,352.226,0,0,TRUE,0 diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index e19b30ef5..f8f9bbccc 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -471,3 +471,135 @@ def daily_insolation_limits(irrad, clearsky, daily_min=0.4, daily_max=1.25): lower_bound=daily_min ) return good_days.reindex(irrad.index, method='pad', fill_value=False) + + +def _upper_gti_limit_lorenz(aoi, solar_zenith, dni_extra): + r"""Function to calculate the upper limit of GTI + """ + # Changing aoi to 90 degrees when solar zenith is greater than 90 (sun + # below horizon) or aoi is greater than 90 (which is not realistic). + aoi = aoi.mask(solar_zenith > 90, 90) + aoi = aoi.clip(lower=0, upper=90) + + # Determining the upper limit + upper_limit = 0.9 * dni_extra * (cosd(aoi))**1.2 + 300 + + # Setting upper limit as 0 when solar zenith is > 90 (night time) + upper_limit[solar_zenith > 90] = 0 + + # Setting upper limit as undefined where solar_zenith is not available + upper_limit[solar_zenith.isna()] = np.nan + return(upper_limit) + + +def _lower_gti_limit_lorenz(solar_zenith, dni_extra): + r"""Function to calculate the lower limit of GTI + """ + # Setting the lower_limit at 0. + lower_limit = pd.Series(np.zeros(len(solar_zenith)), + index=solar_zenith.index) + + # Determining the lower limit when solar zenith is < 75 + lower_limit = lower_limit.mask(solar_zenith < 75, + 0.01 * dni_extra * cosd(solar_zenith)) + + # Setting upper limit as undefined where solar_zenith is not available + lower_limit[solar_zenith.isna()] = np.nan + + return(lower_limit) + + +def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): + r"""Test for limits on POA global using the equations described in + Section 6.1 of [1]_ + + Criteria from [1]_ are used to determine physically plausible + lower and upper bounds. Each value is tested and a value passes if + value > lower bound and value < upper bound. Lower bounds are + constant for all tests. Upper bounds are calculated as + + .. math:: + ub = min + mult * dni\_extra * cos( solar\_zenith)^{exp} + + .. note:: If any of `ghi`, `dhi`, or `dni` are None, the + corresponding element of the returned tuple will also be None. + + Parameters + ---------- + poa_global : Series + Global tilted irradiance in :math:`W/m^2` + solar_zenith : Series + Solar zenith angle in degrees + aoi : Series + Direct normal irradiance in :math:`W/m^2` + + Returns + ------- + poa_global_limit_bool_flag : Series + True for each value that is physically possible. + poa_global_limit_int_flag : Series + Series of integers representing the flag numbers described in the + literature _[1] + + Notes + ----- + The upper limit for `poa_global` is set to 0 when `solar_zenith` is greater + than 90 degrees. Missing values of `poa_global`, `solar_zenith` and/or + `aoi` will result in a `False` flag. + + References + ---------- + .. [1] Elke Lorenz et. al + High resolution measurement network of global horizontal and tilted solar + irradiance in southern Germany with a new quality control scheme, + Solar Energy, + Volume 231, + 2022, + Pages 593-606, + ISSN 0038-092X, + https://doi.org/10.1016/j.solener.2021.11.023. + """ + # Defining the normal irradiance at the top of atmosphere in W/m^2 + dni_extra = 1367 + + # Making sure that the input are in series + poa_global = pd.Series(poa_global) + aoi = pd.Series(aoi) + solar_zenith = pd.Series(solar_zenith) + + # Finding the upper and lower limit + upper_limit = _upper_gti_limit_lorenz(aoi, solar_zenith, dni_extra) + lower_limit = _lower_gti_limit_lorenz(solar_zenith, dni_extra) + + # Initiating a poa_global_limit_int_flag series + poa_global_limit_int_flag = \ + pd.Series(np.zeros(len(solar_zenith)).astype(np.int64), + index=solar_zenith.index) + + # Initiating a poa_global_limit_bool_flag series + poa_global_limit_bool_flag = \ + pd.Series(np.full(len(solar_zenith), True, dtype=bool), + index=solar_zenith.index) + + # Changing the poa_global_flag to 3 when poa_global is above upper + # limit or below lower limit + poa_global_limit_int_flag = poa_global_limit_int_flag.mask( + ((poa_global > upper_limit) | + (poa_global < lower_limit)), + 3 + ) + + # Changing the poa_global_flag to 1 when poa_global is not available + poa_global_limit_int_flag = poa_global_limit_int_flag.mask( + ((poa_global.isna()) | + (upper_limit.isna()) | + (lower_limit.isna())), + 1 + ) + + # poa_global_limit_flag + poa_global_limit_bool_flag = poa_global_limit_bool_flag.mask( + cond=poa_global_limit_int_flag != 0, + other=False) + + return(poa_global_limit_bool_flag, poa_global_limit_int_flag) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index 0b7af6262..fca644046 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -8,6 +8,7 @@ from pandas.util.testing import assert_series_equal from pvanalytics.quality import irradiance +from ..conftest import DATA_DIR @pytest.fixture @@ -314,3 +315,30 @@ def test_daily_insolation_limits_uneven(albuquerque): pd.Series(True, index=ghi.index), check_names=False ) + + +def test_check_poa_global_limits_lorenz(): + """Testing the function 'test_check_poa_global_limits_lorenz'""" + + test_file = DATA_DIR / "lorenz_poa_test_dataset.csv" + + test_data = pd.read_csv(test_file, index_col=0, parse_dates=True) + + expected_bool_flag = test_data['poa_global_limit_bool_flag'] + expected_int_flag = test_data['poa_global_limit_int_flag'] + + poa_global = test_data['poa_global'] + solar_zenith = test_data['solar_zenith'] + aoi = test_data['aoi'] + + poa_global_limit_bool_flag, poa_global_limit_int_flag = \ + irradiance.check_poa_global_limits_lorenz(poa_global, solar_zenith, + aoi) + + assert_series_equal(expected_int_flag, + poa_global_limit_int_flag, + check_names=False) + + assert_series_equal(poa_global_limit_bool_flag, + expected_bool_flag, + check_names=False) From 0fd23e3fe87f47a75f591ec3e3d194acc8e2fe32 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sat, 12 Nov 2022 19:43:42 -0800 Subject: [PATCH 02/40] updated nomenclature and completed test functions --- pvanalytics/data/lorenz_poa_test_dataset.csv | 1154 +++++++++--------- pvanalytics/quality/irradiance.py | 13 +- pvanalytics/tests/quality/test_irradiance.py | 42 + 3 files changed, 628 insertions(+), 581 deletions(-) diff --git a/pvanalytics/data/lorenz_poa_test_dataset.csv b/pvanalytics/data/lorenz_poa_test_dataset.csv index 48ea64a6c..1fbe3b1ce 100644 --- a/pvanalytics/data/lorenz_poa_test_dataset.csv +++ b/pvanalytics/data/lorenz_poa_test_dataset.csv @@ -1,577 +1,577 @@ -Time stamp,ghi,poa_global,solar_zenith,azimuth,surface_tilt,aoi,poa_global_limit_bool_flag,poa_global_limit_int_flag -1/1/2022 0:00,0,0,163.276,356.877,0,0,TRUE,0 -1/1/2022 0:05,0,0,163.295,0.875773,0,0,TRUE,0 -1/1/2022 0:10,0,0,163.247,4.86776,0,0,TRUE,0 -1/1/2022 0:15,0,0,163.132,8.82456,0,0,TRUE,0 -1/1/2022 0:20,0,0,162.952,12.7191,0,0,TRUE,0 -1/1/2022 0:25,0,0,162.709,16.5273,0,0,TRUE,0 -1/1/2022 0:30,0,0,162.406,20.2283,0,0,TRUE,0 -1/1/2022 0:35,0,0,162.045,23.8058,0,0,TRUE,0 -1/1/2022 0:40,0,0,161.631,27.2477,0,0,TRUE,0 -1/1/2022 0:45,0,0,161.166,30.5457,0,0,TRUE,0 -1/1/2022 0:50,0,0,160.655,33.6958,0,0,TRUE,0 -1/1/2022 0:55,0,0,160.1,36.6968,0,0,TRUE,0 -1/1/2022 1:00,0,0,159.507,39.5502,0,0,TRUE,0 -1/1/2022 1:05,0,0,158.877,42.2597,0,0,TRUE,0 -1/1/2022 1:10,0,0,158.215,44.8305,0,0,TRUE,0 -1/1/2022 1:15,0,0,157.523,47.2687,0,0,TRUE,0 -1/1/2022 1:20,0,0,156.804,49.5813,0,0,TRUE,0 -1/1/2022 1:25,0,0,156.061,51.7756,0,0,TRUE,0 -1/1/2022 1:30,0,0,155.295,53.8588,0,0,TRUE,0 -1/1/2022 1:35,0,0,154.509,55.8383,0,0,TRUE,0 -1/1/2022 1:40,0,0,153.705,57.7212,0,0,TRUE,0 -1/1/2022 1:45,0,0,152.884,59.5143,0,0,TRUE,0 -1/1/2022 1:50,0,0,152.049,61.224,0,0,TRUE,0 -1/1/2022 1:55,0,0,151.2,62.8565,0,0,TRUE,0 -1/1/2022 2:00,0,0,150.339,64.4175,0,0,TRUE,0 -1/1/2022 2:05,0,0,149.467,65.9122,0,0,TRUE,0 -1/1/2022 2:10,0,0,148.585,67.3457,0,0,TRUE,0 -1/1/2022 2:15,0,0,147.693,68.7224,0,0,TRUE,0 -1/1/2022 2:20,0,0,146.794,70.0468,0,0,TRUE,0 -1/1/2022 2:25,0,0,145.887,71.3225,0,0,TRUE,0 -1/1/2022 2:30,0,0,144.973,72.5533,0,0,TRUE,0 -1/1/2022 2:35,0,0,144.054,73.7426,0,0,TRUE,0 -1/1/2022 2:40,0,0,143.128,74.8932,0,0,TRUE,0 -1/1/2022 2:45,0,0,142.198,76.0082,0,0,TRUE,0 -1/1/2022 2:50,0,0,141.263,77.09,0,0,TRUE,0 -1/1/2022 2:55,0,0,140.325,78.1411,0,0,TRUE,0 -1/1/2022 3:00,0,0,139.383,79.1638,0,0,TRUE,0 -1/1/2022 3:05,0,0,138.437,80.1601,0,0,TRUE,0 -1/1/2022 3:10,0,0,137.489,81.1319,0,0,TRUE,0 -1/1/2022 3:15,0,0,136.538,82.0809,0,0,TRUE,0 -1/1/2022 3:20,0,0,135.585,83.0088,0,0,TRUE,0 -1/1/2022 3:25,0,0,134.631,83.9172,0,0,TRUE,0 -1/1/2022 3:30,0,0,133.674,84.8074,0,0,TRUE,0 -1/1/2022 3:35,0,0,132.717,85.6807,0,0,TRUE,0 -1/1/2022 3:40,0,0,131.758,86.5385,0,0,TRUE,0 -1/1/2022 3:45,0,0,130.798,87.3818,0,0,TRUE,0 -1/1/2022 3:50,0,0,129.838,88.2117,0,0,TRUE,0 -1/1/2022 3:55,0,0,128.877,89.0293,0,0,TRUE,0 -1/1/2022 4:00,0,0,127.916,89.8354,0,0,TRUE,0 -1/1/2022 4:05,0,0,126.955,90.631,0,0,TRUE,0 -1/1/2022 4:10,0,0,125.994,91.4169,0,0,TRUE,0 -1/1/2022 4:15,0,0,125.034,92.1939,0,0,TRUE,0 -1/1/2022 4:20,0,0,124.074,92.9628,0,0,TRUE,0 -1/1/2022 4:25,0,0,123.115,93.7242,0,0,TRUE,0 -1/1/2022 4:30,0,0,122.156,94.4788,0,0,TRUE,0 -1/1/2022 4:35,0,0,121.198,95.2272,0,0,TRUE,0 -1/1/2022 4:40,0,0,120.242,95.9701,0,0,TRUE,0 -1/1/2022 4:45,0,0,119.287,96.7081,0,0,TRUE,0 -1/1/2022 4:50,0,0,118.333,97.4416,0,0,TRUE,0 -1/1/2022 4:55,0,0,117.381,98.1713,0,0,TRUE,0 -1/1/2022 5:00,0,0,116.431,98.8975,0,0,TRUE,0 -1/1/2022 5:05,0,0,115.482,99.6209,0,0,TRUE,0 -1/1/2022 5:10,0,0,114.536,100.342,0,0,TRUE,0 -1/1/2022 5:15,0,0,113.591,101.061,0,0,TRUE,0 -1/1/2022 5:20,0,0,112.65,101.778,0,0,TRUE,0 -1/1/2022 5:25,0,0,111.71,102.495,0,0,TRUE,0 -1/1/2022 5:30,0,0,110.773,103.21,0,0,TRUE,0 -1/1/2022 5:35,0,0,109.839,103.925,0,0,TRUE,0 -1/1/2022 5:40,0,0,108.908,104.641,0,0,TRUE,0 -1/1/2022 5:45,0,0,107.979,105.356,0,0,TRUE,0 -1/1/2022 5:50,0,0,107.054,106.073,0,0,TRUE,0 -1/1/2022 5:55,0,0,106.132,106.791,0,0,TRUE,0 -1/1/2022 6:00,0,0,105.214,107.51,0,0,TRUE,0 -1/1/2022 6:05,0,0,104.299,108.231,0,0,TRUE,0 -1/1/2022 6:10,0,0,103.388,108.954,0,0,TRUE,0 -1/1/2022 6:15,0,0,102.482,109.68,0,0,TRUE,0 -1/1/2022 6:20,0,0,101.579,110.408,0,0,TRUE,0 -1/1/2022 6:25,0,0,100.68,111.14,0,0,TRUE,0 -1/1/2022 6:30,0,0,99.786,111.875,0,0,TRUE,0 -1/1/2022 6:35,0,0,98.8964,112.614,0,0,TRUE,0 -1/1/2022 6:40,0,0,98.0117,113.357,0,0,TRUE,0 -1/1/2022 6:45,0,0,97.1319,114.104,0,0,TRUE,0 -1/1/2022 6:50,0,0,96.2572,114.856,0,0,TRUE,0 -1/1/2022 6:55,0,0,95.3878,115.613,0,0,TRUE,0 -1/1/2022 7:00,0,0,94.524,116.375,0,0,TRUE,0 -1/1/2022 7:05,0,0,93.6658,117.143,0,0,TRUE,0 -1/1/2022 7:10,0,0,92.8136,117.916,0,0,TRUE,0 -1/1/2022 7:15,0,0,91.9674,118.696,0,0,TRUE,0 -1/1/2022 7:20,0,0,91.1275,119.482,0,0,TRUE,0 -1/1/2022 7:25,0,0,89.8597,120.275,25,77.568,TRUE,0 -1/1/2022 7:30,0,0,89.1277,121.074,25,76.5906,TRUE,0 -1/1/2022 7:35,9,8.578377274,88.3761,121.881,25,75.5932,TRUE,0 -1/1/2022 7:40,14,13.34416513,87.6119,122.696,25,74.5822,TRUE,0 -1/1/2022 7:45,18,17.75723823,86.8419,123.518,25,73.5639,TRUE,0 -1/1/2022 7:50,25.1649,31.65355269,86.0707,124.348,25,72.5427,TRUE,0 -1/1/2022 7:55,25,25.10147149,85.3014,125.187,25,71.5212,TRUE,0 -1/1/2022 8:00,31,32.01611145,84.5359,126.034,25,70.5014,TRUE,0 -1/1/2022 8:05,31,30.86473874,83.7757,126.89,25,69.4847,TRUE,0 -1/1/2022 8:10,41,42.70760951,83.0219,127.755,25,68.472,TRUE,0 -1/1/2022 8:15,54.9143,72.87008652,82.2752,128.629,25,67.4642,TRUE,0 -1/1/2022 8:20,79.1681,142.7961714,81.5363,129.513,25,66.462,TRUE,0 -1/1/2022 8:25,142.129,340.2019892,80.8059,130.407,25,65.4658,TRUE,0 -1/1/2022 8:30,156.227,362.8414742,80.0844,131.311,25,64.4763,TRUE,0 -1/1/2022 8:35,60,61.44389945,79.3722,132.225,25,63.4939,TRUE,0 -1/1/2022 8:40,104.898,160.6907828,78.6698,133.149,25,62.5193,TRUE,0 -1/1/2022 8:45,138.613,256.2299884,77.9776,134.084,25,61.5527,TRUE,0 -1/1/2022 8:50,140.278,238.7972614,77.2959,135.03,25,60.5948,TRUE,0 -1/1/2022 8:55,165.521,306.3328565,76.6252,135.986,25,59.6461,TRUE,0 -1/1/2022 9:00,172.938,313.0325635,75.9658,136.954,25,58.7069,TRUE,0 -1/1/2022 9:05,199.473,377.750528,75.318,137.934,25,57.778,TRUE,0 -1/1/2022 9:10,188.045,327.783909,74.6824,138.924,25,56.8598,TRUE,0 -1/1/2022 9:15,274.055,542.4279583,74.0591,139.927,25,55.9529,TRUE,0 -1/1/2022 9:20,285.151,558.6245657,73.4485,140.94,25,55.0579,TRUE,0 -1/1/2022 9:25,229.749,403.7468492,72.8511,141.966,25,54.1755,TRUE,0 -1/1/2022 9:30,309.241,593.6303563,72.2673,143.004,25,53.3062,TRUE,0 -1/1/2022 9:35,319.783,610.0858369,71.6972,144.053,25,52.4508,TRUE,0 -1/1/2022 9:40,330.092,624.8654541,71.1414,145.115,25,51.6099,TRUE,0 -1/1/2022 9:45,290.263,525.1141086,70.6002,146.188,25,50.7843,TRUE,0 -1/1/2022 9:50,248.897,391.3345596,70.0739,147.273,25,49.9748,TRUE,0 -1/1/2022 9:55,257.562,403.9750664,69.5629,148.37,25,49.1823,TRUE,0 -1/1/2022 10:00,314.22,554.9322161,69.0676,149.479,25,48.4074,TRUE,0 -1/1/2022 10:05,275.345,430.1144492,68.5883,150.6,25,47.6512,TRUE,0 -1/1/2022 10:10,183.217,223.8326862,68.1254,151.732,25,46.9146,TRUE,0 -1/1/2022 10:15,301.55,488.4188296,67.6793,152.876,25,46.1984,TRUE,0 -1/1/2022 10:20,199.55,246.8655903,67.2503,154.031,25,45.5037,TRUE,0 -1/1/2022 10:25,107,106.3686218,66.8387,155.197,25,44.8315,TRUE,0 -1/1/2022 10:30,101,99.67334287,66.4449,156.374,25,44.1828,TRUE,0 -1/1/2022 10:35,111,110.4424688,66.0692,157.561,25,43.5587,TRUE,0 -1/1/2022 10:40,158.993,169.4522788,65.712,158.758,25,42.9602,TRUE,0 -1/1/2022 10:45,112,111.2575789,65.3656,159.965,25,42.3809,TRUE,0 -1/1/2022 10:50,117,116.6125077,65.0463,161.182,25,41.8371,TRUE,0 -1/1/2022 10:55,160.973,170.1573677,64.7464,162.408,25,41.3223,TRUE,0 -1/1/2022 11:00,129,129.6317869,64.466,163.642,25,40.8376,TRUE,0 -1/1/2022 11:05,224.766,274.08645,64.2055,164.885,25,40.384,TRUE,0 -1/1/2022 11:10,321.48,471.2991348,63.9652,166.135,25,39.9626,TRUE,0 -1/1/2022 11:15,239.813,296.6932352,63.7453,167.392,25,39.5744,TRUE,0 -1/1/2022 11:20,388.905,629.7295456,63.5459,168.656,25,39.2205,TRUE,0 -1/1/2022 11:25,168.724,178.3684175,63.3673,169.926,25,38.9018,TRUE,0 -1/1/2022 11:30,298.244,407.3131685,63.2097,171.201,25,38.6191,TRUE,0 -1/1/2022 11:35,137.906,139.4696505,63.0733,172.481,25,38.3733,TRUE,0 -1/1/2022 11:40,178.638,190.6689829,62.9581,173.765,25,38.165,TRUE,0 -1/1/2022 11:45,136.456,137.4613393,62.8644,175.052,25,37.995,TRUE,0 -1/1/2022 11:50,80,76.99264255,62.7921,176.342,25,37.8636,TRUE,0 -1/1/2022 11:55,122,121.2207916,62.7414,177.635,25,37.7714,TRUE,0 -1/1/2022 12:00,160.126,166.3597657,62.7123,178.928,25,37.7185,TRUE,0 -1/1/2022 12:05,117,115.7909258,62.7049,180.222,25,37.7052,TRUE,0 -1/1/2022 12:10,138.917,140.4285033,62.7192,181.516,25,37.7315,TRUE,0 -1/1/2022 12:15,374.936,581.8482185,62.7551,182.809,25,37.7973,TRUE,0 -1/1/2022 12:20,136.457,137.4385176,62.8127,184.1,25,37.9025,TRUE,0 -1/1/2022 12:25,98,95.58791471,62.8917,185.39,25,38.0466,TRUE,0 -1/1/2022 12:30,130,130.0728932,62.9923,186.676,25,38.2293,TRUE,0 -1/1/2022 12:35,116,114.8337761,63.1142,187.959,25,38.45,TRUE,0 -1/1/2022 12:40,361.793,547.0604265,63.2574,189.237,25,38.708,TRUE,0 -1/1/2022 12:45,137.895,139.6263369,63.4216,190.511,25,39.0027,TRUE,0 -1/1/2022 12:50,132,132.5556918,63.6068,191.779,25,39.3331,TRUE,0 -1/1/2022 12:55,116,115.0585871,63.8127,193.041,25,39.6984,TRUE,0 -1/1/2022 13:00,229.145,280.6189114,64.0392,194.296,25,40.0976,TRUE,0 -1/1/2022 13:05,122,121.7974658,64.2859,195.544,25,40.5297,TRUE,0 -1/1/2022 13:10,138.289,140.9656652,64.5527,196.784,25,40.9936,TRUE,0 -1/1/2022 13:15,321.979,482.4477144,64.8393,198.016,25,41.4884,TRUE,0 -1/1/2022 13:20,369.987,618.942026,65.1454,199.239,25,42.0129,TRUE,0 -1/1/2022 13:25,413.807,725.3729818,65.4708,200.453,25,42.5659,TRUE,0 -1/1/2022 13:30,441.017,783.2720213,65.8151,201.657,25,43.1465,TRUE,0 -1/1/2022 13:35,434.488,773.81293,66.1781,202.851,25,43.7534,TRUE,0 -1/1/2022 13:40,427.123,763.4409701,66.5594,204.035,25,44.3856,TRUE,0 -1/1/2022 13:45,418.519,751.4101778,66.9587,205.209,25,45.042,TRUE,0 -1/1/2022 13:50,410.682,740.4285033,67.3757,206.371,25,45.7216,TRUE,0 -1/1/2022 13:55,401.619,727.81184,67.81,207.523,25,46.4234,TRUE,0 -1/1/2022 14:00,392.967,715.5664555,68.2613,208.663,25,47.1462,TRUE,0 -1/1/2022 14:05,383.117,701.7167382,68.7292,209.792,25,47.8893,TRUE,0 -1/1/2022 14:10,326.23,2000,69.2133,210.909,25,48.6515,FALSE,3 -1/1/2022 14:15,340.548,2000,69.7134,212.014,25,49.4321,FALSE,3 -1/1/2022 14:20,277.837,,70.229,213.108,25,50.2302,FALSE,1 -1/1/2022 14:25,341.918,,70.7598,214.189,25,51.0448,FALSE,1 -1/1/2022 14:30,331.587,,71.3054,215.259,25,51.8753,FALSE,1 -1/1/2022 14:35,320.523,,71.8654,216.317,25,52.7208,FALSE,1 -1/1/2022 14:40,308.697,595.4050003,72.4395,217.363,25,53.5806,TRUE,0 -1/1/2022 14:45,299.135,583.0403978,73.0273,218.397,25,54.454,TRUE,0 -1/1/2022 14:50,286.813,565.1747394,73.6285,219.419,25,55.3404,TRUE,0 -1/1/2022 14:55,274.188,546.7061789,74.2426,220.43,25,56.239,TRUE,0 -1/1/2022 15:00,262.563,529.6239526,74.8693,221.428,25,57.1492,TRUE,0 -1/1/2022 15:05,249.7,510.6546767,75.5083,222.416,25,58.0706,TRUE,0 -1/1/2022 15:10,236.644,491.235779,76.1591,223.392,25,59.0024,TRUE,0 -1/1/2022 15:15,222.441,470.0354248,76.8215,224.356,25,59.9442,TRUE,0 -1/1/2022 15:20,209.138,449.894407,77.4949,225.31,25,60.8954,TRUE,0 -1/1/2022 15:25,195.786,429.4911097,78.1791,226.252,25,61.8555,TRUE,0 -1/1/2022 15:30,182.433,408.8970638,78.8736,227.184,25,62.824,TRUE,0 -1/1/2022 15:35,168.949,387.7307719,79.578,228.105,25,63.8003,TRUE,0 -1/1/2022 15:40,154.593,365.1304585,80.2919,229.016,25,64.784,TRUE,0 -1/1/2022 15:45,141.418,344.0050412,81.0148,229.917,25,65.7745,TRUE,0 -1/1/2022 15:50,128.628,324.7782546,81.7463,230.808,25,66.7713,TRUE,0 -1/1/2022 15:55,115.488,302.7372437,82.4857,231.689,25,67.7737,TRUE,0 -1/1/2022 16:00,101.656,279.269705,83.2323,232.561,25,68.7812,TRUE,0 -1/1/2022 16:05,88.1263,255.6260644,83.9854,233.423,25,69.7928,TRUE,0 -1/1/2022 16:10,74.9488,231.689829,84.7439,234.277,25,70.8076,TRUE,0 -1/1/2022 16:15,62.3854,206.0586552,85.5065,235.121,25,71.8243,TRUE,0 -1/1/2022 16:20,50.5179,179.6965052,86.2711,235.958,25,72.841,TRUE,0 -1/1/2022 16:25,39.4322,153.3193678,87.035,236.786,25,73.8551,TRUE,0 -1/1/2022 16:30,29.4753,118.320049,87.7938,237.606,25,74.8626,TRUE,0 -1/1/2022 16:35,10,9.531541658,88.5412,238.418,25,75.8576,TRUE,0 -1/1/2022 16:40,0,0,89.2679,239.223,25,76.8317,TRUE,0 -1/1/2022 16:45,0,0,89.9669,240.021,25,77.7782,TRUE,0 -1/1/2022 16:50,0,0,91.3925,240.812,0,0,TRUE,0 -1/1/2022 16:55,0,0,92.2343,241.597,0,0,TRUE,0 -1/1/2022 17:00,0,0,93.0824,242.375,0,0,TRUE,0 -1/1/2022 17:05,0,0,93.9365,243.147,0,0,TRUE,0 -1/1/2022 17:10,0,0,94.7965,243.914,0,0,TRUE,0 -1/1/2022 17:15,0,0,95.6621,244.675,0,0,TRUE,0 -1/1/2022 17:20,0,0,96.5331,245.43,0,0,TRUE,0 -1/1/2022 17:25,0,0,97.4094,246.181,0,0,TRUE,0 -1/1/2022 17:30,0,0,98.2907,246.928,0,0,TRUE,0 -1/1/2022 17:35,0,0,99.177,247.67,0,0,TRUE,0 -1/1/2022 17:40,0,0,100.068,248.408,0,0,TRUE,0 -1/1/2022 17:45,0,0,100.963,249.143,0,0,TRUE,0 -1/1/2022 17:50,0,0,101.863,249.874,0,0,TRUE,0 -1/1/2022 17:55,0,0,102.767,250.602,0,0,TRUE,0 -1/1/2022 18:00,0,0,103.676,251.328,0,0,TRUE,0 -1/1/2022 18:05,0,0,104.588,252.051,0,0,TRUE,0 -1/1/2022 18:10,0,,105.503,252.772,0,0,FALSE,1 -1/1/2022 18:15,0,,106.423,253.491,0,0,FALSE,1 -1/1/2022 18:20,0,,107.345,254.209,0,0,FALSE,1 -1/1/2022 18:25,0,,108.271,254.926,0,0,FALSE,1 -1/1/2022 18:30,0,,109.201,255.643,0,0,FALSE,1 -1/1/2022 18:35,0,,110.133,256.359,0,0,FALSE,1 -1/1/2022 18:40,0,,111.068,257.075,0,0,FALSE,1 -1/1/2022 18:45,0,,112.005,257.792,0,0,FALSE,1 -1/1/2022 18:50,0,,112.946,258.509,0,0,FALSE,1 -1/1/2022 18:55,0,,113.888,259.228,0,0,FALSE,1 -1/1/2022 19:00,0,1000,114.833,259.949,0,0,FALSE,3 -1/1/2022 19:05,0,1000,115.78,260.671,0,0,FALSE,3 -1/1/2022 19:10,0,1000,116.729,261.397,0,0,FALSE,3 -1/1/2022 19:15,0,1000,117.68,262.125,0,0,FALSE,3 -1/1/2022 19:20,0,1000,118.632,262.857,0,0,FALSE,3 -1/1/2022 19:25,0,1000,119.586,263.593,0,0,FALSE,3 -1/1/2022 19:30,0,1000,120.542,264.334,0,0,FALSE,3 -1/1/2022 19:35,0,1000,121.498,265.079,0,0,FALSE,3 -1/1/2022 19:40,0,1000,122.456,265.831,0,0,FALSE,3 -1/1/2022 19:45,0,1000,123.414,266.589,0,0,FALSE,3 -1/1/2022 19:50,0,1000,124.374,267.354,0,0,FALSE,3 -1/1/2022 19:55,0,1000,125.334,268.127,0,0,FALSE,3 -1/1/2022 20:00,0,1000,126.294,268.908,0,0,FALSE,3 -1/1/2022 20:05,0,1000,127.255,269.699,0,0,FALSE,3 -1/1/2022 20:10,0,1000,128.215,270.499,0,0,FALSE,3 -1/1/2022 20:15,0,1000,129.176,271.311,0,0,FALSE,3 -1/1/2022 20:20,0,1000,130.136,272.134,0,0,FALSE,3 -1/1/2022 20:25,0,1000,131.096,272.97,0,0,FALSE,3 -1/1/2022 20:30,0,0,132.055,273.819,0,0,TRUE,0 -1/1/2022 20:35,0,0,133.013,274.684,0,0,TRUE,0 -1/1/2022 20:40,0,0,133.97,275.565,0,0,TRUE,0 -1/1/2022 20:45,0,0,134.925,276.463,0,0,TRUE,0 -1/1/2022 20:50,0,0,135.879,277.379,0,0,TRUE,0 -1/1/2022 20:55,0,0,136.831,278.316,0,0,TRUE,0 -1/1/2022 21:00,0,0,137.78,279.274,0,0,TRUE,0 -1/1/2022 21:05,0,0,138.727,280.256,0,0,TRUE,0 -1/1/2022 21:10,0,0,139.67,281.263,0,0,TRUE,0 -1/1/2022 21:15,0,0,140.611,282.298,0,0,TRUE,0 -1/1/2022 21:20,0,0,141.548,283.361,0,0,TRUE,0 -1/1/2022 21:25,0,0,142.48,284.456,0,0,TRUE,0 -1/1/2022 21:30,0,0,143.408,285.585,0,0,TRUE,0 -1/1/2022 21:35,0,0,144.331,286.751,0,0,TRUE,0 -1/1/2022 21:40,0,0,145.247,287.956,0,0,TRUE,0 -1/1/2022 21:45,0,0,146.158,289.205,0,0,TRUE,0 -1/1/2022 21:50,0,0,147.062,290.499,0,0,TRUE,0 -1/1/2022 21:55,0,0,147.957,291.843,0,0,TRUE,0 -1/1/2022 22:00,0,0,,293.241,0,,FALSE,1 -1/1/2022 22:05,0,0,,294.698,0,,FALSE,1 -1/1/2022 22:10,0,0,,296.217,0,,FALSE,1 -1/1/2022 22:15,0,0,,297.804,0,,FALSE,1 -1/1/2022 22:20,0,0,,299.465,0,,FALSE,1 -1/1/2022 22:25,0,0,,301.204,0,,FALSE,1 -1/1/2022 22:30,0,0,,303.029,0,,FALSE,1 -1/1/2022 22:35,0,0,,304.946,0,,FALSE,1 -1/1/2022 22:40,0,0,,306.962,0,,FALSE,1 -1/1/2022 22:45,0,0,,309.083,0,,FALSE,1 -1/1/2022 22:50,0,0,,311.318,0,,FALSE,1 -1/1/2022 22:55,0,0,,313.673,0,,FALSE,1 -1/1/2022 23:00,0,0,,316.155,0,,FALSE,1 -1/1/2022 23:05,0,0,,318.771,0,,FALSE,1 -1/1/2022 23:10,0,0,,321.527,0,,FALSE,1 -1/1/2022 23:15,0,0,,324.428,0,,FALSE,1 -1/1/2022 23:20,0,0,,327.475,0,,FALSE,1 -1/1/2022 23:25,0,0,,330.67,0,,FALSE,1 -1/1/2022 23:30,0,0,,334.01,0,,FALSE,1 -1/1/2022 23:35,0,0,,337.49,0,0,FALSE,1 -1/1/2022 23:40,0,0,,341.101,0,0,FALSE,1 -1/1/2022 23:45,0,0,,344.828,0,0,FALSE,1 -1/1/2022 23:50,0,0,,348.655,0,0,FALSE,1 -1/1/2022 23:55,0,0,,352.559,0,0,FALSE,1 -1/2/2022 0:00,0,0,163.189,356.515,0,0,TRUE,0 -1/2/2022 0:05,0,0,163.213,0.495524,0,0,TRUE,0 -1/2/2022 0:10,0,0,163.171,4.47276,0,0,TRUE,0 -1/2/2022 0:15,0,0,163.063,8.41791,0,0,TRUE,0 -1/2/2022 0:20,0,0,162.89,12.3041,0,0,TRUE,0 -1/2/2022 0:25,0,0,162.654,16.107,0,0,TRUE,0 -1/2/2022 0:30,0,0,162.357,19.8059,0,0,TRUE,0 -1/2/2022 0:35,0,0,162.003,23.3841,0,0,TRUE,0 -1/2/2022 0:40,0,0,161.595,26.8291,0,0,TRUE,0 -1/2/2022 0:45,0,0,161.137,30.1324,0,0,TRUE,0 -1/2/2022 0:50,0,0,160.631,33.2895,0,0,TRUE,0 -1/2/2022 0:55,0,0,160.083,36.2987,0,0,TRUE,0 -1/2/2022 1:00,0,0,159.494,39.1614,0,0,TRUE,0 -1/2/2022 1:05,0,0,158.87,41.8809,0,0,TRUE,0 -1/2/2022 1:10,0,0,158.212,44.4621,0,0,TRUE,0 -1/2/2022 1:15,0,0,157.524,46.911,0,0,TRUE,0 -1/2/2022 1:20,0,0,156.809,49.2342,0,0,TRUE,0 -1/2/2022 1:25,0,0,156.069,51.439,0,0,TRUE,0 -1/2/2022 1:30,0,0,155.306,53.5326,0,0,TRUE,0 -1/2/2022 1:35,0,0,154.524,55.5222,0,0,TRUE,0 -1/2/2022 1:40,0,0,153.723,57.4148,0,0,TRUE,0 -1/2/2022 1:45,0,0,152.905,59.2173,0,0,TRUE,0 -1/2/2022 1:50,0,0,152.072,60.936,0,0,TRUE,0 -1/2/2022 1:55,0,0,151.225,62.577,0,0,TRUE,0 -1/2/2022 2:00,0,0,150.366,64.1461,0,0,TRUE,0 -1/2/2022 2:05,0,0,149.496,65.6486,0,0,TRUE,0 -1/2/2022 2:10,0,0,148.615,67.0895,0,0,TRUE,0 -1/2/2022 2:15,0,0,147.725,68.4733,0,0,TRUE,0 -1/2/2022 2:20,0,0,146.827,69.8042,0,0,TRUE,0 -1/2/2022 2:25,0,0,145.922,71.0863,0,0,TRUE,0 -1/2/2022 2:30,0,0,145.009,72.323,0,0,TRUE,0 -1/2/2022 2:35,0,0,144.091,73.5178,0,0,TRUE,0 -1/2/2022 2:40,0,0,143.166,74.6738,0,0,TRUE,0 -1/2/2022 2:45,0,0,142.237,75.7938,0,0,TRUE,0 -1/2/2022 2:50,0,0,141.303,76.8804,0,0,TRUE,0 -1/2/2022 2:55,0,0,140.365,77.936,0,0,TRUE,0 -1/2/2022 3:00,0,0,139.424,78.963,0,0,TRUE,0 -1/2/2022 3:05,0,0,138.479,79.9633,0,0,TRUE,0 -1/2/2022 3:10,0,0,137.531,80.9388,0,0,TRUE,0 -1/2/2022 3:15,0,0,136.581,81.8915,0,0,TRUE,0 -1/2/2022 3:20,0,0,135.629,82.8228,0,0,TRUE,0 -1/2/2022 3:25,0,0,134.674,83.7344,0,0,TRUE,0 -1/2/2022 3:30,0,0,133.718,84.6277,0,0,TRUE,0 -1/2/2022 3:35,0,0,132.761,85.5039,0,0,TRUE,0 -1/2/2022 3:40,0,0,131.802,86.3644,0,0,TRUE,0 -1/2/2022 3:45,0,0,130.843,87.2103,0,0,TRUE,0 -1/2/2022 3:50,0,0,129.882,88.0427,0,0,TRUE,0 -1/2/2022 3:55,0,0,128.922,88.8626,0,0,TRUE,0 -1/2/2022 4:00,0,0,127.961,89.6709,0,0,TRUE,0 -1/2/2022 4:05,0,0,127,90.4686,0,0,TRUE,0 -1/2/2022 4:10,0,0,126.039,91.2564,0,0,TRUE,0 -1/2/2022 4:15,0,0,125.078,92.0353,0,0,TRUE,0 -1/2/2022 4:20,0,0,124.118,92.8059,0,0,TRUE,0 -1/2/2022 4:25,0,0,123.159,93.5689,0,0,TRUE,0 -1/2/2022 4:30,0,0,122.2,94.3251,0,0,TRUE,0 -1/2/2022 4:35,0,0,121.242,95.075,0,0,TRUE,0 -1/2/2022 4:40,0,0,120.285,95.8193,0,0,TRUE,0 -1/2/2022 4:45,0,0,119.33,96.5585,0,0,TRUE,0 -1/2/2022 4:50,0,0,118.376,97.2933,0,0,TRUE,0 -1/2/2022 4:55,0,0,117.423,98.0241,0,0,TRUE,0 -1/2/2022 5:00,0,0,116.473,98.7515,0,0,TRUE,0 -1/2/2022 5:05,0,0,115.524,99.4759,0,0,TRUE,0 -1/2/2022 5:10,0,0,114.577,100.198,0,0,TRUE,0 -1/2/2022 5:15,0,0,113.632,100.918,0,0,TRUE,0 -1/2/2022 5:20,0,0,112.69,101.636,0,0,TRUE,0 -1/2/2022 5:25,0,0,111.75,102.353,0,0,TRUE,0 -1/2/2022 5:30,0,0,110.812,103.069,0,0,TRUE,0 -1/2/2022 5:35,0,0,109.877,103.785,0,0,TRUE,0 -1/2/2022 5:40,0,0,108.945,104.501,0,0,TRUE,0 -1/2/2022 5:45,0,0,108.017,105.217,0,0,TRUE,0 -1/2/2022 5:50,0,0,107.091,105.934,0,0,TRUE,0 -1/2/2022 5:55,0,0,106.168,106.652,0,0,TRUE,0 -1/2/2022 6:00,0,0,105.249,107.372,0,0,TRUE,0 -1/2/2022 6:05,0,0,104.334,108.093,0,0,TRUE,0 -1/2/2022 6:10,0,0,103.422,108.817,0,0,TRUE,0 -1/2/2022 6:15,0,0,102.515,109.543,0,0,TRUE,0 -1/2/2022 6:20,0,0,101.611,110.272,0,0,TRUE,0 -1/2/2022 6:25,0,0,100.712,111.003,0,0,TRUE,0 -1/2/2022 6:30,0,0,99.8166,111.739,0,0,TRUE,0 -1/2/2022 6:35,0,0,98.9261,112.478,0,0,TRUE,0 -1/2/2022 6:40,0,0,98.0405,113.221,0,0,TRUE,0 -1/2/2022 6:45,0,0,97.1597,113.968,0,0,TRUE,0 -1/2/2022 6:50,0,0,96.2841,114.72,0,0,TRUE,0 -1/2/2022 6:55,0,0,95.4137,115.477,0,0,TRUE,0 -1/2/2022 7:00,0,0,94.5489,116.239,0,0,TRUE,0 -1/2/2022 7:05,0,0,93.6897,117.007,0,0,TRUE,0 -1/2/2022 7:10,0,0,92.8363,117.78,0,0,TRUE,0 -1/2/2022 7:15,0,0,91.9891,118.56,0,0,TRUE,0 -1/2/2022 7:20,0,0,91.1481,119.346,0,0,TRUE,0 -1/2/2022 7:25,0,0,89.8693,120.138,25,77.6279,TRUE,0 -1/2/2022 7:30,0,0,89.1387,120.938,25,76.6517,TRUE,0 -1/2/2022 7:35,10,9.531541658,88.3873,121.745,25,75.6543,TRUE,0 -1/2/2022 7:40,15,14.29729546,87.6231,122.559,25,74.6432,TRUE,0 -1/2/2022 7:45,20.2078,28.59966619,86.8528,123.381,25,73.6244,TRUE,0 -1/2/2022 7:50,26.4605,40.1233054,86.081,124.211,25,72.6024,TRUE,0 -1/2/2022 7:55,33.905,55.67443286,85.3108,125.049,25,71.58,TRUE,0 -1/2/2022 8:00,42.9372,80.19449554,84.5443,125.896,25,70.5591,TRUE,0 -1/2/2022 8:05,52.1037,96.96573336,83.783,126.752,25,69.5411,TRUE,0 -1/2/2022 8:10,53.9825,82.88745827,83.0279,127.616,25,68.5272,TRUE,0 -1/2/2022 8:15,58.3286,85.00374685,82.28,128.491,25,67.518,TRUE,0 -1/2/2022 8:20,61.6205,78.92874174,81.5398,129.374,25,66.5142,TRUE,0 -1/2/2022 8:25,70.9041,99.41923837,80.808,130.267,25,65.5165,TRUE,0 -1/2/2022 8:30,75.4703,96.65917297,80.085,131.171,25,64.5254,TRUE,0 -1/2/2022 8:35,173.022,391.8250562,79.3713,132.084,25,63.5414,TRUE,0 -1/2/2022 8:40,100.384,146.5586893,78.6674,133.008,25,62.5649,TRUE,0 -1/2/2022 8:45,200.107,432.6452756,77.9736,133.943,25,61.5966,TRUE,0 -1/2/2022 8:50,109.341,151.689829,77.2903,134.888,25,60.6368,TRUE,0 -1/2/2022 8:55,149.647,247.5154983,76.6178,135.845,25,59.6861,TRUE,0 -1/2/2022 9:00,240.315,491.777369,75.9567,136.812,25,58.745,TRUE,0 -1/2/2022 9:05,252.605,509.7179644,75.3073,137.791,25,57.814,TRUE,0 -1/2/2022 9:10,265.426,528.0230261,74.6698,138.782,25,56.8936,TRUE,0 -1/2/2022 9:15,278.251,546.3451189,74.0447,139.784,25,55.9845,TRUE,0 -1/2/2022 9:20,290.07,563.304721,73.4324,140.797,25,55.0872,TRUE,0 -1/2/2022 9:25,302.279,580.4346345,72.8331,141.823,25,54.2024,TRUE,0 -1/2/2022 9:30,313.419,596.1271204,72.2473,142.86,25,53.3306,TRUE,0 -1/2/2022 9:35,283.081,519.5074596,71.6753,143.91,25,52.4726,TRUE,0 -1/2/2022 9:40,336.444,628.5714286,71.1175,144.971,25,51.6292,TRUE,0 -1/2/2022 9:45,346.976,643.3033585,70.5743,146.044,25,50.8009,TRUE,0 -1/2/2022 9:50,358.037,658.583691,70.0459,147.129,25,49.9886,TRUE,0 -1/2/2022 9:55,367.941,672.324409,69.5329,148.227,25,49.1932,TRUE,0 -1/2/2022 10:00,378.679,687.2028067,69.0355,149.335,25,48.4154,TRUE,0 -1/2/2022 10:05,387.878,699.8467198,68.5541,150.456,25,47.6561,TRUE,0 -1/2/2022 10:10,396.879,712.2419783,68.0891,151.589,25,46.9163,TRUE,0 -1/2/2022 10:15,406.292,725.0289529,67.6409,152.732,25,46.1969,TRUE,0 -1/2/2022 10:20,414.479,736.1877512,67.2096,153.888,25,45.4989,TRUE,0 -1/2/2022 10:25,422.43,747.053614,66.7959,155.054,25,44.8232,TRUE,0 -1/2/2022 10:30,431.139,758.9583759,66.3999,156.231,25,44.171,TRUE,0 -1/2/2022 10:35,439.724,768.4481232,66.022,157.419,25,43.5433,TRUE,0 -1/2/2022 10:40,446.451,777.5631855,65.6625,158.616,25,42.9412,TRUE,0 -1/2/2022 10:45,452.909,786.3376252,65.3218,159.824,25,42.3657,TRUE,0 -1/2/2022 10:50,460.093,796.0930581,65.0001,161.042,25,41.818,TRUE,0 -1/2/2022 10:55,465.999,804.1760338,64.6977,162.268,25,41.2992,TRUE,0 -1/2/2022 11:00,471.189,811.1417672,64.415,163.503,25,40.8104,TRUE,0 -1/2/2022 11:05,477.082,819.0510253,64.1522,164.747,25,40.3527,TRUE,0 -1/2/2022 11:10,481.675,825.2639826,63.9095,165.998,25,39.9272,TRUE,0 -1/2/2022 11:15,485.962,831.0954425,63.6872,167.256,25,39.5348,TRUE,0 -1/2/2022 11:20,489.941,836.5385925,63.4856,168.521,25,39.1768,TRUE,0 -1/2/2022 11:25,493.159,840.8065945,63.3047,169.792,25,38.8538,TRUE,0 -1/2/2022 11:30,496.509,845.4560937,63.1449,171.069,25,38.5669,TRUE,0 -1/2/2022 11:35,499.633,849.4447851,63.0061,172.35,25,38.3169,TRUE,0 -1/2/2022 11:40,501.428,851.7031133,62.8887,173.635,25,38.1045,TRUE,0 -1/2/2022 11:45,503.352,854.3429389,62.7928,174.924,25,37.9304,TRUE,0 -1/2/2022 11:50,504.948,856.5672049,62.7183,176.216,25,37.7949,TRUE,0 -1/2/2022 11:55,505.756,857.5822604,62.6655,177.51,25,37.6987,TRUE,0 -1/2/2022 12:00,506.233,858.17835,62.6343,178.805,25,37.642,TRUE,0 -1/2/2022 12:05,506.837,859.1559371,62.6249,180.1,25,37.6249,TRUE,0 -1/2/2022 12:10,506.65,858.9175012,62.6371,181.396,25,37.6475,TRUE,0 -1/2/2022 12:15,505.672,857.4630424,62.671,182.691,25,37.7098,TRUE,0 -1/2/2022 12:20,504.822,856.3900811,62.7266,183.985,25,37.8115,TRUE,0 -1/2/2022 12:25,503.184,854.1079093,62.8037,185.276,25,37.9524,TRUE,0 -1/2/2022 12:30,501.674,852.2038286,62.9024,186.565,25,38.1319,TRUE,0 -1/2/2022 12:35,498.928,848.3071054,63.0225,187.85,25,38.3496,TRUE,0 -1/2/2022 12:40,496.313,844.7918796,63.1639,189.13,25,38.6048,TRUE,0 -1/2/2022 12:45,492.928,840.0912869,63.3265,190.406,25,38.8968,TRUE,0 -1/2/2022 12:50,489.675,835.7755978,63.51,191.676,25,39.2247,TRUE,0 -1/2/2022 12:55,485.662,830.2847605,63.7143,192.941,25,39.5876,TRUE,0 -1/2/2022 13:00,481.782,825.1788269,63.9391,194.198,25,39.9846,TRUE,0 -1/2/2022 13:05,476.154,817.5999728,64.1844,195.448,25,40.4147,TRUE,0 -1/2/2022 13:10,470.795,810.1982424,64.4497,196.691,25,40.8769,TRUE,0 -1/2/2022 13:15,465.576,803.1882281,64.7349,197.925,25,41.3699,TRUE,0 -1/2/2022 13:20,459.642,795.0643777,65.0397,199.151,25,41.8929,TRUE,0 -1/2/2022 13:25,452.431,785.2748825,65.3639,200.367,25,42.4445,TRUE,0 -1/2/2022 13:30,445.947,776.4629743,65.707,201.574,25,43.0238,TRUE,0 -1/2/2022 13:35,438.791,766.5849172,66.0688,202.77,25,43.6296,TRUE,0 -1/2/2022 13:40,431.386,756.3968935,66.449,203.957,25,44.2609,TRUE,0 -1/2/2022 13:45,423.737,745.9057156,66.8473,205.133,25,44.9164,TRUE,0 -1/2/2022 13:50,414.853,733.7999864,67.2633,206.298,25,45.5953,TRUE,0 -1/2/2022 13:55,406.739,722.7229375,67.6967,207.452,25,46.2964,TRUE,0 -1/2/2022 14:00,397.03,709.3671231,68.1471,208.594,25,47.0188,TRUE,0 -1/2/2022 14:05,388.121,697.0808638,68.6142,209.725,25,47.7614,TRUE,0 -1/2/2022 14:10,378.018,683.2311465,69.0976,210.844,25,48.5234,TRUE,0 -1/2/2022 14:15,368.383,669.8208325,69.597,211.952,25,49.3037,TRUE,0 -1/2/2022 14:20,357.587,654.8913414,70.112,213.048,25,50.1016,TRUE,0 -1/2/2022 14:25,347.308,640.4659718,70.6422,214.132,25,50.9162,TRUE,0 -1/2/2022 14:30,335.905,624.5622999,71.1873,215.204,25,51.7468,TRUE,0 -1/2/2022 14:35,325.387,609.847401,71.7469,216.264,25,52.5924,TRUE,0 -1/2/2022 14:40,313.461,593.0785476,72.3207,217.312,25,53.4524,TRUE,0 -1/2/2022 14:45,301.165,575.6386675,72.9082,218.348,25,54.3261,TRUE,0 -1/2/2022 14:50,288.824,558.1442878,73.5092,219.372,25,55.2129,TRUE,0 -1/2/2022 14:55,277.176,541.3958717,74.1232,220.384,25,56.1119,TRUE,0 -1/2/2022 15:00,264.526,523.3190272,74.7499,221.385,25,57.0228,TRUE,0 -1/2/2022 15:05,251.634,504.7346549,75.3889,222.374,25,57.9447,TRUE,0 -1/2/2022 15:10,238.546,485.6972546,76.0399,223.352,25,58.8773,TRUE,0 -1/2/2022 15:15,225.307,466.2681382,76.7024,224.319,25,59.8199,TRUE,0 -1/2/2022 15:20,211.965,446.5154302,77.3762,225.274,25,60.7719,TRUE,0 -1/2/2022 15:25,198.568,426.4970366,78.0608,226.218,25,61.7331,TRUE,0 -1/2/2022 15:30,184.971,405.8212412,78.756,227.152,25,62.7027,TRUE,0 -1/2/2022 15:35,171.359,385.8982219,79.4612,228.075,25,63.6803,TRUE,0 -1/2/2022 15:40,157.895,365.018053,80.176,228.987,25,64.6655,TRUE,0 -1/2/2022 15:45,144.448,343.7734178,80.9002,229.89,25,65.6577,TRUE,0 -1/2/2022 15:50,130.257,321.2855099,81.6331,230.782,25,66.6564,TRUE,0 -1/2/2022 15:55,117.113,299.6804959,82.3743,231.665,25,67.6612,TRUE,0 -1/2/2022 16:00,103.151,276.313441,83.1233,232.538,25,68.6713,TRUE,0 -1/2/2022 16:05,89.6141,253.1344097,83.8793,233.402,25,69.6862,TRUE,0 -1/2/2022 16:10,39.3504,64.33374208,84.6415,234.257,25,70.7049,TRUE,0 -1/2/2022 16:15,64.7454,205.9479529,85.4087,235.103,25,71.7265,TRUE,0 -1/2/2022 16:20,51.7826,178.0952381,86.1795,235.941,25,72.7495,TRUE,0 -1/2/2022 16:25,21.0208,33.05010559,86.9516,236.77,25,73.7718,TRUE,0 -1/2/2022 16:30,14,13.34416513,87.7219,237.591,25,74.7905,TRUE,0 -1/2/2022 16:35,8,7.625246951,88.4854,238.405,25,75.801,TRUE,0 -1/2/2022 16:40,0,0,89.2351,239.211,25,76.7968,TRUE,0 -1/2/2022 16:45,0,0,89.9641,240.01,25,77.7715,TRUE,0 -1/2/2022 16:50,0,0,91.2536,240.803,0,0,TRUE,0 -1/2/2022 16:55,0,0,92.0954,241.588,0,0,TRUE,0 -1/2/2022 17:00,0,0,92.9434,242.368,0,0,TRUE,0 -1/2/2022 17:05,0,0,93.7974,243.141,0,0,TRUE,0 -1/2/2022 17:10,0,0,94.6573,243.908,0,0,TRUE,0 -1/2/2022 17:15,0,0,95.5229,244.67,0,0,TRUE,0 -1/2/2022 17:20,0,0,96.3939,245.427,0,0,TRUE,0 -1/2/2022 17:25,0,0,97.2701,246.179,0,0,TRUE,0 -1/2/2022 17:30,0,0,98.1514,246.927,0,0,TRUE,0 -1/2/2022 17:35,0,0,99.0377,247.67,0,0,TRUE,0 -1/2/2022 17:40,0,0,99.9286,248.409,0,0,TRUE,0 -1/2/2022 17:45,0,0,100.824,249.144,0,0,TRUE,0 -1/2/2022 17:50,0,0,101.724,249.876,0,0,TRUE,0 -1/2/2022 17:55,0,0,102.628,250.605,0,0,TRUE,0 -1/2/2022 18:00,0,0,103.536,251.332,0,0,TRUE,0 -1/2/2022 18:05,0,0,104.448,252.056,0,0,TRUE,0 -1/2/2022 18:10,0,0,105.364,252.778,0,0,TRUE,0 -1/2/2022 18:15,0,0,106.283,253.498,0,0,TRUE,0 -1/2/2022 18:20,0,0,107.206,254.217,0,0,TRUE,0 -1/2/2022 18:25,0,0,108.132,254.934,0,0,TRUE,0 -1/2/2022 18:30,0,0,109.061,255.651,0,0,TRUE,0 -1/2/2022 18:35,0,0,109.994,256.368,0,0,TRUE,0 -1/2/2022 18:40,0,0,110.929,257.085,0,0,TRUE,0 -1/2/2022 18:45,0,0,111.866,257.802,0,0,TRUE,0 -1/2/2022 18:50,0,0,112.807,258.521,0,0,TRUE,0 -1/2/2022 18:55,0,0,113.749,259.24,0,0,TRUE,0 -1/2/2022 19:00,0,0,114.694,259.961,0,0,TRUE,0 -1/2/2022 19:05,0,0,115.641,260.685,0,0,TRUE,0 -1/2/2022 19:10,0,0,116.59,261.41,0,0,TRUE,0 -1/2/2022 19:15,0,0,117.541,262.139,0,0,TRUE,0 -1/2/2022 19:20,0,0,118.493,262.872,0,0,TRUE,0 -1/2/2022 19:25,0,0,119.447,263.609,0,0,TRUE,0 -1/2/2022 19:30,0,0,120.403,264.35,0,0,TRUE,0 -1/2/2022 19:35,0,0,121.359,265.096,0,0,TRUE,0 -1/2/2022 19:40,0,0,122.317,265.848,0,0,TRUE,0 -1/2/2022 19:45,0,0,123.276,266.607,0,0,TRUE,0 -1/2/2022 19:50,0,0,124.235,267.372,0,0,TRUE,0 -1/2/2022 19:55,0,0,125.195,268.145,0,0,TRUE,0 -1/2/2022 20:00,0,0,126.155,268.927,0,0,TRUE,0 -1/2/2022 20:05,0,0,127.116,269.718,0,0,TRUE,0 -1/2/2022 20:10,0,0,128.076,270.518,0,0,TRUE,0 -1/2/2022 20:15,0,0,129.037,271.33,0,0,TRUE,0 -1/2/2022 20:20,0,0,129.997,272.153,0,0,TRUE,0 -1/2/2022 20:25,0,0,130.957,272.989,0,0,TRUE,0 -1/2/2022 20:30,0,0,131.916,273.839,0,0,TRUE,0 -1/2/2022 20:35,0,0,132.874,274.704,0,0,TRUE,0 -1/2/2022 20:40,0,0,133.831,275.584,0,0,TRUE,0 -1/2/2022 20:45,0,0,134.786,276.482,0,0,TRUE,0 -1/2/2022 20:50,0,0,135.74,277.399,0,0,TRUE,0 -1/2/2022 20:55,0,0,136.691,278.335,0,0,TRUE,0 -1/2/2022 21:00,0,0,137.641,279.293,0,0,TRUE,0 -1/2/2022 21:05,0,0,138.587,280.275,0,0,TRUE,0 -1/2/2022 21:10,0,0,139.531,281.281,0,0,TRUE,0 -1/2/2022 21:15,0,0,140.471,282.314,0,0,TRUE,0 -1/2/2022 21:20,0,0,141.408,283.377,0,0,TRUE,0 -1/2/2022 21:25,0,0,142.34,284.471,0,0,TRUE,0 -1/2/2022 21:30,0,0,143.268,285.599,0,0,TRUE,0 -1/2/2022 21:35,0,0,144.191,286.763,0,0,TRUE,0 -1/2/2022 21:40,0,0,145.108,287.966,0,0,TRUE,0 -1/2/2022 21:45,0,0,146.018,289.213,0,0,TRUE,0 -1/2/2022 21:50,0,0,146.922,290.504,0,0,TRUE,0 -1/2/2022 21:55,0,0,147.817,291.846,0,0,TRUE,0 -1/2/2022 22:00,0,0,148.705,293.241,0,0,TRUE,0 -1/2/2022 22:05,0,0,149.582,294.693,0,0,TRUE,0 -1/2/2022 22:10,0,0,150.45,296.208,0,0,TRUE,0 -1/2/2022 22:15,0,0,151.306,297.791,0,0,TRUE,0 -1/2/2022 22:20,0,0,152.149,299.446,0,0,TRUE,0 -1/2/2022 22:25,0,0,152.978,301.18,0,0,TRUE,0 -1/2/2022 22:30,0,0,153.792,302.998,0,0,TRUE,0 -1/2/2022 22:35,0,0,154.589,304.907,0,0,TRUE,0 -1/2/2022 22:40,0,0,155.367,306.913,0,0,TRUE,0 -1/2/2022 22:45,0,0,156.124,309.025,0,0,TRUE,0 -1/2/2022 22:50,0,0,156.859,311.248,0,0,TRUE,0 -1/2/2022 22:55,0,0,157.568,313.591,0,0,TRUE,0 -1/2/2022 23:00,0,0,158.249,316.059,0,0,TRUE,0 -1/2/2022 23:05,0,0,158.9,318.66,0,0,TRUE,0 -1/2/2022 23:10,0,0,159.517,321.398,0,0,TRUE,0 -1/2/2022 23:15,0,0,160.097,324.28,0,0,TRUE,0 -1/2/2022 23:20,0,0,160.637,327.307,0,0,TRUE,0 -1/2/2022 23:25,0,0,161.133,330.48,0,0,TRUE,0 -1/2/2022 23:30,0,0,161.582,333.798,0,0,TRUE,0 -1/2/2022 23:35,0,0,161.98,337.254,0,0,TRUE,0 -1/2/2022 23:40,0,0,162.323,340.84,0,0,TRUE,0 -1/2/2022 23:45,0,0,162.609,344.543,0,0,TRUE,0 -1/2/2022 23:50,0,0,162.834,348.346,0,0,TRUE,0 -1/2/2022 23:55,0,0,162.996,352.226,0,0,TRUE,0 +Time stamp,ghi,poa_global,solar_zenith,azimuth,surface_tilt,aoi,poa_global_limit_bool_flag,poa_global_limit_int_flag,lower_limit,upper_limit +1/1/2022 0:00,0,0,163.276,356.877,0,0,TRUE,0,0,0 +1/1/2022 0:05,0,0,163.295,0.875773,0,0,TRUE,0,0,0 +1/1/2022 0:10,0,0,163.247,4.86776,0,0,TRUE,0,0,0 +1/1/2022 0:15,0,0,163.132,8.82456,0,0,TRUE,0,0,0 +1/1/2022 0:20,0,0,162.952,12.7191,0,0,TRUE,0,0,0 +1/1/2022 0:25,0,0,162.709,16.5273,0,0,TRUE,0,0,0 +1/1/2022 0:30,0,0,162.406,20.2283,0,0,TRUE,0,0,0 +1/1/2022 0:35,0,0,162.045,23.8058,0,0,TRUE,0,0,0 +1/1/2022 0:40,0,0,161.631,27.2477,0,0,TRUE,0,0,0 +1/1/2022 0:45,0,0,161.166,30.5457,0,0,TRUE,0,0,0 +1/1/2022 0:50,0,0,160.655,33.6958,0,0,TRUE,0,0,0 +1/1/2022 0:55,0,0,160.1,36.6968,0,0,TRUE,0,0,0 +1/1/2022 1:00,0,0,159.507,39.5502,0,0,TRUE,0,0,0 +1/1/2022 1:05,0,0,158.877,42.2597,0,0,TRUE,0,0,0 +1/1/2022 1:10,0,0,158.215,44.8305,0,0,TRUE,0,0,0 +1/1/2022 1:15,0,0,157.523,47.2687,0,0,TRUE,0,0,0 +1/1/2022 1:20,0,0,156.804,49.5813,0,0,TRUE,0,0,0 +1/1/2022 1:25,0,0,156.061,51.7756,0,0,TRUE,0,0,0 +1/1/2022 1:30,0,0,155.295,53.8588,0,0,TRUE,0,0,0 +1/1/2022 1:35,0,0,154.509,55.8383,0,0,TRUE,0,0,0 +1/1/2022 1:40,0,0,153.705,57.7212,0,0,TRUE,0,0,0 +1/1/2022 1:45,0,0,152.884,59.5143,0,0,TRUE,0,0,0 +1/1/2022 1:50,0,0,152.049,61.224,0,0,TRUE,0,0,0 +1/1/2022 1:55,0,0,151.2,62.8565,0,0,TRUE,0,0,0 +1/1/2022 2:00,0,0,150.339,64.4175,0,0,TRUE,0,0,0 +1/1/2022 2:05,0,0,149.467,65.9122,0,0,TRUE,0,0,0 +1/1/2022 2:10,0,0,148.585,67.3457,0,0,TRUE,0,0,0 +1/1/2022 2:15,0,0,147.693,68.7224,0,0,TRUE,0,0,0 +1/1/2022 2:20,0,0,146.794,70.0468,0,0,TRUE,0,0,0 +1/1/2022 2:25,0,0,145.887,71.3225,0,0,TRUE,0,0,0 +1/1/2022 2:30,0,0,144.973,72.5533,0,0,TRUE,0,0,0 +1/1/2022 2:35,0,0,144.054,73.7426,0,0,TRUE,0,0,0 +1/1/2022 2:40,0,0,143.128,74.8932,0,0,TRUE,0,0,0 +1/1/2022 2:45,0,0,142.198,76.0082,0,0,TRUE,0,0,0 +1/1/2022 2:50,0,0,141.263,77.09,0,0,TRUE,0,0,0 +1/1/2022 2:55,0,0,140.325,78.1411,0,0,TRUE,0,0,0 +1/1/2022 3:00,0,0,139.383,79.1638,0,0,TRUE,0,0,0 +1/1/2022 3:05,0,0,138.437,80.1601,0,0,TRUE,0,0,0 +1/1/2022 3:10,0,0,137.489,81.1319,0,0,TRUE,0,0,0 +1/1/2022 3:15,0,0,136.538,82.0809,0,0,TRUE,0,0,0 +1/1/2022 3:20,0,0,135.585,83.0088,0,0,TRUE,0,0,0 +1/1/2022 3:25,0,0,134.631,83.9172,0,0,TRUE,0,0,0 +1/1/2022 3:30,0,0,133.674,84.8074,0,0,TRUE,0,0,0 +1/1/2022 3:35,0,0,132.717,85.6807,0,0,TRUE,0,0,0 +1/1/2022 3:40,0,0,131.758,86.5385,0,0,TRUE,0,0,0 +1/1/2022 3:45,0,0,130.798,87.3818,0,0,TRUE,0,0,0 +1/1/2022 3:50,0,0,129.838,88.2117,0,0,TRUE,0,0,0 +1/1/2022 3:55,0,0,128.877,89.0293,0,0,TRUE,0,0,0 +1/1/2022 4:00,0,0,127.916,89.8354,0,0,TRUE,0,0,0 +1/1/2022 4:05,0,0,126.955,90.631,0,0,TRUE,0,0,0 +1/1/2022 4:10,0,0,125.994,91.4169,0,0,TRUE,0,0,0 +1/1/2022 4:15,0,0,125.034,92.1939,0,0,TRUE,0,0,0 +1/1/2022 4:20,0,0,124.074,92.9628,0,0,TRUE,0,0,0 +1/1/2022 4:25,0,0,123.115,93.7242,0,0,TRUE,0,0,0 +1/1/2022 4:30,0,0,122.156,94.4788,0,0,TRUE,0,0,0 +1/1/2022 4:35,0,0,121.198,95.2272,0,0,TRUE,0,0,0 +1/1/2022 4:40,0,0,120.242,95.9701,0,0,TRUE,0,0,0 +1/1/2022 4:45,0,0,119.287,96.7081,0,0,TRUE,0,0,0 +1/1/2022 4:50,0,0,118.333,97.4416,0,0,TRUE,0,0,0 +1/1/2022 4:55,0,0,117.381,98.1713,0,0,TRUE,0,0,0 +1/1/2022 5:00,0,0,116.431,98.8975,0,0,TRUE,0,0,0 +1/1/2022 5:05,0,0,115.482,99.6209,0,0,TRUE,0,0,0 +1/1/2022 5:10,0,0,114.536,100.342,0,0,TRUE,0,0,0 +1/1/2022 5:15,0,0,113.591,101.061,0,0,TRUE,0,0,0 +1/1/2022 5:20,0,0,112.65,101.778,0,0,TRUE,0,0,0 +1/1/2022 5:25,0,0,111.71,102.495,0,0,TRUE,0,0,0 +1/1/2022 5:30,0,0,110.773,103.21,0,0,TRUE,0,0,0 +1/1/2022 5:35,0,0,109.839,103.925,0,0,TRUE,0,0,0 +1/1/2022 5:40,0,0,108.908,104.641,0,0,TRUE,0,0,0 +1/1/2022 5:45,0,0,107.979,105.356,0,0,TRUE,0,0,0 +1/1/2022 5:50,0,0,107.054,106.073,0,0,TRUE,0,0,0 +1/1/2022 5:55,0,0,106.132,106.791,0,0,TRUE,0,0,0 +1/1/2022 6:00,0,0,105.214,107.51,0,0,TRUE,0,0,0 +1/1/2022 6:05,0,0,104.299,108.231,0,0,TRUE,0,0,0 +1/1/2022 6:10,0,0,103.388,108.954,0,0,TRUE,0,0,0 +1/1/2022 6:15,0,0,102.482,109.68,0,0,TRUE,0,0,0 +1/1/2022 6:20,0,0,101.579,110.408,0,0,TRUE,0,0,0 +1/1/2022 6:25,0,0,100.68,111.14,0,0,TRUE,0,0,0 +1/1/2022 6:30,0,0,99.786,111.875,0,0,TRUE,0,0,0 +1/1/2022 6:35,0,0,98.8964,112.614,0,0,TRUE,0,0,0 +1/1/2022 6:40,0,0,98.0117,113.357,0,0,TRUE,0,0,0 +1/1/2022 6:45,0,0,97.1319,114.104,0,0,TRUE,0,0,0 +1/1/2022 6:50,0,0,96.2572,114.856,0,0,TRUE,0,0,0 +1/1/2022 6:55,0,0,95.3878,115.613,0,0,TRUE,0,0,0 +1/1/2022 7:00,0,0,94.524,116.375,0,0,TRUE,0,0,0 +1/1/2022 7:05,0,0,93.6658,117.143,0,0,TRUE,0,0,0 +1/1/2022 7:10,0,0,92.8136,117.916,0,0,TRUE,0,0,0 +1/1/2022 7:15,0,0,91.9674,118.696,0,0,TRUE,0,0,0 +1/1/2022 7:20,0,0,91.1275,119.482,0,0,TRUE,0,0,0 +1/1/2022 7:25,0,0,89.8597,120.275,25,77.568,TRUE,0,0,494.8127202 +1/1/2022 7:30,0,0,89.1277,121.074,25,76.5906,TRUE,0,0,513.0044936 +1/1/2022 7:35,9,8.578377274,88.3761,121.881,25,75.5932,TRUE,0,0,531.76167 +1/1/2022 7:40,14,13.34416513,87.6119,122.696,25,74.5822,TRUE,0,0,550.9493275 +1/1/2022 7:45,18,17.75723823,86.8419,123.518,25,73.5639,TRUE,0,0,570.4300703 +1/1/2022 7:50,25.1649,31.65355269,86.0707,124.348,25,72.5427,TRUE,0,0,590.1000224 +1/1/2022 7:55,25,25.10147149,85.3014,125.187,25,71.5212,TRUE,0,0,609.8889498 +1/1/2022 8:00,31,32.01611145,84.5359,126.034,25,70.5014,TRUE,0,0,629.7382815 +1/1/2022 8:05,31,30.86473874,83.7757,126.89,25,69.4847,TRUE,0,0,649.6016265 +1/1/2022 8:10,41,42.70760951,83.0219,127.755,25,68.472,TRUE,0,0,669.4431616 +1/1/2022 8:15,54.9143,72.87008652,82.2752,128.629,25,67.4642,TRUE,0,0,689.2279921 +1/1/2022 8:20,79.1681,142.7961714,81.5363,129.513,25,66.462,TRUE,0,0,708.9261131 +1/1/2022 8:25,142.129,340.2019892,80.8059,130.407,25,65.4658,TRUE,0,0,728.5144121 +1/1/2022 8:30,156.227,362.8414742,80.0844,131.311,25,64.4763,TRUE,0,0,747.9648715 +1/1/2022 8:35,60,61.44389945,79.3722,132.225,25,63.4939,TRUE,0,0,767.2563574 +1/1/2022 8:40,104.898,160.6907828,78.6698,133.149,25,62.5193,TRUE,0,0,786.3628303 +1/1/2022 8:45,138.613,256.2299884,77.9776,134.084,25,61.5527,TRUE,0,0,805.2690331 +1/1/2022 8:50,140.278,238.7972614,77.2959,135.03,25,60.5948,TRUE,0,0,823.9508867 +1/1/2022 8:55,165.521,306.3328565,76.6252,135.986,25,59.6461,TRUE,0,0,842.3892185 +1/1/2022 9:00,172.938,313.0325635,75.9658,136.954,25,58.7069,TRUE,0,0,860.5697012 +1/1/2022 9:05,199.473,377.750528,75.318,137.934,25,57.778,TRUE,0,0,878.4693041 +1/1/2022 9:10,188.045,327.783909,74.6824,138.924,25,56.8598,TRUE,0,3.611194718,896.0737378 +1/1/2022 9:15,274.055,542.4279583,74.0591,139.927,25,55.9529,TRUE,0,3.754406417,913.3658509 +1/1/2022 9:20,285.151,558.6245657,73.4485,140.94,25,55.0579,TRUE,0,3.894269407,930.3295144 +1/1/2022 9:25,229.749,403.7468492,72.8511,141.966,25,54.1755,TRUE,0,4.030680903,946.9477453 +1/1/2022 9:30,309.241,593.6303563,72.2673,143.004,25,53.3062,TRUE,0,4.16356372,963.2083615 +1/1/2022 9:35,319.783,610.0858369,71.6972,144.053,25,52.4508,TRUE,0,4.292911124,979.0945933 +1/1/2022 9:40,330.092,624.8654541,71.1414,145.115,25,51.6099,TRUE,0,4.418605011,994.5944607 +1/1/2022 9:45,290.263,525.1141086,70.6002,146.188,25,50.7843,TRUE,0,4.540597665,1009.693337 +1/1/2022 9:50,248.897,391.3345596,70.0739,147.273,25,49.9748,TRUE,0,4.658843244,1024.37769 +1/1/2022 9:55,257.562,403.9750664,69.5629,148.37,25,49.1823,TRUE,0,4.773275295,1038.63328 +1/1/2022 10:00,314.22,554.9322161,69.0676,149.479,25,48.4074,TRUE,0,4.883829261,1052.452311 +1/1/2022 10:05,275.345,430.1144492,68.5883,150.6,25,47.6512,TRUE,0,4.990464545,1065.819091 +1/1/2022 10:10,183.217,223.8326862,68.1254,151.732,25,46.9146,TRUE,0,5.093119709,1078.722597 +1/1/2022 10:15,301.55,488.4188296,67.6793,152.876,25,46.1984,TRUE,0,5.191734733,1091.154546 +1/1/2022 10:20,199.55,246.8655903,67.2503,154.031,25,45.5037,TRUE,0,5.286272838,1103.102421 +1/1/2022 10:25,107,106.3686218,66.8387,155.197,25,44.8315,TRUE,0,5.376698026,1114.556432 +1/1/2022 10:30,101,99.67334287,66.4449,156.374,25,44.1828,TRUE,0,5.462953028,1125.507694 +1/1/2022 10:35,111,110.4424688,66.0692,157.561,25,43.5587,TRUE,0,5.545003053,1135.946484 +1/1/2022 10:40,158.993,169.4522788,65.712,158.758,25,42.9602,TRUE,0,5.622791776,1145.865535 +1/1/2022 10:45,112,111.2575789,65.3656,159.965,25,42.3809,TRUE,0,5.698019847,1155.379212 +1/1/2022 10:50,117,116.6125077,65.0463,161.182,25,41.8371,TRUE,0,5.767178174,1164.230335 +1/1/2022 10:55,160.973,170.1573677,64.7464,162.408,25,41.3223,TRUE,0,5.83197151,1172.537184 +1/1/2022 11:00,129,129.6317869,64.466,163.642,25,40.8376,TRUE,0,5.892407376,1180.293044 +1/1/2022 11:05,224.766,274.08645,64.2055,164.885,25,40.384,TRUE,0,5.948427679,1187.493034 +1/1/2022 11:10,321.48,471.2991348,63.9652,166.135,25,39.9626,TRUE,0,5.999994987,1194.130776 +1/1/2022 11:15,239.813,296.6932352,63.7453,167.392,25,39.5744,TRUE,0,6.047092089,1200.20143 +1/1/2022 11:20,388.905,629.7295456,63.5459,168.656,25,39.2205,TRUE,0,6.089721615,1205.698408 +1/1/2022 11:25,168.724,178.3684175,63.3673,169.926,25,38.9018,TRUE,0,6.127841727,1210.617893 +1/1/2022 11:30,298.244,407.3131685,63.2097,171.201,25,38.6191,TRUE,0,6.161430191,1214.957076 +1/1/2022 11:35,137.906,139.4696505,63.0733,172.481,25,38.3733,TRUE,0,6.190462786,1218.710933 +1/1/2022 11:40,178.638,190.6689829,62.9581,173.765,25,38.165,TRUE,0,6.214955663,1221.878204 +1/1/2022 11:45,136.456,137.4613393,62.8644,175.052,25,37.995,TRUE,0,6.234858862,1224.453617 +1/1/2022 11:50,80,76.99264255,62.7921,176.342,25,37.8636,TRUE,0,6.250205005,1226.438387 +1/1/2022 11:55,122,121.2207916,62.7414,177.635,25,37.7714,TRUE,0,6.260960474,1227.827981 +1/1/2022 12:00,160.126,166.3597657,62.7123,178.928,25,37.7185,TRUE,0,6.267131517,1228.624119 +1/1/2022 12:05,117,115.7909258,62.7049,180.222,25,37.7052,TRUE,0,6.268700528,1228.824151 +1/1/2022 12:10,138.917,140.4285033,62.7192,181.516,25,37.7315,TRUE,0,6.265668426,1228.428548 +1/1/2022 12:15,374.936,581.8482185,62.7551,182.809,25,37.7973,TRUE,0,6.258054647,1227.437884 +1/1/2022 12:20,136.457,137.4385176,62.8127,184.1,25,37.9025,TRUE,0,6.245833535,1225.851345 +1/1/2022 12:25,98,95.58791471,62.8917,185.39,25,38.0466,TRUE,0,6.229061676,1223.672808 +1/1/2022 12:30,130,130.0728932,62.9923,186.676,25,38.2293,TRUE,0,6.207686958,1220.901865 +1/1/2022 12:35,116,114.8337761,63.1142,187.959,25,38.45,TRUE,0,6.18176094,1217.54147 +1/1/2022 12:40,361.793,547.0604265,63.2574,189.237,25,38.708,TRUE,0,6.151269047,1213.595048 +1/1/2022 12:45,137.895,139.6263369,63.4216,190.511,25,39.0027,TRUE,0,6.1162583,1209.06356 +1/1/2022 12:50,132,132.5556918,63.6068,191.779,25,39.3331,TRUE,0,6.076709664,1203.953321 +1/1/2022 12:55,116,115.0585871,63.8127,193.041,25,39.6984,TRUE,0,6.032666123,1198.266954 +1/1/2022 13:00,229.145,280.6189114,64.0392,194.296,25,40.0976,TRUE,0,5.984126122,1192.009706 +1/1/2022 13:05,122,121.7974658,64.2859,195.544,25,40.5297,TRUE,0,5.931150793,1185.186526 +1/1/2022 13:10,138.289,140.9656652,64.5527,196.784,25,40.9936,TRUE,0,5.873735541,1177.803803 +1/1/2022 13:15,321.979,482.4477144,64.8393,198.016,25,41.4884,TRUE,0,5.811917482,1169.864735 +1/1/2022 13:20,369.987,618.942026,65.1454,199.239,25,42.0129,TRUE,0,5.745732819,1161.377453 +1/1/2022 13:25,413.807,725.3729818,65.4708,200.453,25,42.5659,TRUE,0,5.675195342,1152.350435 +1/1/2022 13:30,441.017,783.2720213,65.8151,201.657,25,43.1465,TRUE,0,5.600361623,1142.787675 +1/1/2022 13:35,434.488,773.81293,66.1781,202.851,25,43.7534,TRUE,0,5.521244503,1132.700265 +1/1/2022 13:40,427.123,763.4409701,66.5594,204.035,25,44.3856,TRUE,0,5.437900234,1122.095004 +1/1/2022 13:45,418.519,751.4101778,66.9587,205.209,25,45.042,TRUE,0,5.350363446,1110.981078 +1/1/2022 13:50,410.682,740.4285033,67.3757,206.371,25,45.7216,TRUE,0,5.25866904,1099.366788 +1/1/2022 13:55,401.619,727.81184,67.81,207.523,25,46.4234,TRUE,0,5.162874475,1087.261292 +1/1/2022 14:00,392.967,715.5664555,68.2613,208.663,25,47.1462,TRUE,0,5.063015976,1074.678168 +1/1/2022 14:05,383.117,701.7167382,68.7292,209.792,25,47.8893,TRUE,0,4.959152838,1061.623289 +1/1/2022 14:10,326.23,2000,69.2133,210.909,25,48.6515,FALSE,3,4.851345656,1048.112281 +1/1/2022 14:15,340.548,2000,69.7134,212.014,25,49.4321,FALSE,3,4.739611741,1034.153007 +1/1/2022 14:20,277.837,,70.229,213.108,25,50.2302,FALSE,1,4.624036815,1019.757897 +1/1/2022 14:25,341.918,,70.7598,214.189,25,51.0448,FALSE,1,4.504663635,1004.942303 +1/1/2022 14:30,331.587,,71.3054,215.259,25,51.8753,FALSE,1,4.381559207,989.7154013 +1/1/2022 14:35,320.523,,71.8654,216.317,25,52.7208,FALSE,1,4.254792614,974.0928982 +1/1/2022 14:40,308.697,595.4050003,72.4395,217.363,25,53.5806,TRUE,0,4.124412397,958.0879219 +1/1/2022 14:45,299.135,583.0403978,73.0273,218.397,25,54.454,TRUE,0,3.990491944,941.7146551 +1/1/2022 14:50,286.813,565.1747394,73.6285,219.419,25,55.3404,TRUE,0,3.853084176,924.9864509 +1/1/2022 14:55,274.188,546.7061789,74.2426,220.43,25,56.239,TRUE,0,3.712290172,907.9214914 +1/1/2022 15:00,262.563,529.6239526,74.8693,221.428,25,57.1492,TRUE,0,3.568167828,890.5352392 +1/1/2022 15:05,249.7,510.6546767,75.5083,222.416,25,58.0706,TRUE,0,0,872.8403236 +1/1/2022 15:10,236.644,491.235779,76.1591,223.392,25,59.0024,TRUE,0,0,854.8580539 +1/1/2022 15:15,222.441,470.0354248,76.8215,224.356,25,59.9442,TRUE,0,0,836.6030547 +1/1/2022 15:20,209.138,449.894407,77.4949,225.31,25,60.8954,TRUE,0,0,818.094794 +1/1/2022 15:25,195.786,429.4911097,78.1791,226.252,25,61.8555,TRUE,0,0,799.351787 +1/1/2022 15:30,182.433,408.8970638,78.8736,227.184,25,62.824,TRUE,0,0,780.3935203 +1/1/2022 15:35,168.949,387.7307719,79.578,228.105,25,63.8003,TRUE,0,0,761.2424142 +1/1/2022 15:40,154.593,365.1304585,80.2919,229.016,25,64.784,TRUE,0,0,741.9179359 +1/1/2022 15:45,141.418,344.0050412,81.0148,229.917,25,65.7745,TRUE,0,0,722.4444439 +1/1/2022 15:50,128.628,324.7782546,81.7463,230.808,25,66.7713,TRUE,0,0,702.8453016 +1/1/2022 15:55,115.488,302.7372437,82.4857,231.689,25,67.7737,TRUE,0,0,683.1487706 +1/1/2022 16:00,101.656,279.269705,83.2323,232.561,25,68.7812,TRUE,0,0,663.380146 +1/1/2022 16:05,88.1263,255.6260644,83.9854,233.423,25,69.7928,TRUE,0,0,643.5754801 +1/1/2022 16:10,74.9488,231.689829,84.7439,234.277,25,70.8076,TRUE,0,0,623.7697486 +1/1/2022 16:15,62.3854,206.0586552,85.5065,235.121,25,71.8243,TRUE,0,0,604.0065411 +1/1/2022 16:20,50.5179,179.6965052,86.2711,235.958,25,72.841,TRUE,0,0,584.3416845 +1/1/2022 16:25,39.4322,153.3193678,87.035,236.786,25,73.8551,TRUE,0,0,564.8446933 +1/1/2022 16:30,29.4753,118.320049,87.7938,237.606,25,74.8626,TRUE,0,0,545.6113676 +1/1/2022 16:35,10,9.531541658,88.5412,238.418,25,75.8576,TRUE,0,0,526.7717083 +1/1/2022 16:40,0,0,89.2679,239.223,25,76.8317,TRUE,0,0,508.4987044 +1/1/2022 16:45,0,0,89.9669,240.021,25,77.7782,TRUE,0,0,490.9272231 +1/1/2022 16:50,0,0,91.3925,240.812,0,0,TRUE,0,0,0 +1/1/2022 16:55,0,0,92.2343,241.597,0,0,TRUE,0,0,0 +1/1/2022 17:00,0,0,93.0824,242.375,0,0,TRUE,0,0,0 +1/1/2022 17:05,0,0,93.9365,243.147,0,0,TRUE,0,0,0 +1/1/2022 17:10,0,0,94.7965,243.914,0,0,TRUE,0,0,0 +1/1/2022 17:15,0,0,95.6621,244.675,0,0,TRUE,0,0,0 +1/1/2022 17:20,0,0,96.5331,245.43,0,0,TRUE,0,0,0 +1/1/2022 17:25,0,0,97.4094,246.181,0,0,TRUE,0,0,0 +1/1/2022 17:30,0,0,98.2907,246.928,0,0,TRUE,0,0,0 +1/1/2022 17:35,0,0,99.177,247.67,0,0,TRUE,0,0,0 +1/1/2022 17:40,0,0,100.068,248.408,0,0,TRUE,0,0,0 +1/1/2022 17:45,0,0,100.963,249.143,0,0,TRUE,0,0,0 +1/1/2022 17:50,0,0,101.863,249.874,0,0,TRUE,0,0,0 +1/1/2022 17:55,0,0,102.767,250.602,0,0,TRUE,0,0,0 +1/1/2022 18:00,0,0,103.676,251.328,0,0,TRUE,0,0,0 +1/1/2022 18:05,0,0,104.588,252.051,0,0,TRUE,0,0,0 +1/1/2022 18:10,0,,105.503,252.772,0,0,FALSE,1,0,0 +1/1/2022 18:15,0,,106.423,253.491,0,0,FALSE,1,0,0 +1/1/2022 18:20,0,,107.345,254.209,0,0,FALSE,1,0,0 +1/1/2022 18:25,0,,108.271,254.926,0,0,FALSE,1,0,0 +1/1/2022 18:30,0,,109.201,255.643,0,0,FALSE,1,0,0 +1/1/2022 18:35,0,,110.133,256.359,0,0,FALSE,1,0,0 +1/1/2022 18:40,0,,111.068,257.075,0,0,FALSE,1,0,0 +1/1/2022 18:45,0,,112.005,257.792,0,0,FALSE,1,0,0 +1/1/2022 18:50,0,,112.946,258.509,0,0,FALSE,1,0,0 +1/1/2022 18:55,0,,113.888,259.228,0,0,FALSE,1,0,0 +1/1/2022 19:00,0,1000,114.833,259.949,0,0,FALSE,3,0,0 +1/1/2022 19:05,0,1000,115.78,260.671,0,0,FALSE,3,0,0 +1/1/2022 19:10,0,1000,116.729,261.397,0,0,FALSE,3,0,0 +1/1/2022 19:15,0,1000,117.68,262.125,0,0,FALSE,3,0,0 +1/1/2022 19:20,0,1000,118.632,262.857,0,0,FALSE,3,0,0 +1/1/2022 19:25,0,1000,119.586,263.593,0,0,FALSE,3,0,0 +1/1/2022 19:30,0,1000,120.542,264.334,0,0,FALSE,3,0,0 +1/1/2022 19:35,0,1000,121.498,265.079,0,0,FALSE,3,0,0 +1/1/2022 19:40,0,1000,122.456,265.831,0,0,FALSE,3,0,0 +1/1/2022 19:45,0,1000,123.414,266.589,0,0,FALSE,3,0,0 +1/1/2022 19:50,0,1000,124.374,267.354,0,0,FALSE,3,0,0 +1/1/2022 19:55,0,1000,125.334,268.127,0,0,FALSE,3,0,0 +1/1/2022 20:00,0,1000,126.294,268.908,0,0,FALSE,3,0,0 +1/1/2022 20:05,0,1000,127.255,269.699,0,0,FALSE,3,0,0 +1/1/2022 20:10,0,1000,128.215,270.499,0,0,FALSE,3,0,0 +1/1/2022 20:15,0,1000,129.176,271.311,0,0,FALSE,3,0,0 +1/1/2022 20:20,0,1000,130.136,272.134,0,0,FALSE,3,0,0 +1/1/2022 20:25,0,1000,131.096,272.97,0,0,FALSE,3,0,0 +1/1/2022 20:30,0,0,132.055,273.819,0,0,TRUE,0,0,0 +1/1/2022 20:35,0,0,133.013,274.684,0,0,TRUE,0,0,0 +1/1/2022 20:40,0,0,133.97,275.565,0,0,TRUE,0,0,0 +1/1/2022 20:45,0,0,134.925,276.463,0,0,TRUE,0,0,0 +1/1/2022 20:50,0,0,135.879,277.379,0,0,TRUE,0,0,0 +1/1/2022 20:55,0,0,136.831,278.316,0,0,TRUE,0,0,0 +1/1/2022 21:00,0,0,137.78,279.274,0,0,TRUE,0,0,0 +1/1/2022 21:05,0,0,138.727,280.256,0,0,TRUE,0,0,0 +1/1/2022 21:10,0,0,139.67,281.263,0,0,TRUE,0,0,0 +1/1/2022 21:15,0,0,140.611,282.298,0,0,TRUE,0,0,0 +1/1/2022 21:20,0,0,141.548,283.361,0,0,TRUE,0,0,0 +1/1/2022 21:25,0,0,142.48,284.456,0,0,TRUE,0,0,0 +1/1/2022 21:30,0,0,143.408,285.585,0,0,TRUE,0,0,0 +1/1/2022 21:35,0,0,144.331,286.751,0,0,TRUE,0,0,0 +1/1/2022 21:40,0,0,145.247,287.956,0,0,TRUE,0,0,0 +1/1/2022 21:45,0,0,146.158,289.205,0,0,TRUE,0,0,0 +1/1/2022 21:50,0,0,147.062,290.499,0,0,TRUE,0,0,0 +1/1/2022 21:55,0,0,147.957,291.843,0,0,TRUE,0,0,0 +1/1/2022 22:00,0,0,,293.241,0,,FALSE,1,, +1/1/2022 22:05,0,0,,294.698,0,,FALSE,1,, +1/1/2022 22:10,0,0,,296.217,0,,FALSE,1,, +1/1/2022 22:15,0,0,,297.804,0,,FALSE,1,, +1/1/2022 22:20,0,0,,299.465,0,,FALSE,1,, +1/1/2022 22:25,0,0,,301.204,0,,FALSE,1,, +1/1/2022 22:30,0,0,,303.029,0,,FALSE,1,, +1/1/2022 22:35,0,0,,304.946,0,,FALSE,1,, +1/1/2022 22:40,0,0,,306.962,0,,FALSE,1,, +1/1/2022 22:45,0,0,,309.083,0,,FALSE,1,, +1/1/2022 22:50,0,0,,311.318,0,,FALSE,1,, +1/1/2022 22:55,0,0,,313.673,0,,FALSE,1,, +1/1/2022 23:00,0,0,,316.155,0,,FALSE,1,, +1/1/2022 23:05,0,0,,318.771,0,,FALSE,1,, +1/1/2022 23:10,0,0,,321.527,0,,FALSE,1,, +1/1/2022 23:15,0,0,,324.428,0,,FALSE,1,, +1/1/2022 23:20,0,0,,327.475,0,,FALSE,1,, +1/1/2022 23:25,0,0,,330.67,0,,FALSE,1,, +1/1/2022 23:30,0,0,,334.01,0,,FALSE,1,, +1/1/2022 23:35,0,0,,337.49,0,0,FALSE,1,, +1/1/2022 23:40,0,0,,341.101,0,0,FALSE,1,, +1/1/2022 23:45,0,0,,344.828,0,0,FALSE,1,, +1/1/2022 23:50,0,0,,348.655,0,0,FALSE,1,, +1/1/2022 23:55,0,0,,352.559,0,0,FALSE,1,, +1/2/2022 0:00,0,0,163.189,356.515,0,0,TRUE,0,0,0 +1/2/2022 0:05,0,0,163.213,0.495524,0,0,TRUE,0,0,0 +1/2/2022 0:10,0,0,163.171,4.47276,0,0,TRUE,0,0,0 +1/2/2022 0:15,0,0,163.063,8.41791,0,0,TRUE,0,0,0 +1/2/2022 0:20,0,0,162.89,12.3041,0,0,TRUE,0,0,0 +1/2/2022 0:25,0,0,162.654,16.107,0,0,TRUE,0,0,0 +1/2/2022 0:30,0,0,162.357,19.8059,0,0,TRUE,0,0,0 +1/2/2022 0:35,0,0,162.003,23.3841,0,0,TRUE,0,0,0 +1/2/2022 0:40,0,0,161.595,26.8291,0,0,TRUE,0,0,0 +1/2/2022 0:45,0,0,161.137,30.1324,0,0,TRUE,0,0,0 +1/2/2022 0:50,0,0,160.631,33.2895,0,0,TRUE,0,0,0 +1/2/2022 0:55,0,0,160.083,36.2987,0,0,TRUE,0,0,0 +1/2/2022 1:00,0,0,159.494,39.1614,0,0,TRUE,0,0,0 +1/2/2022 1:05,0,0,158.87,41.8809,0,0,TRUE,0,0,0 +1/2/2022 1:10,0,0,158.212,44.4621,0,0,TRUE,0,0,0 +1/2/2022 1:15,0,0,157.524,46.911,0,0,TRUE,0,0,0 +1/2/2022 1:20,0,0,156.809,49.2342,0,0,TRUE,0,0,0 +1/2/2022 1:25,0,0,156.069,51.439,0,0,TRUE,0,0,0 +1/2/2022 1:30,0,0,155.306,53.5326,0,0,TRUE,0,0,0 +1/2/2022 1:35,0,0,154.524,55.5222,0,0,TRUE,0,0,0 +1/2/2022 1:40,0,0,153.723,57.4148,0,0,TRUE,0,0,0 +1/2/2022 1:45,0,0,152.905,59.2173,0,0,TRUE,0,0,0 +1/2/2022 1:50,0,0,152.072,60.936,0,0,TRUE,0,0,0 +1/2/2022 1:55,0,0,151.225,62.577,0,0,TRUE,0,0,0 +1/2/2022 2:00,0,0,150.366,64.1461,0,0,TRUE,0,0,0 +1/2/2022 2:05,0,0,149.496,65.6486,0,0,TRUE,0,0,0 +1/2/2022 2:10,0,0,148.615,67.0895,0,0,TRUE,0,0,0 +1/2/2022 2:15,0,0,147.725,68.4733,0,0,TRUE,0,0,0 +1/2/2022 2:20,0,0,146.827,69.8042,0,0,TRUE,0,0,0 +1/2/2022 2:25,0,0,145.922,71.0863,0,0,TRUE,0,0,0 +1/2/2022 2:30,0,0,145.009,72.323,0,0,TRUE,0,0,0 +1/2/2022 2:35,0,0,144.091,73.5178,0,0,TRUE,0,0,0 +1/2/2022 2:40,0,0,143.166,74.6738,0,0,TRUE,0,0,0 +1/2/2022 2:45,0,0,142.237,75.7938,0,0,TRUE,0,0,0 +1/2/2022 2:50,0,0,141.303,76.8804,0,0,TRUE,0,0,0 +1/2/2022 2:55,0,0,140.365,77.936,0,0,TRUE,0,0,0 +1/2/2022 3:00,0,0,139.424,78.963,0,0,TRUE,0,0,0 +1/2/2022 3:05,0,0,138.479,79.9633,0,0,TRUE,0,0,0 +1/2/2022 3:10,0,0,137.531,80.9388,0,0,TRUE,0,0,0 +1/2/2022 3:15,0,0,136.581,81.8915,0,0,TRUE,0,0,0 +1/2/2022 3:20,0,0,135.629,82.8228,0,0,TRUE,0,0,0 +1/2/2022 3:25,0,0,134.674,83.7344,0,0,TRUE,0,0,0 +1/2/2022 3:30,0,0,133.718,84.6277,0,0,TRUE,0,0,0 +1/2/2022 3:35,0,0,132.761,85.5039,0,0,TRUE,0,0,0 +1/2/2022 3:40,0,0,131.802,86.3644,0,0,TRUE,0,0,0 +1/2/2022 3:45,0,0,130.843,87.2103,0,0,TRUE,0,0,0 +1/2/2022 3:50,0,0,129.882,88.0427,0,0,TRUE,0,0,0 +1/2/2022 3:55,0,0,128.922,88.8626,0,0,TRUE,0,0,0 +1/2/2022 4:00,0,0,127.961,89.6709,0,0,TRUE,0,0,0 +1/2/2022 4:05,0,0,127,90.4686,0,0,TRUE,0,0,0 +1/2/2022 4:10,0,0,126.039,91.2564,0,0,TRUE,0,0,0 +1/2/2022 4:15,0,0,125.078,92.0353,0,0,TRUE,0,0,0 +1/2/2022 4:20,0,0,124.118,92.8059,0,0,TRUE,0,0,0 +1/2/2022 4:25,0,0,123.159,93.5689,0,0,TRUE,0,0,0 +1/2/2022 4:30,0,0,122.2,94.3251,0,0,TRUE,0,0,0 +1/2/2022 4:35,0,0,121.242,95.075,0,0,TRUE,0,0,0 +1/2/2022 4:40,0,0,120.285,95.8193,0,0,TRUE,0,0,0 +1/2/2022 4:45,0,0,119.33,96.5585,0,0,TRUE,0,0,0 +1/2/2022 4:50,0,0,118.376,97.2933,0,0,TRUE,0,0,0 +1/2/2022 4:55,0,0,117.423,98.0241,0,0,TRUE,0,0,0 +1/2/2022 5:00,0,0,116.473,98.7515,0,0,TRUE,0,0,0 +1/2/2022 5:05,0,0,115.524,99.4759,0,0,TRUE,0,0,0 +1/2/2022 5:10,0,0,114.577,100.198,0,0,TRUE,0,0,0 +1/2/2022 5:15,0,0,113.632,100.918,0,0,TRUE,0,0,0 +1/2/2022 5:20,0,0,112.69,101.636,0,0,TRUE,0,0,0 +1/2/2022 5:25,0,0,111.75,102.353,0,0,TRUE,0,0,0 +1/2/2022 5:30,0,0,110.812,103.069,0,0,TRUE,0,0,0 +1/2/2022 5:35,0,0,109.877,103.785,0,0,TRUE,0,0,0 +1/2/2022 5:40,0,0,108.945,104.501,0,0,TRUE,0,0,0 +1/2/2022 5:45,0,0,108.017,105.217,0,0,TRUE,0,0,0 +1/2/2022 5:50,0,0,107.091,105.934,0,0,TRUE,0,0,0 +1/2/2022 5:55,0,0,106.168,106.652,0,0,TRUE,0,0,0 +1/2/2022 6:00,0,0,105.249,107.372,0,0,TRUE,0,0,0 +1/2/2022 6:05,0,0,104.334,108.093,0,0,TRUE,0,0,0 +1/2/2022 6:10,0,0,103.422,108.817,0,0,TRUE,0,0,0 +1/2/2022 6:15,0,0,102.515,109.543,0,0,TRUE,0,0,0 +1/2/2022 6:20,0,0,101.611,110.272,0,0,TRUE,0,0,0 +1/2/2022 6:25,0,0,100.712,111.003,0,0,TRUE,0,0,0 +1/2/2022 6:30,0,0,99.8166,111.739,0,0,TRUE,0,0,0 +1/2/2022 6:35,0,0,98.9261,112.478,0,0,TRUE,0,0,0 +1/2/2022 6:40,0,0,98.0405,113.221,0,0,TRUE,0,0,0 +1/2/2022 6:45,0,0,97.1597,113.968,0,0,TRUE,0,0,0 +1/2/2022 6:50,0,0,96.2841,114.72,0,0,TRUE,0,0,0 +1/2/2022 6:55,0,0,95.4137,115.477,0,0,TRUE,0,0,0 +1/2/2022 7:00,0,0,94.5489,116.239,0,0,TRUE,0,0,0 +1/2/2022 7:05,0,0,93.6897,117.007,0,0,TRUE,0,0,0 +1/2/2022 7:10,0,0,92.8363,117.78,0,0,TRUE,0,0,0 +1/2/2022 7:15,0,0,91.9891,118.56,0,0,TRUE,0,0,0 +1/2/2022 7:20,0,0,91.1481,119.346,0,0,TRUE,0,0,0 +1/2/2022 7:25,0,0,89.8693,120.138,25,77.6279,TRUE,0,0,493.704473 +1/2/2022 7:30,0,0,89.1387,120.938,25,76.6517,TRUE,0,0,511.8615359 +1/2/2022 7:35,10,9.531541658,88.3873,121.745,25,75.6543,TRUE,0,0,530.6074592 +1/2/2022 7:40,15,14.29729546,87.6231,122.559,25,74.6432,TRUE,0,0,549.7870569 +1/2/2022 7:45,20.2078,28.59966619,86.8528,123.381,25,73.6244,TRUE,0,0,569.2687347 +1/2/2022 7:50,26.4605,40.1233054,86.081,124.211,25,72.6024,TRUE,0,0,588.9467944 +1/2/2022 7:55,33.905,55.67443286,85.3108,125.049,25,71.58,TRUE,0,0,608.7471306 +1/2/2022 8:00,42.9372,80.19449554,84.5443,125.896,25,70.5591,TRUE,0,0,628.6130484 +1/2/2022 8:05,52.1037,96.96573336,83.783,126.752,25,69.5411,TRUE,0,0,648.4980928 +1/2/2022 8:10,53.9825,82.88745827,83.0279,127.616,25,68.5272,TRUE,0,0,668.3604769 +1/2/2022 8:15,58.3286,85.00374685,82.28,128.491,25,67.518,TRUE,0,0,688.1710778 +1/2/2022 8:20,61.6205,78.92874174,81.5398,129.374,25,66.5142,TRUE,0,0,707.8997995 +1/2/2022 8:25,70.9041,99.41923837,80.808,130.267,25,65.5165,TRUE,0,0,727.5175279 +1/2/2022 8:30,75.4703,96.65917297,80.085,131.171,25,64.5254,TRUE,0,0,747.0000731 +1/2/2022 8:35,173.022,391.8250562,79.3713,132.084,25,63.5414,TRUE,0,0,766.3242351 +1/2/2022 8:40,100.384,146.5586893,78.6674,133.008,25,62.5649,TRUE,0,0,785.4697557 +1/2/2022 8:45,200.107,432.6452756,77.9736,133.943,25,61.5966,TRUE,0,0,804.4114756 +1/2/2022 8:50,109.341,151.689829,77.2903,134.888,25,60.6368,TRUE,0,0,823.1330476 +1/2/2022 8:55,149.647,247.5154983,76.6178,135.845,25,59.6861,TRUE,0,0,841.6132323 +1/2/2022 9:00,240.315,491.777369,75.9567,136.812,25,58.745,TRUE,0,0,859.8337299 +1/2/2022 9:05,252.605,509.7179644,75.3073,137.791,25,57.814,TRUE,0,0,877.7772223 +1/2/2022 9:10,265.426,528.0230261,74.6698,138.782,25,56.8936,TRUE,0,3.614094029,895.4273721 +1/2/2022 9:15,278.251,546.3451189,74.0447,139.784,25,55.9845,TRUE,0,3.757709828,912.7650184 +1/2/2022 9:20,290.07,563.304721,73.4324,140.797,25,55.0872,TRUE,0,3.89795133,929.7758491 +1/2/2022 9:25,302.279,580.4346345,72.8331,141.823,25,54.2024,TRUE,0,4.034784333,946.4427764 +1/2/2022 9:30,313.419,596.1271204,72.2473,142.86,25,53.3306,TRUE,0,4.168108481,962.7535153 +1/2/2022 9:35,283.081,519.5074596,71.6753,143.91,25,52.4726,TRUE,0,4.297871521,978.6911942 +1/2/2022 9:40,336.444,628.5714286,71.1175,144.971,25,51.6292,TRUE,0,4.424000744,994.240062 +1/2/2022 9:45,346.976,643.3033585,70.5743,146.044,25,50.8009,TRUE,0,4.546425749,1009.390949 +1/2/2022 9:50,358.037,658.583691,70.0459,147.129,25,49.9886,TRUE,0,4.665123173,1024.128384 +1/2/2022 9:55,367.941,672.324409,69.5329,148.227,25,49.1932,TRUE,0,4.779981708,1038.43804 +1/2/2022 10:00,378.679,687.2028067,69.0355,149.335,25,48.4154,TRUE,0,4.890981671,1052.310266 +1/2/2022 10:05,387.878,699.8467198,68.5541,150.456,25,47.6561,TRUE,0,4.998060145,1065.732864 +1/2/2022 10:10,396.879,712.2419783,68.0891,151.589,25,46.9163,TRUE,0,5.10115582,1078.692952 +1/2/2022 10:15,406.292,725.0289529,67.6409,152.732,25,46.1969,TRUE,0,5.200208824,1091.180463 +1/2/2022 10:20,414.479,736.1877512,67.2096,153.888,25,45.4989,TRUE,0,5.295226529,1103.184587 +1/2/2022 10:25,422.43,747.053614,66.7959,155.054,25,44.8232,TRUE,0,5.386084993,1114.697192 +1/2/2022 10:30,431.139,758.9583759,66.3999,156.231,25,44.171,TRUE,0,5.472793138,1125.705954 +1/2/2022 10:35,439.724,768.4481232,66.022,157.419,25,43.5433,TRUE,0,5.555294389,1136.202843 +1/2/2022 10:40,446.451,777.5631855,65.6625,158.616,25,42.9412,TRUE,0,5.633554396,1146.178936 +1/2/2022 10:45,452.909,786.3376252,65.3218,159.824,25,42.3657,TRUE,0,5.707517166,1155.627667 +1/2/2022 10:50,460.093,796.0930581,65.0001,161.042,25,41.818,TRUE,0,5.777170015,1164.539797 +1/2/2022 10:55,465.999,804.1760338,64.6977,162.268,25,41.2992,TRUE,0,5.842478102,1172.90826 +1/2/2022 11:00,471.189,811.1417672,64.415,163.503,25,40.8104,TRUE,0,5.903384508,1180.726384 +1/2/2022 11:05,477.082,819.0510253,64.1522,164.747,25,40.3527,TRUE,0,5.959874684,1187.987762 +1/2/2022 11:10,481.675,825.2639826,63.9095,165.998,25,39.9272,TRUE,0,6.011932925,1194.686121 +1/2/2022 11:15,485.962,831.0954425,63.6872,167.256,25,39.5348,TRUE,0,6.059520814,1200.818294 +1/2/2022 11:20,489.941,836.5385925,63.4856,168.521,25,39.1768,TRUE,0,6.10259859,1206.374696 +1/2/2022 11:25,493.159,840.8065945,63.3047,169.792,25,38.8538,TRUE,0,6.141188903,1211.356284 +1/2/2022 11:30,496.509,845.4560937,63.1449,171.069,25,38.5669,TRUE,0,6.175227167,1215.755753 +1/2/2022 11:35,499.633,849.4447851,63.0061,172.35,25,38.3169,TRUE,0,6.204753345,1219.569775 +1/2/2022 11:40,501.428,851.7031133,62.8887,173.635,25,38.1045,TRUE,0,6.229698799,1222.795729 +1/2/2022 11:45,503.352,854.3429389,62.7928,174.924,25,37.9304,TRUE,0,6.250056473,1225.430028 +1/2/2022 11:50,504.948,856.5672049,62.7183,176.216,25,37.7949,TRUE,0,6.265859269,1227.474041 +1/2/2022 11:55,505.756,857.5822604,62.6655,177.51,25,37.6987,TRUE,0,6.27705269,1228.921891 +1/2/2022 12:00,506.233,858.17835,62.6343,178.805,25,37.642,TRUE,0,6.283664479,1229.773955 +1/2/2022 12:05,506.837,859.1559371,62.6249,180.1,25,37.6249,TRUE,0,6.285656127,1230.030738 +1/2/2022 12:10,506.65,858.9175012,62.6371,181.396,25,37.6475,TRUE,0,6.283071189,1229.691345 +1/2/2022 12:15,505.672,857.4630424,62.671,182.691,25,37.7098,TRUE,0,6.275886957,1228.754973 +1/2/2022 12:20,504.822,856.3900811,62.7266,183.985,25,37.8115,TRUE,0,6.264099213,1227.223924 +1/2/2022 12:25,503.184,854.1079093,62.8037,185.276,25,37.9524,TRUE,0,6.2477435,1225.097643 +1/2/2022 12:30,501.674,852.2038286,62.9024,186.565,25,38.1319,TRUE,0,6.226789134,1222.380323 +1/2/2022 12:35,498.928,848.3071054,63.0225,187.85,25,38.3496,TRUE,0,6.201266555,1219.071944 +1/2/2022 12:40,496.313,844.7918796,63.1639,189.13,25,38.6048,TRUE,0,6.171182575,1215.17595 +1/2/2022 12:45,492.928,840.0912869,63.3265,190.406,25,38.8968,TRUE,0,6.136541676,1210.69484 +1/2/2022 12:50,489.675,835.7755978,63.51,191.676,25,39.2247,TRUE,0,6.09738882,1205.633381 +1/2/2022 12:55,485.662,830.2847605,63.7143,192.941,25,39.5876,TRUE,0,6.053724369,1199.995709 +1/2/2022 13:00,481.782,825.1788269,63.9391,194.198,25,39.9846,TRUE,0,6.005589593,1193.785469 +1/2/2022 13:05,476.154,817.5999728,64.1844,195.448,25,40.4147,TRUE,0,5.952959849,1187.007526 +1/2/2022 13:10,470.795,810.1982424,64.4497,196.691,25,40.8769,TRUE,0,5.895916261,1179.666573 +1/2/2022 13:15,465.576,803.1882281,64.7349,197.925,25,41.3699,TRUE,0,5.834452913,1171.772087 +1/2/2022 13:20,459.642,795.0643777,65.0397,199.151,25,41.8929,TRUE,0,5.768605809,1163.325699 +1/2/2022 13:25,452.431,785.2748825,65.3639,200.367,25,42.4445,TRUE,0,5.698388526,1154.338971 +1/2/2022 13:30,445.947,776.4629743,65.707,201.574,25,43.0238,TRUE,0,5.6238791,1144.815794 +1/2/2022 13:35,438.791,766.5849172,66.0688,202.77,25,43.6296,TRUE,0,5.545090284,1134.765468 +1/2/2022 13:40,431.386,756.3968935,66.449,203.957,25,44.2609,TRUE,0,5.462056318,1124.194626 +1/2/2022 13:45,423.737,745.9057156,66.8473,205.133,25,44.9164,TRUE,0,5.374811498,1113.11567 +1/2/2022 13:50,414.853,733.7999864,67.2633,206.298,25,45.5953,TRUE,0,5.283412375,1101.53339 +1/2/2022 13:55,406.739,722.7229375,67.6967,207.452,25,46.2964,TRUE,0,5.187894143,1089.46022 +1/2/2022 14:00,397.03,709.3671231,68.1471,208.594,25,47.0188,TRUE,0,5.088314776,1076.904404 +1/2/2022 14:05,388.121,697.0808638,68.6142,209.725,25,47.7614,TRUE,0,4.984711138,1063.878635 +1/2/2022 14:10,378.018,683.2311465,69.0976,210.844,25,48.5234,TRUE,0,4.877143379,1050.391379 +1/2/2022 14:15,368.383,669.8208325,69.597,211.952,25,49.3037,TRUE,0,4.765650749,1036.457448 +1/2/2022 14:20,357.587,654.8913414,70.112,213.048,25,50.1016,TRUE,0,4.650296269,1022.085609 +1/2/2022 14:25,347.308,640.4659718,70.6422,214.132,25,50.9162,TRUE,0,4.531144746,1007.289255 +1/2/2022 14:30,335.905,624.5622999,71.1873,215.204,25,51.7468,TRUE,0,4.408240339,992.0792286 +1/2/2022 14:35,325.387,609.847401,71.7469,216.264,25,52.5924,TRUE,0,4.281651643,976.4729618 +1/2/2022 14:40,313.461,593.0785476,72.3207,217.312,25,53.4524,TRUE,0,4.151426724,960.4816368 +1/2/2022 14:45,301.165,575.6386675,72.9082,218.348,25,54.3261,TRUE,0,4.017661282,944.119319 +1/2/2022 14:50,288.824,558.1442878,73.5092,219.372,25,55.2129,TRUE,0,3.880385107,927.39925 +1/2/2022 14:55,277.176,541.3958717,74.1232,220.384,25,56.1119,TRUE,0,3.739698775,910.3414057 +1/2/2022 15:00,264.526,523.3190272,74.7499,221.385,25,57.0228,TRUE,0,3.59565972,892.9554391 +1/2/2022 15:05,251.634,504.7346549,75.3889,222.374,25,57.9447,TRUE,0,0,875.2634456 +1/2/2022 15:10,238.546,485.6972546,76.0399,223.352,25,58.8773,TRUE,0,0,857.2770632 +1/2/2022 15:15,225.307,466.2681382,76.7024,224.319,25,59.8199,TRUE,0,0,839.0166074 +1/2/2022 15:20,211.965,446.5154302,77.3762,225.274,25,60.7719,TRUE,0,0,820.5014942 +1/2/2022 15:25,198.568,426.4970366,78.0608,226.218,25,61.7331,TRUE,0,0,801.7443258 +1/2/2022 15:30,184.971,405.8212412,78.756,227.152,25,62.7027,TRUE,0,0,782.7703736 +1/2/2022 15:35,171.359,385.8982219,79.4612,228.075,25,63.6803,TRUE,0,0,763.5980939 +1/2/2022 15:40,157.895,365.018053,80.176,228.987,25,64.6655,TRUE,0,0,744.2469035 +1/2/2022 15:45,144.448,343.7734178,80.9002,229.89,25,65.6577,TRUE,0,0,724.7411261 +1/2/2022 15:50,130.257,321.2855099,81.6331,230.782,25,66.6564,TRUE,0,0,705.104108 +1/2/2022 15:55,117.113,299.6804959,82.3743,231.665,25,67.6612,TRUE,0,0,685.3582206 +1/2/2022 16:00,103.151,276.313441,83.1233,232.538,25,68.6713,TRUE,0,0,665.534693 +1/2/2022 16:05,89.6141,253.1344097,83.8793,233.402,25,69.6862,TRUE,0,0,645.659858 +1/2/2022 16:10,39.3504,64.33374208,84.6415,234.257,25,70.7049,TRUE,0,0,625.7708246 +1/2/2022 16:15,64.7454,205.9479529,85.4087,235.103,25,71.7265,TRUE,0,0,605.9036631 +1/2/2022 16:20,51.7826,178.0952381,86.1795,235.941,25,72.7495,TRUE,0,0,586.1069307 +1/2/2022 16:25,21.0208,33.05010559,86.9516,236.77,25,73.7718,TRUE,0,0,566.441293 +1/2/2022 16:30,14,13.34416513,87.7219,237.591,25,74.7905,TRUE,0,0,546.9827825 +1/2/2022 16:35,8,7.625246951,88.4854,238.405,25,75.801,TRUE,0,0,527.838874 +1/2/2022 16:40,0,0,89.2351,239.211,25,76.7968,TRUE,0,0,509.1502126 +1/2/2022 16:45,0,0,89.9641,240.01,25,77.7715,TRUE,0,0,491.0509172 +1/2/2022 16:50,0,0,91.2536,240.803,0,0,TRUE,0,0,0 +1/2/2022 16:55,0,0,92.0954,241.588,0,0,TRUE,0,0,0 +1/2/2022 17:00,0,0,92.9434,242.368,0,0,TRUE,0,0,0 +1/2/2022 17:05,0,0,93.7974,243.141,0,0,TRUE,0,0,0 +1/2/2022 17:10,0,0,94.6573,243.908,0,0,TRUE,0,0,0 +1/2/2022 17:15,0,0,95.5229,244.67,0,0,TRUE,0,0,0 +1/2/2022 17:20,0,0,96.3939,245.427,0,0,TRUE,0,0,0 +1/2/2022 17:25,0,0,97.2701,246.179,0,0,TRUE,0,0,0 +1/2/2022 17:30,0,0,98.1514,246.927,0,0,TRUE,0,0,0 +1/2/2022 17:35,0,0,99.0377,247.67,0,0,TRUE,0,0,0 +1/2/2022 17:40,0,0,99.9286,248.409,0,0,TRUE,0,0,0 +1/2/2022 17:45,0,0,100.824,249.144,0,0,TRUE,0,0,0 +1/2/2022 17:50,0,0,101.724,249.876,0,0,TRUE,0,0,0 +1/2/2022 17:55,0,0,102.628,250.605,0,0,TRUE,0,0,0 +1/2/2022 18:00,0,0,103.536,251.332,0,0,TRUE,0,0,0 +1/2/2022 18:05,0,0,104.448,252.056,0,0,TRUE,0,0,0 +1/2/2022 18:10,0,0,105.364,252.778,0,0,TRUE,0,0,0 +1/2/2022 18:15,0,0,106.283,253.498,0,0,TRUE,0,0,0 +1/2/2022 18:20,0,0,107.206,254.217,0,0,TRUE,0,0,0 +1/2/2022 18:25,0,0,108.132,254.934,0,0,TRUE,0,0,0 +1/2/2022 18:30,0,0,109.061,255.651,0,0,TRUE,0,0,0 +1/2/2022 18:35,0,0,109.994,256.368,0,0,TRUE,0,0,0 +1/2/2022 18:40,0,0,110.929,257.085,0,0,TRUE,0,0,0 +1/2/2022 18:45,0,0,111.866,257.802,0,0,TRUE,0,0,0 +1/2/2022 18:50,0,0,112.807,258.521,0,0,TRUE,0,0,0 +1/2/2022 18:55,0,0,113.749,259.24,0,0,TRUE,0,0,0 +1/2/2022 19:00,0,0,114.694,259.961,0,0,TRUE,0,0,0 +1/2/2022 19:05,0,0,115.641,260.685,0,0,TRUE,0,0,0 +1/2/2022 19:10,0,0,116.59,261.41,0,0,TRUE,0,0,0 +1/2/2022 19:15,0,0,117.541,262.139,0,0,TRUE,0,0,0 +1/2/2022 19:20,0,0,118.493,262.872,0,0,TRUE,0,0,0 +1/2/2022 19:25,0,0,119.447,263.609,0,0,TRUE,0,0,0 +1/2/2022 19:30,0,0,120.403,264.35,0,0,TRUE,0,0,0 +1/2/2022 19:35,0,0,121.359,265.096,0,0,TRUE,0,0,0 +1/2/2022 19:40,0,0,122.317,265.848,0,0,TRUE,0,0,0 +1/2/2022 19:45,0,0,123.276,266.607,0,0,TRUE,0,0,0 +1/2/2022 19:50,0,0,124.235,267.372,0,0,TRUE,0,0,0 +1/2/2022 19:55,0,0,125.195,268.145,0,0,TRUE,0,0,0 +1/2/2022 20:00,0,0,126.155,268.927,0,0,TRUE,0,0,0 +1/2/2022 20:05,0,0,127.116,269.718,0,0,TRUE,0,0,0 +1/2/2022 20:10,0,0,128.076,270.518,0,0,TRUE,0,0,0 +1/2/2022 20:15,0,0,129.037,271.33,0,0,TRUE,0,0,0 +1/2/2022 20:20,0,0,129.997,272.153,0,0,TRUE,0,0,0 +1/2/2022 20:25,0,0,130.957,272.989,0,0,TRUE,0,0,0 +1/2/2022 20:30,0,0,131.916,273.839,0,0,TRUE,0,0,0 +1/2/2022 20:35,0,0,132.874,274.704,0,0,TRUE,0,0,0 +1/2/2022 20:40,0,0,133.831,275.584,0,0,TRUE,0,0,0 +1/2/2022 20:45,0,0,134.786,276.482,0,0,TRUE,0,0,0 +1/2/2022 20:50,0,0,135.74,277.399,0,0,TRUE,0,0,0 +1/2/2022 20:55,0,0,136.691,278.335,0,0,TRUE,0,0,0 +1/2/2022 21:00,0,0,137.641,279.293,0,0,TRUE,0,0,0 +1/2/2022 21:05,0,0,138.587,280.275,0,0,TRUE,0,0,0 +1/2/2022 21:10,0,0,139.531,281.281,0,0,TRUE,0,0,0 +1/2/2022 21:15,0,0,140.471,282.314,0,0,TRUE,0,0,0 +1/2/2022 21:20,0,0,141.408,283.377,0,0,TRUE,0,0,0 +1/2/2022 21:25,0,0,142.34,284.471,0,0,TRUE,0,0,0 +1/2/2022 21:30,0,0,143.268,285.599,0,0,TRUE,0,0,0 +1/2/2022 21:35,0,0,144.191,286.763,0,0,TRUE,0,0,0 +1/2/2022 21:40,0,0,145.108,287.966,0,0,TRUE,0,0,0 +1/2/2022 21:45,0,0,146.018,289.213,0,0,TRUE,0,0,0 +1/2/2022 21:50,0,0,146.922,290.504,0,0,TRUE,0,0,0 +1/2/2022 21:55,0,0,147.817,291.846,0,0,TRUE,0,0,0 +1/2/2022 22:00,0,0,148.705,293.241,0,0,TRUE,0,0,0 +1/2/2022 22:05,0,0,149.582,294.693,0,0,TRUE,0,0,0 +1/2/2022 22:10,0,0,150.45,296.208,0,0,TRUE,0,0,0 +1/2/2022 22:15,0,0,151.306,297.791,0,0,TRUE,0,0,0 +1/2/2022 22:20,0,0,152.149,299.446,0,0,TRUE,0,0,0 +1/2/2022 22:25,0,0,152.978,301.18,0,0,TRUE,0,0,0 +1/2/2022 22:30,0,0,153.792,302.998,0,0,TRUE,0,0,0 +1/2/2022 22:35,0,0,154.589,304.907,0,0,TRUE,0,0,0 +1/2/2022 22:40,0,0,155.367,306.913,0,0,TRUE,0,0,0 +1/2/2022 22:45,0,0,156.124,309.025,0,0,TRUE,0,0,0 +1/2/2022 22:50,0,0,156.859,311.248,0,0,TRUE,0,0,0 +1/2/2022 22:55,0,0,157.568,313.591,0,0,TRUE,0,0,0 +1/2/2022 23:00,0,0,158.249,316.059,0,0,TRUE,0,0,0 +1/2/2022 23:05,0,0,158.9,318.66,0,0,TRUE,0,0,0 +1/2/2022 23:10,0,0,159.517,321.398,0,0,TRUE,0,0,0 +1/2/2022 23:15,0,0,160.097,324.28,0,0,TRUE,0,0,0 +1/2/2022 23:20,0,0,160.637,327.307,0,0,TRUE,0,0,0 +1/2/2022 23:25,0,0,161.133,330.48,0,0,TRUE,0,0,0 +1/2/2022 23:30,0,0,161.582,333.798,0,0,TRUE,0,0,0 +1/2/2022 23:35,0,0,161.98,337.254,0,0,TRUE,0,0,0 +1/2/2022 23:40,0,0,162.323,340.84,0,0,TRUE,0,0,0 +1/2/2022 23:45,0,0,162.609,344.543,0,0,TRUE,0,0,0 +1/2/2022 23:50,0,0,162.834,348.346,0,0,TRUE,0,0,0 +1/2/2022 23:55,0,0,162.996,352.226,0,0,TRUE,0,0,0 diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index f8f9bbccc..cb5e6d79b 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -473,7 +473,7 @@ def daily_insolation_limits(irrad, clearsky, daily_min=0.4, daily_max=1.25): return good_days.reindex(irrad.index, method='pad', fill_value=False) -def _upper_gti_limit_lorenz(aoi, solar_zenith, dni_extra): +def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): r"""Function to calculate the upper limit of GTI """ # Changing aoi to 90 degrees when solar zenith is greater than 90 (sun @@ -489,10 +489,13 @@ def _upper_gti_limit_lorenz(aoi, solar_zenith, dni_extra): # Setting upper limit as undefined where solar_zenith is not available upper_limit[solar_zenith.isna()] = np.nan + + # Renaming upper_limit series to 'upper_limit' + upper_limit.rename('upper_limit') return(upper_limit) -def _lower_gti_limit_lorenz(solar_zenith, dni_extra): +def _lower_poa_global_limit_lorenz(solar_zenith, dni_extra): r"""Function to calculate the lower limit of GTI """ # Setting the lower_limit at 0. @@ -506,6 +509,8 @@ def _lower_gti_limit_lorenz(solar_zenith, dni_extra): # Setting upper limit as undefined where solar_zenith is not available lower_limit[solar_zenith.isna()] = np.nan + # Renaming upper_limit series to 'upper_limit' + lower_limit.rename('lower_limit') return(lower_limit) @@ -568,8 +573,8 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): solar_zenith = pd.Series(solar_zenith) # Finding the upper and lower limit - upper_limit = _upper_gti_limit_lorenz(aoi, solar_zenith, dni_extra) - lower_limit = _lower_gti_limit_lorenz(solar_zenith, dni_extra) + upper_limit = _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra) + lower_limit = _lower_poa_global_limit_lorenz(solar_zenith, dni_extra) # Initiating a poa_global_limit_int_flag series poa_global_limit_int_flag = \ diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index fca644046..c35a5c520 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -342,3 +342,45 @@ def test_check_poa_global_limits_lorenz(): assert_series_equal(poa_global_limit_bool_flag, expected_bool_flag, check_names=False) + + +def test__upper_poa_global_limit_lorenz(): + """Testing upper poa global limit defined by Lorenz et. al""" + + test_file = DATA_DIR / "lorenz_poa_test_dataset.csv" + + test_data = pd.read_csv(test_file, index_col=0, parse_dates=True) + + expected_upper_limit = test_data['upper_limit'] + + dni_extra = 1367 + solar_zenith = test_data['solar_zenith'] + aoi = test_data['aoi'] + + test_upper_limit = irradiance._upper_poa_global_limit_lorenz(aoi, + solar_zenith, + dni_extra) + + assert_series_equal(expected_upper_limit, + test_upper_limit, + check_names=False) + + +def test__lower_poa_global_limit_lorenz(): + """Testing lower poa global limit defined by Lorenz et. al""" + + test_file = DATA_DIR / "lorenz_poa_test_dataset.csv" + + test_data = pd.read_csv(test_file, index_col=0, parse_dates=True) + + expected_lower_limit = test_data['lower_limit'] + + dni_extra = 1367 + solar_zenith = test_data['solar_zenith'] + + test_lower_limit = irradiance._lower_poa_global_limit_lorenz(solar_zenith, + dni_extra) + + assert_series_equal(expected_lower_limit, + test_lower_limit, + check_names=False) From 9399adf39077f958019a9892d2265abef7f6759c Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sat, 12 Nov 2022 20:52:06 -0800 Subject: [PATCH 03/40] edited description of a function --- pvanalytics/quality/irradiance.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index cb5e6d79b..c48526bc8 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -526,9 +526,6 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): .. math:: ub = min + mult * dni\_extra * cos( solar\_zenith)^{exp} - .. note:: If any of `ghi`, `dhi`, or `dni` are None, the - corresponding element of the returned tuple will also be None. - Parameters ---------- poa_global : Series From 60861b2e108038a8098a630e31358541dfac658d Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Tue, 15 Nov 2022 23:41:18 -0800 Subject: [PATCH 04/40] updated documentation and api.rst --- docs/api.rst | 13 +++++++++++++ docs/whatsnew/0.1.3.rst | 5 ++++- pvanalytics/quality/irradiance.py | 28 ++++++++++++---------------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/docs/api.rst b/docs/api.rst index 629370e78..d243f0326 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -65,6 +65,14 @@ clearsky insolation for the same day. quality.irradiance.daily_insolation_limits +The ``check_poa_global_limits_lorenz`` function flags the global plane of array +irradiance measurements that are outside the limits described in [2]_. + +.. autosummary:: + :toctree: generated/ + + quality.irradiance.check_poa_global_limits_lorenz + Gaps ---- @@ -186,6 +194,11 @@ the quality check. Algorithm for Surface Radiation Measurements, The Open Atmospheric Science Journal 2, pp. 23-37, 2008. +.. [2] Elke Lorenz et. al, High resolution measurement network of global + horizontal and tilted solar irradiance in southern Germany with a new + quality control scheme, Solar Energy, Volume 231, 2022, Pages 593-606, + ISSN 0038-092X, https://doi.org/10.1016/j.solener.2021.11.023. + Features ======== diff --git a/docs/whatsnew/0.1.3.rst b/docs/whatsnew/0.1.3.rst index 422d126a3..a6182412f 100644 --- a/docs/whatsnew/0.1.3.rst +++ b/docs/whatsnew/0.1.3.rst @@ -6,6 +6,8 @@ Enhancements ~~~~~~~~~~~~ +Added a function to check global plane of array irradiance using the paper +described in (:issue:`123`, :pull:`167`). Bug Fixes ~~~~~~~~~ @@ -41,4 +43,5 @@ Contributors ~~~~~~~~~~~~ * Kirsten Perry (:ghuser:`kperrynrel`) -* Cliff Hansen (:ghuser:`cwhanse`) \ No newline at end of file +* Cliff Hansen (:ghuser:`cwhanse`) +* Abhishek Parikh (:ghuser:`abhisheksparikh`) \ No newline at end of file diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index c48526bc8..8effc54da 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -492,7 +492,7 @@ def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): # Renaming upper_limit series to 'upper_limit' upper_limit.rename('upper_limit') - return(upper_limit) + return (upper_limit) def _lower_poa_global_limit_lorenz(solar_zenith, dni_extra): @@ -511,14 +511,14 @@ def _lower_poa_global_limit_lorenz(solar_zenith, dni_extra): # Renaming upper_limit series to 'upper_limit' lower_limit.rename('lower_limit') - return(lower_limit) + return (lower_limit) def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): r"""Test for limits on POA global using the equations described in Section 6.1 of [1]_ - Criteria from [1]_ are used to determine physically plausible + Criteria from [1] are used to determine physically plausible lower and upper bounds. Each value is tested and a value passes if value > lower bound and value < upper bound. Lower bounds are constant for all tests. Upper bounds are calculated as @@ -541,25 +541,21 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): True for each value that is physically possible. poa_global_limit_int_flag : Series Series of integers representing the flag numbers described in the - literature _[1] + literature [1] Notes ----- The upper limit for `poa_global` is set to 0 when `solar_zenith` is greater - than 90 degrees. Missing values of `poa_global`, `solar_zenith` and/or - `aoi` will result in a `False` flag. + than 90 degrees. Missing values of `poa_global`, `solar_zenith` + and/or `aoi` will result in a `False` flag. References ---------- - .. [1] Elke Lorenz et. al - High resolution measurement network of global horizontal and tilted solar - irradiance in southern Germany with a new quality control scheme, - Solar Energy, - Volume 231, - 2022, - Pages 593-606, - ISSN 0038-092X, - https://doi.org/10.1016/j.solener.2021.11.023. + .. [1] Elke Lorenz et. al, High resolution measurement network of global + horizontal and tilted solar irradiance in southern Germany with a + new quality control scheme, Solar Energy, Volume 231, 2022, + Pages 593-606, ISSN 0038-092X, + https://doi.org/10.1016/j.solener.2021.11.023. """ # Defining the normal irradiance at the top of atmosphere in W/m^2 dni_extra = 1367 @@ -604,4 +600,4 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): cond=poa_global_limit_int_flag != 0, other=False) - return(poa_global_limit_bool_flag, poa_global_limit_int_flag) + return (poa_global_limit_bool_flag, poa_global_limit_int_flag) From 94d34306a00f18526d5e1d28b1d930e1918e7bad Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 28 Nov 2022 12:00:52 -0800 Subject: [PATCH 05/40] style change Co-authored-by: Kevin Anderson --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 8effc54da..4334ddf8e 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -492,7 +492,7 @@ def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): # Renaming upper_limit series to 'upper_limit' upper_limit.rename('upper_limit') - return (upper_limit) + return upper_limit def _lower_poa_global_limit_lorenz(solar_zenith, dni_extra): From 792f10d78e4100d04f5801e82c86c837d77397c1 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 28 Nov 2022 12:04:00 -0800 Subject: [PATCH 06/40] simplifying initiation of `poa_global_limit_int_flag` Co-authored-by: Kevin Anderson --- pvanalytics/quality/irradiance.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 4334ddf8e..a8fcad949 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -570,9 +570,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): lower_limit = _lower_poa_global_limit_lorenz(solar_zenith, dni_extra) # Initiating a poa_global_limit_int_flag series - poa_global_limit_int_flag = \ - pd.Series(np.zeros(len(solar_zenith)).astype(np.int64), - index=solar_zenith.index) + poa_global_limit_int_flag = pd.Series(0, index=solar_zenith.index) # Initiating a poa_global_limit_bool_flag series poa_global_limit_bool_flag = \ From a2aa46928c41fa0452839cf4817f5d10df7b50c6 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 28 Nov 2022 12:05:44 -0800 Subject: [PATCH 07/40] Simplifying the initiation of `poa_global_limit_bool_flag` Co-authored-by: Kevin Anderson --- pvanalytics/quality/irradiance.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index a8fcad949..c43ad766b 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -573,9 +573,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): poa_global_limit_int_flag = pd.Series(0, index=solar_zenith.index) # Initiating a poa_global_limit_bool_flag series - poa_global_limit_bool_flag = \ - pd.Series(np.full(len(solar_zenith), True, dtype=bool), - index=solar_zenith.index) + poa_global_limit_bool_flag = pd.Series(True, index=solar_zenith.index) # Changing the poa_global_flag to 3 when poa_global is above upper # limit or below lower limit From 70979527c31726405055617cdd21c63cde810346 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sun, 4 Dec 2022 15:30:45 -0800 Subject: [PATCH 08/40] minor changes --- pvanalytics/quality/irradiance.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index c43ad766b..7be5d9984 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -478,7 +478,6 @@ def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): """ # Changing aoi to 90 degrees when solar zenith is greater than 90 (sun # below horizon) or aoi is greater than 90 (which is not realistic). - aoi = aoi.mask(solar_zenith > 90, 90) aoi = aoi.clip(lower=0, upper=90) # Determining the upper limit @@ -490,8 +489,9 @@ def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): # Setting upper limit as undefined where solar_zenith is not available upper_limit[solar_zenith.isna()] = np.nan - # Renaming upper_limit series to 'upper_limit' - upper_limit.rename('upper_limit') + # Setting upper limit as undefined where aoi is not available + upper_limit[aoi.isna()] = np.nan + return upper_limit @@ -506,15 +506,14 @@ def _lower_poa_global_limit_lorenz(solar_zenith, dni_extra): lower_limit = lower_limit.mask(solar_zenith < 75, 0.01 * dni_extra * cosd(solar_zenith)) - # Setting upper limit as undefined where solar_zenith is not available + # Setting lower limit as undefined where solar_zenith is not available lower_limit[solar_zenith.isna()] = np.nan - # Renaming upper_limit series to 'upper_limit' - lower_limit.rename('lower_limit') return (lower_limit) -def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): +def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, + dni_extra=1367): r"""Test for limits on POA global using the equations described in Section 6.1 of [1]_ @@ -524,7 +523,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): constant for all tests. Upper bounds are calculated as .. math:: - ub = min + mult * dni\_extra * cos( solar\_zenith)^{exp} + upper_limit = 0.9 * dni\_extra * cos(aoi)^{1.2} + 300 Parameters ---------- @@ -534,6 +533,8 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): Solar zenith angle in degrees aoi : Series Direct normal irradiance in :math:`W/m^2` + dni_extra : float + normal irradiance at the top of atmosphere in W/m^2 Returns ------- @@ -557,9 +558,6 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi): Pages 593-606, ISSN 0038-092X, https://doi.org/10.1016/j.solener.2021.11.023. """ - # Defining the normal irradiance at the top of atmosphere in W/m^2 - dni_extra = 1367 - # Making sure that the input are in series poa_global = pd.Series(poa_global) aoi = pd.Series(aoi) From 97f3a9c78ee7b82a9b5a011e70942a67e018bcaf Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 00:41:23 -0800 Subject: [PATCH 09/40] Added GHI check func and completed POA check func --- docs/api.rst | 8 + docs/whatsnew/0.1.3.rst | 3 +- pvanalytics/quality/irradiance.py | 181 +++++++++++++++++- pvanalytics/tests/quality/test_irradiance.py | 188 ++++++++++++++++--- 4 files changed, 344 insertions(+), 36 deletions(-) diff --git a/docs/api.rst b/docs/api.rst index d243f0326..241cbb5f6 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -73,6 +73,14 @@ irradiance measurements that are outside the limits described in [2]_. quality.irradiance.check_poa_global_limits_lorenz +The ``check_ghi_limits_lorenz`` function flags the global horizontal irradiance +measurements that are outside the limits described in [2]_. + +.. autosummary:: + :toctree: generated/ + + quality.irradiance.check_ghi_limits_lorenz + Gaps ---- diff --git a/docs/whatsnew/0.1.3.rst b/docs/whatsnew/0.1.3.rst index a6182412f..0b468697c 100644 --- a/docs/whatsnew/0.1.3.rst +++ b/docs/whatsnew/0.1.3.rst @@ -6,8 +6,7 @@ Enhancements ~~~~~~~~~~~~ -Added a function to check global plane of array irradiance using the paper -described in (:issue:`123`, :pull:`167`). +* Added a function to check global plane of array irradiance and global horizontal irradiance using the paper described in (:issue:`123`, :pull:`167`). Bug Fixes ~~~~~~~~~ diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 7be5d9984..553b643c7 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -474,10 +474,11 @@ def daily_insolation_limits(irrad, clearsky, daily_min=0.4, daily_max=1.25): def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): - r"""Function to calculate the upper limit of GTI + r"""Function to calculate the upper limit of poa_global """ # Changing aoi to 90 degrees when solar zenith is greater than 90 (sun - # below horizon) or aoi is greater than 90 (which is not realistic). + # below horizon) or aoi is greater than 90 (sun on the other side of + # the sensor/module's plane). aoi = aoi.clip(lower=0, upper=90) # Determining the upper limit @@ -519,11 +520,12 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, Criteria from [1] are used to determine physically plausible lower and upper bounds. Each value is tested and a value passes if - value > lower bound and value < upper bound. Lower bounds are + value > lower bound and value < upper bound. Also, steps with + change in magnitude of more than 1000 W/m2 are flagged. Lower bounds are constant for all tests. Upper bounds are calculated as .. math:: - upper_limit = 0.9 * dni\_extra * cos(aoi)^{1.2} + 300 + upper\_limit = 0.9 * dni\_extra * cos(aoi)^{1.2} + 300 Parameters ---------- @@ -558,11 +560,6 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, Pages 593-606, ISSN 0038-092X, https://doi.org/10.1016/j.solener.2021.11.023. """ - # Making sure that the input are in series - poa_global = pd.Series(poa_global) - aoi = pd.Series(aoi) - solar_zenith = pd.Series(solar_zenith) - # Finding the upper and lower limit upper_limit = _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra) lower_limit = _lower_poa_global_limit_lorenz(solar_zenith, dni_extra) @@ -581,6 +578,13 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, 3 ) + # Changing the poa_global_flag to 3 when the step change in poa values is + # more than 1000 W/m2 + poa_global_limit_int_flag = poa_global_limit_int_flag.mask( + (abs(poa_global - poa_global.shift(1)) > 1000), + 3 + ) + # Changing the poa_global_flag to 1 when poa_global is not available poa_global_limit_int_flag = poa_global_limit_int_flag.mask( ((poa_global.isna()) | @@ -589,9 +593,166 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, 1 ) - # poa_global_limit_flag + # Changing the poa_global_limit_bool_flag depending on + # poa_global_limit_int_flag poa_global_limit_bool_flag = poa_global_limit_bool_flag.mask( cond=poa_global_limit_int_flag != 0, other=False) return (poa_global_limit_bool_flag, poa_global_limit_int_flag) + + +def _upper_ghi_limit_lorenz_flag2(solar_zenith, dni_extra): + r"""Function to calculate the upper limit of ghi for Flag 2 + """ + # Determining the upper limit + upper_limit_flag2 = 1.2 * dni_extra * cosd(solar_zenith) + 50 + + # Setting upper limit as 0 when solar zenith is > 90 (night time) + upper_limit_flag2[solar_zenith > 90] = 0 + + # Setting upper limit as undefined where solar_zenith is not available + upper_limit_flag2[solar_zenith.isna()] = np.nan + + return upper_limit_flag2 + + +def _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra): + r"""Function to calculate the upper limit of ghi for Flag 3 + """ + # Determining the upper limit + upper_limit_flag3 = np.minimum( + pd.Series(1.2 * dni_extra, index=solar_zenith.index), + 1.5 * dni_extra * (cosd(solar_zenith))**1.2 + 100) + + # Setting upper limit as 0 when solar zenith is > 90 (night time) + upper_limit_flag3[solar_zenith > 90] = 0 + + # Setting upper limit as undefined where solar_zenith is not available + upper_limit_flag3[solar_zenith.isna()] = np.nan + + return upper_limit_flag3 + + +def _lower_ghi_limit_lorenz(solar_zenith, dni_extra): + r"""Function to calculate the lower limit of ghi + """ + # Setting the lower_limit at 0 + lower_limit = pd.Series(np.zeros(len(solar_zenith)), + index=solar_zenith.index) + + # Determining the lower limit when solar zenith is < 75 + lower_limit = lower_limit.mask(solar_zenith < 75, + 0.01 * dni_extra * cosd(solar_zenith)) + + # Setting lower limit as undefined where solar_zenith is not available + lower_limit[solar_zenith.isna()] = np.nan + + return (lower_limit) + + +def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): + r"""Test for limits on global horizontal irradiance using the equations + described in Section 6.1 of [1]_ + + Criteria from [1] are used to determine physically plausible + lower, upper bounds and step change. Each value is tested and a value + passes if value > lower bound and value < upper bound. Also, steps with + change in magnitude of more than :math:`1000 W/m^{2}` are flagged. Lower + bounds are constant for all tests. As defined in the paper, there are + two values of upper bounds calculated: + (1) Rare values - Flag 2 + (2) Extreme values - Flag 3 + + For Flag 2 + + .. math:: + upper\_limit_{\mathbf{Flag\_2}} = 1.2 * dni\_extra * cos(solar\_zenith) + + 50 + + For Flag 3 + + .. math:: + upper\_limit_{\mathbf{Flag\_3}} = min(1.2 * dni\_extra, + 1.5 * dni\_extra * cos(solar\_zenith)^{1.2} + 100) + + Parameters + ---------- + ghi : Series + Global tilted irradiance in :math:`W/m^2` + solar_zenith : Series + Solar zenith angle in degrees + dni_extra : float + normal irradiance at the top of atmosphere in :math:`W/m^2` + + Returns + ------- + ghi_limit_bool_flag : Series + True for each value that is physically possible. + ghi_limit_int_flag : Series + Series of integers representing the flag numbers described in the + literature [1] + + Notes + ----- + The upper limit for `ghi` is set to 0 when `solar_zenith` is greater + than 90 degrees. Missing values of `ghi` and/or `solar_zenith` will result + in a `False` flag. + + References + ---------- + .. [1] Elke Lorenz et. al, High resolution measurement network of global + horizontal and tilted solar irradiance in southern Germany with a + new quality control scheme, Solar Energy, Volume 231, 2022, + Pages 593-606, ISSN 0038-092X, + https://doi.org/10.1016/j.solener.2021.11.023. + """ + # Finding the upper limit for flag 2 and flag 3 + upper_limit_flag2 = _upper_ghi_limit_lorenz_flag2(solar_zenith, dni_extra) + upper_limit_flag3 = _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra) + + # Finding the lower limit for flag 3 + lower_limit = _lower_ghi_limit_lorenz(solar_zenith, dni_extra) + + # Initiating a ghi_limit_int_flag series + ghi_limit_int_flag = pd.Series(0, index=solar_zenith.index) + + # Initiating a ghi_limit_bool_flag series + ghi_limit_bool_flag = pd.Series(True, index=solar_zenith.index) + + # Changing the ghi_limit_int_flag to 2 when ghi is above upper_limit_flag2 + ghi_limit_int_flag = ghi_limit_int_flag.mask( + (ghi > upper_limit_flag2), + 2 + ) + + # Changing the ghi_limit_int_flag to 3 when ghi is above upper_limit_flag3 + # or lower than the lower_limit + ghi_limit_int_flag = ghi_limit_int_flag.mask( + (ghi > upper_limit_flag3) | + (ghi < lower_limit), + 3 + ) + + # Changing the ghi_limit_int_flag to 3 when the step change in ghi values + # is more than 1000 W/m2 + ghi_limit_int_flag = ghi_limit_int_flag.mask( + (abs(ghi - ghi.shift(1)) > 1000), + 3 + ) + + # Changing the ghi_limit_int_flag to 1 when ghi is not available + ghi_limit_int_flag = ghi_limit_int_flag.mask( + ((ghi.isna()) | + (upper_limit_flag2.isna()) | + (upper_limit_flag3.isna()) | + (lower_limit.isna())), + 1 + ) + + # Changing the ghi_limit_bool_flag depending on ghi_limit_int_flag + ghi_limit_bool_flag = ghi_limit_bool_flag.mask( + cond=ghi_limit_int_flag != 0, + other=False) + + return (ghi_limit_bool_flag, ghi_limit_int_flag) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index c35a5c520..515640bb4 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -8,7 +8,6 @@ from pandas.util.testing import assert_series_equal from pvanalytics.quality import irradiance -from ..conftest import DATA_DIR @pytest.fixture @@ -317,23 +316,73 @@ def test_daily_insolation_limits_uneven(albuquerque): ) -def test_check_poa_global_limits_lorenz(): - """Testing the function 'test_check_poa_global_limits_lorenz'""" +@pytest.fixture +def lorenz_test_data(): + + data = pd.DataFrame( + columns=['ghi', 'poa_global', 'solar_zenith', 'azimuth', 'aoi', + 'lower_limit_poa', 'upper_limit_poa', + 'poa_global_limit_int_flag', 'poa_global_limit_bool_flag', + 'lower_limit_ghi', 'upper_limit_flag2_ghi', + 'upper_limit_flag3_ghi', 'ghi_limit_int_flag', + 'ghi_limit_bool_flag'], + data=np.array([[400, 730, 60, 205, 30, 6.835, 1335.256062, 0, 1, + 6.835, 870.2, 992.531965, 0, 1], + [500, 830, 60, 205, 30, 6.835, 1335.256062, 0, 1, + 6.835, 870.2, 992.531965, 0, 1], + [880, 830, 60, 205, 30, 6.835, 1335.256062, 0, 1, + 6.835, 870.2, 992.531965, 2, 0], + [1000, 830, 60, 205, 30, 6.835, 1335.256062, 0, 1, + 6.835, 870.2, 992.531965, 3, 0], + [6, 830, 60, 205, 30, 6.835, 1335.256062, 0, 1, + 6.835, 870.2, 992.531965, 3, 0], + [100, 150, 60, 205, 30, 6.835, 1335.256062, 0, 1, + 6.835, 870.2, 992.531965, 0, 1], + [100, 150, 60, 205, 30, 6.835, 1335.256062, 0, 1, + 6.835, 870.2, 992.531965, 0, 1], + [100, 1152, 60, 205, 30, 6.835, 1335.256062, 3, 0, + 6.835, 870.2, 992.531965, 0, 1], + [100, 150, 60, 205, 30, 6.835, 1335.256062, 3, 0, + 6.835, 870.2, 992.531965, 0, 1], + [100, 150, 60, 205, 30, 6.835, 1335.256062, 0, 1, + 6.835, 870.2, 992.531965, 0, 1], + [500, 830, np.nan, 205, 30, np.nan, np.nan, 1, 0, + np.nan, np.nan, np.nan, 1, 0], + [500, 830, 60, 205, np.nan, 6.835, np.nan, 1, 0, + 6.835, 870.2, 992.531965, 0, 1]])) + + dtypes = ['float64', 'float64', 'float64', 'float64', 'float64', + 'float64', 'float64', + 'int64', 'bool', + 'float64', 'float64', + 'float64', 'int64', + 'bool'] + + for (col, typ) in zip(data.columns, dtypes): + data[col] = data[col].astype(typ) - test_file = DATA_DIR / "lorenz_poa_test_dataset.csv" + return(data) - test_data = pd.read_csv(test_file, index_col=0, parse_dates=True) - expected_bool_flag = test_data['poa_global_limit_bool_flag'] - expected_int_flag = test_data['poa_global_limit_int_flag'] +def test_check_poa_global_limits_lorenz(lorenz_test_data): + """Testing the function 'check_poa_global_limits_lorenz'""" - poa_global = test_data['poa_global'] - solar_zenith = test_data['solar_zenith'] - aoi = test_data['aoi'] + data = lorenz_test_data + + # Expected boolean and integer flags + expected_bool_flag = data['poa_global_limit_bool_flag'] + expected_int_flag = data['poa_global_limit_int_flag'] + + # Setting up inputs + dni_extra = 1367 + poa_global = data['poa_global'] + solar_zenith = data['solar_zenith'] + aoi = data['aoi'] + # Calling the functions poa_global_limit_bool_flag, poa_global_limit_int_flag = \ irradiance.check_poa_global_limits_lorenz(poa_global, solar_zenith, - aoi) + aoi, dni_extra) assert_series_equal(expected_int_flag, poa_global_limit_int_flag, @@ -344,19 +393,20 @@ def test_check_poa_global_limits_lorenz(): check_names=False) -def test__upper_poa_global_limit_lorenz(): +def test__upper_poa_global_limit_lorenz(lorenz_test_data): """Testing upper poa global limit defined by Lorenz et. al""" - test_file = DATA_DIR / "lorenz_poa_test_dataset.csv" + data = lorenz_test_data - test_data = pd.read_csv(test_file, index_col=0, parse_dates=True) - - expected_upper_limit = test_data['upper_limit'] + # Expected upper limit + expected_upper_limit = data['upper_limit_poa'] + # Setting up inputs dni_extra = 1367 - solar_zenith = test_data['solar_zenith'] - aoi = test_data['aoi'] + solar_zenith = data['solar_zenith'] + aoi = data['aoi'] + # Testing upper limit test_upper_limit = irradiance._upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra) @@ -366,17 +416,17 @@ def test__upper_poa_global_limit_lorenz(): check_names=False) -def test__lower_poa_global_limit_lorenz(): +def test__lower_poa_global_limit_lorenz(lorenz_test_data): """Testing lower poa global limit defined by Lorenz et. al""" - test_file = DATA_DIR / "lorenz_poa_test_dataset.csv" - - test_data = pd.read_csv(test_file, index_col=0, parse_dates=True) + data = lorenz_test_data - expected_lower_limit = test_data['lower_limit'] + # Expected upper limit + expected_lower_limit = data['lower_limit_poa'] + # Setting up inputs dni_extra = 1367 - solar_zenith = test_data['solar_zenith'] + solar_zenith = data['solar_zenith'] test_lower_limit = irradiance._lower_poa_global_limit_lorenz(solar_zenith, dni_extra) @@ -384,3 +434,93 @@ def test__lower_poa_global_limit_lorenz(): assert_series_equal(expected_lower_limit, test_lower_limit, check_names=False) + + +def test__upper_ghi_limit_lorenz_flag2(lorenz_test_data): + """Testing upper ghi limit for flag 2 defined by Lorenz et. al""" + + data = lorenz_test_data + + # Expected upper limit + expected_upper_limit = data['upper_limit_flag2_ghi'] + + # Setting up inputs + dni_extra = 1367 + solar_zenith = data['solar_zenith'] + + # Testing upper limit + test_upper_limit = irradiance._upper_ghi_limit_lorenz_flag2(solar_zenith, + dni_extra) + + assert_series_equal(expected_upper_limit, + test_upper_limit, + check_names=False) + + +def test__upper_ghi_limit_lorenz_flag3(lorenz_test_data): + """Testing upper ghi limit for flag 3 defined by Lorenz et. al""" + + data = lorenz_test_data + + # Expected upper limit + expected_upper_limit = data['upper_limit_flag3_ghi'] + + # Setting up inputs + dni_extra = 1367 + solar_zenith = data['solar_zenith'] + + # Testing upper limit + test_upper_limit = irradiance._upper_ghi_limit_lorenz_flag3(solar_zenith, + dni_extra) + + assert_series_equal(expected_upper_limit, + test_upper_limit, + check_names=False) + + +def test__lower_ghi_limit_lorenz(lorenz_test_data): + """Testing lower ghi limit defined by Lorenz et. al""" + + data = lorenz_test_data + + # Expected upper limit + expected_upper_limit = data['lower_limit_ghi'] + + # Setting up inputs + dni_extra = 1367 + solar_zenith = data['solar_zenith'] + + # Testing upper limit + test_upper_limit = irradiance._lower_ghi_limit_lorenz(solar_zenith, + dni_extra) + + assert_series_equal(expected_upper_limit, + test_upper_limit, + check_names=False) + + +def test_check_ghi_limits_lorenz(lorenz_test_data): + """Testing the function 'check_ghi_limits_lorenz'""" + + data = lorenz_test_data + + # Expected boolean and integer flags + expected_bool_flag = data['ghi_limit_bool_flag'] + expected_int_flag = data['ghi_limit_int_flag'] + + # Setting up inputs + dni_extra = 1367 + ghi = data['ghi'] + solar_zenith = data['solar_zenith'] + + # Calling the functions + ghi_limit_bool_flag, ghi_limit_int_flag = \ + irradiance.check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra) + + assert_series_equal(expected_int_flag, + ghi_limit_int_flag, + check_names=False) + + assert_series_equal(ghi_limit_bool_flag, + expected_bool_flag, + check_names=False) From a11d8d837054ad4f59624df6bf9b4c18678ffaaa Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 09:00:02 -0800 Subject: [PATCH 10/40] Update docs/whatsnew/0.1.3.rst Co-authored-by: Cliff Hansen --- docs/whatsnew/0.1.3.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/whatsnew/0.1.3.rst b/docs/whatsnew/0.1.3.rst index d1529d0ca..63fcf979f 100644 --- a/docs/whatsnew/0.1.3.rst +++ b/docs/whatsnew/0.1.3.rst @@ -7,7 +7,7 @@ Enhancements ~~~~~~~~~~~~ * Added function ``pvanalytics.quality.irradiance.calculate_component_sum_series`` for calculating the component sum values of GHI, DHI, and DNI, and performing nighttime corrections (:issue:`157`, :pull:`163`) * Updated the :py:func:`~pvanalytics.gaps.stale_values_round` function with pandas functionality, leading to the same results with a 300X speedup. (:issue:`156`, :pull:`158`) -* Added a function to check global plane of array irradiance and global horizontal irradiance using the paper described in (:issue:`123`, :pull:`167`). +* Added a function to check global plane of array irradiance and global horizontal irradiance using a method of E. Lorenze et al. (2022) (:issue:`123`, :pull:`167`). Bug Fixes ~~~~~~~~~ From 75dda23b1ef8f9af090b1a9b7ac360d2ab41c061 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 09:00:17 -0800 Subject: [PATCH 11/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 29efbf818..1ebc051eb 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -733,7 +733,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, True for each value that is physically possible. poa_global_limit_int_flag : Series Series of integers representing the flag numbers described in the - literature [1] + literature. [1]_ Notes ----- From 6c5685943b10126c5ec1527d70b6a18a286b96cb Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 09:00:56 -0800 Subject: [PATCH 12/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 1ebc051eb..cf6a443cc 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -725,7 +725,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, aoi : Series Direct normal irradiance in :math:`W/m^2` dni_extra : float - normal irradiance at the top of atmosphere in W/m^2 + normal irradiance at the top of atmosphere in :math:`W/m^2` Returns ------- From 4da89133a96b9daa89010e1eb3d973117f129185 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 09:01:08 -0800 Subject: [PATCH 13/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index cf6a443cc..3a0d7b93f 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -707,7 +707,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, r"""Test for limits on POA global using the equations described in Section 6.1 of [1]_ - Criteria from [1] are used to determine physically plausible + Criteria from [1]_ are used to determine physically plausible lower and upper bounds. Each value is tested and a value passes if value > lower bound and value < upper bound. Also, steps with change in magnitude of more than 1000 W/m2 are flagged. Lower bounds are From 7420547ffd398bd384f30ea8db0043643294867b Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 17:31:48 -0800 Subject: [PATCH 14/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 3a0d7b93f..c4b0e74c3 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -743,7 +743,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, References ---------- - .. [1] Elke Lorenz et. al, High resolution measurement network of global + .. [1] Elke Lorenz et al., High resolution measurement network of global horizontal and tilted solar irradiance in southern Germany with a new quality control scheme, Solar Energy, Volume 231, 2022, Pages 593-606, ISSN 0038-092X, From e98d476195f2edf3721f11eeb94a8c37d6b86473 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 17:32:02 -0800 Subject: [PATCH 15/40] Update pvanalytics/tests/quality/test_irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/tests/quality/test_irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index 6756ba205..a9f5cbdbf 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -514,7 +514,7 @@ def test__upper_poa_global_limit_lorenz(lorenz_test_data): def test__lower_poa_global_limit_lorenz(lorenz_test_data): - """Testing lower poa global limit defined by Lorenz et. al""" + """Testing lower poa global limit defined by Lorenz et al.""" data = lorenz_test_data From e0bfa2b37df90ff832b6da70b41d9ef892ce2e38 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 17:32:16 -0800 Subject: [PATCH 16/40] Update pvanalytics/tests/quality/test_irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/tests/quality/test_irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index a9f5cbdbf..a374a2e68 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -534,7 +534,7 @@ def test__lower_poa_global_limit_lorenz(lorenz_test_data): def test__upper_ghi_limit_lorenz_flag2(lorenz_test_data): - """Testing upper ghi limit for flag 2 defined by Lorenz et. al""" + """Testing upper ghi limit for flag 2 defined by Lorenz et al.""" data = lorenz_test_data From d0591cc5494d1e52b764dbbb480f5c56c611d9b5 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 17:32:25 -0800 Subject: [PATCH 17/40] Update pvanalytics/tests/quality/test_irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/tests/quality/test_irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index a374a2e68..448e7109a 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -576,7 +576,7 @@ def test__upper_ghi_limit_lorenz_flag3(lorenz_test_data): def test__lower_ghi_limit_lorenz(lorenz_test_data): - """Testing lower ghi limit defined by Lorenz et. al""" + """Testing lower ghi limit defined by Lorenz et al.""" data = lorenz_test_data From 6d99699705e03b614cd2401236fd87ad3ba964fe Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 17:32:45 -0800 Subject: [PATCH 18/40] Update pvanalytics/tests/quality/test_irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/tests/quality/test_irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index 448e7109a..ff152d243 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -555,7 +555,7 @@ def test__upper_ghi_limit_lorenz_flag2(lorenz_test_data): def test__upper_ghi_limit_lorenz_flag3(lorenz_test_data): - """Testing upper ghi limit for flag 3 defined by Lorenz et. al""" + """Testing upper ghi limit for flag 3 defined by Lorenz et al.""" data = lorenz_test_data From e25674ba8dfa59c5bc343da5f9892fa3060b2fd3 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 17:36:47 -0800 Subject: [PATCH 19/40] Update pvanalytics/tests/quality/test_irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/tests/quality/test_irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index ff152d243..85a24f8b8 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -491,7 +491,7 @@ def test_check_poa_global_limits_lorenz(lorenz_test_data): def test__upper_poa_global_limit_lorenz(lorenz_test_data): - """Testing upper poa global limit defined by Lorenz et. al""" + """Testing upper poa global limit defined by Lorenz et al.""" data = lorenz_test_data From 895bf72c479f9e642a3bf46455e59b21c232217d Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 17:37:03 -0800 Subject: [PATCH 20/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index c4b0e74c3..3e289e254 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -844,7 +844,7 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): r"""Test for limits on global horizontal irradiance using the equations described in Section 6.1 of [1]_ - Criteria from [1] are used to determine physically plausible + Criteria from [1]_ are used to determine physically plausible lower, upper bounds and step change. Each value is tested and a value passes if value > lower bound and value < upper bound. Also, steps with change in magnitude of more than :math:`1000 W/m^{2}` are flagged. Lower From 98f8445492431698b518c5b9923761d5501bb31f Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 17:37:16 -0800 Subject: [PATCH 21/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 3e289e254..88de27489 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -880,7 +880,7 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): True for each value that is physically possible. ghi_limit_int_flag : Series Series of integers representing the flag numbers described in the - literature [1] + literature. [1]_ Notes ----- From 3ddfcc9f57cd8327da349eb0bf40a9fb12c331bb Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 17:37:26 -0800 Subject: [PATCH 22/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 88de27489..6e8797ee2 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -890,7 +890,7 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): References ---------- - .. [1] Elke Lorenz et. al, High resolution measurement network of global + .. [1] Elke Lorenz et al., High resolution measurement network of global horizontal and tilted solar irradiance in southern Germany with a new quality control scheme, Solar Energy, Volume 231, 2022, Pages 593-606, ISSN 0038-092X, From f99c530278ee452f05ce77c2655d9089d0480a29 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Mon, 12 Dec 2022 18:22:28 -0800 Subject: [PATCH 23/40] changed lower limit funcs and added -ve test data --- pvanalytics/quality/irradiance.py | 25 +++----------- pvanalytics/tests/quality/test_irradiance.py | 36 ++++++-------------- 2 files changed, 15 insertions(+), 46 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 6e8797ee2..751ab0de4 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -685,8 +685,8 @@ def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): return upper_limit -def _lower_poa_global_limit_lorenz(solar_zenith, dni_extra): - r"""Function to calculate the lower limit of GTI +def _lower_limit_lorenz(solar_zenith, dni_extra): + r"""Function to calculate the lower limit of poa_global and ghi """ # Setting the lower_limit at 0. lower_limit = pd.Series(np.zeros(len(solar_zenith)), @@ -751,7 +751,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, """ # Finding the upper and lower limit upper_limit = _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra) - lower_limit = _lower_poa_global_limit_lorenz(solar_zenith, dni_extra) + lower_limit = _lower_limit_lorenz(solar_zenith, dni_extra) # Initiating a poa_global_limit_int_flag series poa_global_limit_int_flag = pd.Series(0, index=solar_zenith.index) @@ -823,23 +823,6 @@ def _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra): return upper_limit_flag3 -def _lower_ghi_limit_lorenz(solar_zenith, dni_extra): - r"""Function to calculate the lower limit of ghi - """ - # Setting the lower_limit at 0 - lower_limit = pd.Series(np.zeros(len(solar_zenith)), - index=solar_zenith.index) - - # Determining the lower limit when solar zenith is < 75 - lower_limit = lower_limit.mask(solar_zenith < 75, - 0.01 * dni_extra * cosd(solar_zenith)) - - # Setting lower limit as undefined where solar_zenith is not available - lower_limit[solar_zenith.isna()] = np.nan - - return (lower_limit) - - def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): r"""Test for limits on global horizontal irradiance using the equations described in Section 6.1 of [1]_ @@ -901,7 +884,7 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): upper_limit_flag3 = _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra) # Finding the lower limit for flag 3 - lower_limit = _lower_ghi_limit_lorenz(solar_zenith, dni_extra) + lower_limit = _lower_limit_lorenz(solar_zenith, dni_extra) # Initiating a ghi_limit_int_flag series ghi_limit_int_flag = pd.Series(0, index=solar_zenith.index) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index 85a24f8b8..7dcb879ba 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -446,7 +446,13 @@ def lorenz_test_data(): [500, 830, np.nan, 205, 30, np.nan, np.nan, 1, 0, np.nan, np.nan, np.nan, 1, 0], [500, 830, 60, 205, np.nan, 6.835, np.nan, 1, 0, - 6.835, 870.2, 992.531965, 0, 1]])) + 6.835, 870.2, 992.531965, 0, 1], + [500, 830, -45, 205, 30, 9.66615, 1335.256062, 0, 1, + 9.66615, 1209.937964, 1452.825486, 0, 1], + [500, 830, 45, 205, -30, 9.66615, 1530.300000, 0, 1, + 9.66615, 1209.937964, 1452.825486, 0, 1], + [500, 830, -45, 205, -30, 9.66615, 1530.300000, 0, 1, + 9.66615, 1209.937964, 1452.825486, 0, 1]])) dtypes = ['float64', 'float64', 'float64', 'float64', 'float64', 'float64', 'float64', @@ -458,7 +464,7 @@ def lorenz_test_data(): for (col, typ) in zip(data.columns, dtypes): data[col] = data[col].astype(typ) - return(data) + return (data) def test_check_poa_global_limits_lorenz(lorenz_test_data): @@ -513,26 +519,6 @@ def test__upper_poa_global_limit_lorenz(lorenz_test_data): check_names=False) -def test__lower_poa_global_limit_lorenz(lorenz_test_data): - """Testing lower poa global limit defined by Lorenz et al.""" - - data = lorenz_test_data - - # Expected upper limit - expected_lower_limit = data['lower_limit_poa'] - - # Setting up inputs - dni_extra = 1367 - solar_zenith = data['solar_zenith'] - - test_lower_limit = irradiance._lower_poa_global_limit_lorenz(solar_zenith, - dni_extra) - - assert_series_equal(expected_lower_limit, - test_lower_limit, - check_names=False) - - def test__upper_ghi_limit_lorenz_flag2(lorenz_test_data): """Testing upper ghi limit for flag 2 defined by Lorenz et al.""" @@ -575,7 +561,7 @@ def test__upper_ghi_limit_lorenz_flag3(lorenz_test_data): check_names=False) -def test__lower_ghi_limit_lorenz(lorenz_test_data): +def test__lower_limit_lorenz(lorenz_test_data): """Testing lower ghi limit defined by Lorenz et al.""" data = lorenz_test_data @@ -588,8 +574,8 @@ def test__lower_ghi_limit_lorenz(lorenz_test_data): solar_zenith = data['solar_zenith'] # Testing upper limit - test_upper_limit = irradiance._lower_ghi_limit_lorenz(solar_zenith, - dni_extra) + test_upper_limit = irradiance._lower_limit_lorenz(solar_zenith, + dni_extra) assert_series_equal(expected_upper_limit, test_upper_limit, From ff5f0198032d498e108cc5c2c95aeb26e1824ae4 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Fri, 16 Dec 2022 22:02:14 -0800 Subject: [PATCH 24/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Kevin Anderson --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 751ab0de4..23073a40d 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -770,7 +770,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, # Changing the poa_global_flag to 3 when the step change in poa values is # more than 1000 W/m2 poa_global_limit_int_flag = poa_global_limit_int_flag.mask( - (abs(poa_global - poa_global.shift(1)) > 1000), + poa_global.diff().abs() > 1000, 3 ) From 85240909eaa6aac1457bf1004bb80245a461e3c5 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sat, 17 Dec 2022 11:38:51 -0800 Subject: [PATCH 25/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Kevin Anderson --- pvanalytics/quality/irradiance.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 23073a40d..19d13ac46 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -719,13 +719,13 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, Parameters ---------- poa_global : Series - Global tilted irradiance in :math:`W/m^2` + Global tilted irradiance [W/m^2] solar_zenith : Series - Solar zenith angle in degrees + Solar zenith angle [degrees] aoi : Series - Direct normal irradiance in :math:`W/m^2` - dni_extra : float - normal irradiance at the top of atmosphere in :math:`W/m^2` + angle of incidence [degrees] + dni_extra : float, default 1367 + normal irradiance at the top of atmosphere [W/m^2] Returns ------- From 6275efde17ed7152959a47223c8c2f7963528955 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sat, 17 Dec 2022 11:39:22 -0800 Subject: [PATCH 26/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Kevin Anderson --- pvanalytics/quality/irradiance.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 19d13ac46..51603d263 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -851,11 +851,11 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): Parameters ---------- ghi : Series - Global tilted irradiance in :math:`W/m^2` + Global horizontal irradiance [W/m^2] solar_zenith : Series - Solar zenith angle in degrees - dni_extra : float - normal irradiance at the top of atmosphere in :math:`W/m^2` + Solar zenith angle [degrees] + dni_extra : float, default 1367 + normal irradiance at the top of atmosphere [W/m^2] Returns ------- From f94efc3d748057516b238247ba38c8f26aef6243 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sat, 17 Dec 2022 12:06:31 -0800 Subject: [PATCH 27/40] cleaning test functions and some modifications in lorenz funcs --- pvanalytics/data/lorenz_poa_test_dataset.csv | 577 ------------------- pvanalytics/quality/irradiance.py | 8 +- pvanalytics/tests/quality/test_irradiance.py | 51 +- 3 files changed, 28 insertions(+), 608 deletions(-) delete mode 100644 pvanalytics/data/lorenz_poa_test_dataset.csv diff --git a/pvanalytics/data/lorenz_poa_test_dataset.csv b/pvanalytics/data/lorenz_poa_test_dataset.csv deleted file mode 100644 index 1fbe3b1ce..000000000 --- a/pvanalytics/data/lorenz_poa_test_dataset.csv +++ /dev/null @@ -1,577 +0,0 @@ -Time stamp,ghi,poa_global,solar_zenith,azimuth,surface_tilt,aoi,poa_global_limit_bool_flag,poa_global_limit_int_flag,lower_limit,upper_limit -1/1/2022 0:00,0,0,163.276,356.877,0,0,TRUE,0,0,0 -1/1/2022 0:05,0,0,163.295,0.875773,0,0,TRUE,0,0,0 -1/1/2022 0:10,0,0,163.247,4.86776,0,0,TRUE,0,0,0 -1/1/2022 0:15,0,0,163.132,8.82456,0,0,TRUE,0,0,0 -1/1/2022 0:20,0,0,162.952,12.7191,0,0,TRUE,0,0,0 -1/1/2022 0:25,0,0,162.709,16.5273,0,0,TRUE,0,0,0 -1/1/2022 0:30,0,0,162.406,20.2283,0,0,TRUE,0,0,0 -1/1/2022 0:35,0,0,162.045,23.8058,0,0,TRUE,0,0,0 -1/1/2022 0:40,0,0,161.631,27.2477,0,0,TRUE,0,0,0 -1/1/2022 0:45,0,0,161.166,30.5457,0,0,TRUE,0,0,0 -1/1/2022 0:50,0,0,160.655,33.6958,0,0,TRUE,0,0,0 -1/1/2022 0:55,0,0,160.1,36.6968,0,0,TRUE,0,0,0 -1/1/2022 1:00,0,0,159.507,39.5502,0,0,TRUE,0,0,0 -1/1/2022 1:05,0,0,158.877,42.2597,0,0,TRUE,0,0,0 -1/1/2022 1:10,0,0,158.215,44.8305,0,0,TRUE,0,0,0 -1/1/2022 1:15,0,0,157.523,47.2687,0,0,TRUE,0,0,0 -1/1/2022 1:20,0,0,156.804,49.5813,0,0,TRUE,0,0,0 -1/1/2022 1:25,0,0,156.061,51.7756,0,0,TRUE,0,0,0 -1/1/2022 1:30,0,0,155.295,53.8588,0,0,TRUE,0,0,0 -1/1/2022 1:35,0,0,154.509,55.8383,0,0,TRUE,0,0,0 -1/1/2022 1:40,0,0,153.705,57.7212,0,0,TRUE,0,0,0 -1/1/2022 1:45,0,0,152.884,59.5143,0,0,TRUE,0,0,0 -1/1/2022 1:50,0,0,152.049,61.224,0,0,TRUE,0,0,0 -1/1/2022 1:55,0,0,151.2,62.8565,0,0,TRUE,0,0,0 -1/1/2022 2:00,0,0,150.339,64.4175,0,0,TRUE,0,0,0 -1/1/2022 2:05,0,0,149.467,65.9122,0,0,TRUE,0,0,0 -1/1/2022 2:10,0,0,148.585,67.3457,0,0,TRUE,0,0,0 -1/1/2022 2:15,0,0,147.693,68.7224,0,0,TRUE,0,0,0 -1/1/2022 2:20,0,0,146.794,70.0468,0,0,TRUE,0,0,0 -1/1/2022 2:25,0,0,145.887,71.3225,0,0,TRUE,0,0,0 -1/1/2022 2:30,0,0,144.973,72.5533,0,0,TRUE,0,0,0 -1/1/2022 2:35,0,0,144.054,73.7426,0,0,TRUE,0,0,0 -1/1/2022 2:40,0,0,143.128,74.8932,0,0,TRUE,0,0,0 -1/1/2022 2:45,0,0,142.198,76.0082,0,0,TRUE,0,0,0 -1/1/2022 2:50,0,0,141.263,77.09,0,0,TRUE,0,0,0 -1/1/2022 2:55,0,0,140.325,78.1411,0,0,TRUE,0,0,0 -1/1/2022 3:00,0,0,139.383,79.1638,0,0,TRUE,0,0,0 -1/1/2022 3:05,0,0,138.437,80.1601,0,0,TRUE,0,0,0 -1/1/2022 3:10,0,0,137.489,81.1319,0,0,TRUE,0,0,0 -1/1/2022 3:15,0,0,136.538,82.0809,0,0,TRUE,0,0,0 -1/1/2022 3:20,0,0,135.585,83.0088,0,0,TRUE,0,0,0 -1/1/2022 3:25,0,0,134.631,83.9172,0,0,TRUE,0,0,0 -1/1/2022 3:30,0,0,133.674,84.8074,0,0,TRUE,0,0,0 -1/1/2022 3:35,0,0,132.717,85.6807,0,0,TRUE,0,0,0 -1/1/2022 3:40,0,0,131.758,86.5385,0,0,TRUE,0,0,0 -1/1/2022 3:45,0,0,130.798,87.3818,0,0,TRUE,0,0,0 -1/1/2022 3:50,0,0,129.838,88.2117,0,0,TRUE,0,0,0 -1/1/2022 3:55,0,0,128.877,89.0293,0,0,TRUE,0,0,0 -1/1/2022 4:00,0,0,127.916,89.8354,0,0,TRUE,0,0,0 -1/1/2022 4:05,0,0,126.955,90.631,0,0,TRUE,0,0,0 -1/1/2022 4:10,0,0,125.994,91.4169,0,0,TRUE,0,0,0 -1/1/2022 4:15,0,0,125.034,92.1939,0,0,TRUE,0,0,0 -1/1/2022 4:20,0,0,124.074,92.9628,0,0,TRUE,0,0,0 -1/1/2022 4:25,0,0,123.115,93.7242,0,0,TRUE,0,0,0 -1/1/2022 4:30,0,0,122.156,94.4788,0,0,TRUE,0,0,0 -1/1/2022 4:35,0,0,121.198,95.2272,0,0,TRUE,0,0,0 -1/1/2022 4:40,0,0,120.242,95.9701,0,0,TRUE,0,0,0 -1/1/2022 4:45,0,0,119.287,96.7081,0,0,TRUE,0,0,0 -1/1/2022 4:50,0,0,118.333,97.4416,0,0,TRUE,0,0,0 -1/1/2022 4:55,0,0,117.381,98.1713,0,0,TRUE,0,0,0 -1/1/2022 5:00,0,0,116.431,98.8975,0,0,TRUE,0,0,0 -1/1/2022 5:05,0,0,115.482,99.6209,0,0,TRUE,0,0,0 -1/1/2022 5:10,0,0,114.536,100.342,0,0,TRUE,0,0,0 -1/1/2022 5:15,0,0,113.591,101.061,0,0,TRUE,0,0,0 -1/1/2022 5:20,0,0,112.65,101.778,0,0,TRUE,0,0,0 -1/1/2022 5:25,0,0,111.71,102.495,0,0,TRUE,0,0,0 -1/1/2022 5:30,0,0,110.773,103.21,0,0,TRUE,0,0,0 -1/1/2022 5:35,0,0,109.839,103.925,0,0,TRUE,0,0,0 -1/1/2022 5:40,0,0,108.908,104.641,0,0,TRUE,0,0,0 -1/1/2022 5:45,0,0,107.979,105.356,0,0,TRUE,0,0,0 -1/1/2022 5:50,0,0,107.054,106.073,0,0,TRUE,0,0,0 -1/1/2022 5:55,0,0,106.132,106.791,0,0,TRUE,0,0,0 -1/1/2022 6:00,0,0,105.214,107.51,0,0,TRUE,0,0,0 -1/1/2022 6:05,0,0,104.299,108.231,0,0,TRUE,0,0,0 -1/1/2022 6:10,0,0,103.388,108.954,0,0,TRUE,0,0,0 -1/1/2022 6:15,0,0,102.482,109.68,0,0,TRUE,0,0,0 -1/1/2022 6:20,0,0,101.579,110.408,0,0,TRUE,0,0,0 -1/1/2022 6:25,0,0,100.68,111.14,0,0,TRUE,0,0,0 -1/1/2022 6:30,0,0,99.786,111.875,0,0,TRUE,0,0,0 -1/1/2022 6:35,0,0,98.8964,112.614,0,0,TRUE,0,0,0 -1/1/2022 6:40,0,0,98.0117,113.357,0,0,TRUE,0,0,0 -1/1/2022 6:45,0,0,97.1319,114.104,0,0,TRUE,0,0,0 -1/1/2022 6:50,0,0,96.2572,114.856,0,0,TRUE,0,0,0 -1/1/2022 6:55,0,0,95.3878,115.613,0,0,TRUE,0,0,0 -1/1/2022 7:00,0,0,94.524,116.375,0,0,TRUE,0,0,0 -1/1/2022 7:05,0,0,93.6658,117.143,0,0,TRUE,0,0,0 -1/1/2022 7:10,0,0,92.8136,117.916,0,0,TRUE,0,0,0 -1/1/2022 7:15,0,0,91.9674,118.696,0,0,TRUE,0,0,0 -1/1/2022 7:20,0,0,91.1275,119.482,0,0,TRUE,0,0,0 -1/1/2022 7:25,0,0,89.8597,120.275,25,77.568,TRUE,0,0,494.8127202 -1/1/2022 7:30,0,0,89.1277,121.074,25,76.5906,TRUE,0,0,513.0044936 -1/1/2022 7:35,9,8.578377274,88.3761,121.881,25,75.5932,TRUE,0,0,531.76167 -1/1/2022 7:40,14,13.34416513,87.6119,122.696,25,74.5822,TRUE,0,0,550.9493275 -1/1/2022 7:45,18,17.75723823,86.8419,123.518,25,73.5639,TRUE,0,0,570.4300703 -1/1/2022 7:50,25.1649,31.65355269,86.0707,124.348,25,72.5427,TRUE,0,0,590.1000224 -1/1/2022 7:55,25,25.10147149,85.3014,125.187,25,71.5212,TRUE,0,0,609.8889498 -1/1/2022 8:00,31,32.01611145,84.5359,126.034,25,70.5014,TRUE,0,0,629.7382815 -1/1/2022 8:05,31,30.86473874,83.7757,126.89,25,69.4847,TRUE,0,0,649.6016265 -1/1/2022 8:10,41,42.70760951,83.0219,127.755,25,68.472,TRUE,0,0,669.4431616 -1/1/2022 8:15,54.9143,72.87008652,82.2752,128.629,25,67.4642,TRUE,0,0,689.2279921 -1/1/2022 8:20,79.1681,142.7961714,81.5363,129.513,25,66.462,TRUE,0,0,708.9261131 -1/1/2022 8:25,142.129,340.2019892,80.8059,130.407,25,65.4658,TRUE,0,0,728.5144121 -1/1/2022 8:30,156.227,362.8414742,80.0844,131.311,25,64.4763,TRUE,0,0,747.9648715 -1/1/2022 8:35,60,61.44389945,79.3722,132.225,25,63.4939,TRUE,0,0,767.2563574 -1/1/2022 8:40,104.898,160.6907828,78.6698,133.149,25,62.5193,TRUE,0,0,786.3628303 -1/1/2022 8:45,138.613,256.2299884,77.9776,134.084,25,61.5527,TRUE,0,0,805.2690331 -1/1/2022 8:50,140.278,238.7972614,77.2959,135.03,25,60.5948,TRUE,0,0,823.9508867 -1/1/2022 8:55,165.521,306.3328565,76.6252,135.986,25,59.6461,TRUE,0,0,842.3892185 -1/1/2022 9:00,172.938,313.0325635,75.9658,136.954,25,58.7069,TRUE,0,0,860.5697012 -1/1/2022 9:05,199.473,377.750528,75.318,137.934,25,57.778,TRUE,0,0,878.4693041 -1/1/2022 9:10,188.045,327.783909,74.6824,138.924,25,56.8598,TRUE,0,3.611194718,896.0737378 -1/1/2022 9:15,274.055,542.4279583,74.0591,139.927,25,55.9529,TRUE,0,3.754406417,913.3658509 -1/1/2022 9:20,285.151,558.6245657,73.4485,140.94,25,55.0579,TRUE,0,3.894269407,930.3295144 -1/1/2022 9:25,229.749,403.7468492,72.8511,141.966,25,54.1755,TRUE,0,4.030680903,946.9477453 -1/1/2022 9:30,309.241,593.6303563,72.2673,143.004,25,53.3062,TRUE,0,4.16356372,963.2083615 -1/1/2022 9:35,319.783,610.0858369,71.6972,144.053,25,52.4508,TRUE,0,4.292911124,979.0945933 -1/1/2022 9:40,330.092,624.8654541,71.1414,145.115,25,51.6099,TRUE,0,4.418605011,994.5944607 -1/1/2022 9:45,290.263,525.1141086,70.6002,146.188,25,50.7843,TRUE,0,4.540597665,1009.693337 -1/1/2022 9:50,248.897,391.3345596,70.0739,147.273,25,49.9748,TRUE,0,4.658843244,1024.37769 -1/1/2022 9:55,257.562,403.9750664,69.5629,148.37,25,49.1823,TRUE,0,4.773275295,1038.63328 -1/1/2022 10:00,314.22,554.9322161,69.0676,149.479,25,48.4074,TRUE,0,4.883829261,1052.452311 -1/1/2022 10:05,275.345,430.1144492,68.5883,150.6,25,47.6512,TRUE,0,4.990464545,1065.819091 -1/1/2022 10:10,183.217,223.8326862,68.1254,151.732,25,46.9146,TRUE,0,5.093119709,1078.722597 -1/1/2022 10:15,301.55,488.4188296,67.6793,152.876,25,46.1984,TRUE,0,5.191734733,1091.154546 -1/1/2022 10:20,199.55,246.8655903,67.2503,154.031,25,45.5037,TRUE,0,5.286272838,1103.102421 -1/1/2022 10:25,107,106.3686218,66.8387,155.197,25,44.8315,TRUE,0,5.376698026,1114.556432 -1/1/2022 10:30,101,99.67334287,66.4449,156.374,25,44.1828,TRUE,0,5.462953028,1125.507694 -1/1/2022 10:35,111,110.4424688,66.0692,157.561,25,43.5587,TRUE,0,5.545003053,1135.946484 -1/1/2022 10:40,158.993,169.4522788,65.712,158.758,25,42.9602,TRUE,0,5.622791776,1145.865535 -1/1/2022 10:45,112,111.2575789,65.3656,159.965,25,42.3809,TRUE,0,5.698019847,1155.379212 -1/1/2022 10:50,117,116.6125077,65.0463,161.182,25,41.8371,TRUE,0,5.767178174,1164.230335 -1/1/2022 10:55,160.973,170.1573677,64.7464,162.408,25,41.3223,TRUE,0,5.83197151,1172.537184 -1/1/2022 11:00,129,129.6317869,64.466,163.642,25,40.8376,TRUE,0,5.892407376,1180.293044 -1/1/2022 11:05,224.766,274.08645,64.2055,164.885,25,40.384,TRUE,0,5.948427679,1187.493034 -1/1/2022 11:10,321.48,471.2991348,63.9652,166.135,25,39.9626,TRUE,0,5.999994987,1194.130776 -1/1/2022 11:15,239.813,296.6932352,63.7453,167.392,25,39.5744,TRUE,0,6.047092089,1200.20143 -1/1/2022 11:20,388.905,629.7295456,63.5459,168.656,25,39.2205,TRUE,0,6.089721615,1205.698408 -1/1/2022 11:25,168.724,178.3684175,63.3673,169.926,25,38.9018,TRUE,0,6.127841727,1210.617893 -1/1/2022 11:30,298.244,407.3131685,63.2097,171.201,25,38.6191,TRUE,0,6.161430191,1214.957076 -1/1/2022 11:35,137.906,139.4696505,63.0733,172.481,25,38.3733,TRUE,0,6.190462786,1218.710933 -1/1/2022 11:40,178.638,190.6689829,62.9581,173.765,25,38.165,TRUE,0,6.214955663,1221.878204 -1/1/2022 11:45,136.456,137.4613393,62.8644,175.052,25,37.995,TRUE,0,6.234858862,1224.453617 -1/1/2022 11:50,80,76.99264255,62.7921,176.342,25,37.8636,TRUE,0,6.250205005,1226.438387 -1/1/2022 11:55,122,121.2207916,62.7414,177.635,25,37.7714,TRUE,0,6.260960474,1227.827981 -1/1/2022 12:00,160.126,166.3597657,62.7123,178.928,25,37.7185,TRUE,0,6.267131517,1228.624119 -1/1/2022 12:05,117,115.7909258,62.7049,180.222,25,37.7052,TRUE,0,6.268700528,1228.824151 -1/1/2022 12:10,138.917,140.4285033,62.7192,181.516,25,37.7315,TRUE,0,6.265668426,1228.428548 -1/1/2022 12:15,374.936,581.8482185,62.7551,182.809,25,37.7973,TRUE,0,6.258054647,1227.437884 -1/1/2022 12:20,136.457,137.4385176,62.8127,184.1,25,37.9025,TRUE,0,6.245833535,1225.851345 -1/1/2022 12:25,98,95.58791471,62.8917,185.39,25,38.0466,TRUE,0,6.229061676,1223.672808 -1/1/2022 12:30,130,130.0728932,62.9923,186.676,25,38.2293,TRUE,0,6.207686958,1220.901865 -1/1/2022 12:35,116,114.8337761,63.1142,187.959,25,38.45,TRUE,0,6.18176094,1217.54147 -1/1/2022 12:40,361.793,547.0604265,63.2574,189.237,25,38.708,TRUE,0,6.151269047,1213.595048 -1/1/2022 12:45,137.895,139.6263369,63.4216,190.511,25,39.0027,TRUE,0,6.1162583,1209.06356 -1/1/2022 12:50,132,132.5556918,63.6068,191.779,25,39.3331,TRUE,0,6.076709664,1203.953321 -1/1/2022 12:55,116,115.0585871,63.8127,193.041,25,39.6984,TRUE,0,6.032666123,1198.266954 -1/1/2022 13:00,229.145,280.6189114,64.0392,194.296,25,40.0976,TRUE,0,5.984126122,1192.009706 -1/1/2022 13:05,122,121.7974658,64.2859,195.544,25,40.5297,TRUE,0,5.931150793,1185.186526 -1/1/2022 13:10,138.289,140.9656652,64.5527,196.784,25,40.9936,TRUE,0,5.873735541,1177.803803 -1/1/2022 13:15,321.979,482.4477144,64.8393,198.016,25,41.4884,TRUE,0,5.811917482,1169.864735 -1/1/2022 13:20,369.987,618.942026,65.1454,199.239,25,42.0129,TRUE,0,5.745732819,1161.377453 -1/1/2022 13:25,413.807,725.3729818,65.4708,200.453,25,42.5659,TRUE,0,5.675195342,1152.350435 -1/1/2022 13:30,441.017,783.2720213,65.8151,201.657,25,43.1465,TRUE,0,5.600361623,1142.787675 -1/1/2022 13:35,434.488,773.81293,66.1781,202.851,25,43.7534,TRUE,0,5.521244503,1132.700265 -1/1/2022 13:40,427.123,763.4409701,66.5594,204.035,25,44.3856,TRUE,0,5.437900234,1122.095004 -1/1/2022 13:45,418.519,751.4101778,66.9587,205.209,25,45.042,TRUE,0,5.350363446,1110.981078 -1/1/2022 13:50,410.682,740.4285033,67.3757,206.371,25,45.7216,TRUE,0,5.25866904,1099.366788 -1/1/2022 13:55,401.619,727.81184,67.81,207.523,25,46.4234,TRUE,0,5.162874475,1087.261292 -1/1/2022 14:00,392.967,715.5664555,68.2613,208.663,25,47.1462,TRUE,0,5.063015976,1074.678168 -1/1/2022 14:05,383.117,701.7167382,68.7292,209.792,25,47.8893,TRUE,0,4.959152838,1061.623289 -1/1/2022 14:10,326.23,2000,69.2133,210.909,25,48.6515,FALSE,3,4.851345656,1048.112281 -1/1/2022 14:15,340.548,2000,69.7134,212.014,25,49.4321,FALSE,3,4.739611741,1034.153007 -1/1/2022 14:20,277.837,,70.229,213.108,25,50.2302,FALSE,1,4.624036815,1019.757897 -1/1/2022 14:25,341.918,,70.7598,214.189,25,51.0448,FALSE,1,4.504663635,1004.942303 -1/1/2022 14:30,331.587,,71.3054,215.259,25,51.8753,FALSE,1,4.381559207,989.7154013 -1/1/2022 14:35,320.523,,71.8654,216.317,25,52.7208,FALSE,1,4.254792614,974.0928982 -1/1/2022 14:40,308.697,595.4050003,72.4395,217.363,25,53.5806,TRUE,0,4.124412397,958.0879219 -1/1/2022 14:45,299.135,583.0403978,73.0273,218.397,25,54.454,TRUE,0,3.990491944,941.7146551 -1/1/2022 14:50,286.813,565.1747394,73.6285,219.419,25,55.3404,TRUE,0,3.853084176,924.9864509 -1/1/2022 14:55,274.188,546.7061789,74.2426,220.43,25,56.239,TRUE,0,3.712290172,907.9214914 -1/1/2022 15:00,262.563,529.6239526,74.8693,221.428,25,57.1492,TRUE,0,3.568167828,890.5352392 -1/1/2022 15:05,249.7,510.6546767,75.5083,222.416,25,58.0706,TRUE,0,0,872.8403236 -1/1/2022 15:10,236.644,491.235779,76.1591,223.392,25,59.0024,TRUE,0,0,854.8580539 -1/1/2022 15:15,222.441,470.0354248,76.8215,224.356,25,59.9442,TRUE,0,0,836.6030547 -1/1/2022 15:20,209.138,449.894407,77.4949,225.31,25,60.8954,TRUE,0,0,818.094794 -1/1/2022 15:25,195.786,429.4911097,78.1791,226.252,25,61.8555,TRUE,0,0,799.351787 -1/1/2022 15:30,182.433,408.8970638,78.8736,227.184,25,62.824,TRUE,0,0,780.3935203 -1/1/2022 15:35,168.949,387.7307719,79.578,228.105,25,63.8003,TRUE,0,0,761.2424142 -1/1/2022 15:40,154.593,365.1304585,80.2919,229.016,25,64.784,TRUE,0,0,741.9179359 -1/1/2022 15:45,141.418,344.0050412,81.0148,229.917,25,65.7745,TRUE,0,0,722.4444439 -1/1/2022 15:50,128.628,324.7782546,81.7463,230.808,25,66.7713,TRUE,0,0,702.8453016 -1/1/2022 15:55,115.488,302.7372437,82.4857,231.689,25,67.7737,TRUE,0,0,683.1487706 -1/1/2022 16:00,101.656,279.269705,83.2323,232.561,25,68.7812,TRUE,0,0,663.380146 -1/1/2022 16:05,88.1263,255.6260644,83.9854,233.423,25,69.7928,TRUE,0,0,643.5754801 -1/1/2022 16:10,74.9488,231.689829,84.7439,234.277,25,70.8076,TRUE,0,0,623.7697486 -1/1/2022 16:15,62.3854,206.0586552,85.5065,235.121,25,71.8243,TRUE,0,0,604.0065411 -1/1/2022 16:20,50.5179,179.6965052,86.2711,235.958,25,72.841,TRUE,0,0,584.3416845 -1/1/2022 16:25,39.4322,153.3193678,87.035,236.786,25,73.8551,TRUE,0,0,564.8446933 -1/1/2022 16:30,29.4753,118.320049,87.7938,237.606,25,74.8626,TRUE,0,0,545.6113676 -1/1/2022 16:35,10,9.531541658,88.5412,238.418,25,75.8576,TRUE,0,0,526.7717083 -1/1/2022 16:40,0,0,89.2679,239.223,25,76.8317,TRUE,0,0,508.4987044 -1/1/2022 16:45,0,0,89.9669,240.021,25,77.7782,TRUE,0,0,490.9272231 -1/1/2022 16:50,0,0,91.3925,240.812,0,0,TRUE,0,0,0 -1/1/2022 16:55,0,0,92.2343,241.597,0,0,TRUE,0,0,0 -1/1/2022 17:00,0,0,93.0824,242.375,0,0,TRUE,0,0,0 -1/1/2022 17:05,0,0,93.9365,243.147,0,0,TRUE,0,0,0 -1/1/2022 17:10,0,0,94.7965,243.914,0,0,TRUE,0,0,0 -1/1/2022 17:15,0,0,95.6621,244.675,0,0,TRUE,0,0,0 -1/1/2022 17:20,0,0,96.5331,245.43,0,0,TRUE,0,0,0 -1/1/2022 17:25,0,0,97.4094,246.181,0,0,TRUE,0,0,0 -1/1/2022 17:30,0,0,98.2907,246.928,0,0,TRUE,0,0,0 -1/1/2022 17:35,0,0,99.177,247.67,0,0,TRUE,0,0,0 -1/1/2022 17:40,0,0,100.068,248.408,0,0,TRUE,0,0,0 -1/1/2022 17:45,0,0,100.963,249.143,0,0,TRUE,0,0,0 -1/1/2022 17:50,0,0,101.863,249.874,0,0,TRUE,0,0,0 -1/1/2022 17:55,0,0,102.767,250.602,0,0,TRUE,0,0,0 -1/1/2022 18:00,0,0,103.676,251.328,0,0,TRUE,0,0,0 -1/1/2022 18:05,0,0,104.588,252.051,0,0,TRUE,0,0,0 -1/1/2022 18:10,0,,105.503,252.772,0,0,FALSE,1,0,0 -1/1/2022 18:15,0,,106.423,253.491,0,0,FALSE,1,0,0 -1/1/2022 18:20,0,,107.345,254.209,0,0,FALSE,1,0,0 -1/1/2022 18:25,0,,108.271,254.926,0,0,FALSE,1,0,0 -1/1/2022 18:30,0,,109.201,255.643,0,0,FALSE,1,0,0 -1/1/2022 18:35,0,,110.133,256.359,0,0,FALSE,1,0,0 -1/1/2022 18:40,0,,111.068,257.075,0,0,FALSE,1,0,0 -1/1/2022 18:45,0,,112.005,257.792,0,0,FALSE,1,0,0 -1/1/2022 18:50,0,,112.946,258.509,0,0,FALSE,1,0,0 -1/1/2022 18:55,0,,113.888,259.228,0,0,FALSE,1,0,0 -1/1/2022 19:00,0,1000,114.833,259.949,0,0,FALSE,3,0,0 -1/1/2022 19:05,0,1000,115.78,260.671,0,0,FALSE,3,0,0 -1/1/2022 19:10,0,1000,116.729,261.397,0,0,FALSE,3,0,0 -1/1/2022 19:15,0,1000,117.68,262.125,0,0,FALSE,3,0,0 -1/1/2022 19:20,0,1000,118.632,262.857,0,0,FALSE,3,0,0 -1/1/2022 19:25,0,1000,119.586,263.593,0,0,FALSE,3,0,0 -1/1/2022 19:30,0,1000,120.542,264.334,0,0,FALSE,3,0,0 -1/1/2022 19:35,0,1000,121.498,265.079,0,0,FALSE,3,0,0 -1/1/2022 19:40,0,1000,122.456,265.831,0,0,FALSE,3,0,0 -1/1/2022 19:45,0,1000,123.414,266.589,0,0,FALSE,3,0,0 -1/1/2022 19:50,0,1000,124.374,267.354,0,0,FALSE,3,0,0 -1/1/2022 19:55,0,1000,125.334,268.127,0,0,FALSE,3,0,0 -1/1/2022 20:00,0,1000,126.294,268.908,0,0,FALSE,3,0,0 -1/1/2022 20:05,0,1000,127.255,269.699,0,0,FALSE,3,0,0 -1/1/2022 20:10,0,1000,128.215,270.499,0,0,FALSE,3,0,0 -1/1/2022 20:15,0,1000,129.176,271.311,0,0,FALSE,3,0,0 -1/1/2022 20:20,0,1000,130.136,272.134,0,0,FALSE,3,0,0 -1/1/2022 20:25,0,1000,131.096,272.97,0,0,FALSE,3,0,0 -1/1/2022 20:30,0,0,132.055,273.819,0,0,TRUE,0,0,0 -1/1/2022 20:35,0,0,133.013,274.684,0,0,TRUE,0,0,0 -1/1/2022 20:40,0,0,133.97,275.565,0,0,TRUE,0,0,0 -1/1/2022 20:45,0,0,134.925,276.463,0,0,TRUE,0,0,0 -1/1/2022 20:50,0,0,135.879,277.379,0,0,TRUE,0,0,0 -1/1/2022 20:55,0,0,136.831,278.316,0,0,TRUE,0,0,0 -1/1/2022 21:00,0,0,137.78,279.274,0,0,TRUE,0,0,0 -1/1/2022 21:05,0,0,138.727,280.256,0,0,TRUE,0,0,0 -1/1/2022 21:10,0,0,139.67,281.263,0,0,TRUE,0,0,0 -1/1/2022 21:15,0,0,140.611,282.298,0,0,TRUE,0,0,0 -1/1/2022 21:20,0,0,141.548,283.361,0,0,TRUE,0,0,0 -1/1/2022 21:25,0,0,142.48,284.456,0,0,TRUE,0,0,0 -1/1/2022 21:30,0,0,143.408,285.585,0,0,TRUE,0,0,0 -1/1/2022 21:35,0,0,144.331,286.751,0,0,TRUE,0,0,0 -1/1/2022 21:40,0,0,145.247,287.956,0,0,TRUE,0,0,0 -1/1/2022 21:45,0,0,146.158,289.205,0,0,TRUE,0,0,0 -1/1/2022 21:50,0,0,147.062,290.499,0,0,TRUE,0,0,0 -1/1/2022 21:55,0,0,147.957,291.843,0,0,TRUE,0,0,0 -1/1/2022 22:00,0,0,,293.241,0,,FALSE,1,, -1/1/2022 22:05,0,0,,294.698,0,,FALSE,1,, -1/1/2022 22:10,0,0,,296.217,0,,FALSE,1,, -1/1/2022 22:15,0,0,,297.804,0,,FALSE,1,, -1/1/2022 22:20,0,0,,299.465,0,,FALSE,1,, -1/1/2022 22:25,0,0,,301.204,0,,FALSE,1,, -1/1/2022 22:30,0,0,,303.029,0,,FALSE,1,, -1/1/2022 22:35,0,0,,304.946,0,,FALSE,1,, -1/1/2022 22:40,0,0,,306.962,0,,FALSE,1,, -1/1/2022 22:45,0,0,,309.083,0,,FALSE,1,, -1/1/2022 22:50,0,0,,311.318,0,,FALSE,1,, -1/1/2022 22:55,0,0,,313.673,0,,FALSE,1,, -1/1/2022 23:00,0,0,,316.155,0,,FALSE,1,, -1/1/2022 23:05,0,0,,318.771,0,,FALSE,1,, -1/1/2022 23:10,0,0,,321.527,0,,FALSE,1,, -1/1/2022 23:15,0,0,,324.428,0,,FALSE,1,, -1/1/2022 23:20,0,0,,327.475,0,,FALSE,1,, -1/1/2022 23:25,0,0,,330.67,0,,FALSE,1,, -1/1/2022 23:30,0,0,,334.01,0,,FALSE,1,, -1/1/2022 23:35,0,0,,337.49,0,0,FALSE,1,, -1/1/2022 23:40,0,0,,341.101,0,0,FALSE,1,, -1/1/2022 23:45,0,0,,344.828,0,0,FALSE,1,, -1/1/2022 23:50,0,0,,348.655,0,0,FALSE,1,, -1/1/2022 23:55,0,0,,352.559,0,0,FALSE,1,, -1/2/2022 0:00,0,0,163.189,356.515,0,0,TRUE,0,0,0 -1/2/2022 0:05,0,0,163.213,0.495524,0,0,TRUE,0,0,0 -1/2/2022 0:10,0,0,163.171,4.47276,0,0,TRUE,0,0,0 -1/2/2022 0:15,0,0,163.063,8.41791,0,0,TRUE,0,0,0 -1/2/2022 0:20,0,0,162.89,12.3041,0,0,TRUE,0,0,0 -1/2/2022 0:25,0,0,162.654,16.107,0,0,TRUE,0,0,0 -1/2/2022 0:30,0,0,162.357,19.8059,0,0,TRUE,0,0,0 -1/2/2022 0:35,0,0,162.003,23.3841,0,0,TRUE,0,0,0 -1/2/2022 0:40,0,0,161.595,26.8291,0,0,TRUE,0,0,0 -1/2/2022 0:45,0,0,161.137,30.1324,0,0,TRUE,0,0,0 -1/2/2022 0:50,0,0,160.631,33.2895,0,0,TRUE,0,0,0 -1/2/2022 0:55,0,0,160.083,36.2987,0,0,TRUE,0,0,0 -1/2/2022 1:00,0,0,159.494,39.1614,0,0,TRUE,0,0,0 -1/2/2022 1:05,0,0,158.87,41.8809,0,0,TRUE,0,0,0 -1/2/2022 1:10,0,0,158.212,44.4621,0,0,TRUE,0,0,0 -1/2/2022 1:15,0,0,157.524,46.911,0,0,TRUE,0,0,0 -1/2/2022 1:20,0,0,156.809,49.2342,0,0,TRUE,0,0,0 -1/2/2022 1:25,0,0,156.069,51.439,0,0,TRUE,0,0,0 -1/2/2022 1:30,0,0,155.306,53.5326,0,0,TRUE,0,0,0 -1/2/2022 1:35,0,0,154.524,55.5222,0,0,TRUE,0,0,0 -1/2/2022 1:40,0,0,153.723,57.4148,0,0,TRUE,0,0,0 -1/2/2022 1:45,0,0,152.905,59.2173,0,0,TRUE,0,0,0 -1/2/2022 1:50,0,0,152.072,60.936,0,0,TRUE,0,0,0 -1/2/2022 1:55,0,0,151.225,62.577,0,0,TRUE,0,0,0 -1/2/2022 2:00,0,0,150.366,64.1461,0,0,TRUE,0,0,0 -1/2/2022 2:05,0,0,149.496,65.6486,0,0,TRUE,0,0,0 -1/2/2022 2:10,0,0,148.615,67.0895,0,0,TRUE,0,0,0 -1/2/2022 2:15,0,0,147.725,68.4733,0,0,TRUE,0,0,0 -1/2/2022 2:20,0,0,146.827,69.8042,0,0,TRUE,0,0,0 -1/2/2022 2:25,0,0,145.922,71.0863,0,0,TRUE,0,0,0 -1/2/2022 2:30,0,0,145.009,72.323,0,0,TRUE,0,0,0 -1/2/2022 2:35,0,0,144.091,73.5178,0,0,TRUE,0,0,0 -1/2/2022 2:40,0,0,143.166,74.6738,0,0,TRUE,0,0,0 -1/2/2022 2:45,0,0,142.237,75.7938,0,0,TRUE,0,0,0 -1/2/2022 2:50,0,0,141.303,76.8804,0,0,TRUE,0,0,0 -1/2/2022 2:55,0,0,140.365,77.936,0,0,TRUE,0,0,0 -1/2/2022 3:00,0,0,139.424,78.963,0,0,TRUE,0,0,0 -1/2/2022 3:05,0,0,138.479,79.9633,0,0,TRUE,0,0,0 -1/2/2022 3:10,0,0,137.531,80.9388,0,0,TRUE,0,0,0 -1/2/2022 3:15,0,0,136.581,81.8915,0,0,TRUE,0,0,0 -1/2/2022 3:20,0,0,135.629,82.8228,0,0,TRUE,0,0,0 -1/2/2022 3:25,0,0,134.674,83.7344,0,0,TRUE,0,0,0 -1/2/2022 3:30,0,0,133.718,84.6277,0,0,TRUE,0,0,0 -1/2/2022 3:35,0,0,132.761,85.5039,0,0,TRUE,0,0,0 -1/2/2022 3:40,0,0,131.802,86.3644,0,0,TRUE,0,0,0 -1/2/2022 3:45,0,0,130.843,87.2103,0,0,TRUE,0,0,0 -1/2/2022 3:50,0,0,129.882,88.0427,0,0,TRUE,0,0,0 -1/2/2022 3:55,0,0,128.922,88.8626,0,0,TRUE,0,0,0 -1/2/2022 4:00,0,0,127.961,89.6709,0,0,TRUE,0,0,0 -1/2/2022 4:05,0,0,127,90.4686,0,0,TRUE,0,0,0 -1/2/2022 4:10,0,0,126.039,91.2564,0,0,TRUE,0,0,0 -1/2/2022 4:15,0,0,125.078,92.0353,0,0,TRUE,0,0,0 -1/2/2022 4:20,0,0,124.118,92.8059,0,0,TRUE,0,0,0 -1/2/2022 4:25,0,0,123.159,93.5689,0,0,TRUE,0,0,0 -1/2/2022 4:30,0,0,122.2,94.3251,0,0,TRUE,0,0,0 -1/2/2022 4:35,0,0,121.242,95.075,0,0,TRUE,0,0,0 -1/2/2022 4:40,0,0,120.285,95.8193,0,0,TRUE,0,0,0 -1/2/2022 4:45,0,0,119.33,96.5585,0,0,TRUE,0,0,0 -1/2/2022 4:50,0,0,118.376,97.2933,0,0,TRUE,0,0,0 -1/2/2022 4:55,0,0,117.423,98.0241,0,0,TRUE,0,0,0 -1/2/2022 5:00,0,0,116.473,98.7515,0,0,TRUE,0,0,0 -1/2/2022 5:05,0,0,115.524,99.4759,0,0,TRUE,0,0,0 -1/2/2022 5:10,0,0,114.577,100.198,0,0,TRUE,0,0,0 -1/2/2022 5:15,0,0,113.632,100.918,0,0,TRUE,0,0,0 -1/2/2022 5:20,0,0,112.69,101.636,0,0,TRUE,0,0,0 -1/2/2022 5:25,0,0,111.75,102.353,0,0,TRUE,0,0,0 -1/2/2022 5:30,0,0,110.812,103.069,0,0,TRUE,0,0,0 -1/2/2022 5:35,0,0,109.877,103.785,0,0,TRUE,0,0,0 -1/2/2022 5:40,0,0,108.945,104.501,0,0,TRUE,0,0,0 -1/2/2022 5:45,0,0,108.017,105.217,0,0,TRUE,0,0,0 -1/2/2022 5:50,0,0,107.091,105.934,0,0,TRUE,0,0,0 -1/2/2022 5:55,0,0,106.168,106.652,0,0,TRUE,0,0,0 -1/2/2022 6:00,0,0,105.249,107.372,0,0,TRUE,0,0,0 -1/2/2022 6:05,0,0,104.334,108.093,0,0,TRUE,0,0,0 -1/2/2022 6:10,0,0,103.422,108.817,0,0,TRUE,0,0,0 -1/2/2022 6:15,0,0,102.515,109.543,0,0,TRUE,0,0,0 -1/2/2022 6:20,0,0,101.611,110.272,0,0,TRUE,0,0,0 -1/2/2022 6:25,0,0,100.712,111.003,0,0,TRUE,0,0,0 -1/2/2022 6:30,0,0,99.8166,111.739,0,0,TRUE,0,0,0 -1/2/2022 6:35,0,0,98.9261,112.478,0,0,TRUE,0,0,0 -1/2/2022 6:40,0,0,98.0405,113.221,0,0,TRUE,0,0,0 -1/2/2022 6:45,0,0,97.1597,113.968,0,0,TRUE,0,0,0 -1/2/2022 6:50,0,0,96.2841,114.72,0,0,TRUE,0,0,0 -1/2/2022 6:55,0,0,95.4137,115.477,0,0,TRUE,0,0,0 -1/2/2022 7:00,0,0,94.5489,116.239,0,0,TRUE,0,0,0 -1/2/2022 7:05,0,0,93.6897,117.007,0,0,TRUE,0,0,0 -1/2/2022 7:10,0,0,92.8363,117.78,0,0,TRUE,0,0,0 -1/2/2022 7:15,0,0,91.9891,118.56,0,0,TRUE,0,0,0 -1/2/2022 7:20,0,0,91.1481,119.346,0,0,TRUE,0,0,0 -1/2/2022 7:25,0,0,89.8693,120.138,25,77.6279,TRUE,0,0,493.704473 -1/2/2022 7:30,0,0,89.1387,120.938,25,76.6517,TRUE,0,0,511.8615359 -1/2/2022 7:35,10,9.531541658,88.3873,121.745,25,75.6543,TRUE,0,0,530.6074592 -1/2/2022 7:40,15,14.29729546,87.6231,122.559,25,74.6432,TRUE,0,0,549.7870569 -1/2/2022 7:45,20.2078,28.59966619,86.8528,123.381,25,73.6244,TRUE,0,0,569.2687347 -1/2/2022 7:50,26.4605,40.1233054,86.081,124.211,25,72.6024,TRUE,0,0,588.9467944 -1/2/2022 7:55,33.905,55.67443286,85.3108,125.049,25,71.58,TRUE,0,0,608.7471306 -1/2/2022 8:00,42.9372,80.19449554,84.5443,125.896,25,70.5591,TRUE,0,0,628.6130484 -1/2/2022 8:05,52.1037,96.96573336,83.783,126.752,25,69.5411,TRUE,0,0,648.4980928 -1/2/2022 8:10,53.9825,82.88745827,83.0279,127.616,25,68.5272,TRUE,0,0,668.3604769 -1/2/2022 8:15,58.3286,85.00374685,82.28,128.491,25,67.518,TRUE,0,0,688.1710778 -1/2/2022 8:20,61.6205,78.92874174,81.5398,129.374,25,66.5142,TRUE,0,0,707.8997995 -1/2/2022 8:25,70.9041,99.41923837,80.808,130.267,25,65.5165,TRUE,0,0,727.5175279 -1/2/2022 8:30,75.4703,96.65917297,80.085,131.171,25,64.5254,TRUE,0,0,747.0000731 -1/2/2022 8:35,173.022,391.8250562,79.3713,132.084,25,63.5414,TRUE,0,0,766.3242351 -1/2/2022 8:40,100.384,146.5586893,78.6674,133.008,25,62.5649,TRUE,0,0,785.4697557 -1/2/2022 8:45,200.107,432.6452756,77.9736,133.943,25,61.5966,TRUE,0,0,804.4114756 -1/2/2022 8:50,109.341,151.689829,77.2903,134.888,25,60.6368,TRUE,0,0,823.1330476 -1/2/2022 8:55,149.647,247.5154983,76.6178,135.845,25,59.6861,TRUE,0,0,841.6132323 -1/2/2022 9:00,240.315,491.777369,75.9567,136.812,25,58.745,TRUE,0,0,859.8337299 -1/2/2022 9:05,252.605,509.7179644,75.3073,137.791,25,57.814,TRUE,0,0,877.7772223 -1/2/2022 9:10,265.426,528.0230261,74.6698,138.782,25,56.8936,TRUE,0,3.614094029,895.4273721 -1/2/2022 9:15,278.251,546.3451189,74.0447,139.784,25,55.9845,TRUE,0,3.757709828,912.7650184 -1/2/2022 9:20,290.07,563.304721,73.4324,140.797,25,55.0872,TRUE,0,3.89795133,929.7758491 -1/2/2022 9:25,302.279,580.4346345,72.8331,141.823,25,54.2024,TRUE,0,4.034784333,946.4427764 -1/2/2022 9:30,313.419,596.1271204,72.2473,142.86,25,53.3306,TRUE,0,4.168108481,962.7535153 -1/2/2022 9:35,283.081,519.5074596,71.6753,143.91,25,52.4726,TRUE,0,4.297871521,978.6911942 -1/2/2022 9:40,336.444,628.5714286,71.1175,144.971,25,51.6292,TRUE,0,4.424000744,994.240062 -1/2/2022 9:45,346.976,643.3033585,70.5743,146.044,25,50.8009,TRUE,0,4.546425749,1009.390949 -1/2/2022 9:50,358.037,658.583691,70.0459,147.129,25,49.9886,TRUE,0,4.665123173,1024.128384 -1/2/2022 9:55,367.941,672.324409,69.5329,148.227,25,49.1932,TRUE,0,4.779981708,1038.43804 -1/2/2022 10:00,378.679,687.2028067,69.0355,149.335,25,48.4154,TRUE,0,4.890981671,1052.310266 -1/2/2022 10:05,387.878,699.8467198,68.5541,150.456,25,47.6561,TRUE,0,4.998060145,1065.732864 -1/2/2022 10:10,396.879,712.2419783,68.0891,151.589,25,46.9163,TRUE,0,5.10115582,1078.692952 -1/2/2022 10:15,406.292,725.0289529,67.6409,152.732,25,46.1969,TRUE,0,5.200208824,1091.180463 -1/2/2022 10:20,414.479,736.1877512,67.2096,153.888,25,45.4989,TRUE,0,5.295226529,1103.184587 -1/2/2022 10:25,422.43,747.053614,66.7959,155.054,25,44.8232,TRUE,0,5.386084993,1114.697192 -1/2/2022 10:30,431.139,758.9583759,66.3999,156.231,25,44.171,TRUE,0,5.472793138,1125.705954 -1/2/2022 10:35,439.724,768.4481232,66.022,157.419,25,43.5433,TRUE,0,5.555294389,1136.202843 -1/2/2022 10:40,446.451,777.5631855,65.6625,158.616,25,42.9412,TRUE,0,5.633554396,1146.178936 -1/2/2022 10:45,452.909,786.3376252,65.3218,159.824,25,42.3657,TRUE,0,5.707517166,1155.627667 -1/2/2022 10:50,460.093,796.0930581,65.0001,161.042,25,41.818,TRUE,0,5.777170015,1164.539797 -1/2/2022 10:55,465.999,804.1760338,64.6977,162.268,25,41.2992,TRUE,0,5.842478102,1172.90826 -1/2/2022 11:00,471.189,811.1417672,64.415,163.503,25,40.8104,TRUE,0,5.903384508,1180.726384 -1/2/2022 11:05,477.082,819.0510253,64.1522,164.747,25,40.3527,TRUE,0,5.959874684,1187.987762 -1/2/2022 11:10,481.675,825.2639826,63.9095,165.998,25,39.9272,TRUE,0,6.011932925,1194.686121 -1/2/2022 11:15,485.962,831.0954425,63.6872,167.256,25,39.5348,TRUE,0,6.059520814,1200.818294 -1/2/2022 11:20,489.941,836.5385925,63.4856,168.521,25,39.1768,TRUE,0,6.10259859,1206.374696 -1/2/2022 11:25,493.159,840.8065945,63.3047,169.792,25,38.8538,TRUE,0,6.141188903,1211.356284 -1/2/2022 11:30,496.509,845.4560937,63.1449,171.069,25,38.5669,TRUE,0,6.175227167,1215.755753 -1/2/2022 11:35,499.633,849.4447851,63.0061,172.35,25,38.3169,TRUE,0,6.204753345,1219.569775 -1/2/2022 11:40,501.428,851.7031133,62.8887,173.635,25,38.1045,TRUE,0,6.229698799,1222.795729 -1/2/2022 11:45,503.352,854.3429389,62.7928,174.924,25,37.9304,TRUE,0,6.250056473,1225.430028 -1/2/2022 11:50,504.948,856.5672049,62.7183,176.216,25,37.7949,TRUE,0,6.265859269,1227.474041 -1/2/2022 11:55,505.756,857.5822604,62.6655,177.51,25,37.6987,TRUE,0,6.27705269,1228.921891 -1/2/2022 12:00,506.233,858.17835,62.6343,178.805,25,37.642,TRUE,0,6.283664479,1229.773955 -1/2/2022 12:05,506.837,859.1559371,62.6249,180.1,25,37.6249,TRUE,0,6.285656127,1230.030738 -1/2/2022 12:10,506.65,858.9175012,62.6371,181.396,25,37.6475,TRUE,0,6.283071189,1229.691345 -1/2/2022 12:15,505.672,857.4630424,62.671,182.691,25,37.7098,TRUE,0,6.275886957,1228.754973 -1/2/2022 12:20,504.822,856.3900811,62.7266,183.985,25,37.8115,TRUE,0,6.264099213,1227.223924 -1/2/2022 12:25,503.184,854.1079093,62.8037,185.276,25,37.9524,TRUE,0,6.2477435,1225.097643 -1/2/2022 12:30,501.674,852.2038286,62.9024,186.565,25,38.1319,TRUE,0,6.226789134,1222.380323 -1/2/2022 12:35,498.928,848.3071054,63.0225,187.85,25,38.3496,TRUE,0,6.201266555,1219.071944 -1/2/2022 12:40,496.313,844.7918796,63.1639,189.13,25,38.6048,TRUE,0,6.171182575,1215.17595 -1/2/2022 12:45,492.928,840.0912869,63.3265,190.406,25,38.8968,TRUE,0,6.136541676,1210.69484 -1/2/2022 12:50,489.675,835.7755978,63.51,191.676,25,39.2247,TRUE,0,6.09738882,1205.633381 -1/2/2022 12:55,485.662,830.2847605,63.7143,192.941,25,39.5876,TRUE,0,6.053724369,1199.995709 -1/2/2022 13:00,481.782,825.1788269,63.9391,194.198,25,39.9846,TRUE,0,6.005589593,1193.785469 -1/2/2022 13:05,476.154,817.5999728,64.1844,195.448,25,40.4147,TRUE,0,5.952959849,1187.007526 -1/2/2022 13:10,470.795,810.1982424,64.4497,196.691,25,40.8769,TRUE,0,5.895916261,1179.666573 -1/2/2022 13:15,465.576,803.1882281,64.7349,197.925,25,41.3699,TRUE,0,5.834452913,1171.772087 -1/2/2022 13:20,459.642,795.0643777,65.0397,199.151,25,41.8929,TRUE,0,5.768605809,1163.325699 -1/2/2022 13:25,452.431,785.2748825,65.3639,200.367,25,42.4445,TRUE,0,5.698388526,1154.338971 -1/2/2022 13:30,445.947,776.4629743,65.707,201.574,25,43.0238,TRUE,0,5.6238791,1144.815794 -1/2/2022 13:35,438.791,766.5849172,66.0688,202.77,25,43.6296,TRUE,0,5.545090284,1134.765468 -1/2/2022 13:40,431.386,756.3968935,66.449,203.957,25,44.2609,TRUE,0,5.462056318,1124.194626 -1/2/2022 13:45,423.737,745.9057156,66.8473,205.133,25,44.9164,TRUE,0,5.374811498,1113.11567 -1/2/2022 13:50,414.853,733.7999864,67.2633,206.298,25,45.5953,TRUE,0,5.283412375,1101.53339 -1/2/2022 13:55,406.739,722.7229375,67.6967,207.452,25,46.2964,TRUE,0,5.187894143,1089.46022 -1/2/2022 14:00,397.03,709.3671231,68.1471,208.594,25,47.0188,TRUE,0,5.088314776,1076.904404 -1/2/2022 14:05,388.121,697.0808638,68.6142,209.725,25,47.7614,TRUE,0,4.984711138,1063.878635 -1/2/2022 14:10,378.018,683.2311465,69.0976,210.844,25,48.5234,TRUE,0,4.877143379,1050.391379 -1/2/2022 14:15,368.383,669.8208325,69.597,211.952,25,49.3037,TRUE,0,4.765650749,1036.457448 -1/2/2022 14:20,357.587,654.8913414,70.112,213.048,25,50.1016,TRUE,0,4.650296269,1022.085609 -1/2/2022 14:25,347.308,640.4659718,70.6422,214.132,25,50.9162,TRUE,0,4.531144746,1007.289255 -1/2/2022 14:30,335.905,624.5622999,71.1873,215.204,25,51.7468,TRUE,0,4.408240339,992.0792286 -1/2/2022 14:35,325.387,609.847401,71.7469,216.264,25,52.5924,TRUE,0,4.281651643,976.4729618 -1/2/2022 14:40,313.461,593.0785476,72.3207,217.312,25,53.4524,TRUE,0,4.151426724,960.4816368 -1/2/2022 14:45,301.165,575.6386675,72.9082,218.348,25,54.3261,TRUE,0,4.017661282,944.119319 -1/2/2022 14:50,288.824,558.1442878,73.5092,219.372,25,55.2129,TRUE,0,3.880385107,927.39925 -1/2/2022 14:55,277.176,541.3958717,74.1232,220.384,25,56.1119,TRUE,0,3.739698775,910.3414057 -1/2/2022 15:00,264.526,523.3190272,74.7499,221.385,25,57.0228,TRUE,0,3.59565972,892.9554391 -1/2/2022 15:05,251.634,504.7346549,75.3889,222.374,25,57.9447,TRUE,0,0,875.2634456 -1/2/2022 15:10,238.546,485.6972546,76.0399,223.352,25,58.8773,TRUE,0,0,857.2770632 -1/2/2022 15:15,225.307,466.2681382,76.7024,224.319,25,59.8199,TRUE,0,0,839.0166074 -1/2/2022 15:20,211.965,446.5154302,77.3762,225.274,25,60.7719,TRUE,0,0,820.5014942 -1/2/2022 15:25,198.568,426.4970366,78.0608,226.218,25,61.7331,TRUE,0,0,801.7443258 -1/2/2022 15:30,184.971,405.8212412,78.756,227.152,25,62.7027,TRUE,0,0,782.7703736 -1/2/2022 15:35,171.359,385.8982219,79.4612,228.075,25,63.6803,TRUE,0,0,763.5980939 -1/2/2022 15:40,157.895,365.018053,80.176,228.987,25,64.6655,TRUE,0,0,744.2469035 -1/2/2022 15:45,144.448,343.7734178,80.9002,229.89,25,65.6577,TRUE,0,0,724.7411261 -1/2/2022 15:50,130.257,321.2855099,81.6331,230.782,25,66.6564,TRUE,0,0,705.104108 -1/2/2022 15:55,117.113,299.6804959,82.3743,231.665,25,67.6612,TRUE,0,0,685.3582206 -1/2/2022 16:00,103.151,276.313441,83.1233,232.538,25,68.6713,TRUE,0,0,665.534693 -1/2/2022 16:05,89.6141,253.1344097,83.8793,233.402,25,69.6862,TRUE,0,0,645.659858 -1/2/2022 16:10,39.3504,64.33374208,84.6415,234.257,25,70.7049,TRUE,0,0,625.7708246 -1/2/2022 16:15,64.7454,205.9479529,85.4087,235.103,25,71.7265,TRUE,0,0,605.9036631 -1/2/2022 16:20,51.7826,178.0952381,86.1795,235.941,25,72.7495,TRUE,0,0,586.1069307 -1/2/2022 16:25,21.0208,33.05010559,86.9516,236.77,25,73.7718,TRUE,0,0,566.441293 -1/2/2022 16:30,14,13.34416513,87.7219,237.591,25,74.7905,TRUE,0,0,546.9827825 -1/2/2022 16:35,8,7.625246951,88.4854,238.405,25,75.801,TRUE,0,0,527.838874 -1/2/2022 16:40,0,0,89.2351,239.211,25,76.7968,TRUE,0,0,509.1502126 -1/2/2022 16:45,0,0,89.9641,240.01,25,77.7715,TRUE,0,0,491.0509172 -1/2/2022 16:50,0,0,91.2536,240.803,0,0,TRUE,0,0,0 -1/2/2022 16:55,0,0,92.0954,241.588,0,0,TRUE,0,0,0 -1/2/2022 17:00,0,0,92.9434,242.368,0,0,TRUE,0,0,0 -1/2/2022 17:05,0,0,93.7974,243.141,0,0,TRUE,0,0,0 -1/2/2022 17:10,0,0,94.6573,243.908,0,0,TRUE,0,0,0 -1/2/2022 17:15,0,0,95.5229,244.67,0,0,TRUE,0,0,0 -1/2/2022 17:20,0,0,96.3939,245.427,0,0,TRUE,0,0,0 -1/2/2022 17:25,0,0,97.2701,246.179,0,0,TRUE,0,0,0 -1/2/2022 17:30,0,0,98.1514,246.927,0,0,TRUE,0,0,0 -1/2/2022 17:35,0,0,99.0377,247.67,0,0,TRUE,0,0,0 -1/2/2022 17:40,0,0,99.9286,248.409,0,0,TRUE,0,0,0 -1/2/2022 17:45,0,0,100.824,249.144,0,0,TRUE,0,0,0 -1/2/2022 17:50,0,0,101.724,249.876,0,0,TRUE,0,0,0 -1/2/2022 17:55,0,0,102.628,250.605,0,0,TRUE,0,0,0 -1/2/2022 18:00,0,0,103.536,251.332,0,0,TRUE,0,0,0 -1/2/2022 18:05,0,0,104.448,252.056,0,0,TRUE,0,0,0 -1/2/2022 18:10,0,0,105.364,252.778,0,0,TRUE,0,0,0 -1/2/2022 18:15,0,0,106.283,253.498,0,0,TRUE,0,0,0 -1/2/2022 18:20,0,0,107.206,254.217,0,0,TRUE,0,0,0 -1/2/2022 18:25,0,0,108.132,254.934,0,0,TRUE,0,0,0 -1/2/2022 18:30,0,0,109.061,255.651,0,0,TRUE,0,0,0 -1/2/2022 18:35,0,0,109.994,256.368,0,0,TRUE,0,0,0 -1/2/2022 18:40,0,0,110.929,257.085,0,0,TRUE,0,0,0 -1/2/2022 18:45,0,0,111.866,257.802,0,0,TRUE,0,0,0 -1/2/2022 18:50,0,0,112.807,258.521,0,0,TRUE,0,0,0 -1/2/2022 18:55,0,0,113.749,259.24,0,0,TRUE,0,0,0 -1/2/2022 19:00,0,0,114.694,259.961,0,0,TRUE,0,0,0 -1/2/2022 19:05,0,0,115.641,260.685,0,0,TRUE,0,0,0 -1/2/2022 19:10,0,0,116.59,261.41,0,0,TRUE,0,0,0 -1/2/2022 19:15,0,0,117.541,262.139,0,0,TRUE,0,0,0 -1/2/2022 19:20,0,0,118.493,262.872,0,0,TRUE,0,0,0 -1/2/2022 19:25,0,0,119.447,263.609,0,0,TRUE,0,0,0 -1/2/2022 19:30,0,0,120.403,264.35,0,0,TRUE,0,0,0 -1/2/2022 19:35,0,0,121.359,265.096,0,0,TRUE,0,0,0 -1/2/2022 19:40,0,0,122.317,265.848,0,0,TRUE,0,0,0 -1/2/2022 19:45,0,0,123.276,266.607,0,0,TRUE,0,0,0 -1/2/2022 19:50,0,0,124.235,267.372,0,0,TRUE,0,0,0 -1/2/2022 19:55,0,0,125.195,268.145,0,0,TRUE,0,0,0 -1/2/2022 20:00,0,0,126.155,268.927,0,0,TRUE,0,0,0 -1/2/2022 20:05,0,0,127.116,269.718,0,0,TRUE,0,0,0 -1/2/2022 20:10,0,0,128.076,270.518,0,0,TRUE,0,0,0 -1/2/2022 20:15,0,0,129.037,271.33,0,0,TRUE,0,0,0 -1/2/2022 20:20,0,0,129.997,272.153,0,0,TRUE,0,0,0 -1/2/2022 20:25,0,0,130.957,272.989,0,0,TRUE,0,0,0 -1/2/2022 20:30,0,0,131.916,273.839,0,0,TRUE,0,0,0 -1/2/2022 20:35,0,0,132.874,274.704,0,0,TRUE,0,0,0 -1/2/2022 20:40,0,0,133.831,275.584,0,0,TRUE,0,0,0 -1/2/2022 20:45,0,0,134.786,276.482,0,0,TRUE,0,0,0 -1/2/2022 20:50,0,0,135.74,277.399,0,0,TRUE,0,0,0 -1/2/2022 20:55,0,0,136.691,278.335,0,0,TRUE,0,0,0 -1/2/2022 21:00,0,0,137.641,279.293,0,0,TRUE,0,0,0 -1/2/2022 21:05,0,0,138.587,280.275,0,0,TRUE,0,0,0 -1/2/2022 21:10,0,0,139.531,281.281,0,0,TRUE,0,0,0 -1/2/2022 21:15,0,0,140.471,282.314,0,0,TRUE,0,0,0 -1/2/2022 21:20,0,0,141.408,283.377,0,0,TRUE,0,0,0 -1/2/2022 21:25,0,0,142.34,284.471,0,0,TRUE,0,0,0 -1/2/2022 21:30,0,0,143.268,285.599,0,0,TRUE,0,0,0 -1/2/2022 21:35,0,0,144.191,286.763,0,0,TRUE,0,0,0 -1/2/2022 21:40,0,0,145.108,287.966,0,0,TRUE,0,0,0 -1/2/2022 21:45,0,0,146.018,289.213,0,0,TRUE,0,0,0 -1/2/2022 21:50,0,0,146.922,290.504,0,0,TRUE,0,0,0 -1/2/2022 21:55,0,0,147.817,291.846,0,0,TRUE,0,0,0 -1/2/2022 22:00,0,0,148.705,293.241,0,0,TRUE,0,0,0 -1/2/2022 22:05,0,0,149.582,294.693,0,0,TRUE,0,0,0 -1/2/2022 22:10,0,0,150.45,296.208,0,0,TRUE,0,0,0 -1/2/2022 22:15,0,0,151.306,297.791,0,0,TRUE,0,0,0 -1/2/2022 22:20,0,0,152.149,299.446,0,0,TRUE,0,0,0 -1/2/2022 22:25,0,0,152.978,301.18,0,0,TRUE,0,0,0 -1/2/2022 22:30,0,0,153.792,302.998,0,0,TRUE,0,0,0 -1/2/2022 22:35,0,0,154.589,304.907,0,0,TRUE,0,0,0 -1/2/2022 22:40,0,0,155.367,306.913,0,0,TRUE,0,0,0 -1/2/2022 22:45,0,0,156.124,309.025,0,0,TRUE,0,0,0 -1/2/2022 22:50,0,0,156.859,311.248,0,0,TRUE,0,0,0 -1/2/2022 22:55,0,0,157.568,313.591,0,0,TRUE,0,0,0 -1/2/2022 23:00,0,0,158.249,316.059,0,0,TRUE,0,0,0 -1/2/2022 23:05,0,0,158.9,318.66,0,0,TRUE,0,0,0 -1/2/2022 23:10,0,0,159.517,321.398,0,0,TRUE,0,0,0 -1/2/2022 23:15,0,0,160.097,324.28,0,0,TRUE,0,0,0 -1/2/2022 23:20,0,0,160.637,327.307,0,0,TRUE,0,0,0 -1/2/2022 23:25,0,0,161.133,330.48,0,0,TRUE,0,0,0 -1/2/2022 23:30,0,0,161.582,333.798,0,0,TRUE,0,0,0 -1/2/2022 23:35,0,0,161.98,337.254,0,0,TRUE,0,0,0 -1/2/2022 23:40,0,0,162.323,340.84,0,0,TRUE,0,0,0 -1/2/2022 23:45,0,0,162.609,344.543,0,0,TRUE,0,0,0 -1/2/2022 23:50,0,0,162.834,348.346,0,0,TRUE,0,0,0 -1/2/2022 23:55,0,0,162.996,352.226,0,0,TRUE,0,0,0 diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 51603d263..1ae3767ca 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -784,9 +784,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, # Changing the poa_global_limit_bool_flag depending on # poa_global_limit_int_flag - poa_global_limit_bool_flag = poa_global_limit_bool_flag.mask( - cond=poa_global_limit_int_flag != 0, - other=False) + poa_global_limit_bool_flag = poa_global_limit_int_flag == 0 return (poa_global_limit_bool_flag, poa_global_limit_int_flag) @@ -923,8 +921,6 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): ) # Changing the ghi_limit_bool_flag depending on ghi_limit_int_flag - ghi_limit_bool_flag = ghi_limit_bool_flag.mask( - cond=ghi_limit_int_flag != 0, - other=False) + ghi_limit_bool_flag = ghi_limit_int_flag == 0 return (ghi_limit_bool_flag, ghi_limit_int_flag) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index 7dcb879ba..38701487e 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -416,46 +416,47 @@ def test_calculate_dni_component(generate_RMIS_irradiance_series): @pytest.fixture def lorenz_test_data(): + # poa_global and ghi share the same values of 'lower_limit' data = pd.DataFrame( columns=['ghi', 'poa_global', 'solar_zenith', 'azimuth', 'aoi', - 'lower_limit_poa', 'upper_limit_poa', + 'upper_limit_poa', 'poa_global_limit_int_flag', 'poa_global_limit_bool_flag', - 'lower_limit_ghi', 'upper_limit_flag2_ghi', + 'lower_limit', 'upper_limit_flag2_ghi', 'upper_limit_flag3_ghi', 'ghi_limit_int_flag', 'ghi_limit_bool_flag'], - data=np.array([[400, 730, 60, 205, 30, 6.835, 1335.256062, 0, 1, + data=np.array([[400, 730, 60, 205, 30, 1335.256062, 0, 1, 6.835, 870.2, 992.531965, 0, 1], - [500, 830, 60, 205, 30, 6.835, 1335.256062, 0, 1, + [500, 830, 60, 205, 30, 1335.256062, 0, 1, 6.835, 870.2, 992.531965, 0, 1], - [880, 830, 60, 205, 30, 6.835, 1335.256062, 0, 1, + [880, 830, 60, 205, 30, 1335.256062, 0, 1, 6.835, 870.2, 992.531965, 2, 0], - [1000, 830, 60, 205, 30, 6.835, 1335.256062, 0, 1, + [1000, 830, 60, 205, 30, 1335.256062, 0, 1, 6.835, 870.2, 992.531965, 3, 0], - [6, 830, 60, 205, 30, 6.835, 1335.256062, 0, 1, + [6, 830, 60, 205, 30, 1335.256062, 0, 1, 6.835, 870.2, 992.531965, 3, 0], - [100, 150, 60, 205, 30, 6.835, 1335.256062, 0, 1, + [100, 150, 60, 205, 30, 1335.256062, 0, 1, 6.835, 870.2, 992.531965, 0, 1], - [100, 150, 60, 205, 30, 6.835, 1335.256062, 0, 1, + [100, 150, 60, 205, 30, 1335.256062, 0, 1, 6.835, 870.2, 992.531965, 0, 1], - [100, 1152, 60, 205, 30, 6.835, 1335.256062, 3, 0, + [100, 1152, 60, 205, 30, 1335.256062, 3, 0, 6.835, 870.2, 992.531965, 0, 1], - [100, 150, 60, 205, 30, 6.835, 1335.256062, 3, 0, + [100, 150, 60, 205, 30, 1335.256062, 3, 0, 6.835, 870.2, 992.531965, 0, 1], - [100, 150, 60, 205, 30, 6.835, 1335.256062, 0, 1, + [100, 150, 60, 205, 30, 1335.256062, 0, 1, 6.835, 870.2, 992.531965, 0, 1], - [500, 830, np.nan, 205, 30, np.nan, np.nan, 1, 0, + [500, 830, np.nan, 205, 30, np.nan, 1, 0, np.nan, np.nan, np.nan, 1, 0], - [500, 830, 60, 205, np.nan, 6.835, np.nan, 1, 0, + [500, 830, 60, 205, np.nan, np.nan, 1, 0, 6.835, 870.2, 992.531965, 0, 1], - [500, 830, -45, 205, 30, 9.66615, 1335.256062, 0, 1, + [500, 830, -45, 205, 30, 1335.256062, 0, 1, 9.66615, 1209.937964, 1452.825486, 0, 1], - [500, 830, 45, 205, -30, 9.66615, 1530.300000, 0, 1, + [500, 830, 45, 205, -30, 1530.300000, 0, 1, 9.66615, 1209.937964, 1452.825486, 0, 1], - [500, 830, -45, 205, -30, 9.66615, 1530.300000, 0, 1, + [500, 830, -45, 205, -30, 1530.300000, 0, 1, 9.66615, 1209.937964, 1452.825486, 0, 1]])) dtypes = ['float64', 'float64', 'float64', 'float64', 'float64', - 'float64', 'float64', + 'float64', 'int64', 'bool', 'float64', 'float64', 'float64', 'int64', @@ -562,23 +563,23 @@ def test__upper_ghi_limit_lorenz_flag3(lorenz_test_data): def test__lower_limit_lorenz(lorenz_test_data): - """Testing lower ghi limit defined by Lorenz et al.""" + """Testing lower limit defined by Lorenz et al.""" data = lorenz_test_data - # Expected upper limit - expected_upper_limit = data['lower_limit_ghi'] + # Expected lower limit (lower limit for ghi and poa_global is the same) + expected_lower_limit = data['lower_limit'] # Setting up inputs dni_extra = 1367 solar_zenith = data['solar_zenith'] - # Testing upper limit - test_upper_limit = irradiance._lower_limit_lorenz(solar_zenith, + # Testing lower limit + test_lower_limit = irradiance._lower_limit_lorenz(solar_zenith, dni_extra) - assert_series_equal(expected_upper_limit, - test_upper_limit, + assert_series_equal(expected_lower_limit, + test_lower_limit, check_names=False) From c90a2247ce48f70881f324aa5fc7491bef35a3c1 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Fri, 30 Dec 2022 17:37:13 -0800 Subject: [PATCH 28/40] Corrected the upper limit equation of flag 3 for GHI Co-authored-by: Kevin Anderson --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 1ae3767ca..a6fe0b942 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -810,7 +810,7 @@ def _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra): # Determining the upper limit upper_limit_flag3 = np.minimum( pd.Series(1.2 * dni_extra, index=solar_zenith.index), - 1.5 * dni_extra * (cosd(solar_zenith))**1.2 + 100) + 1.5 * dni_extra * cosd(solar_zenith))**1.2 + 100 # Setting upper limit as 0 when solar zenith is > 90 (night time) upper_limit_flag3[solar_zenith > 90] = 0 From d144c68072ba5e803fec303cde31604d35b15809 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sun, 8 Jan 2023 21:24:22 -0800 Subject: [PATCH 29/40] minor modifications --- docs/api.rst | 2 +- pvanalytics/quality/irradiance.py | 57 ++++++++++++++----------------- 2 files changed, 26 insertions(+), 33 deletions(-) diff --git a/docs/api.rst b/docs/api.rst index 5b90edead..df6e7b2ab 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -213,7 +213,7 @@ the quality check. Algorithm for Surface Radiation Measurements, The Open Atmospheric Science Journal 2, pp. 23-37, 2008. -.. [2] Elke Lorenz et. al, High resolution measurement network of global +.. [2] Elke Lorenz et al., High resolution measurement network of global horizontal and tilted solar irradiance in southern Germany with a new quality control scheme, Solar Energy, Volume 231, 2022, Pages 593-606, ISSN 0038-092X, https://doi.org/10.1016/j.solener.2021.11.023. diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index a6fe0b942..61503cdd8 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -676,11 +676,9 @@ def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): # Setting upper limit as 0 when solar zenith is > 90 (night time) upper_limit[solar_zenith > 90] = 0 - # Setting upper limit as undefined where solar_zenith is not available - upper_limit[solar_zenith.isna()] = np.nan - - # Setting upper limit as undefined where aoi is not available - upper_limit[aoi.isna()] = np.nan + # Setting upper limit as undefined where solar_zenith or aoi is not + # available + upper_limit[(solar_zenith.isna()) | (aoi.isna())] = np.nan return upper_limit @@ -689,8 +687,7 @@ def _lower_limit_lorenz(solar_zenith, dni_extra): r"""Function to calculate the lower limit of poa_global and ghi """ # Setting the lower_limit at 0. - lower_limit = pd.Series(np.zeros(len(solar_zenith)), - index=solar_zenith.index) + lower_limit = pd.Series(0., index=solar_zenith.index) # Determining the lower limit when solar zenith is < 75 lower_limit = lower_limit.mask(solar_zenith < 75, @@ -699,17 +696,16 @@ def _lower_limit_lorenz(solar_zenith, dni_extra): # Setting lower limit as undefined where solar_zenith is not available lower_limit[solar_zenith.isna()] = np.nan - return (lower_limit) + return lower_limit def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, - dni_extra=1367): - r"""Test for limits on POA global using the equations described in - Section 6.1 of [1]_ + dni_extra=1367.): + r"""Test for limits on POA global with Lorenz algorithm. - Criteria from [1]_ are used to determine physically plausible - lower and upper bounds. Each value is tested and a value passes if - value > lower bound and value < upper bound. Also, steps with + Criteria from Section 6.1 of [1]_ are used to determine physically + plausible lower and upper bounds. Each value is tested and a value passes + if value > lower bound and value < upper bound. Also, steps with change in magnitude of more than 1000 W/m2 are flagged. Lower bounds are constant for all tests. Upper bounds are calculated as @@ -724,7 +720,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, Solar zenith angle [degrees] aoi : Series angle of incidence [degrees] - dni_extra : float, default 1367 + dni_extra : float, default 1367. normal irradiance at the top of atmosphere [W/m^2] Returns @@ -739,7 +735,8 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, ----- The upper limit for `poa_global` is set to 0 when `solar_zenith` is greater than 90 degrees. Missing values of `poa_global`, `solar_zenith` - and/or `aoi` will result in a `False` flag. + and/or `aoi` will result in a `False` flag. Also, [1]_ mentions that the + proposed limits are for silicon sensors with a tilt of 25°. References ---------- @@ -756,9 +753,6 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, # Initiating a poa_global_limit_int_flag series poa_global_limit_int_flag = pd.Series(0, index=solar_zenith.index) - # Initiating a poa_global_limit_bool_flag series - poa_global_limit_bool_flag = pd.Series(True, index=solar_zenith.index) - # Changing the poa_global_flag to 3 when poa_global is above upper # limit or below lower limit poa_global_limit_int_flag = poa_global_limit_int_flag.mask( @@ -786,7 +780,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, # poa_global_limit_int_flag poa_global_limit_bool_flag = poa_global_limit_int_flag == 0 - return (poa_global_limit_bool_flag, poa_global_limit_int_flag) + return poa_global_limit_bool_flag, poa_global_limit_int_flag def _upper_ghi_limit_lorenz_flag2(solar_zenith, dni_extra): @@ -810,7 +804,8 @@ def _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra): # Determining the upper limit upper_limit_flag3 = np.minimum( pd.Series(1.2 * dni_extra, index=solar_zenith.index), - 1.5 * dni_extra * cosd(solar_zenith))**1.2 + 100 + 1.5 * dni_extra * (cosd(solar_zenith))**1.2 + 100 + ) # Setting upper limit as 0 when solar zenith is > 90 (night time) upper_limit_flag3[solar_zenith > 90] = 0 @@ -821,9 +816,8 @@ def _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra): return upper_limit_flag3 -def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): - r"""Test for limits on global horizontal irradiance using the equations - described in Section 6.1 of [1]_ +def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367.): + r"""Test for limits on GHI with Lorenz algorithm. Criteria from [1]_ are used to determine physically plausible lower, upper bounds and step change. Each value is tested and a value @@ -831,8 +825,9 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): change in magnitude of more than :math:`1000 W/m^{2}` are flagged. Lower bounds are constant for all tests. As defined in the paper, there are two values of upper bounds calculated: - (1) Rare values - Flag 2 - (2) Extreme values - Flag 3 + + #. Rare values - Flag 2 + #. Extreme values - Flag 3 For Flag 2 @@ -867,7 +862,8 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): ----- The upper limit for `ghi` is set to 0 when `solar_zenith` is greater than 90 degrees. Missing values of `ghi` and/or `solar_zenith` will result - in a `False` flag. + in a `False` flag. Also, [1]_ mentions that the proposed limits are for + silicon sensors with a tilt of 25°. References ---------- @@ -887,9 +883,6 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): # Initiating a ghi_limit_int_flag series ghi_limit_int_flag = pd.Series(0, index=solar_zenith.index) - # Initiating a ghi_limit_bool_flag series - ghi_limit_bool_flag = pd.Series(True, index=solar_zenith.index) - # Changing the ghi_limit_int_flag to 2 when ghi is above upper_limit_flag2 ghi_limit_int_flag = ghi_limit_int_flag.mask( (ghi > upper_limit_flag2), @@ -907,7 +900,7 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): # Changing the ghi_limit_int_flag to 3 when the step change in ghi values # is more than 1000 W/m2 ghi_limit_int_flag = ghi_limit_int_flag.mask( - (abs(ghi - ghi.shift(1)) > 1000), + (ghi.diff().abs() > 1000), 3 ) @@ -923,4 +916,4 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367): # Changing the ghi_limit_bool_flag depending on ghi_limit_int_flag ghi_limit_bool_flag = ghi_limit_int_flag == 0 - return (ghi_limit_bool_flag, ghi_limit_int_flag) + return ghi_limit_bool_flag, ghi_limit_int_flag From 863ecdea7dbbe2df0c3497a0d44fb5dfd224d61b Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Fri, 26 May 2023 00:26:26 -0700 Subject: [PATCH 30/40] Changed the function name from Lorenz to pvlive --- docs/api.rst | 8 ++-- docs/whatsnew/0.2.0.rst | 3 +- pvanalytics/quality/irradiance.py | 22 +++++----- pvanalytics/tests/quality/test_irradiance.py | 42 ++++++++++---------- 4 files changed, 38 insertions(+), 37 deletions(-) diff --git a/docs/api.rst b/docs/api.rst index df6e7b2ab..bb4bd0ed6 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -76,21 +76,21 @@ calculate missing data fields. quality.irradiance.calculate_component_sum_series -The ``check_poa_global_limits_lorenz`` function flags the global plane of array +The ``check_poa_global_limits_pvlive`` function flags the global plane of array irradiance measurements that are outside the limits described in [2]_. .. autosummary:: :toctree: generated/ - quality.irradiance.check_poa_global_limits_lorenz + quality.irradiance.check_poa_global_limits_pvlive -The ``check_ghi_limits_lorenz`` function flags the global horizontal irradiance +The ``check_ghi_limits_pvlive`` function flags the global horizontal irradiance measurements that are outside the limits described in [2]_. .. autosummary:: :toctree: generated/ - quality.irradiance.check_ghi_limits_lorenz + quality.irradiance.check_ghi_limits_pvlive Gaps ---- diff --git a/docs/whatsnew/0.2.0.rst b/docs/whatsnew/0.2.0.rst index d93f9d83f..de7e15c70 100644 --- a/docs/whatsnew/0.2.0.rst +++ b/docs/whatsnew/0.2.0.rst @@ -15,7 +15,8 @@ Breaking Changes Enhancements ~~~~~~~~~~~~ - +* Added function :py:func:`~pvanalytics.quality.irradiance.check_poa_global_limits_pvlive` + to test for limits on POA global and GHI with pvlive algorithm (:issue:`123`, :pull:`167`) Bug Fixes ~~~~~~~~~ diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 86c811e51..78cdab2ed 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -594,7 +594,7 @@ def calculate_component_sum_series(solar_zenith, solar_zenith, zenith_limit) -def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): +def _upper_poa_global_limit_pvlive(aoi, solar_zenith, dni_extra): r"""Function to calculate the upper limit of poa_global """ # Changing aoi to 90 degrees when solar zenith is greater than 90 (sun @@ -615,7 +615,7 @@ def _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra): return upper_limit -def _lower_limit_lorenz(solar_zenith, dni_extra): +def _lower_limit_pvlive(solar_zenith, dni_extra): r"""Function to calculate the lower limit of poa_global and ghi """ # Setting the lower_limit at 0. @@ -631,7 +631,7 @@ def _lower_limit_lorenz(solar_zenith, dni_extra): return lower_limit -def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, +def check_poa_global_limits_pvlive(poa_global, solar_zenith, aoi, dni_extra=1367.): r"""Test for limits on POA global with Lorenz algorithm. @@ -679,8 +679,8 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, https://doi.org/10.1016/j.solener.2021.11.023. """ # Finding the upper and lower limit - upper_limit = _upper_poa_global_limit_lorenz(aoi, solar_zenith, dni_extra) - lower_limit = _lower_limit_lorenz(solar_zenith, dni_extra) + upper_limit = _upper_poa_global_limit_pvlive(aoi, solar_zenith, dni_extra) + lower_limit = _lower_limit_pvlive(solar_zenith, dni_extra) # Initiating a poa_global_limit_int_flag series poa_global_limit_int_flag = pd.Series(0, index=solar_zenith.index) @@ -715,7 +715,7 @@ def check_poa_global_limits_lorenz(poa_global, solar_zenith, aoi, return poa_global_limit_bool_flag, poa_global_limit_int_flag -def _upper_ghi_limit_lorenz_flag2(solar_zenith, dni_extra): +def _upper_ghi_limit_pvlive_flag2(solar_zenith, dni_extra): r"""Function to calculate the upper limit of ghi for Flag 2 """ # Determining the upper limit @@ -730,7 +730,7 @@ def _upper_ghi_limit_lorenz_flag2(solar_zenith, dni_extra): return upper_limit_flag2 -def _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra): +def _upper_ghi_limit_pvlive_flag3(solar_zenith, dni_extra): r"""Function to calculate the upper limit of ghi for Flag 3 """ # Determining the upper limit @@ -748,7 +748,7 @@ def _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra): return upper_limit_flag3 -def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367.): +def check_ghi_limits_pvlive(ghi, solar_zenith, dni_extra=1367.): r"""Test for limits on GHI with Lorenz algorithm. Criteria from [1]_ are used to determine physically plausible @@ -806,11 +806,11 @@ def check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra=1367.): https://doi.org/10.1016/j.solener.2021.11.023. """ # Finding the upper limit for flag 2 and flag 3 - upper_limit_flag2 = _upper_ghi_limit_lorenz_flag2(solar_zenith, dni_extra) - upper_limit_flag3 = _upper_ghi_limit_lorenz_flag3(solar_zenith, dni_extra) + upper_limit_flag2 = _upper_ghi_limit_pvlive_flag2(solar_zenith, dni_extra) + upper_limit_flag3 = _upper_ghi_limit_pvlive_flag3(solar_zenith, dni_extra) # Finding the lower limit for flag 3 - lower_limit = _lower_limit_lorenz(solar_zenith, dni_extra) + lower_limit = _lower_limit_pvlive(solar_zenith, dni_extra) # Initiating a ghi_limit_int_flag series ghi_limit_int_flag = pd.Series(0, index=solar_zenith.index) diff --git a/pvanalytics/tests/quality/test_irradiance.py b/pvanalytics/tests/quality/test_irradiance.py index bb408b53e..685574207 100644 --- a/pvanalytics/tests/quality/test_irradiance.py +++ b/pvanalytics/tests/quality/test_irradiance.py @@ -412,7 +412,7 @@ def test_calculate_dni_component(generate_RMIS_irradiance_series): @pytest.fixture -def lorenz_test_data(): +def pvlive_test_data(): # poa_global and ghi share the same values of 'lower_limit' data = pd.DataFrame( @@ -466,10 +466,10 @@ def lorenz_test_data(): return (data) -def test_check_poa_global_limits_lorenz(lorenz_test_data): - """Testing the function 'check_poa_global_limits_lorenz'""" +def test_check_poa_global_limits_pvlive(pvlive_test_data): + """Testing the function 'check_poa_global_limits_pvlive'""" - data = lorenz_test_data + data = pvlive_test_data # Expected boolean and integer flags expected_bool_flag = data['poa_global_limit_bool_flag'] @@ -483,7 +483,7 @@ def test_check_poa_global_limits_lorenz(lorenz_test_data): # Calling the functions poa_global_limit_bool_flag, poa_global_limit_int_flag = \ - irradiance.check_poa_global_limits_lorenz(poa_global, solar_zenith, + irradiance.check_poa_global_limits_pvlive(poa_global, solar_zenith, aoi, dni_extra) assert_series_equal(expected_int_flag, @@ -495,10 +495,10 @@ def test_check_poa_global_limits_lorenz(lorenz_test_data): check_names=False) -def test__upper_poa_global_limit_lorenz(lorenz_test_data): +def test__upper_poa_global_limit_pvlive(pvlive_test_data): """Testing upper poa global limit defined by Lorenz et al.""" - data = lorenz_test_data + data = pvlive_test_data # Expected upper limit expected_upper_limit = data['upper_limit_poa'] @@ -509,7 +509,7 @@ def test__upper_poa_global_limit_lorenz(lorenz_test_data): aoi = data['aoi'] # Testing upper limit - test_upper_limit = irradiance._upper_poa_global_limit_lorenz(aoi, + test_upper_limit = irradiance._upper_poa_global_limit_pvlive(aoi, solar_zenith, dni_extra) @@ -518,10 +518,10 @@ def test__upper_poa_global_limit_lorenz(lorenz_test_data): check_names=False) -def test__upper_ghi_limit_lorenz_flag2(lorenz_test_data): +def test__upper_ghi_limit_pvlive_flag2(pvlive_test_data): """Testing upper ghi limit for flag 2 defined by Lorenz et al.""" - data = lorenz_test_data + data = pvlive_test_data # Expected upper limit expected_upper_limit = data['upper_limit_flag2_ghi'] @@ -531,7 +531,7 @@ def test__upper_ghi_limit_lorenz_flag2(lorenz_test_data): solar_zenith = data['solar_zenith'] # Testing upper limit - test_upper_limit = irradiance._upper_ghi_limit_lorenz_flag2(solar_zenith, + test_upper_limit = irradiance._upper_ghi_limit_pvlive_flag2(solar_zenith, dni_extra) assert_series_equal(expected_upper_limit, @@ -539,10 +539,10 @@ def test__upper_ghi_limit_lorenz_flag2(lorenz_test_data): check_names=False) -def test__upper_ghi_limit_lorenz_flag3(lorenz_test_data): +def test__upper_ghi_limit_pvlive_flag3(pvlive_test_data): """Testing upper ghi limit for flag 3 defined by Lorenz et al.""" - data = lorenz_test_data + data = pvlive_test_data # Expected upper limit expected_upper_limit = data['upper_limit_flag3_ghi'] @@ -552,7 +552,7 @@ def test__upper_ghi_limit_lorenz_flag3(lorenz_test_data): solar_zenith = data['solar_zenith'] # Testing upper limit - test_upper_limit = irradiance._upper_ghi_limit_lorenz_flag3(solar_zenith, + test_upper_limit = irradiance._upper_ghi_limit_pvlive_flag3(solar_zenith, dni_extra) assert_series_equal(expected_upper_limit, @@ -560,10 +560,10 @@ def test__upper_ghi_limit_lorenz_flag3(lorenz_test_data): check_names=False) -def test__lower_limit_lorenz(lorenz_test_data): +def test__lower_limit_pvlive(pvlive_test_data): """Testing lower limit defined by Lorenz et al.""" - data = lorenz_test_data + data = pvlive_test_data # Expected lower limit (lower limit for ghi and poa_global is the same) expected_lower_limit = data['lower_limit'] @@ -573,7 +573,7 @@ def test__lower_limit_lorenz(lorenz_test_data): solar_zenith = data['solar_zenith'] # Testing lower limit - test_lower_limit = irradiance._lower_limit_lorenz(solar_zenith, + test_lower_limit = irradiance._lower_limit_pvlive(solar_zenith, dni_extra) assert_series_equal(expected_lower_limit, @@ -581,10 +581,10 @@ def test__lower_limit_lorenz(lorenz_test_data): check_names=False) -def test_check_ghi_limits_lorenz(lorenz_test_data): - """Testing the function 'check_ghi_limits_lorenz'""" +def test_check_ghi_limits_pvlive(pvlive_test_data): + """Testing the function 'check_ghi_limits_pvlive'""" - data = lorenz_test_data + data = pvlive_test_data # Expected boolean and integer flags expected_bool_flag = data['ghi_limit_bool_flag'] @@ -597,7 +597,7 @@ def test_check_ghi_limits_lorenz(lorenz_test_data): # Calling the functions ghi_limit_bool_flag, ghi_limit_int_flag = \ - irradiance.check_ghi_limits_lorenz(ghi, solar_zenith, dni_extra) + irradiance.check_ghi_limits_pvlive(ghi, solar_zenith, dni_extra) assert_series_equal(expected_int_flag, ghi_limit_int_flag, From 57ae3bf5350d5b16106c82102ed05c50007b2341 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Fri, 26 May 2023 10:56:51 -0700 Subject: [PATCH 31/40] Update docs/api.rst Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- docs/api.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api.rst b/docs/api.rst index bb4bd0ed6..997efad9b 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -213,9 +213,9 @@ the quality check. Algorithm for Surface Radiation Measurements, The Open Atmospheric Science Journal 2, pp. 23-37, 2008. -.. [2] Elke Lorenz et al., High resolution measurement network of global +.. [2] E. Lorenz et al., High resolution measurement network of global horizontal and tilted solar irradiance in southern Germany with a new - quality control scheme, Solar Energy, Volume 231, 2022, Pages 593-606, + quality control scheme, Solar Energy, Volume 231, pp. 593-606, 2022. ISSN 0038-092X, https://doi.org/10.1016/j.solener.2021.11.023. Features From 901e0a0cfeb0ea6581eb9ed0a5e225b4b330dc0c Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Fri, 26 May 2023 10:57:03 -0700 Subject: [PATCH 32/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 78cdab2ed..5295c3025 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -633,7 +633,7 @@ def _lower_limit_pvlive(solar_zenith, dni_extra): def check_poa_global_limits_pvlive(poa_global, solar_zenith, aoi, dni_extra=1367.): - r"""Test for limits on POA global with Lorenz algorithm. + r"""Test for limits on POA global with pvlive algorithm. Criteria from Section 6.1 of [1]_ are used to determine physically plausible lower and upper bounds. Each value is tested and a value passes From 9e05e4cd877d668b75b057f7bb401caae5d3776f Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Fri, 26 May 2023 10:57:12 -0700 Subject: [PATCH 33/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 5295c3025..9b70ea3ef 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -749,7 +749,7 @@ def _upper_ghi_limit_pvlive_flag3(solar_zenith, dni_extra): def check_ghi_limits_pvlive(ghi, solar_zenith, dni_extra=1367.): - r"""Test for limits on GHI with Lorenz algorithm. + r"""Test for limits on GHI with pvlive algorithm. Criteria from [1]_ are used to determine physically plausible lower, upper bounds and step change. Each value is tested and a value From 771c72175e8eb00b11492cc7f43bc047e21108c0 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Tue, 30 May 2023 06:06:29 -0700 Subject: [PATCH 34/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 9b70ea3ef..61ec1bb57 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -661,7 +661,7 @@ def check_poa_global_limits_pvlive(poa_global, solar_zenith, aoi, True for each value that is physically possible. poa_global_limit_int_flag : Series Series of integers representing the flag numbers described in the - literature. [1]_ + [1]_. Notes ----- From acb8a409a7d3e073e4754d4edff0919c9d126ce9 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Tue, 30 May 2023 06:06:42 -0700 Subject: [PATCH 35/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- pvanalytics/quality/irradiance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 61ec1bb57..4b33b3848 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -658,7 +658,7 @@ def check_poa_global_limits_pvlive(poa_global, solar_zenith, aoi, Returns ------- poa_global_limit_bool_flag : Series - True for each value that is physically possible. + True for each value that passes the test. poa_global_limit_int_flag : Series Series of integers representing the flag numbers described in the [1]_. From 368a6d08513bf45819640305d5d73b010e65438f Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Tue, 30 May 2023 06:06:59 -0700 Subject: [PATCH 36/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- pvanalytics/quality/irradiance.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 4b33b3848..762216c2a 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -651,9 +651,9 @@ def check_poa_global_limits_pvlive(poa_global, solar_zenith, aoi, solar_zenith : Series Solar zenith angle [degrees] aoi : Series - angle of incidence [degrees] + Angle of incidence [degrees] dni_extra : float, default 1367. - normal irradiance at the top of atmosphere [W/m^2] + Normal irradiance at the top of atmosphere [W/m^2] Returns ------- From 3e27f938648be62d178219991623054b3108f369 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sat, 3 Jun 2023 22:15:15 -0700 Subject: [PATCH 37/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 762216c2a..235a9a4b8 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -751,12 +751,14 @@ def _upper_ghi_limit_pvlive_flag3(solar_zenith, dni_extra): def check_ghi_limits_pvlive(ghi, solar_zenith, dni_extra=1367.): r"""Test for limits on GHI with pvlive algorithm. - Criteria from [1]_ are used to determine physically plausible - lower, upper bounds and step change. Each value is tested and a value - passes if value > lower bound and value < upper bound. Also, steps with - change in magnitude of more than :math:`1000 W/m^{2}` are flagged. Lower - bounds are constant for all tests. As defined in the paper, there are - two values of upper bounds calculated: + The pvlive algorithm [1]_ defines a lower bound, two upper bounds (rare and extreme), + and a limit on the change between successive GHI values. A value is physically plausible + if: + + * the value is greater than the lower bound + * the value is less than both the rare and extreme upper bounds + * the step change to the next GHI value is less than the step change limit + of :math:`1000 W/m^{2}` #. Rare values - Flag 2 #. Extreme values - Flag 3 From 8764c7b13a6f30a0bdadda7f253453187806294a Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sat, 3 Jun 2023 22:15:30 -0700 Subject: [PATCH 38/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 235a9a4b8..a7896d363 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -760,16 +760,14 @@ def check_ghi_limits_pvlive(ghi, solar_zenith, dni_extra=1367.): * the step change to the next GHI value is less than the step change limit of :math:`1000 W/m^{2}` - #. Rare values - Flag 2 - #. Extreme values - Flag 3 - For Flag 2 + The upper limit for rare values is .. math:: upper\_limit_{\mathbf{Flag\_2}} = 1.2 * dni\_extra * cos(solar\_zenith) + 50 - For Flag 3 + The upper limit for extreme values is .. math:: upper\_limit_{\mathbf{Flag\_3}} = min(1.2 * dni\_extra, From ee9f400b713707d048804ce12d25b8081c4b8eb6 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sat, 3 Jun 2023 22:15:50 -0700 Subject: [PATCH 39/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index a7896d363..389bf957c 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -788,7 +788,13 @@ def check_ghi_limits_pvlive(ghi, solar_zenith, dni_extra=1367.): True for each value that is physically possible. ghi_limit_int_flag : Series Series of integers representing the flag numbers described in the - literature. [1]_ + literature. [1]_: + + * 0 the value is physically plausible + * 1 the value is missing + * 2 the value exceeds the rare value upper limit + * 3 the value is less than the lower limit, exceeds the extreme value upper limit, + or has a step change greater than the step change limit. Notes ----- From 74cac5a93d9ac2823f0caa0349e0e345c2825802 Mon Sep 17 00:00:00 2001 From: abhisheksparikh Date: Sat, 3 Jun 2023 22:16:02 -0700 Subject: [PATCH 40/40] Update pvanalytics/quality/irradiance.py Co-authored-by: Cliff Hansen --- pvanalytics/quality/irradiance.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pvanalytics/quality/irradiance.py b/pvanalytics/quality/irradiance.py index 389bf957c..b1def6364 100644 --- a/pvanalytics/quality/irradiance.py +++ b/pvanalytics/quality/irradiance.py @@ -798,9 +798,9 @@ def check_ghi_limits_pvlive(ghi, solar_zenith, dni_extra=1367.): Notes ----- - The upper limit for `ghi` is set to 0 when `solar_zenith` is greater + The upper limits for `ghi` are set to 0 at night when `solar_zenith` is greater than 90 degrees. Missing values of `ghi` and/or `solar_zenith` will result - in a `False` flag. Also, [1]_ mentions that the proposed limits are for + in a `False` plausible value flag. Also, [1]_ mentions that the proposed limits are for silicon sensors with a tilt of 25°. References