From d3b388cce8c53a9a30f7b10724020059d19febba Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Mon, 26 Jan 2026 10:20:53 -0700 Subject: [PATCH 01/12] Initial commit. Efficiency curve data for feed pump created --- .../surrogate_models/create_pump_surrogate.py | 6 ++++ src/wrd/surrogate_models/pump_curve_data.py | 34 +++++++++++++++++++ src/wrd/surrogate_models/wpd_project.json | 1 + 3 files changed, 41 insertions(+) create mode 100644 src/wrd/surrogate_models/create_pump_surrogate.py create mode 100644 src/wrd/surrogate_models/pump_curve_data.py create mode 100644 src/wrd/surrogate_models/wpd_project.json diff --git a/src/wrd/surrogate_models/create_pump_surrogate.py b/src/wrd/surrogate_models/create_pump_surrogate.py new file mode 100644 index 00000000..416d8098 --- /dev/null +++ b/src/wrd/surrogate_models/create_pump_surrogate.py @@ -0,0 +1,6 @@ + +# imports +# load data +# Train Surrogate +# Validate +# Save surrogate \ No newline at end of file diff --git a/src/wrd/surrogate_models/pump_curve_data.py b/src/wrd/surrogate_models/pump_curve_data.py new file mode 100644 index 00000000..04931ac1 --- /dev/null +++ b/src/wrd/surrogate_models/pump_curve_data.py @@ -0,0 +1,34 @@ +import pandas as pd +import json + +# Load the JSON file as a dictionary first +with open(r'C:\Users\rchurchi\flex_desal\src\wrd\surrogate_models\wpd_project.json', 'r') as f: + data = json.load(f) + +datasets = data['datasetColl'] + +# Convert specific datasets to DataFrames +pump_data = pd.DataFrame() +for dataset in datasets: + name = dataset['name'] + df = pd.DataFrame(dataset['data']) + try: + eff = int(name[:2]) # Extract first 2 characters and convert to int + df['efficiency'] = eff # add efficiency column with every value the same + pump_data = pd.concat([pump_data, df], ignore_index=True) + except: + pass +print(f"\nColumns before cleanup: {pump_data.columns.tolist()}") + +# Drop the 'value' column if it exists +if 'value' in pump_data.columns: + pump_data.drop(columns=['value'], inplace=True) + +# Rename columns +pump_data.rename(columns={'x': 'Flow (gpm)', 'y': 'Head (ft)'}, inplace=True) + +print(f"\nCombined pump data shape: {pump_data.shape}") +print(f"Columns after cleanup: {pump_data.columns.tolist()}") +print(pump_data.head()) +print(f"\nUnique efficiencies: {sorted(pump_data['efficiency'].unique())}") + diff --git a/src/wrd/surrogate_models/wpd_project.json b/src/wrd/surrogate_models/wpd_project.json new file mode 100644 index 00000000..63a460c1 --- /dev/null +++ b/src/wrd/surrogate_models/wpd_project.json @@ -0,0 +1 @@ +{"version":[4,2],"axesColl":[{"name":"XY","type":"XYAxes","isLogX":false,"isLogY":false,"noRotation":false,"calibrationPoints":[{"px":73.48341232227487,"py":336.9739336492891,"dx":"0","dy":"120","dz":null},{"px":247.7440758293839,"py":473.44312796208527,"dx":"1000","dy":"120","dz":null},{"px":160.61374407582937,"py":336.9739336492891,"dx":"0","dy":"120","dz":null},{"px":334.8744075829384,"py":472.39336492890993,"dx":"1000","dy":"0","dz":null}]}],"datasetColl":[{"name":"68 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":357,"y":284.75,"value":[-259627.2267399276,-23430.503413202317]},{"x":361,"y":271.5,"value":[-275210.2042481553,-25303.21520846471]},{"x":364.5,"y":259.5,"value":[-289232.30166717735,-26988.27708123804]},{"x":368,"y":247.5,"value":[-303254.39908619935,-28673.33895401137]},{"x":372,"y":233.875,"value":[-319194.6000707251,-30588.91756642952]},{"x":376,"y":220,"value":[-335372.9500394494,-32533.074056951507]},{"x":380,"y":205.875,"value":[-351789.4489923724,-34505.808425577336]},{"x":383.5,"y":193.5,"value":[-366168.76988769235,-36233.73711550642]},{"x":386.5,"y":182.66666666666666,"value":[-378709.37021224166,-37740.675025158635]},{"x":389.5,"y":171.5,"value":[-391567.5025157225,-39285.71677228264]},{"x":392.5,"y":160.16666666666666,"value":[-404584.40080866904,-40849.81043814254]},{"x":395.5,"y":149,"value":[-417442.5331121499,-42394.85218526653]},{"x":398.5,"y":137.66666666666666,"value":[-430459.43140509655,-43958.945851126424]},{"x":565.5,"y":348.90909090909093,"value":[-352855.9025760483,-34761.522527624766]},{"x":576.5,"y":346.09090909090907,"value":[-363683.4648258689,-36068.40485685968]},{"x":582.5,"y":344.5,"value":[-369640.58038022695,-36787.390464795244]}],"autoDetectionData":{"fgColor":[235,81,73],"bgColor":[255,255,255],"mask":[[109356,1],[110242,2],[111128,3],[112014,4],[112900,4],[113786,5],[114672,5],[114700,1],[115558,31],[116444,31],[117330,33],[118214,35],[119100,35],[119985,36],[120871,36],[121757,48],[122634,56],[123520,56],[124406,56],[125292,56],[126178,56],[127064,56],[127950,56],[128836,56],[129722,56],[130608,56],[131494,56],[132380,56],[133266,56],[134152,56],[135036,58],[135921,59],[136807,59],[137693,59],[138579,59],[139465,59],[140351,59],[141237,59],[142123,59],[143009,59],[143895,59],[144781,49],[145666,50],[146552,49],[147438,49],[148324,48],[149210,48],[150096,47],[150981,48],[151867,48],[152753,48],[153639,48],[154525,48],[155411,48],[156297,48],[157183,48],[158069,48],[158955,48],[159841,47],[160727,45],[161613,44],[162499,44],[163385,44],[164271,44],[165157,44],[166043,44],[166929,44],[167815,44],[168701,44],[169586,45],[170472,45],[171358,45],[172244,45],[173129,46],[174015,46],[174901,45],[175787,45],[176672,46],[177558,45],[178444,45],[179330,45],[180215,46],[181101,46],[181987,46],[182873,46],[183758,47],[184644,47],[185530,47],[186415,47],[187301,47],[188187,46],[189073,46],[189959,45],[190844,46],[191730,46],[192616,45],[193502,45],[194387,46],[195273,45],[196159,45],[197045,45],[197931,45],[198817,44],[199703,44],[200588,45],[201474,45],[202360,45],[203246,45],[204132,45],[205018,45],[205904,45],[206790,45],[207676,45],[208562,45],[209448,45],[210333,46],[211219,46],[212105,46],[212991,46],[213877,46],[214763,46],[215649,46],[216535,46],[217421,45],[218307,44],[219193,44],[220079,44],[220965,44],[221851,44],[222737,44],[223606,61],[224492,61],[225378,61],[226264,63],[227150,63],[228036,63],[228922,63],[229808,63],[230694,63],[231580,63],[232466,63],[233352,63],[234238,63],[235124,63],[236010,63],[236896,63],[237782,63],[238668,63],[239554,63],[240440,63],[241326,63],[242211,64],[243097,64],[243983,64],[244869,64],[245755,64],[246641,64],[247527,64],[248413,64],[249299,64],[250185,64],[251071,64],[251957,64],[252843,64],[253729,64],[254615,64],[255501,64],[256387,64],[257273,64],[258159,64],[259045,64],[259931,64],[260817,64],[261703,64],[262590,63],[263486,53],[264372,53],[265258,53],[266144,53],[267030,53],[267916,51],[268802,35],[269688,34],[300045,3],[300933,1],[301803,10],[301814,7],[302687,21],[303573,22],[304451,34],[305336,35],[306223,35],[307110,35],[307997,35],[308884,35],[309771,34],[310657,33],[311543,32],[312429,31],[313315,30],[314201,26],[315087,25],[315973,23],[316859,18],[317745,14],[318631,11],[319517,10],[320403,8]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":0,"imageWidth":886,"imageHeight":486}},{"name":"59 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":284.5,"y":277.3,"value":[-213054.46707825412,-17791.847045065882]},{"x":289,"y":266,"value":[-227150.01767794468,-19486.4119230882]},{"x":293,"y":255.375,"value":[-240232.4308520865,-21059.055998260286]},{"x":297,"y":244.25,"value":[-253791.1419946256,-22688.855829640048]},{"x":301,"y":233,"value":[-267468.9276292641,-24332.944600071733]},{"x":305,"y":221,"value":[-281861.1602164985,-26062.76700481493]},{"x":309,"y":209,"value":[-296253.3928037329,-27792.589409558128]},{"x":313,"y":196.875,"value":[-310764.6998830666,-29536.700753353245]},{"x":317,"y":183.875,"value":[-326109.52840709564,-31380.8346705118]},{"x":321,"y":170.875,"value":[-341454.3569311247,-33224.96858767035]},{"x":324.5,"y":159,"value":[-355357.37985804735,-34895.74152139176]},{"x":328,"y":147,"value":[-369379.47727706947,-36580.803394165094]},{"x":332,"y":133,"value":[-385676.90173789306,-38539.248823739]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[110188,13],[111074,13],[111960,13],[112846,13],[113730,15],[114616,15],[115502,15],[116388,15],[117274,15],[118160,25],[119046,25],[119932,25],[120818,25],[121703,26],[122589,26],[123475,26],[124361,26],[125247,26],[126132,27],[127017,28],[127902,29],[128788,27],[129674,27],[130560,27],[131446,27],[132332,23],[133218,22],[134104,22],[134989,22],[135875,22],[136760,23],[137646,23],[138531,24],[139417,24],[140302,25],[141188,25],[142073,25],[142959,24],[143844,24],[144729,24],[145614,25],[146500,25],[147386,25],[148272,25],[149157,26],[150043,26],[150929,26],[151814,27],[152700,27],[153586,27],[154472,22],[155358,21],[156244,21],[157130,21],[158016,21],[158902,21],[159788,21],[160669,26],[161555,26],[162441,26],[163327,26],[164213,26],[165099,26],[165985,25],[166871,25],[167757,25],[168643,24],[169528,25],[170414,24],[171300,23],[172185,24],[173071,24],[173957,23],[174843,23],[175729,22],[176615,21],[177501,21],[178386,22],[179272,22],[180158,22],[181043,23],[181929,22],[182815,22],[183701,22],[184586,23],[185472,23],[186358,23],[187243,24],[188129,24],[189014,25],[189899,26],[190784,27],[191670,27],[192555,28],[193441,28],[194326,29],[195212,29],[196098,29],[196983,30],[197869,30],[198755,30],[199640,23],[200526,23],[201409,25],[202295,24],[203181,24],[204067,24],[204953,23],[205839,23],[206725,23],[207611,23],[208497,23],[209383,23],[210265,27],[211150,28],[212036,28],[212922,28],[213808,28],[214694,28],[215580,28],[216466,28],[217352,28],[218238,28],[219124,28],[220010,25],[220896,24],[221782,23],[222668,23],[223554,23],[224440,23],[225326,23],[226212,23],[227098,23],[227984,23],[228870,23],[229756,23],[230642,23],[231526,25],[232412,25],[233298,25],[234182,27],[235068,26],[235954,26],[236840,26],[237726,26],[238612,26],[239497,27],[240382,28],[241267,29],[242152,30],[243036,32],[243920,34],[244804,33],[245688,33],[246574,33],[247460,33],[248346,33],[249232,33],[250118,31],[251004,30],[251890,30],[252776,30],[253672,20],[254559,19],[255445,19],[256332,18],[257218,10],[258105,8],[258991,5],[259878,2]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":1,"imageWidth":886,"imageHeight":486}},{"name":"75 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":464,"y":209.6875,"value":[-410340.38524302066,-41589.76515543158]},{"x":465,"y":191,"value":[-428882.2921482949,-43815.482607633254]},{"x":465,"y":229.25,"value":[-392445.4975659006,-39443.06725774594]},{"x":466.1666666666667,"y":176.83333333333334,"value":[-443241.0499787142,-45539.33694144714]},{"x":467.5,"y":243.66666666666666,"value":[-380562.91531817336,-38018.87894694058]},{"x":468,"y":162.5,"value":[-458252.08735621587,-47341.92390329007]},{"x":470,"y":148.55555555555554,"value":[-473016.0491477015,-49114.97656540589]},{"x":471.5,"y":254.9,"value":[-372823.1689738793,-37092.86387990037]},{"x":478.5,"y":265.6111111111111,"value":[-367801.7004058524,-36495.10801671851]},{"x":488.5,"y":273.95454545454544,"value":[-367256.48211563146,-36436.56805757967]},{"x":499.5,"y":278.8181818181818,"value":[-370766.37557825696,-36865.33013235117]},{"x":510.5,"y":281.5,"value":[-376354.66017570713,-37543.499143301626]},{"x":521.5,"y":282.8181818181818,"value":[-383241.9392324227,-38377.54748936393]},{"x":532.5,"y":283.3636363636364,"value":[-390865.3151493886,-39299.92745865628]},{"x":543.5,"y":282.77272727272725,"value":[-399571.1864490757,-40352.20687387518]},{"x":554.5,"y":281.90909090909093,"value":[-408536.85664061585,-41435.662156116436]},{"x":565.5,"y":280.5,"value":[-418022.1246158622,-42581.46917240244]},{"x":576.5,"y":278.8181818181818,"value":[-427767.19148296164,-43758.452055710804]},{"x":587.5,"y":276.77272727272725,"value":[-437858.65687253186,-44977.00276171567]},{"x":598.5,"y":274.45454545454544,"value":[-448209.9211539551,-46226.7293347429]},{"x":609.5,"y":271.95454545454544,"value":[-458734.38469661376,-47497.239819118375]},{"x":620.5,"y":269.22727272727275,"value":[-469475.3473158166,-48793.73019267916]},{"x":631.5,"y":266.27272727272725,"value":[-480432.8090115638,-50116.200455425256]},{"x":642.5,"y":263.1818181818182,"value":[-491520.1701532374,-51454.25865168253]},{"x":653.5,"y":259.8636363636364,"value":[-502824.03037145524,-52818.296737125114]},{"x":664.5,"y":256.5,"value":[-514171.190404982,-54187.53080040477]},{"x":675.5,"y":252.8181818181818,"value":[-525821.4491456707,-55593.13670854384]},{"x":686.5,"y":249.1818181818182,"value":[-537428.4080710505,-56993.54663884586]},{"x":697.5,"y":245.27272727272728,"value":[-549295.1658882834,-58425.13243617024]},{"x":708.5,"y":241.27272727272728,"value":[-561248.5233361339,-59867.11018916876]},{"x":714.5,"y":239.5,"value":[-567378.8381517275,-60606.87970845257]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[128043,4],[128929,10],[129815,15],[129837,1],[130701,23],[131587,23],[132473,23],[133359,23],[134245,23],[135131,23],[136017,23],[136905,23],[137790,24],[138676,24],[139559,27],[140445,27],[141331,26],[142217,26],[143103,25],[143989,25],[144875,24],[145761,24],[146647,24],[147533,23],[148418,23],[149304,23],[150190,23],[151076,23],[151962,23],[152848,23],[153734,23],[154620,23],[155506,23],[156392,23],[157278,22],[158164,22],[159050,22],[159936,22],[160822,22],[161708,22],[162594,23],[163480,23],[164366,23],[165252,23],[166138,23],[167024,23],[167911,22],[168797,22],[169683,22],[170569,22],[171455,22],[172341,22],[173227,22],[174113,22],[174999,22],[175884,23],[176770,22],[177656,22],[178542,22],[179427,22],[180313,22],[181199,22],[182085,22],[182971,21],[183857,21],[184743,21],[185629,21],[186513,22],[187399,21],[188285,21],[189171,21],[190057,21],[190943,21],[191829,21],[192716,20],[193601,21],[194487,21],[195373,21],[196259,21],[197145,21],[198031,21],[198917,21],[199803,21],[200689,21],[201575,21],[202460,21],[203346,21],[204232,22],[205118,23],[206004,23],[206890,23],[207776,24],[208662,24],[209549,23],[209797,8],[209807,12],[210435,23],[210682,10],[210693,12],[211322,22],[211558,8],[211567,25],[212209,21],[212420,59],[213095,21],[213304,61],[213981,21],[214188,63],[214867,21],[215072,65],[215753,21],[215954,69],[216639,21],[216838,71],[217525,22],[217722,71],[218411,22],[218603,76],[219297,23],[219487,78],[220183,28],[220370,81],[221069,28],[221253,84],[221955,28],[222136,87],[222841,28],[223020,89],[223727,28],[223902,93],[224613,28],[224784,97],[225499,37],[225667,91],[226385,37],[226553,89],[227271,39],[227439,88],[228157,40],[228325,83],[229046,38],[229212,78],[229933,38],[230088,84],[230820,38],[230964,93],[231706,40],[231850,91],[232593,41],[232736,90],[233480,41],[233622,88],[234366,43],[234506,88],[235253,44],[235386,92],[236140,45],[236264,98],[237027,49],[237142,104],[237914,50],[238021,107],[238801,51],[238900,112],[239688,52],[239779,117],[240575,53],[240651,129],[241462,53],[241534,130],[242350,52],[242417,132],[243238,51],[243301,132],[244126,51],[244184,133],[245015,49],[245067,134],[245908,177],[246795,174],[247683,170],[248571,165],[249459,143],[250346,142],[251234,140],[252121,115],[252245,15],[253009,106],[253132,14],[253897,97],[254019,13],[254785,84],[254906,12],[255676,73],[255793,11],[256562,66],[256680,10],[257450,57],[257567,9],[258336,53],[258454,8],[259222,53],[259341,7],[260108,36],[260228,6],[260994,34],[261115,5],[261880,31],[262002,4],[262766,28],[262889,3],[263652,24],[263776,2],[264539,14],[264663,1],[265425,13],[266311,11],[267197,9],[268083,7],[268969,5],[269855,2]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":2,"imageWidth":886,"imageHeight":486}},{"name":"80 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":538,"y":163.5,"value":[-509118.4149691528,-53494.0868666562]},{"x":542,"y":174.125,"value":[-501958.1644864088,-52637.611303002006]},{"x":549,"y":185.9375,"value":[-495887.5173379956,-51913.95401017377]},{"x":558.6,"y":196,"value":[-493408.6159536771,-51623.09663031573]},{"x":569.5,"y":202.6818181818182,"value":[-495112.48977030633,-51835.06748521079]},{"x":580.5,"y":206.6818181818182,"value":[-499445.07972379995,-52362.55313888647]},{"x":591.5,"y":209.22727272727272,"value":[-505163.26376717666,-53056.310083348115]},{"x":602.5,"y":210.36363636363637,"value":[-512223.74208512757,-53911.14234075866]},{"x":613.5,"y":210.5,"value":[-520236.8163398731,-54880.286110584566]},{"x":624.5,"y":209.8181818181818,"value":[-529029.287270178,-55942.957481477584]},{"x":635.5,"y":208.63636363636363,"value":[-538298.0561688801,-57062.784608578266]},{"x":646.5,"y":207.04545454545453,"value":[-547956.5234053618,-58229.37553621252]},{"x":657.5,"y":205,"value":[-558047.9887949319,-59447.92624221738]},{"x":667.5,"y":202.88888888888889,"value":[-567461.7280257457,-60584.461185602704]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[137865,4],[138748,7],[139631,2],[139634,7],[139643,5],[140517,18],[141403,18],[142290,17],[143176,17],[144062,17],[144948,17],[145835,16],[146721,16],[147607,12],[148494,11],[149380,12],[150267,11],[151153,12],[152040,11],[152926,12],[153813,11],[154699,11],[155586,11],[156472,11],[157359,11],[158245,11],[159132,10],[160018,10],[160904,10],[161791,9],[162677,9],[163564,10],[164450,16],[165337,15],[166224,15],[167112,14],[167999,17],[168886,16],[169775,13],[170662,21],[171548,28],[172434,30],[172504,17],[173320,39],[173390,16],[173410,9],[174206,40],[174273,17],[174291,14],[174318,22],[175092,44],[175157,17],[175175,16],[175200,25],[175978,47],[176038,39],[176083,26],[176866,97],[176965,28],[177754,123],[178641,120],[179529,22],[179552,93],[180417,22],[180441,88],[181305,107],[182195,102],[183082,99],[183969,97],[184856,93],[185743,88],[186631,83],[187518,78],[188404,75],[189290,71],[190176,69],[191062,65],[191948,57],[192834,55],[193720,39],[194606,18],[194633,5]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":3,"imageWidth":886,"imageHeight":486}},{"name":"83 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":572.5,"y":171.0909090909091,"value":[-527426.6724192288,-55714.8352737878]},{"x":583.5,"y":179.5909090909091,"value":[-527472.5806571466,-55727.91912159437]},{"x":594.5,"y":184.36363636363637,"value":[-531069.0737503899,-56167.07315204]},{"x":605.5,"y":187.8181818181818,"value":[-535921.2614875897,-56756.910539760414]},{"x":616.5,"y":189.5,"value":[-542462.1420218344,-57549.391063126226]},{"x":627.5,"y":190.0909090909091,"value":[-550042.2181234915,-58466.57505458151]},{"x":636.5,"y":190,"value":[-556791.2507819318,-59282.65658571325]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[142320,9],[143206,9],[144092,9],[144978,10],[145864,10],[146750,14],[147636,15],[148522,17],[149408,20],[150296,19],[151182,19],[152068,23],[152954,23],[153840,23],[154726,23],[155612,23],[156501,20],[157392,16],[158278,24],[159164,24],[160050,29],[160936,50],[161828,46],[162716,49],[163601,50],[164486,51],[164552,1],[165371,61],[165434,6],[166257,69],[167142,70],[168028,70],[168914,70],[169800,70],[170686,69],[171572,16],[171603,35]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":4,"imageWidth":886,"imageHeight":486}},{"name":"Head, 100% Speed","axesName":"XY","colorRGB":[25,28,238,255],"metadataKeys":[],"data":[{"x":323.625,"y":130.25,"value":[-382096.7764965211,-38103.866572385945]},{"x":333.6111111111111,"y":131,"value":[-388774.7513757222,-38912.1002293615]},{"x":344.5,"y":131.86363636363637,"value":[-396012.77632592345,-39788.16156891223]},{"x":355.5,"y":132.6818181818182,"value":[-403376.3533510363,-40679.36567118222]},{"x":366.5,"y":133.72727272727272,"value":[-410523.43129960494,-41544.5898842669]},{"x":377.3,"y":134.8,"value":[-417496.4752917033,-42388.792297861386]},{"x":388.5,"y":136,"value":[-424644.3879355068,-43254.25439908799]},{"x":399.8333333333333,"y":137.16666666666666,"value":[-431922.75648872677,-44135.46302592041]},{"x":410.1,"y":138.5,"value":[-438252.73736029456,-44902.1305991479]},{"x":421.5,"y":140,"value":[-445262.92529034463,-45751.20345943785]},{"x":432.5,"y":141.5,"value":[-451977.00508582476,-46564.46789415191]},{"x":443.5,"y":143.04545454545453,"value":[-458647.7850659961,-47372.5363510289]},{"x":454.5,"y":144.77272727272728,"value":[-465145.36578493204,-48159.820896557656]},{"x":465.25,"y":146.625,"value":[-471338.80442766246,-48910.43623704956]},{"x":476.5,"y":148.5909090909091,"value":[-477794.12870033307,-49692.822164918674]},{"x":487.5,"y":150.5,"value":[-484118.5101580337,-50459.32279909917]},{"x":498.9,"y":152.9,"value":[-490271.36174496857,-51205.51529821531]},{"x":509.5,"y":155.1818181818182,"value":[-495944.57658256666,-51893.60048855601]},{"x":520.5,"y":157.5909090909091,"value":[-501792.6600718699,-52602.945366528846]},{"x":531.5,"y":160.1818181818182,"value":[-507467.5442999378,-53291.50633315342]},{"x":540.5,"y":162.3,"value":[-512112.20593436813,-53855.06334140398]},{"x":559.1,"y":167.2,"value":[-521213.51410157466,-54960.02871984782]},{"x":568.375,"y":169.875,"value":[-525531.3273409884,-55484.55329217778]},{"x":580.5,"y":173.4090909090909,"value":[-531140.5445298755,-56166.008915615545]},{"x":591.5,"y":176.8181818181818,"value":[-536036.0320823842,-56761.04228117301]},{"x":602.3888888888889,"y":180.38888888888889,"value":[-540695.3124764141,-57327.65427398319]},{"x":613.5,"y":184.1818181818182,"value":[-545307.4094036953,-57888.757278243225]},{"x":623,"y":187.625,"value":[-549060.0165900851,-58345.61206451329]},{"x":637.5,"y":192.95454545454547,"value":[-554717.0331232816,-59034.43909024399]},{"x":648.5,"y":197.27272727272728,"value":[-558746.5243696132,-59525.55289906023]},{"x":658,"y":201.125,"value":[-562109.4332182235,-59935.64388479675]},{"x":670.5,"y":206.45454545454547,"value":[-566285.9090785704,-60445.42878264797]},{"x":681.5,"y":211.5,"value":[-569622.6032799606,-60853.406946071234]},{"x":692.5,"y":216.63636363636363,"value":[-572872.6978507331,-61250.99315382037]},{"x":703.5,"y":221.95454545454547,"value":[-575949.59316027,-61627.79545022124]},{"x":714.8333333333334,"y":227.61111111111111,"value":[-578950.902179094,-61995.756932926146]},{"x":720.5,"y":230.5,"value":[-580393.8236014275,-62172.809703829174]},{"x":550.0758293838862,"y":164.8127962085308,"value":[-516807.22891568416,-54425.06024096612]}],"autoDetectionData":{"fgColor":[0,0,255],"bgColor":[255,255,255],"mask":[[103982,19],[104868,21],[105754,25],[106639,29],[107525,32],[108411,46],[109297,53],[110183,58],[111069,67],[111955,88],[112841,90],[113725,102],[114614,99],[114760,23],[115497,137],[115644,25],[116383,138],[116530,25],[117269,138],[117409,32],[118155,172],[119021,1],[119041,174],[119927,176],[120814,176],[121701,176],[122587,17],[122605,160],[123473,9],[123493,161],[123730,1],[124359,9],[124382,160],[124615,2],[125245,9],[125270,162],[125500,3],[126159,161],[126385,4],[127050,157],[127270,5],[127952,143],[128155,6],[128844,138],[129040,7],[129733,136],[129925,8],[130642,115],[130810,9],[131529,133],[131695,10],[132417,142],[132580,11],[133304,142],[133465,12],[134225,113],[134350,13],[135112,35],[135149,76],[135235,14],[136001,29],[136039,75],[136120,15],[136887,28],[136927,73],[137005,16],[137780,16],[137814,72],[137890,17],[138702,70],[138775,18],[139590,68],[139660,19],[140479,65],[140545,37],[140590,13],[141367,103],[141473,17],[142256,121],[143144,120],[144031,18],[144062,89],[144919,16],[144951,6],[144971,67],[145806,15],[145857,68],[146694,13],[146743,69],[147582,9],[147637,62],[148470,6],[148523,63],[149358,4],[149409,64],[150295,65],[151183,64],[152069,65],[152955,66],[153841,67],[154728,67],[155615,68],[156502,70],[157389,71],[158276,74],[159162,76],[160050,77],[160948,66],[161835,67],[162736,62],[163622,62],[164508,65],[165394,73],[166288,67],[167178,65],[168066,64],[168952,67],[169838,67],[170724,69],[171610,70],[172496,72],[173396,63],[174285,62],[175175,59],[176062,59],[176950,62],[177837,65],[178725,64],[179611,65],[180497,66],[181383,74],[182287,56],[183174,55],[184060,56],[184946,57],[185832,59],[186729,49],[187616,49],[188503,50],[189390,50],[190277,50],[191169,45],[192058,44],[192946,46],[193833,48],[194725,44],[195612,44],[196498,45],[197384,46],[198270,47],[199160,44],[200050,41],[200940,39],[201827,39],[202714,39],[203600,40],[204487,40],[205374,40],[206262,39],[207149,39],[208037,38],[208924,38],[209812,37],[210703,34],[211592,35],[212479,38],[213366,37],[214253,36],[215141,34],[216027,34],[216915,32],[217802,31],[218689,30],[219576,29],[220463,28],[221350,17],[222237,16],[223124,14],[224011,13],[224898,12],[225785,11],[226672,9],[227560,7],[228450,3]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":5,"imageWidth":886,"imageHeight":486}}],"measurementColl":[]} \ No newline at end of file From 653671456326f979909a59f1b7dd114f3d091fb3 Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Mon, 26 Jan 2026 18:15:52 -0700 Subject: [PATCH 02/12] Extracted data from json into efficiency values to train surrogate and head curves that are boundaries on valid domain of surrogate --- .../RO_feed_pump_eff_curve_data.csv | 95 +++++++++++++++++++ .../RO_feed_pump_head_curves_data.csv | 72 ++++++++++++++ src/wrd/surrogate_models/pump_curve_data.py | 28 +++--- src/wrd/surrogate_models/wpd_project.json | 2 +- 4 files changed, 182 insertions(+), 15 deletions(-) create mode 100644 src/wrd/surrogate_models/RO_feed_pump_eff_curve_data.csv create mode 100644 src/wrd/surrogate_models/RO_feed_pump_head_curves_data.csv diff --git a/src/wrd/surrogate_models/RO_feed_pump_eff_curve_data.csv b/src/wrd/surrogate_models/RO_feed_pump_eff_curve_data.csv new file mode 100644 index 00000000..5a5e8123 --- /dev/null +++ b/src/wrd/surrogate_models/RO_feed_pump_eff_curve_data.csv @@ -0,0 +1,95 @@ +efficiency,Flow (gpm),Head (ft) +68,1626.3746966824795,165.89545470877724 +68,1649.1644393555705,177.54176096287034 +68,1669.099478525891,188.08950363932922 +68,1689.0345176962117,198.63724631578813 +68,1711.8187351367167,210.61329845061422 +68,1734.5992690888322,222.80918117259571 +68,1757.376119552556,235.2248944817325 +68,1777.3056334902901,246.10238303892442 +68,1794.3847413283754,255.62483900013424 +68,1811.4589378486069,265.4404024108845 +68,1828.530678709911,275.40251954640496 +68,1845.604875230142,285.2180829571553 +68,1862.6766160914465,295.1802000926757 +68,2825.4114476987393,109.23316985975765 +68,2888.5785855226413,111.69829423582826 +68,2923.032596478669,113.09014385637937 +59,1209.6623917433624,172.53186313667 +59,1235.353986570626,182.46290145280895 +59,1258.1824058718196,191.80098654177098 +59,1281.0034581962318,201.57873280504367 +59,1303.8226687764486,211.466394361894 +59,1326.6308288914936,222.01354768021042 +59,1349.4389890065386,232.56070099852678 +59,1372.2453073773881,243.21776961042087 +59,1395.0387335388705,254.6442452773586 +59,1417.8321597003528,266.0707209442964 +59,1437.7690406148683,276.50854832717766 +59,1457.7040797851887,287.0562910036365 +59,1480.4827719931081,299.36208901919565 +75,2240.116611464256,231.77346585967223 +75,2245.5875125965026,248.2046235332491 +75,2246.151086320275,214.57054369848166 +75,2252.082730458722,260.66031496971937 +75,2260.729105541094,201.89069971514436 +75,2262.4063205883135,273.26177432010314 +75,2273.6933475703104,285.5210785266422 +75,2283.8795845105788,192.0082638004909 +75,2324.26109475044,182.58149340792914 +75,2381.8464454191026,175.23313796264208 +75,2445.1267667953725,170.9434679333939 +75,2508.3749413638693,168.57231939204684 +75,2571.603024177508,167.40024678063807 +75,2634.819721663394,166.9076505295276 +75,2698.0196760202307,167.41428422003236 +75,2761.2156120260966,168.16073309652467 +75,2824.403511330019,169.3868123449924 +75,2887.587392282969,170.85270677944771 +75,2950.7659154346243,172.6383547952199 +75,3013.9404202353076,174.66381799697973 +75,3077.1122461353434,176.84915798939798 +75,3140.2807234095694,179.23434397013926 +75,3203.4458520579856,181.8193759392036 +75,3266.608971530916,184.52431550126178 +75,3329.7687423780367,187.42910105164296 +75,3392.9278434999956,190.37385579968878 +75,3456.0822565458207,193.59839493138685 +75,3519.2373393168077,196.78296486542027 +75,3582.3884037368234,200.2073499854414 +75,3645.5381287065147,203.71167350079168 +75,3679.989460761895,205.2633999120013 +80,2664.6579868033277,272.2999418315307 +80,2687.7995026177286,262.9524270122886 +80,2728.197240670333,252.55718075520352 +80,2783.509423216771,243.69768394586484 +80,2846.2419094105735,237.8093638816608 +80,2909.509506008767,234.27910860804016 +80,2972.755671401778,232.02786765968696 +80,3035.9810753147685,231.01567183893658 +80,3099.191745274197,230.8827983668076 +80,3162.39036018071,231.46937045264156 +80,3225.581608110442,232.49560371278622 +80,3288.7668285137165,233.8815597519123 +80,3351.9453516653716,235.6672077676845 +80,3409.376665546788,237.51176778525723 +83,2863.015176091373,265.58442010970816 +83,2926.3490754805985,258.09721426729135 +83,2989.6280574065445,253.88748263337234 +83,3052.8876173027943,250.836857731727 +83,3116.1210579177286,249.34503153900135 +83,3179.338425128776,248.81246609022628 +83,3231.0532626834956,248.8817960389904 +48,864.8539902832097,174.62502751560012 +48,890.5334295987839,185.28150676935167 +48,913.3415897138291,195.82866008766806 +48,936.138699363702,207.03530516745045 +48,958.9413342461607,217.91220436649988 +48,981.7310769192525,229.55851062059295 +48,1004.5189778481488,241.31473216826376 +48,1024.4497196153463,252.11894386307054 +48,1041.5337387712862,261.3482923747399 +48,1058.6079352915172,271.16385578549017 +48,1075.6821318117486,280.9794191962404 +48,1092.7563283319798,290.7949826069907 +48,1112.6735639750784,302.4052397880337 diff --git a/src/wrd/surrogate_models/RO_feed_pump_head_curves_data.csv b/src/wrd/surrogate_models/RO_feed_pump_head_curves_data.csv new file mode 100644 index 00000000..59211137 --- /dev/null +++ b/src/wrd/surrogate_models/RO_feed_pump_head_curves_data.csv @@ -0,0 +1,72 @@ +Flow (gpm),Head 100% Speed (ft),MCSF (ft),Head Min (ft) +1432.3174777966728,301.79009722679143,, +1489.7111382412065,301.11883467353476,, +1552.294052482176,300.3465850072481,, +1615.5147683190332,299.61417357015,, +1678.7388327817005,298.6819161447289,, +1740.8140507015748,297.72591294396597,, +1805.1896406076823,296.65752450322816,, +1870.3309049672641,295.6182896452731,, +1929.345300303694,294.43375835991844,, +1994.87455877376,293.10133747133716,, +2058.105320488047,291.76938806926995,, +2121.3367519274952,290.3974694695381,, +2184.570862267591,288.8656740791479,, +2246.37025387952,287.22425807425117,, +2311.044440749079,285.48232971705045,, +2374.281229989823,283.7906575360018,, +2439.8237490180954,281.6668465336613,, +2500.7675332493877,279.64789841827684,, +2564.0116894669127,277.5165650629175,, +2627.258524585086,275.2253549168996,, +2679.005910782676,273.3521818591638,, +2785.95820629889,269.0215782280178,, +2839.2940131493124,266.65845835191215,, +2909.0192671902264,263.536561298533,, +2972.2781573613142,260.52590559455234,, +3034.900957456373,257.3732681562402,, +3098.803974405433,254.02496381461552,, +3153.4440040362188,250.98609928681384,, +3236.8430367084716,246.28261947450582,, +3300.1153213827984,242.47257981723294,, +3354.761378540041,239.07399251044978,, +3426.667927433395,234.37287013071182,, +3489.950927710313,229.9233233108052,, +3553.2352674375543,225.39383809556938,, +3616.522286065444,220.70447608967507,, +3681.729704388244,215.71717270684928,, +3714.334306516527,213.17022875188357,, +2734.0679661372315,271.1313368094343,, +1086.1088596162792,,173.11410969092472, +1117.5295067205022,,184.06984536417028, +1146.0794885389275,,194.87961667078804, +1171.7714517150303,,204.78867192821141, +1194.6035545046145,,213.90692643001807, +1217.430132061613,,223.35492681255778, +1240.251184386025,,233.13267307583044, +1263.0685532220468,,243.13024992625847, +1285.8877638022636,,253.01791148310886, +1308.6996074056992,,263.3452342142699, +1331.5004005439628,,274.332048706897, +1354.3011936822265,,285.318863199524, +1371.4330981872447,,291.69041407817394, +1388.3631964088693,,302.7919941980965, +856.5545026040731,,,169.95789038054585 +905.0583849860736,,,169.41787279240717 +977.8008857567354,,,169.40295125378753 +1054.033960740202,,,167.79710947853286 +1161.4157475921313,,,167.77508244533246 +1300.0084193901052,,,165.62638088410677 +1400.480112762233,,,164.54563515837123 +1497.5056412626857,,,162.40546019064243 +1618.778670020026,,,160.26031137670714 +1798.9740125884248,,,155.98280363908185 +2003.4346191501634,,,150.6401822637988 +2197.5478492286506,,,142.64934305826165 +2402.0795107361964,,,133.06616251717332 +2509.567880006838,,,126.68329673526512 +2630.9386093146636,,,118.70737906834768 +2734.989695581856,,,110.73501414872055 +2818.221682727383,,,104.8871921087445 +1899.4723515652302,,,153.31184822616933 +2100.486793255294,,,146.9097976088931 diff --git a/src/wrd/surrogate_models/pump_curve_data.py b/src/wrd/surrogate_models/pump_curve_data.py index 04931ac1..4867d32a 100644 --- a/src/wrd/surrogate_models/pump_curve_data.py +++ b/src/wrd/surrogate_models/pump_curve_data.py @@ -8,27 +8,27 @@ datasets = data['datasetColl'] # Convert specific datasets to DataFrames -pump_data = pd.DataFrame() +eff_data = pd.DataFrame() +head_data = pd.DataFrame() for dataset in datasets: name = dataset['name'] df = pd.DataFrame(dataset['data']) try: eff = int(name[:2]) # Extract first 2 characters and convert to int df['efficiency'] = eff # add efficiency column with every value the same - pump_data = pd.concat([pump_data, df], ignore_index=True) + df['Flow (gpm)'] = df['value'].apply(lambda x: x[0]) + df['Head (ft)'] = df['value'].apply(lambda x: x[1]) + df.drop(columns=['x','y','value'], inplace=True) + eff_data = pd.concat([eff_data, df], ignore_index=True) except: - pass -print(f"\nColumns before cleanup: {pump_data.columns.tolist()}") + df['Flow (gpm)'] = df['value'].apply(lambda x: x[0]) + df[name+' (ft)'] = df['value'].apply(lambda x: x[1]) + df.drop(columns=['x','y','value'], inplace=True) + head_data = pd.concat([head_data, df], ignore_index=True) -# Drop the 'value' column if it exists -if 'value' in pump_data.columns: - pump_data.drop(columns=['value'], inplace=True) -# Rename columns -pump_data.rename(columns={'x': 'Flow (gpm)', 'y': 'Head (ft)'}, inplace=True) - -print(f"\nCombined pump data shape: {pump_data.shape}") -print(f"Columns after cleanup: {pump_data.columns.tolist()}") -print(pump_data.head()) -print(f"\nUnique efficiencies: {sorted(pump_data['efficiency'].unique())}") +print(eff_data.head()) +eff_data.to_csv(r'C:\Users\rchurchi\flex_desal\src\wrd\surrogate_models\RO_feed_pump_eff_curve_data.csv', index=False) +print(head_data.head()) +head_data.to_csv(r'C:\Users\rchurchi\flex_desal\src\wrd\surrogate_models\RO_feed_pump_head_curves_data.csv', index=False) \ No newline at end of file diff --git a/src/wrd/surrogate_models/wpd_project.json b/src/wrd/surrogate_models/wpd_project.json index 63a460c1..7847232d 100644 --- a/src/wrd/surrogate_models/wpd_project.json +++ b/src/wrd/surrogate_models/wpd_project.json @@ -1 +1 @@ -{"version":[4,2],"axesColl":[{"name":"XY","type":"XYAxes","isLogX":false,"isLogY":false,"noRotation":false,"calibrationPoints":[{"px":73.48341232227487,"py":336.9739336492891,"dx":"0","dy":"120","dz":null},{"px":247.7440758293839,"py":473.44312796208527,"dx":"1000","dy":"120","dz":null},{"px":160.61374407582937,"py":336.9739336492891,"dx":"0","dy":"120","dz":null},{"px":334.8744075829384,"py":472.39336492890993,"dx":"1000","dy":"0","dz":null}]}],"datasetColl":[{"name":"68 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":357,"y":284.75,"value":[-259627.2267399276,-23430.503413202317]},{"x":361,"y":271.5,"value":[-275210.2042481553,-25303.21520846471]},{"x":364.5,"y":259.5,"value":[-289232.30166717735,-26988.27708123804]},{"x":368,"y":247.5,"value":[-303254.39908619935,-28673.33895401137]},{"x":372,"y":233.875,"value":[-319194.6000707251,-30588.91756642952]},{"x":376,"y":220,"value":[-335372.9500394494,-32533.074056951507]},{"x":380,"y":205.875,"value":[-351789.4489923724,-34505.808425577336]},{"x":383.5,"y":193.5,"value":[-366168.76988769235,-36233.73711550642]},{"x":386.5,"y":182.66666666666666,"value":[-378709.37021224166,-37740.675025158635]},{"x":389.5,"y":171.5,"value":[-391567.5025157225,-39285.71677228264]},{"x":392.5,"y":160.16666666666666,"value":[-404584.40080866904,-40849.81043814254]},{"x":395.5,"y":149,"value":[-417442.5331121499,-42394.85218526653]},{"x":398.5,"y":137.66666666666666,"value":[-430459.43140509655,-43958.945851126424]},{"x":565.5,"y":348.90909090909093,"value":[-352855.9025760483,-34761.522527624766]},{"x":576.5,"y":346.09090909090907,"value":[-363683.4648258689,-36068.40485685968]},{"x":582.5,"y":344.5,"value":[-369640.58038022695,-36787.390464795244]}],"autoDetectionData":{"fgColor":[235,81,73],"bgColor":[255,255,255],"mask":[[109356,1],[110242,2],[111128,3],[112014,4],[112900,4],[113786,5],[114672,5],[114700,1],[115558,31],[116444,31],[117330,33],[118214,35],[119100,35],[119985,36],[120871,36],[121757,48],[122634,56],[123520,56],[124406,56],[125292,56],[126178,56],[127064,56],[127950,56],[128836,56],[129722,56],[130608,56],[131494,56],[132380,56],[133266,56],[134152,56],[135036,58],[135921,59],[136807,59],[137693,59],[138579,59],[139465,59],[140351,59],[141237,59],[142123,59],[143009,59],[143895,59],[144781,49],[145666,50],[146552,49],[147438,49],[148324,48],[149210,48],[150096,47],[150981,48],[151867,48],[152753,48],[153639,48],[154525,48],[155411,48],[156297,48],[157183,48],[158069,48],[158955,48],[159841,47],[160727,45],[161613,44],[162499,44],[163385,44],[164271,44],[165157,44],[166043,44],[166929,44],[167815,44],[168701,44],[169586,45],[170472,45],[171358,45],[172244,45],[173129,46],[174015,46],[174901,45],[175787,45],[176672,46],[177558,45],[178444,45],[179330,45],[180215,46],[181101,46],[181987,46],[182873,46],[183758,47],[184644,47],[185530,47],[186415,47],[187301,47],[188187,46],[189073,46],[189959,45],[190844,46],[191730,46],[192616,45],[193502,45],[194387,46],[195273,45],[196159,45],[197045,45],[197931,45],[198817,44],[199703,44],[200588,45],[201474,45],[202360,45],[203246,45],[204132,45],[205018,45],[205904,45],[206790,45],[207676,45],[208562,45],[209448,45],[210333,46],[211219,46],[212105,46],[212991,46],[213877,46],[214763,46],[215649,46],[216535,46],[217421,45],[218307,44],[219193,44],[220079,44],[220965,44],[221851,44],[222737,44],[223606,61],[224492,61],[225378,61],[226264,63],[227150,63],[228036,63],[228922,63],[229808,63],[230694,63],[231580,63],[232466,63],[233352,63],[234238,63],[235124,63],[236010,63],[236896,63],[237782,63],[238668,63],[239554,63],[240440,63],[241326,63],[242211,64],[243097,64],[243983,64],[244869,64],[245755,64],[246641,64],[247527,64],[248413,64],[249299,64],[250185,64],[251071,64],[251957,64],[252843,64],[253729,64],[254615,64],[255501,64],[256387,64],[257273,64],[258159,64],[259045,64],[259931,64],[260817,64],[261703,64],[262590,63],[263486,53],[264372,53],[265258,53],[266144,53],[267030,53],[267916,51],[268802,35],[269688,34],[300045,3],[300933,1],[301803,10],[301814,7],[302687,21],[303573,22],[304451,34],[305336,35],[306223,35],[307110,35],[307997,35],[308884,35],[309771,34],[310657,33],[311543,32],[312429,31],[313315,30],[314201,26],[315087,25],[315973,23],[316859,18],[317745,14],[318631,11],[319517,10],[320403,8]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":0,"imageWidth":886,"imageHeight":486}},{"name":"59 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":284.5,"y":277.3,"value":[-213054.46707825412,-17791.847045065882]},{"x":289,"y":266,"value":[-227150.01767794468,-19486.4119230882]},{"x":293,"y":255.375,"value":[-240232.4308520865,-21059.055998260286]},{"x":297,"y":244.25,"value":[-253791.1419946256,-22688.855829640048]},{"x":301,"y":233,"value":[-267468.9276292641,-24332.944600071733]},{"x":305,"y":221,"value":[-281861.1602164985,-26062.76700481493]},{"x":309,"y":209,"value":[-296253.3928037329,-27792.589409558128]},{"x":313,"y":196.875,"value":[-310764.6998830666,-29536.700753353245]},{"x":317,"y":183.875,"value":[-326109.52840709564,-31380.8346705118]},{"x":321,"y":170.875,"value":[-341454.3569311247,-33224.96858767035]},{"x":324.5,"y":159,"value":[-355357.37985804735,-34895.74152139176]},{"x":328,"y":147,"value":[-369379.47727706947,-36580.803394165094]},{"x":332,"y":133,"value":[-385676.90173789306,-38539.248823739]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[110188,13],[111074,13],[111960,13],[112846,13],[113730,15],[114616,15],[115502,15],[116388,15],[117274,15],[118160,25],[119046,25],[119932,25],[120818,25],[121703,26],[122589,26],[123475,26],[124361,26],[125247,26],[126132,27],[127017,28],[127902,29],[128788,27],[129674,27],[130560,27],[131446,27],[132332,23],[133218,22],[134104,22],[134989,22],[135875,22],[136760,23],[137646,23],[138531,24],[139417,24],[140302,25],[141188,25],[142073,25],[142959,24],[143844,24],[144729,24],[145614,25],[146500,25],[147386,25],[148272,25],[149157,26],[150043,26],[150929,26],[151814,27],[152700,27],[153586,27],[154472,22],[155358,21],[156244,21],[157130,21],[158016,21],[158902,21],[159788,21],[160669,26],[161555,26],[162441,26],[163327,26],[164213,26],[165099,26],[165985,25],[166871,25],[167757,25],[168643,24],[169528,25],[170414,24],[171300,23],[172185,24],[173071,24],[173957,23],[174843,23],[175729,22],[176615,21],[177501,21],[178386,22],[179272,22],[180158,22],[181043,23],[181929,22],[182815,22],[183701,22],[184586,23],[185472,23],[186358,23],[187243,24],[188129,24],[189014,25],[189899,26],[190784,27],[191670,27],[192555,28],[193441,28],[194326,29],[195212,29],[196098,29],[196983,30],[197869,30],[198755,30],[199640,23],[200526,23],[201409,25],[202295,24],[203181,24],[204067,24],[204953,23],[205839,23],[206725,23],[207611,23],[208497,23],[209383,23],[210265,27],[211150,28],[212036,28],[212922,28],[213808,28],[214694,28],[215580,28],[216466,28],[217352,28],[218238,28],[219124,28],[220010,25],[220896,24],[221782,23],[222668,23],[223554,23],[224440,23],[225326,23],[226212,23],[227098,23],[227984,23],[228870,23],[229756,23],[230642,23],[231526,25],[232412,25],[233298,25],[234182,27],[235068,26],[235954,26],[236840,26],[237726,26],[238612,26],[239497,27],[240382,28],[241267,29],[242152,30],[243036,32],[243920,34],[244804,33],[245688,33],[246574,33],[247460,33],[248346,33],[249232,33],[250118,31],[251004,30],[251890,30],[252776,30],[253672,20],[254559,19],[255445,19],[256332,18],[257218,10],[258105,8],[258991,5],[259878,2]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":1,"imageWidth":886,"imageHeight":486}},{"name":"75 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":464,"y":209.6875,"value":[-410340.38524302066,-41589.76515543158]},{"x":465,"y":191,"value":[-428882.2921482949,-43815.482607633254]},{"x":465,"y":229.25,"value":[-392445.4975659006,-39443.06725774594]},{"x":466.1666666666667,"y":176.83333333333334,"value":[-443241.0499787142,-45539.33694144714]},{"x":467.5,"y":243.66666666666666,"value":[-380562.91531817336,-38018.87894694058]},{"x":468,"y":162.5,"value":[-458252.08735621587,-47341.92390329007]},{"x":470,"y":148.55555555555554,"value":[-473016.0491477015,-49114.97656540589]},{"x":471.5,"y":254.9,"value":[-372823.1689738793,-37092.86387990037]},{"x":478.5,"y":265.6111111111111,"value":[-367801.7004058524,-36495.10801671851]},{"x":488.5,"y":273.95454545454544,"value":[-367256.48211563146,-36436.56805757967]},{"x":499.5,"y":278.8181818181818,"value":[-370766.37557825696,-36865.33013235117]},{"x":510.5,"y":281.5,"value":[-376354.66017570713,-37543.499143301626]},{"x":521.5,"y":282.8181818181818,"value":[-383241.9392324227,-38377.54748936393]},{"x":532.5,"y":283.3636363636364,"value":[-390865.3151493886,-39299.92745865628]},{"x":543.5,"y":282.77272727272725,"value":[-399571.1864490757,-40352.20687387518]},{"x":554.5,"y":281.90909090909093,"value":[-408536.85664061585,-41435.662156116436]},{"x":565.5,"y":280.5,"value":[-418022.1246158622,-42581.46917240244]},{"x":576.5,"y":278.8181818181818,"value":[-427767.19148296164,-43758.452055710804]},{"x":587.5,"y":276.77272727272725,"value":[-437858.65687253186,-44977.00276171567]},{"x":598.5,"y":274.45454545454544,"value":[-448209.9211539551,-46226.7293347429]},{"x":609.5,"y":271.95454545454544,"value":[-458734.38469661376,-47497.239819118375]},{"x":620.5,"y":269.22727272727275,"value":[-469475.3473158166,-48793.73019267916]},{"x":631.5,"y":266.27272727272725,"value":[-480432.8090115638,-50116.200455425256]},{"x":642.5,"y":263.1818181818182,"value":[-491520.1701532374,-51454.25865168253]},{"x":653.5,"y":259.8636363636364,"value":[-502824.03037145524,-52818.296737125114]},{"x":664.5,"y":256.5,"value":[-514171.190404982,-54187.53080040477]},{"x":675.5,"y":252.8181818181818,"value":[-525821.4491456707,-55593.13670854384]},{"x":686.5,"y":249.1818181818182,"value":[-537428.4080710505,-56993.54663884586]},{"x":697.5,"y":245.27272727272728,"value":[-549295.1658882834,-58425.13243617024]},{"x":708.5,"y":241.27272727272728,"value":[-561248.5233361339,-59867.11018916876]},{"x":714.5,"y":239.5,"value":[-567378.8381517275,-60606.87970845257]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[128043,4],[128929,10],[129815,15],[129837,1],[130701,23],[131587,23],[132473,23],[133359,23],[134245,23],[135131,23],[136017,23],[136905,23],[137790,24],[138676,24],[139559,27],[140445,27],[141331,26],[142217,26],[143103,25],[143989,25],[144875,24],[145761,24],[146647,24],[147533,23],[148418,23],[149304,23],[150190,23],[151076,23],[151962,23],[152848,23],[153734,23],[154620,23],[155506,23],[156392,23],[157278,22],[158164,22],[159050,22],[159936,22],[160822,22],[161708,22],[162594,23],[163480,23],[164366,23],[165252,23],[166138,23],[167024,23],[167911,22],[168797,22],[169683,22],[170569,22],[171455,22],[172341,22],[173227,22],[174113,22],[174999,22],[175884,23],[176770,22],[177656,22],[178542,22],[179427,22],[180313,22],[181199,22],[182085,22],[182971,21],[183857,21],[184743,21],[185629,21],[186513,22],[187399,21],[188285,21],[189171,21],[190057,21],[190943,21],[191829,21],[192716,20],[193601,21],[194487,21],[195373,21],[196259,21],[197145,21],[198031,21],[198917,21],[199803,21],[200689,21],[201575,21],[202460,21],[203346,21],[204232,22],[205118,23],[206004,23],[206890,23],[207776,24],[208662,24],[209549,23],[209797,8],[209807,12],[210435,23],[210682,10],[210693,12],[211322,22],[211558,8],[211567,25],[212209,21],[212420,59],[213095,21],[213304,61],[213981,21],[214188,63],[214867,21],[215072,65],[215753,21],[215954,69],[216639,21],[216838,71],[217525,22],[217722,71],[218411,22],[218603,76],[219297,23],[219487,78],[220183,28],[220370,81],[221069,28],[221253,84],[221955,28],[222136,87],[222841,28],[223020,89],[223727,28],[223902,93],[224613,28],[224784,97],[225499,37],[225667,91],[226385,37],[226553,89],[227271,39],[227439,88],[228157,40],[228325,83],[229046,38],[229212,78],[229933,38],[230088,84],[230820,38],[230964,93],[231706,40],[231850,91],[232593,41],[232736,90],[233480,41],[233622,88],[234366,43],[234506,88],[235253,44],[235386,92],[236140,45],[236264,98],[237027,49],[237142,104],[237914,50],[238021,107],[238801,51],[238900,112],[239688,52],[239779,117],[240575,53],[240651,129],[241462,53],[241534,130],[242350,52],[242417,132],[243238,51],[243301,132],[244126,51],[244184,133],[245015,49],[245067,134],[245908,177],[246795,174],[247683,170],[248571,165],[249459,143],[250346,142],[251234,140],[252121,115],[252245,15],[253009,106],[253132,14],[253897,97],[254019,13],[254785,84],[254906,12],[255676,73],[255793,11],[256562,66],[256680,10],[257450,57],[257567,9],[258336,53],[258454,8],[259222,53],[259341,7],[260108,36],[260228,6],[260994,34],[261115,5],[261880,31],[262002,4],[262766,28],[262889,3],[263652,24],[263776,2],[264539,14],[264663,1],[265425,13],[266311,11],[267197,9],[268083,7],[268969,5],[269855,2]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":2,"imageWidth":886,"imageHeight":486}},{"name":"80 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":538,"y":163.5,"value":[-509118.4149691528,-53494.0868666562]},{"x":542,"y":174.125,"value":[-501958.1644864088,-52637.611303002006]},{"x":549,"y":185.9375,"value":[-495887.5173379956,-51913.95401017377]},{"x":558.6,"y":196,"value":[-493408.6159536771,-51623.09663031573]},{"x":569.5,"y":202.6818181818182,"value":[-495112.48977030633,-51835.06748521079]},{"x":580.5,"y":206.6818181818182,"value":[-499445.07972379995,-52362.55313888647]},{"x":591.5,"y":209.22727272727272,"value":[-505163.26376717666,-53056.310083348115]},{"x":602.5,"y":210.36363636363637,"value":[-512223.74208512757,-53911.14234075866]},{"x":613.5,"y":210.5,"value":[-520236.8163398731,-54880.286110584566]},{"x":624.5,"y":209.8181818181818,"value":[-529029.287270178,-55942.957481477584]},{"x":635.5,"y":208.63636363636363,"value":[-538298.0561688801,-57062.784608578266]},{"x":646.5,"y":207.04545454545453,"value":[-547956.5234053618,-58229.37553621252]},{"x":657.5,"y":205,"value":[-558047.9887949319,-59447.92624221738]},{"x":667.5,"y":202.88888888888889,"value":[-567461.7280257457,-60584.461185602704]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[137865,4],[138748,7],[139631,2],[139634,7],[139643,5],[140517,18],[141403,18],[142290,17],[143176,17],[144062,17],[144948,17],[145835,16],[146721,16],[147607,12],[148494,11],[149380,12],[150267,11],[151153,12],[152040,11],[152926,12],[153813,11],[154699,11],[155586,11],[156472,11],[157359,11],[158245,11],[159132,10],[160018,10],[160904,10],[161791,9],[162677,9],[163564,10],[164450,16],[165337,15],[166224,15],[167112,14],[167999,17],[168886,16],[169775,13],[170662,21],[171548,28],[172434,30],[172504,17],[173320,39],[173390,16],[173410,9],[174206,40],[174273,17],[174291,14],[174318,22],[175092,44],[175157,17],[175175,16],[175200,25],[175978,47],[176038,39],[176083,26],[176866,97],[176965,28],[177754,123],[178641,120],[179529,22],[179552,93],[180417,22],[180441,88],[181305,107],[182195,102],[183082,99],[183969,97],[184856,93],[185743,88],[186631,83],[187518,78],[188404,75],[189290,71],[190176,69],[191062,65],[191948,57],[192834,55],[193720,39],[194606,18],[194633,5]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":3,"imageWidth":886,"imageHeight":486}},{"name":"83 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":572.5,"y":171.0909090909091,"value":[-527426.6724192288,-55714.8352737878]},{"x":583.5,"y":179.5909090909091,"value":[-527472.5806571466,-55727.91912159437]},{"x":594.5,"y":184.36363636363637,"value":[-531069.0737503899,-56167.07315204]},{"x":605.5,"y":187.8181818181818,"value":[-535921.2614875897,-56756.910539760414]},{"x":616.5,"y":189.5,"value":[-542462.1420218344,-57549.391063126226]},{"x":627.5,"y":190.0909090909091,"value":[-550042.2181234915,-58466.57505458151]},{"x":636.5,"y":190,"value":[-556791.2507819318,-59282.65658571325]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[142320,9],[143206,9],[144092,9],[144978,10],[145864,10],[146750,14],[147636,15],[148522,17],[149408,20],[150296,19],[151182,19],[152068,23],[152954,23],[153840,23],[154726,23],[155612,23],[156501,20],[157392,16],[158278,24],[159164,24],[160050,29],[160936,50],[161828,46],[162716,49],[163601,50],[164486,51],[164552,1],[165371,61],[165434,6],[166257,69],[167142,70],[168028,70],[168914,70],[169800,70],[170686,69],[171572,16],[171603,35]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":4,"imageWidth":886,"imageHeight":486}},{"name":"Head, 100% Speed","axesName":"XY","colorRGB":[25,28,238,255],"metadataKeys":[],"data":[{"x":323.625,"y":130.25,"value":[-382096.7764965211,-38103.866572385945]},{"x":333.6111111111111,"y":131,"value":[-388774.7513757222,-38912.1002293615]},{"x":344.5,"y":131.86363636363637,"value":[-396012.77632592345,-39788.16156891223]},{"x":355.5,"y":132.6818181818182,"value":[-403376.3533510363,-40679.36567118222]},{"x":366.5,"y":133.72727272727272,"value":[-410523.43129960494,-41544.5898842669]},{"x":377.3,"y":134.8,"value":[-417496.4752917033,-42388.792297861386]},{"x":388.5,"y":136,"value":[-424644.3879355068,-43254.25439908799]},{"x":399.8333333333333,"y":137.16666666666666,"value":[-431922.75648872677,-44135.46302592041]},{"x":410.1,"y":138.5,"value":[-438252.73736029456,-44902.1305991479]},{"x":421.5,"y":140,"value":[-445262.92529034463,-45751.20345943785]},{"x":432.5,"y":141.5,"value":[-451977.00508582476,-46564.46789415191]},{"x":443.5,"y":143.04545454545453,"value":[-458647.7850659961,-47372.5363510289]},{"x":454.5,"y":144.77272727272728,"value":[-465145.36578493204,-48159.820896557656]},{"x":465.25,"y":146.625,"value":[-471338.80442766246,-48910.43623704956]},{"x":476.5,"y":148.5909090909091,"value":[-477794.12870033307,-49692.822164918674]},{"x":487.5,"y":150.5,"value":[-484118.5101580337,-50459.32279909917]},{"x":498.9,"y":152.9,"value":[-490271.36174496857,-51205.51529821531]},{"x":509.5,"y":155.1818181818182,"value":[-495944.57658256666,-51893.60048855601]},{"x":520.5,"y":157.5909090909091,"value":[-501792.6600718699,-52602.945366528846]},{"x":531.5,"y":160.1818181818182,"value":[-507467.5442999378,-53291.50633315342]},{"x":540.5,"y":162.3,"value":[-512112.20593436813,-53855.06334140398]},{"x":559.1,"y":167.2,"value":[-521213.51410157466,-54960.02871984782]},{"x":568.375,"y":169.875,"value":[-525531.3273409884,-55484.55329217778]},{"x":580.5,"y":173.4090909090909,"value":[-531140.5445298755,-56166.008915615545]},{"x":591.5,"y":176.8181818181818,"value":[-536036.0320823842,-56761.04228117301]},{"x":602.3888888888889,"y":180.38888888888889,"value":[-540695.3124764141,-57327.65427398319]},{"x":613.5,"y":184.1818181818182,"value":[-545307.4094036953,-57888.757278243225]},{"x":623,"y":187.625,"value":[-549060.0165900851,-58345.61206451329]},{"x":637.5,"y":192.95454545454547,"value":[-554717.0331232816,-59034.43909024399]},{"x":648.5,"y":197.27272727272728,"value":[-558746.5243696132,-59525.55289906023]},{"x":658,"y":201.125,"value":[-562109.4332182235,-59935.64388479675]},{"x":670.5,"y":206.45454545454547,"value":[-566285.9090785704,-60445.42878264797]},{"x":681.5,"y":211.5,"value":[-569622.6032799606,-60853.406946071234]},{"x":692.5,"y":216.63636363636363,"value":[-572872.6978507331,-61250.99315382037]},{"x":703.5,"y":221.95454545454547,"value":[-575949.59316027,-61627.79545022124]},{"x":714.8333333333334,"y":227.61111111111111,"value":[-578950.902179094,-61995.756932926146]},{"x":720.5,"y":230.5,"value":[-580393.8236014275,-62172.809703829174]},{"x":550.0758293838862,"y":164.8127962085308,"value":[-516807.22891568416,-54425.06024096612]}],"autoDetectionData":{"fgColor":[0,0,255],"bgColor":[255,255,255],"mask":[[103982,19],[104868,21],[105754,25],[106639,29],[107525,32],[108411,46],[109297,53],[110183,58],[111069,67],[111955,88],[112841,90],[113725,102],[114614,99],[114760,23],[115497,137],[115644,25],[116383,138],[116530,25],[117269,138],[117409,32],[118155,172],[119021,1],[119041,174],[119927,176],[120814,176],[121701,176],[122587,17],[122605,160],[123473,9],[123493,161],[123730,1],[124359,9],[124382,160],[124615,2],[125245,9],[125270,162],[125500,3],[126159,161],[126385,4],[127050,157],[127270,5],[127952,143],[128155,6],[128844,138],[129040,7],[129733,136],[129925,8],[130642,115],[130810,9],[131529,133],[131695,10],[132417,142],[132580,11],[133304,142],[133465,12],[134225,113],[134350,13],[135112,35],[135149,76],[135235,14],[136001,29],[136039,75],[136120,15],[136887,28],[136927,73],[137005,16],[137780,16],[137814,72],[137890,17],[138702,70],[138775,18],[139590,68],[139660,19],[140479,65],[140545,37],[140590,13],[141367,103],[141473,17],[142256,121],[143144,120],[144031,18],[144062,89],[144919,16],[144951,6],[144971,67],[145806,15],[145857,68],[146694,13],[146743,69],[147582,9],[147637,62],[148470,6],[148523,63],[149358,4],[149409,64],[150295,65],[151183,64],[152069,65],[152955,66],[153841,67],[154728,67],[155615,68],[156502,70],[157389,71],[158276,74],[159162,76],[160050,77],[160948,66],[161835,67],[162736,62],[163622,62],[164508,65],[165394,73],[166288,67],[167178,65],[168066,64],[168952,67],[169838,67],[170724,69],[171610,70],[172496,72],[173396,63],[174285,62],[175175,59],[176062,59],[176950,62],[177837,65],[178725,64],[179611,65],[180497,66],[181383,74],[182287,56],[183174,55],[184060,56],[184946,57],[185832,59],[186729,49],[187616,49],[188503,50],[189390,50],[190277,50],[191169,45],[192058,44],[192946,46],[193833,48],[194725,44],[195612,44],[196498,45],[197384,46],[198270,47],[199160,44],[200050,41],[200940,39],[201827,39],[202714,39],[203600,40],[204487,40],[205374,40],[206262,39],[207149,39],[208037,38],[208924,38],[209812,37],[210703,34],[211592,35],[212479,38],[213366,37],[214253,36],[215141,34],[216027,34],[216915,32],[217802,31],[218689,30],[219576,29],[220463,28],[221350,17],[222237,16],[223124,14],[224011,13],[224898,12],[225785,11],[226672,9],[227560,7],[228450,3]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":5,"imageWidth":886,"imageHeight":486}}],"measurementColl":[]} \ No newline at end of file +{"version":[4,2],"axesColl":[{"name":"XY","type":"XYAxes","isLogX":false,"isLogY":false,"noRotation":false,"calibrationPoints":[{"px":73.48341232227487,"py":473.44312796208527,"dx":"0","dy":"400","dz":null},{"px":856.6066350710901,"py":472.39336492890993,"dx":"4500","dy":"400","dz":null},{"px":74.53317535545024,"py":18.895734597156398,"dx":"0","dy":"400","dz":null},{"px":73.48341232227487,"py":428.30331753554503,"dx":"4500","dy":"40","dz":null}]}],"datasetColl":[{"name":"68 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":357,"y":284.75,"value":[1626.3746966824795,165.89545470877724]},{"x":361,"y":271.5,"value":[1649.1644393555705,177.54176096287034]},{"x":364.5,"y":259.5,"value":[1669.099478525891,188.08950363932922]},{"x":368,"y":247.5,"value":[1689.0345176962117,198.63724631578813]},{"x":372,"y":233.875,"value":[1711.8187351367167,210.61329845061422]},{"x":376,"y":220,"value":[1734.5992690888322,222.80918117259571]},{"x":380,"y":205.875,"value":[1757.376119552556,235.2248944817325]},{"x":383.5,"y":193.5,"value":[1777.3056334902901,246.10238303892442]},{"x":386.5,"y":182.66666666666666,"value":[1794.3847413283754,255.62483900013424]},{"x":389.5,"y":171.5,"value":[1811.4589378486069,265.4404024108845]},{"x":392.5,"y":160.16666666666666,"value":[1828.530678709911,275.40251954640496]},{"x":395.5,"y":149,"value":[1845.604875230142,285.2180829571553]},{"x":398.5,"y":137.66666666666666,"value":[1862.6766160914465,295.1802000926757]},{"x":565.5,"y":348.90909090909093,"value":[2825.4114476987393,109.23316985975765]},{"x":576.5,"y":346.09090909090907,"value":[2888.5785855226413,111.69829423582826]},{"x":582.5,"y":344.5,"value":[2923.032596478669,113.09014385637937]}],"autoDetectionData":{"fgColor":[235,81,73],"bgColor":[255,255,255],"mask":[[109356,1],[110242,2],[111128,3],[112014,4],[112900,4],[113786,5],[114672,5],[114700,1],[115558,31],[116444,31],[117330,33],[118214,35],[119100,35],[119985,36],[120871,36],[121757,48],[122634,56],[123520,56],[124406,56],[125292,56],[126178,56],[127064,56],[127950,56],[128836,56],[129722,56],[130608,56],[131494,56],[132380,56],[133266,56],[134152,56],[135036,58],[135921,59],[136807,59],[137693,59],[138579,59],[139465,59],[140351,59],[141237,59],[142123,59],[143009,59],[143895,59],[144781,49],[145666,50],[146552,49],[147438,49],[148324,48],[149210,48],[150096,47],[150981,48],[151867,48],[152753,48],[153639,48],[154525,48],[155411,48],[156297,48],[157183,48],[158069,48],[158955,48],[159841,47],[160727,45],[161613,44],[162499,44],[163385,44],[164271,44],[165157,44],[166043,44],[166929,44],[167815,44],[168701,44],[169586,45],[170472,45],[171358,45],[172244,45],[173129,46],[174015,46],[174901,45],[175787,45],[176672,46],[177558,45],[178444,45],[179330,45],[180215,46],[181101,46],[181987,46],[182873,46],[183758,47],[184644,47],[185530,47],[186415,47],[187301,47],[188187,46],[189073,46],[189959,45],[190844,46],[191730,46],[192616,45],[193502,45],[194387,46],[195273,45],[196159,45],[197045,45],[197931,45],[198817,44],[199703,44],[200588,45],[201474,45],[202360,45],[203246,45],[204132,45],[205018,45],[205904,45],[206790,45],[207676,45],[208562,45],[209448,45],[210333,46],[211219,46],[212105,46],[212991,46],[213877,46],[214763,46],[215649,46],[216535,46],[217421,45],[218307,44],[219193,44],[220079,44],[220965,44],[221851,44],[222737,44],[223606,61],[224492,61],[225378,61],[226264,63],[227150,63],[228036,63],[228922,63],[229808,63],[230694,63],[231580,63],[232466,63],[233352,63],[234238,63],[235124,63],[236010,63],[236896,63],[237782,63],[238668,63],[239554,63],[240440,63],[241326,63],[242211,64],[243097,64],[243983,64],[244869,64],[245755,64],[246641,64],[247527,64],[248413,64],[249299,64],[250185,64],[251071,64],[251957,64],[252843,64],[253729,64],[254615,64],[255501,64],[256387,64],[257273,64],[258159,64],[259045,64],[259931,64],[260817,64],[261703,64],[262590,63],[263486,53],[264372,53],[265258,53],[266144,53],[267030,53],[267916,51],[268802,35],[269688,34],[300045,3],[300933,1],[301803,10],[301814,7],[302687,21],[303573,22],[304451,34],[305336,35],[306223,35],[307110,35],[307997,35],[308884,35],[309771,34],[310657,33],[311543,32],[312429,31],[313315,30],[314201,26],[315087,25],[315973,23],[316859,18],[317745,14],[318631,11],[319517,10],[320403,8]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":0,"imageWidth":886,"imageHeight":486}},{"name":"59 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":284.5,"y":277.3,"value":[1209.6623917433624,172.53186313667]},{"x":289,"y":266,"value":[1235.353986570626,182.46290145280895]},{"x":293,"y":255.375,"value":[1258.1824058718196,191.80098654177098]},{"x":297,"y":244.25,"value":[1281.0034581962318,201.57873280504367]},{"x":301,"y":233,"value":[1303.8226687764486,211.466394361894]},{"x":305,"y":221,"value":[1326.6308288914936,222.01354768021042]},{"x":309,"y":209,"value":[1349.4389890065386,232.56070099852678]},{"x":313,"y":196.875,"value":[1372.2453073773881,243.21776961042087]},{"x":317,"y":183.875,"value":[1395.0387335388705,254.6442452773586]},{"x":321,"y":170.875,"value":[1417.8321597003528,266.0707209442964]},{"x":324.5,"y":159,"value":[1437.7690406148683,276.50854832717766]},{"x":328,"y":147,"value":[1457.7040797851887,287.0562910036365]},{"x":332,"y":133,"value":[1480.4827719931081,299.36208901919565]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[110188,13],[111074,13],[111960,13],[112846,13],[113730,15],[114616,15],[115502,15],[116388,15],[117274,15],[118160,25],[119046,25],[119932,25],[120818,25],[121703,26],[122589,26],[123475,26],[124361,26],[125247,26],[126132,27],[127017,28],[127902,29],[128788,27],[129674,27],[130560,27],[131446,27],[132332,23],[133218,22],[134104,22],[134989,22],[135875,22],[136760,23],[137646,23],[138531,24],[139417,24],[140302,25],[141188,25],[142073,25],[142959,24],[143844,24],[144729,24],[145614,25],[146500,25],[147386,25],[148272,25],[149157,26],[150043,26],[150929,26],[151814,27],[152700,27],[153586,27],[154472,22],[155358,21],[156244,21],[157130,21],[158016,21],[158902,21],[159788,21],[160669,26],[161555,26],[162441,26],[163327,26],[164213,26],[165099,26],[165985,25],[166871,25],[167757,25],[168643,24],[169528,25],[170414,24],[171300,23],[172185,24],[173071,24],[173957,23],[174843,23],[175729,22],[176615,21],[177501,21],[178386,22],[179272,22],[180158,22],[181043,23],[181929,22],[182815,22],[183701,22],[184586,23],[185472,23],[186358,23],[187243,24],[188129,24],[189014,25],[189899,26],[190784,27],[191670,27],[192555,28],[193441,28],[194326,29],[195212,29],[196098,29],[196983,30],[197869,30],[198755,30],[199640,23],[200526,23],[201409,25],[202295,24],[203181,24],[204067,24],[204953,23],[205839,23],[206725,23],[207611,23],[208497,23],[209383,23],[210265,27],[211150,28],[212036,28],[212922,28],[213808,28],[214694,28],[215580,28],[216466,28],[217352,28],[218238,28],[219124,28],[220010,25],[220896,24],[221782,23],[222668,23],[223554,23],[224440,23],[225326,23],[226212,23],[227098,23],[227984,23],[228870,23],[229756,23],[230642,23],[231526,25],[232412,25],[233298,25],[234182,27],[235068,26],[235954,26],[236840,26],[237726,26],[238612,26],[239497,27],[240382,28],[241267,29],[242152,30],[243036,32],[243920,34],[244804,33],[245688,33],[246574,33],[247460,33],[248346,33],[249232,33],[250118,31],[251004,30],[251890,30],[252776,30],[253672,20],[254559,19],[255445,19],[256332,18],[257218,10],[258105,8],[258991,5],[259878,2]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":1,"imageWidth":886,"imageHeight":486}},{"name":"75 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":464,"y":209.6875,"value":[2240.116611464256,231.77346585967223]},{"x":465,"y":191,"value":[2245.5875125965026,248.2046235332491]},{"x":465,"y":229.25,"value":[2246.151086320275,214.57054369848166]},{"x":466.1666666666667,"y":176.83333333333334,"value":[2252.082730458722,260.66031496971937]},{"x":467.5,"y":243.66666666666666,"value":[2260.729105541094,201.89069971514436]},{"x":468,"y":162.5,"value":[2262.4063205883135,273.26177432010314]},{"x":470,"y":148.55555555555554,"value":[2273.6933475703104,285.5210785266422]},{"x":471.5,"y":254.9,"value":[2283.8795845105788,192.0082638004909]},{"x":478.5,"y":265.6111111111111,"value":[2324.26109475044,182.58149340792914]},{"x":488.5,"y":273.95454545454544,"value":[2381.8464454191026,175.23313796264208]},{"x":499.5,"y":278.8181818181818,"value":[2445.1267667953725,170.9434679333939]},{"x":510.5,"y":281.5,"value":[2508.3749413638693,168.57231939204684]},{"x":521.5,"y":282.8181818181818,"value":[2571.603024177508,167.40024678063807]},{"x":532.5,"y":283.3636363636364,"value":[2634.819721663394,166.9076505295276]},{"x":543.5,"y":282.77272727272725,"value":[2698.0196760202307,167.41428422003236]},{"x":554.5,"y":281.90909090909093,"value":[2761.2156120260966,168.16073309652467]},{"x":565.5,"y":280.5,"value":[2824.403511330019,169.3868123449924]},{"x":576.5,"y":278.8181818181818,"value":[2887.587392282969,170.85270677944771]},{"x":587.5,"y":276.77272727272725,"value":[2950.7659154346243,172.6383547952199]},{"x":598.5,"y":274.45454545454544,"value":[3013.9404202353076,174.66381799697973]},{"x":609.5,"y":271.95454545454544,"value":[3077.1122461353434,176.84915798939798]},{"x":620.5,"y":269.22727272727275,"value":[3140.2807234095694,179.23434397013926]},{"x":631.5,"y":266.27272727272725,"value":[3203.4458520579856,181.8193759392036]},{"x":642.5,"y":263.1818181818182,"value":[3266.608971530916,184.52431550126178]},{"x":653.5,"y":259.8636363636364,"value":[3329.7687423780367,187.42910105164296]},{"x":664.5,"y":256.5,"value":[3392.9278434999956,190.37385579968878]},{"x":675.5,"y":252.8181818181818,"value":[3456.0822565458207,193.59839493138685]},{"x":686.5,"y":249.1818181818182,"value":[3519.2373393168077,196.78296486542027]},{"x":697.5,"y":245.27272727272728,"value":[3582.3884037368234,200.2073499854414]},{"x":708.5,"y":241.27272727272728,"value":[3645.5381287065147,203.71167350079168]},{"x":714.5,"y":239.5,"value":[3679.989460761895,205.2633999120013]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[128043,4],[128929,10],[129815,15],[129837,1],[130701,23],[131587,23],[132473,23],[133359,23],[134245,23],[135131,23],[136017,23],[136905,23],[137790,24],[138676,24],[139559,27],[140445,27],[141331,26],[142217,26],[143103,25],[143989,25],[144875,24],[145761,24],[146647,24],[147533,23],[148418,23],[149304,23],[150190,23],[151076,23],[151962,23],[152848,23],[153734,23],[154620,23],[155506,23],[156392,23],[157278,22],[158164,22],[159050,22],[159936,22],[160822,22],[161708,22],[162594,23],[163480,23],[164366,23],[165252,23],[166138,23],[167024,23],[167911,22],[168797,22],[169683,22],[170569,22],[171455,22],[172341,22],[173227,22],[174113,22],[174999,22],[175884,23],[176770,22],[177656,22],[178542,22],[179427,22],[180313,22],[181199,22],[182085,22],[182971,21],[183857,21],[184743,21],[185629,21],[186513,22],[187399,21],[188285,21],[189171,21],[190057,21],[190943,21],[191829,21],[192716,20],[193601,21],[194487,21],[195373,21],[196259,21],[197145,21],[198031,21],[198917,21],[199803,21],[200689,21],[201575,21],[202460,21],[203346,21],[204232,22],[205118,23],[206004,23],[206890,23],[207776,24],[208662,24],[209549,23],[209797,8],[209807,12],[210435,23],[210682,10],[210693,12],[211322,22],[211558,8],[211567,25],[212209,21],[212420,59],[213095,21],[213304,61],[213981,21],[214188,63],[214867,21],[215072,65],[215753,21],[215954,69],[216639,21],[216838,71],[217525,22],[217722,71],[218411,22],[218603,76],[219297,23],[219487,78],[220183,28],[220370,81],[221069,28],[221253,84],[221955,28],[222136,87],[222841,28],[223020,89],[223727,28],[223902,93],[224613,28],[224784,97],[225499,37],[225667,91],[226385,37],[226553,89],[227271,39],[227439,88],[228157,40],[228325,83],[229046,38],[229212,78],[229933,38],[230088,84],[230820,38],[230964,93],[231706,40],[231850,91],[232593,41],[232736,90],[233480,41],[233622,88],[234366,43],[234506,88],[235253,44],[235386,92],[236140,45],[236264,98],[237027,49],[237142,104],[237914,50],[238021,107],[238801,51],[238900,112],[239688,52],[239779,117],[240575,53],[240651,129],[241462,53],[241534,130],[242350,52],[242417,132],[243238,51],[243301,132],[244126,51],[244184,133],[245015,49],[245067,134],[245908,177],[246795,174],[247683,170],[248571,165],[249459,143],[250346,142],[251234,140],[252121,115],[252245,15],[253009,106],[253132,14],[253897,97],[254019,13],[254785,84],[254906,12],[255676,73],[255793,11],[256562,66],[256680,10],[257450,57],[257567,9],[258336,53],[258454,8],[259222,53],[259341,7],[260108,36],[260228,6],[260994,34],[261115,5],[261880,31],[262002,4],[262766,28],[262889,3],[263652,24],[263776,2],[264539,14],[264663,1],[265425,13],[266311,11],[267197,9],[268083,7],[268969,5],[269855,2]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":2,"imageWidth":886,"imageHeight":486}},{"name":"80 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":538,"y":163.5,"value":[2664.6579868033277,272.2999418315307]},{"x":542,"y":174.125,"value":[2687.7995026177286,262.9524270122886]},{"x":549,"y":185.9375,"value":[2728.197240670333,252.55718075520352]},{"x":558.6,"y":196,"value":[2783.509423216771,243.69768394586484]},{"x":569.5,"y":202.6818181818182,"value":[2846.2419094105735,237.8093638816608]},{"x":580.5,"y":206.6818181818182,"value":[2909.509506008767,234.27910860804016]},{"x":591.5,"y":209.22727272727272,"value":[2972.755671401778,232.02786765968696]},{"x":602.5,"y":210.36363636363637,"value":[3035.9810753147685,231.01567183893658]},{"x":613.5,"y":210.5,"value":[3099.191745274197,230.8827983668076]},{"x":624.5,"y":209.8181818181818,"value":[3162.39036018071,231.46937045264156]},{"x":635.5,"y":208.63636363636363,"value":[3225.581608110442,232.49560371278622]},{"x":646.5,"y":207.04545454545453,"value":[3288.7668285137165,233.8815597519123]},{"x":657.5,"y":205,"value":[3351.9453516653716,235.6672077676845]},{"x":667.5,"y":202.88888888888889,"value":[3409.376665546788,237.51176778525723]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[137865,4],[138748,7],[139631,2],[139634,7],[139643,5],[140517,18],[141403,18],[142290,17],[143176,17],[144062,17],[144948,17],[145835,16],[146721,16],[147607,12],[148494,11],[149380,12],[150267,11],[151153,12],[152040,11],[152926,12],[153813,11],[154699,11],[155586,11],[156472,11],[157359,11],[158245,11],[159132,10],[160018,10],[160904,10],[161791,9],[162677,9],[163564,10],[164450,16],[165337,15],[166224,15],[167112,14],[167999,17],[168886,16],[169775,13],[170662,21],[171548,28],[172434,30],[172504,17],[173320,39],[173390,16],[173410,9],[174206,40],[174273,17],[174291,14],[174318,22],[175092,44],[175157,17],[175175,16],[175200,25],[175978,47],[176038,39],[176083,26],[176866,97],[176965,28],[177754,123],[178641,120],[179529,22],[179552,93],[180417,22],[180441,88],[181305,107],[182195,102],[183082,99],[183969,97],[184856,93],[185743,88],[186631,83],[187518,78],[188404,75],[189290,71],[190176,69],[191062,65],[191948,57],[192834,55],[193720,39],[194606,18],[194633,5]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":3,"imageWidth":886,"imageHeight":486}},{"name":"83 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":572.5,"y":171.0909090909091,"value":[2863.015176091373,265.58442010970816]},{"x":583.5,"y":179.5909090909091,"value":[2926.3490754805985,258.09721426729135]},{"x":594.5,"y":184.36363636363637,"value":[2989.6280574065445,253.88748263337234]},{"x":605.5,"y":187.8181818181818,"value":[3052.8876173027943,250.836857731727]},{"x":616.5,"y":189.5,"value":[3116.1210579177286,249.34503153900135]},{"x":627.5,"y":190.0909090909091,"value":[3179.338425128776,248.81246609022628]},{"x":636.5,"y":190,"value":[3231.0532626834956,248.8817960389904]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[142320,9],[143206,9],[144092,9],[144978,10],[145864,10],[146750,14],[147636,15],[148522,17],[149408,20],[150296,19],[151182,19],[152068,23],[152954,23],[153840,23],[154726,23],[155612,23],[156501,20],[157392,16],[158278,24],[159164,24],[160050,29],[160936,50],[161828,46],[162716,49],[163601,50],[164486,51],[164552,1],[165371,61],[165434,6],[166257,69],[167142,70],[168028,70],[168914,70],[169800,70],[170686,69],[171572,16],[171603,35]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":4,"imageWidth":886,"imageHeight":486}},{"name":"Head 100% Speed","axesName":"XY","colorRGB":[25,28,238,255],"metadataKeys":[],"data":[{"x":323.625,"y":130.25,"value":[1432.3174777966728,301.79009722679143]},{"x":333.6111111111111,"y":131,"value":[1489.7111382412065,301.11883467353476]},{"x":344.5,"y":131.86363636363637,"value":[1552.294052482176,300.3465850072481]},{"x":355.5,"y":132.6818181818182,"value":[1615.5147683190332,299.61417357015]},{"x":366.5,"y":133.72727272727272,"value":[1678.7388327817005,298.6819161447289]},{"x":377.3,"y":134.8,"value":[1740.8140507015748,297.72591294396597]},{"x":388.5,"y":136,"value":[1805.1896406076823,296.65752450322816]},{"x":399.8333333333333,"y":137.16666666666666,"value":[1870.3309049672641,295.6182896452731]},{"x":410.1,"y":138.5,"value":[1929.345300303694,294.43375835991844]},{"x":421.5,"y":140,"value":[1994.87455877376,293.10133747133716]},{"x":432.5,"y":141.5,"value":[2058.105320488047,291.76938806926995]},{"x":443.5,"y":143.04545454545453,"value":[2121.3367519274952,290.3974694695381]},{"x":454.5,"y":144.77272727272728,"value":[2184.570862267591,288.8656740791479]},{"x":465.25,"y":146.625,"value":[2246.37025387952,287.22425807425117]},{"x":476.5,"y":148.5909090909091,"value":[2311.044440749079,285.48232971705045]},{"x":487.5,"y":150.5,"value":[2374.281229989823,283.7906575360018]},{"x":498.9,"y":152.9,"value":[2439.8237490180954,281.6668465336613]},{"x":509.5,"y":155.1818181818182,"value":[2500.7675332493877,279.64789841827684]},{"x":520.5,"y":157.5909090909091,"value":[2564.0116894669127,277.5165650629175]},{"x":531.5,"y":160.1818181818182,"value":[2627.258524585086,275.2253549168996]},{"x":540.5,"y":162.3,"value":[2679.005910782676,273.3521818591638]},{"x":559.1,"y":167.2,"value":[2785.95820629889,269.0215782280178]},{"x":568.375,"y":169.875,"value":[2839.2940131493124,266.65845835191215]},{"x":580.5,"y":173.4090909090909,"value":[2909.0192671902264,263.536561298533]},{"x":591.5,"y":176.8181818181818,"value":[2972.2781573613142,260.52590559455234]},{"x":602.3888888888889,"y":180.38888888888889,"value":[3034.900957456373,257.3732681562402]},{"x":613.5,"y":184.1818181818182,"value":[3098.803974405433,254.02496381461552]},{"x":623,"y":187.625,"value":[3153.4440040362188,250.98609928681384]},{"x":637.5,"y":192.95454545454547,"value":[3236.8430367084716,246.28261947450582]},{"x":648.5,"y":197.27272727272728,"value":[3300.1153213827984,242.47257981723294]},{"x":658,"y":201.125,"value":[3354.761378540041,239.07399251044978]},{"x":670.5,"y":206.45454545454547,"value":[3426.667927433395,234.37287013071182]},{"x":681.5,"y":211.5,"value":[3489.950927710313,229.9233233108052]},{"x":692.5,"y":216.63636363636363,"value":[3553.2352674375543,225.39383809556938]},{"x":703.5,"y":221.95454545454547,"value":[3616.522286065444,220.70447608967507]},{"x":714.8333333333334,"y":227.61111111111111,"value":[3681.729704388244,215.71717270684928]},{"x":720.5,"y":230.5,"value":[3714.334306516527,213.17022875188357]},{"x":550.0758293838862,"y":164.8127962085308,"value":[2734.0679661372315,271.1313368094343]}],"autoDetectionData":{"fgColor":[0,0,255],"bgColor":[255,255,255],"mask":[[103982,19],[104868,21],[105754,25],[106639,29],[107525,32],[108411,46],[109297,53],[110183,58],[111069,67],[111955,88],[112841,90],[113725,102],[114614,99],[114760,23],[115497,137],[115644,25],[116383,138],[116530,25],[117269,138],[117409,32],[118155,172],[119021,1],[119041,174],[119927,176],[120814,176],[121701,176],[122587,17],[122605,160],[123473,9],[123493,161],[123730,1],[124359,9],[124382,160],[124615,2],[125245,9],[125270,162],[125500,3],[126159,161],[126385,4],[127050,157],[127270,5],[127952,143],[128155,6],[128844,138],[129040,7],[129733,136],[129925,8],[130642,115],[130810,9],[131529,133],[131695,10],[132417,142],[132580,11],[133304,142],[133465,12],[134225,113],[134350,13],[135112,35],[135149,76],[135235,14],[136001,29],[136039,75],[136120,15],[136887,28],[136927,73],[137005,16],[137780,16],[137814,72],[137890,17],[138702,70],[138775,18],[139590,68],[139660,19],[140479,65],[140545,37],[140590,13],[141367,103],[141473,17],[142256,121],[143144,120],[144031,18],[144062,89],[144919,16],[144951,6],[144971,67],[145806,15],[145857,68],[146694,13],[146743,69],[147582,9],[147637,62],[148470,6],[148523,63],[149358,4],[149409,64],[150295,65],[151183,64],[152069,65],[152955,66],[153841,67],[154728,67],[155615,68],[156502,70],[157389,71],[158276,74],[159162,76],[160050,77],[160948,66],[161835,67],[162736,62],[163622,62],[164508,65],[165394,73],[166288,67],[167178,65],[168066,64],[168952,67],[169838,67],[170724,69],[171610,70],[172496,72],[173396,63],[174285,62],[175175,59],[176062,59],[176950,62],[177837,65],[178725,64],[179611,65],[180497,66],[181383,74],[182287,56],[183174,55],[184060,56],[184946,57],[185832,59],[186729,49],[187616,49],[188503,50],[189390,50],[190277,50],[191169,45],[192058,44],[192946,46],[193833,48],[194725,44],[195612,44],[196498,45],[197384,46],[198270,47],[199160,44],[200050,41],[200940,39],[201827,39],[202714,39],[203600,40],[204487,40],[205374,40],[206262,39],[207149,39],[208037,38],[208924,38],[209812,37],[210703,34],[211592,35],[212479,38],[213366,37],[214253,36],[215141,34],[216027,34],[216915,32],[217802,31],[218689,30],[219576,29],[220463,28],[221350,17],[222237,16],[223124,14],[224011,13],[224898,12],[225785,11],[226672,9],[227560,7],[228450,3]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":5,"imageWidth":886,"imageHeight":486}},{"name":"MCSF","axesName":"XY","colorRGB":[25,28,238,255],"metadataKeys":[],"data":[{"x":263,"y":276.6666666666667,"value":[1086.1088596162792,173.11410969092472]},{"x":268.5,"y":264.2,"value":[1117.5295067205022,184.06984536417028]},{"x":273.5,"y":251.9,"value":[1146.0794885389275,194.87961667078804]},{"x":278,"y":240.625,"value":[1171.7714517150303,204.78867192821141]},{"x":282,"y":230.25,"value":[1194.6035545046145,213.90692643001807]},{"x":286,"y":219.5,"value":[1217.430132061613,223.35492681255778]},{"x":290,"y":208.375,"value":[1240.251184386025,233.13267307583044]},{"x":294,"y":197,"value":[1263.0685532220468,243.13024992625847]},{"x":298,"y":185.75,"value":[1285.8877638022636,253.01791148310886]},{"x":302,"y":174,"value":[1308.6996074056992,263.3452342142699]},{"x":306,"y":161.5,"value":[1331.5004005439628,274.332048706897]},{"x":310,"y":149,"value":[1354.3011936822265,285.318863199524]},{"x":313,"y":141.75,"value":[1371.4330981872447,291.69041407817394]},{"x":315.978672985782,"y":129.1208530805687,"value":[1388.3631964088693,302.7919941980965]}],"autoDetectionData":{"fgColor":[0,0,255],"bgColor":[255,255,255],"mask":[[102200,9],[103086,9],[103972,9],[104856,11],[105742,18],[106628,18],[107514,18],[108400,18],[109286,18],[110172,18],[111057,19],[111943,19],[112828,20],[113714,20],[114600,20],[115486,19],[116371,20],[117257,18],[118143,18],[119029,18],[119915,18],[120801,18],[121687,18],[122572,19],[123458,19],[124344,18],[125230,18],[126115,18],[127001,18],[127887,18],[128773,18],[129658,17],[130544,17],[131430,17],[132314,18],[133200,18],[134086,18],[134971,19],[135857,19],[136743,19],[137629,19],[138514,20],[139400,20],[140282,24],[141168,24],[142054,24],[142938,23],[143824,23],[144710,23],[145596,23],[146482,23],[147368,23],[148252,24],[149137,25],[150023,25],[150908,26],[151793,27],[152679,27],[153565,27],[154451,27],[155338,26],[156223,27],[157109,27],[157995,26],[158880,27],[159766,26],[160652,22],[161538,18],[162424,18],[163310,17],[164196,15],[165082,15],[165968,15],[166854,15],[167740,15],[168626,15],[169512,15],[170398,15],[171284,15],[172170,15],[173055,16],[173941,16],[174827,16],[175713,16],[176599,16],[177485,16],[178371,16],[179256,17],[180142,17],[181028,17],[181914,17],[182800,17],[183686,17],[184569,20],[185455,20],[186340,20],[187226,20],[188112,20],[188998,20],[189881,23],[190766,24],[191652,21],[192535,24],[193421,24],[194306,25],[195192,25],[196077,26],[196963,26],[197848,26],[198734,26],[199620,23],[200506,23],[201392,23],[202278,23],[203164,22],[204050,21],[204936,18],[205821,19],[206706,20],[207592,19],[208478,19],[209363,19],[210248,18],[211133,19],[212019,18],[212905,18],[213791,18],[214677,17],[215562,17],[216446,18],[217332,18],[218217,19],[219103,18],[219989,18],[220875,18],[221761,18],[222647,18],[223533,17],[224419,17],[225305,17],[226190,18],[227076,18],[227962,18],[228848,17],[229734,17],[230620,16],[231506,15],[232392,15],[233278,15],[234163,16],[235049,16],[235935,16],[236821,16],[237705,18],[238591,18],[239477,18],[240363,17],[241248,18],[242134,18],[243019,19],[243905,19],[244791,18],[245676,19],[246562,19],[247448,19],[248334,19],[249220,19],[250106,18],[250992,18],[251878,18],[252764,18],[253651,17],[254537,16],[255423,16],[256309,15],[257195,15],[258081,15],[258967,14]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":6,"imageWidth":886,"imageHeight":486}},{"name":"48 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":224.5,"y":275,"value":[864.8539902832097,174.62502751560012]},{"x":229,"y":262.875,"value":[890.5334295987839,185.28150676935167]},{"x":233,"y":250.875,"value":[913.3415897138291,195.82866008766806]},{"x":237,"y":238.125,"value":[936.138699363702,207.03530516745045]},{"x":241,"y":225.75,"value":[958.9413342461607,217.91220436649988]},{"x":245,"y":212.5,"value":[981.7310769192525,229.55851062059295]},{"x":249,"y":199.125,"value":[1004.5189778481488,241.31473216826376]},{"x":252.5,"y":186.83333333333334,"value":[1024.4497196153463,252.11894386307054]},{"x":255.5,"y":176.33333333333334,"value":[1041.5337387712862,261.3482923747399]},{"x":258.5,"y":165.16666666666666,"value":[1058.6079352915172,271.16385578549017]},{"x":261.5,"y":154,"value":[1075.6821318117486,280.9794191962404]},{"x":264.5,"y":142.83333333333334,"value":[1092.7563283319798,290.7949826069907]},{"x":268,"y":129.625,"value":[1112.6735639750784,302.4052397880337]}],"autoDetectionData":{"fgColor":[228,64,46],"bgColor":[255,255,255],"mask":[[108352,6],[109238,11],[110124,16],[111010,17],[111896,18],[112779,21],[113665,21],[114551,20],[115436,20],[116321,20],[117206,20],[118092,19],[118979,18],[119865,18],[120751,18],[121637,18],[122523,18],[123409,18],[124295,18],[125181,18],[126066,17],[126952,17],[127838,17],[128724,17],[129610,17],[130496,16],[131382,16],[132268,15],[133152,17],[134038,17],[134924,17],[135810,17],[136696,16],[137582,16],[138467,17],[139353,17],[140239,17],[141125,17],[142011,17],[142897,17],[143783,17],[144669,17],[145555,17],[146441,16],[147326,17],[148212,17],[149098,17],[149984,17],[150869,18],[151755,17],[152640,18],[153526,17],[154412,17],[155298,17],[156184,16],[157069,16],[157955,16],[158839,18],[159724,18],[160610,18],[161496,18],[162382,18],[163268,18],[164154,18],[165040,17],[165926,17],[166810,18],[167696,18],[168582,18],[169468,18],[170354,18],[171240,18],[172126,17],[173012,16],[173897,17],[174782,18],[175668,18],[176554,18],[177440,18],[178326,18],[179211,19],[180097,17],[180983,16],[181869,16],[182752,19],[183638,19],[184524,19],[185410,18],[186296,18],[187182,18],[188068,18],[188954,17],[189840,17],[190726,17],[191612,16],[192497,16],[193383,16],[194268,17],[195154,16],[196040,16],[196926,16],[197811,17],[198696,18],[199582,17],[200468,17],[201354,17],[202240,17],[203126,17],[204012,17],[204897,18],[205782,19],[206668,19],[207554,17],[208440,16],[209326,16],[210212,16],[211098,16],[211984,16],[212869,17],[213754,18],[214640,18],[215526,18],[216412,18],[217298,18],[218184,18],[219070,18],[219956,18],[220841,19],[221727,19],[222613,19],[223499,19],[224385,19],[225270,20],[226153,23],[227038,24],[227923,25],[228809,25],[229691,29],[230577,29],[231463,29],[232349,28],[233235,28],[234121,28],[235007,28],[235893,27],[236779,27],[237664,28],[238549,29],[239434,30],[240319,31],[241204,30],[242089,28],[242974,28],[243859,29],[244744,29],[245629,30],[246514,31],[247399,32],[248284,33],[249169,34],[250054,32],[250939,17],[250957,15],[251824,15],[251843,15],[252709,14],[252729,15],[253594,14],[253615,13],[254479,13],[254501,13],[255364,12],[255387,13],[256249,10],[256273,13],[257134,9],[258019,8],[258904,7],[259789,6],[260674,5],[261559,4],[262444,3],[263330,1]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":7,"imageWidth":886,"imageHeight":486}},{"name":"Head Min","axesName":"XY","colorRGB":[33,27,30,255],"metadataKeys":[],"data":[{"x":223.04205246913583,"y":280.3096064814815,"value":[856.5545026040731,169.95789038054585]},{"x":231.4814814814815,"y":280.9124228395062,"value":[905.0583849860736,169.41787279240717]},{"x":244.140625,"y":280.9124228395062,"value":[977.8008857567354,169.40295125378753]},{"x":257.40258487654324,"y":282.72087191358025,"value":[1054.033960740202,167.79710947853286]},{"x":276.08989197530866,"y":282.72087191358025,"value":[1161.4157475921313,167.77508244533246]},{"x":300.2025462962963,"y":285.13213734567904,"value":[1300.0084193901052,165.62638088410677]},{"x":317.68422067901236,"y":286.3377700617284,"value":[1400.480112762233,164.54563515837123]},{"x":334.5630787037037,"y":288.7490354938272,"value":[1497.5056412626857,162.40546019064243]},{"x":355.6616512345679,"y":291.1603009259259,"value":[1618.778670020026,160.26031137670714]},{"x":387.00810185185185,"y":295.9828317901235,"value":[1798.9740125884248,155.98280363908185]},{"x":422.57426697530866,"y":302.0109953703704,"value":[2003.4346191501634,150.6401822637988]},{"x":456.3319830246914,"y":311.05324074074076,"value":[2197.5478492286506,142.64934305826165]},{"x":491.89814814814815,"y":321.9039351851852,"value":[2402.0795107361964,133.06616251717332]},{"x":510.5854552469136,"y":329.1377314814815,"value":[2509.567880006838,126.68329673526512]},{"x":531.6840277777778,"y":338.17997685185185,"value":[2630.9386093146636,118.70737906834768]},{"x":549.7685185185186,"y":347.22222222222223,"value":[2734.989695581856,110.73501414872055]},{"x":564.2361111111111,"y":353.8532021604938,"value":[2818.221682727383,104.8871921087445]},{"x":404.4897762345679,"y":298.99691358024694,"value":[1899.4723515652302,153.31184822616933]},{"x":439.453125,"y":306.23070987654324,"value":[2100.486793255294,146.9097976088931]}],"autoDetectionData":{"fgColor":[255,255,255],"bgColor":[255,255,255],"mask":[],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":8,"imageWidth":886,"imageHeight":486}}],"measurementColl":[]} \ No newline at end of file From 6d928709ac3e31b4deb298071fb2e103ccc59d1e Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Mon, 26 Jan 2026 18:17:25 -0700 Subject: [PATCH 03/12] File creating polynomial curves on the feasible region. No dependance on this one as fit is hard coded in surrogate file --- src/wrd/surrogate_models/temp_surrogate.py | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/wrd/surrogate_models/temp_surrogate.py diff --git a/src/wrd/surrogate_models/temp_surrogate.py b/src/wrd/surrogate_models/temp_surrogate.py new file mode 100644 index 00000000..4892526c --- /dev/null +++ b/src/wrd/surrogate_models/temp_surrogate.py @@ -0,0 +1,47 @@ +import pandas as pd +import numpy as np +import os +from idaes.core.surrogate.pysmo_surrogate import ( + PysmoRBFTrainer, + PysmoPolyTrainer, + PysmoSurrogate, +) + +# load data +pump_data = pd.read_csv(os.path.join(os.path.dirname(__file__), 'RO_feed_pump_head_curves_data.csv')) +input_labels = ['Flow (gpm)'] +output_labels= ['Head Min (ft)'] +pump_data.dropna(inplace=True,subset=output_labels) +pump_data.drop(columns= ['Head 100% Speed (ft)','MCSF (ft)'],inplace=True) +input_data = pump_data[input_labels] +output_data = pump_data[output_labels] + +# Scale Data +Data_scaled = pump_data +Data_scaled[output_labels[0]] = pump_data[output_labels[0]].mul(1e-2) # head (ft) +Data_scaled[input_labels[0]] = pump_data[input_labels[0]].mul(1e-3) # Flow (gpm) +min_flow = min(Data_scaled[input_labels[0]]) +max_flow = max(Data_scaled[input_labels[0]]) +min_head = min(Data_scaled[output_labels[0]]) +max_head = max(Data_scaled[output_labels[0]]) +input_bounds = { + input_labels[0]: (min_flow, max_flow), +} + +# Create Surrogate Type and trainer +trainer = PysmoPolyTrainer( + input_labels=input_labels, + output_labels=output_labels, + training_dataframe=Data_scaled, # NOT spliting data for training and validation because there's not that much data to begin with. + ) +trainer.config.maximum_polynomial_order = 3 + # Train Data +trained_surr = trainer.train_surrogate() + +# Create Surrogate Model +Surrogate = PysmoSurrogate( + trained_surr, + input_labels, + output_labels, + input_bounds, +) \ No newline at end of file From d50a32cfc00db6aaa7805239b451d5445c7e8e19 Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Mon, 26 Jan 2026 18:21:54 -0700 Subject: [PATCH 04/12] script to create surrogate and plot the fit --- solution.pickle | Bin 0 -> 9925 bytes .../surrogate_models/create_pump_surrogate.py | 248 +++++++++++++++++- 2 files changed, 244 insertions(+), 4 deletions(-) create mode 100644 solution.pickle diff --git a/solution.pickle b/solution.pickle new file mode 100644 index 0000000000000000000000000000000000000000..f5d88827cc2ec4050344633f989684ed50448e30 GIT binary patch literal 9925 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 head_limit(x_vals[i] / 264.2 / 60 * 1e3) / 1e2 + or y_vals[j] > MCSF(x_vals[i] * 1e3) / 1e2 + or y_vals[j] < min_head_limit(x_vals[i] * 1e3) / 1e2 + ): + z_vals[i, j] = np.nan + continue + m.flowrate.fix(x_vals[i]) + m.head.fix(y_vals[j]) + calculate_variable_from_constraint( + m.eff, m.surrogate_blk.pysmo_constraint["efficiency"] + ) + # print(m.flowrate.value, m.head.value) + # print(value(m.eff)) + z_vals[i, j] = value(m.eff) +# Rescale the outputs +flows = x_vals * 1e3 # gpm +heads = y_vals * 1e2 # ft +efficiencies = z_vals * 1e2 # % + +# Create Meshgrid to plot contour +X, Y = np.meshgrid(flows, heads) +Z = efficiencies.T # Transpose Z to match X and Y dimensions + +fig1 = plt.contourf( + X, + Y, + Z, + levels=25, + cmap="viridis", +) +plt.colorbar(label="Efficiency (%)") +# Add countour lines for specific efficiencies in the orginial plot +iso_eff = plt.contour( + X, + Y, + Z, + levels=[59,68,75,80,83], + labels=["59%","68%","75%","80%","83%"], + colors='red', +) +plt.clabel(iso_eff, inline=True, fontsize=8, fmt="%1.0f%%", colors='black') + +plt.xlabel("Flow (gpm)") +plt.ylabel("Head (ft)") +plt.title("RO Feed Pump Efficiency Contour Plot") +plt.xlim(0, 4500) +plt.ylim(0, 400) +plt.show() + + +# # Create 3D scatter plot +# fig2 = plt.figure(figsize=(10, 8)) +# ax2 = fig2.add_subplot(111, projection="3d") + +# # Flatten the data for scatter plot +# X_flat = X.flatten() +# Y_flat = Y.flatten() +# Z_flat = Z.flatten() + +# # Remove NaN values for cleaner plot +# mask = ~np.isnan(Z_flat) +# X_clean = X_flat[mask] +# Y_clean = Y_flat[mask] +# Z_clean = Z_flat[mask] + +# # Create scatter plot with color mapping +# scatter = ax2.scatter( +# X_clean, Y_clean, Z_clean, c=Z_clean, cmap="viridis", s=50, alpha=0.6 +# ) +# fig2.colorbar(scatter, ax=ax, label="Efficiency (%)") + +# # Plot actual data points +# X = pump_data["Flow (gpm)"] * 1e3 +# Y = pump_data["Head (ft)"] * 1e2 +# Z = pump_data["efficiency"] * 1e2 +# ax2.scatter(X, Y, Z, color="red", s=20, label="Data Points") + +# ax2.set_xlabel("Flow (gpm)") +# ax2.set_ylabel("Head (ft)") +# ax2.set_zlabel("Efficiency (%)") +# ax2.set_title("RO Feed Pump Efficiency 3D Scatter Plot") +# ax2.set_xlim(0, 4500) +# ax2.set_ylim(0, 400) +# plt.show() + + +# # Get the absolute path of the current script +# current_script_path = os.path.abspath(__file__) +# # Get the directory containing the current script +# current_directory = os.path.dirname(current_script_path) +# surr_name = f"UV_power_poly_fit_order_{trainer.config.maximum_polynomial_order}.json" +# Surrogate.save_to_file(current_directory+surr_name, overwrite=True) From 829347eb2cdb2d88584ac7b023fb5309dab5e905 Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Mon, 26 Jan 2026 18:53:55 -0700 Subject: [PATCH 05/12] Adding curve data for interstage pump --- src/wrd/surrogate_models/RO_IS_pump_curves.json | 1 + .../{wpd_project.json => RO_feed_pump_curves.json} | 0 2 files changed, 1 insertion(+) create mode 100644 src/wrd/surrogate_models/RO_IS_pump_curves.json rename src/wrd/surrogate_models/{wpd_project.json => RO_feed_pump_curves.json} (100%) diff --git a/src/wrd/surrogate_models/RO_IS_pump_curves.json b/src/wrd/surrogate_models/RO_IS_pump_curves.json new file mode 100644 index 00000000..c58dc74a --- /dev/null +++ b/src/wrd/surrogate_models/RO_IS_pump_curves.json @@ -0,0 +1 @@ +{"version":[4,2],"axesColl":[{"name":"XY","type":"XYAxes","isLogX":false,"isLogY":false,"noRotation":false,"calibrationPoints":[{"px":89.1590296495957,"py":645.800539083558,"dx":"0","dy":"15","dz":null},{"px":1162.2803234501348,"py":646.6037735849058,"dx":"1600","dy":"15","dz":null},{"px":89.1590296495957,"py":583.9514824797844,"dx":"0","dy":"15","dz":null},{"px":88.35579514824798,"py":24.90026954177898,"dx":"1600","dy":"150","dz":null}]}],"datasetColl":[{"name":"Head 100% Speed","axesName":"XY","colorRGB":[30,32,239,255],"metadataKeys":[],"data":[{"x":357.5,"y":243.03333333333336,"value":[400.9536660938344,97.37369651774026]},{"x":369.5,"y":244.3181818181818,"value":[418.8426662296331,97.0655992417602]},{"x":380.5,"y":244.86363636363637,"value":[435.24227092437457,96.93587067126848]},{"x":391.5,"y":245.63636363636363,"value":[451.6413887528089,96.75126009628754]},{"x":402.5,"y":246.36363636363637,"value":[468.0406039545046,96.57762592220443]},{"x":413.5,"y":247.22727272727272,"value":[484.43952703641605,96.3710625454278]},{"x":424.5,"y":247.86363636363637,"value":[500.83893698463464,96.21938117314039]},{"x":435.5,"y":248.6818181818182,"value":[517.2379574398074,96.02379419726162]},{"x":446.3888888888889,"y":249.38888888888889,"value":[533.4715515430146,95.85501834034238]},{"x":457.5,"y":250.27272727272728,"value":[550.0360957234145,95.6435966464019]},{"x":468.5,"y":251.1818181818182,"value":[566.4349214320645,95.42605686872743]},{"x":479.5,"y":252.0909090909091,"value":[582.8337471407143,95.20851709105295]},{"x":490.5,"y":252.95454545454547,"value":[599.2326702226256,95.00195371427634]},{"x":501.5,"y":253.95454545454547,"value":[615.6313011847527,94.76246113480617]},{"x":512.5,"y":255.04545454545453,"value":[632.0297374003568,94.50101575354034]},{"x":523.5,"y":256.1363636363636,"value":[648.4281736159608,94.2395703722745]},{"x":534.5,"y":257.27272727272725,"value":[664.8265124583035,93.96714859011081]},{"x":545.3888888888889,"y":258.5,"value":[681.0589921786295,93.67275392291626]},{"x":556.5,"y":259.72727272727275,"value":[697.6228006499429,93.37839942219206]},{"x":567.5,"y":261,"value":[714.0208473725012,93.07304843733485]},{"x":578.5,"y":262.3181818181818,"value":[730.4187967217979,92.7567210515798]},{"x":589.5,"y":263.77272727272725,"value":[746.8164539513102,92.40746446313122]},{"x":600.5,"y":265.1818181818182,"value":[763.2142085540842,92.06918427558047]},{"x":611.5,"y":266.8636363636364,"value":[779.6113789172894,91.66504568264267]},{"x":622.5,"y":268.45454545454544,"value":[796.0087440270172,91.28285989150055]},{"x":633.5,"y":270.09090909090907,"value":[812.4060117634839,90.8896976994606]},{"x":646.5,"y":272.27272727272725,"value":[831.7840697797001,90.36518019487967]},{"x":657.5,"y":273.95454545454544,"value":[848.1812401429053,89.96104160194187]},{"x":668.5,"y":275.77272727272725,"value":[864.5781183863259,89.52397380631054]},{"x":679.5,"y":277.8636363636364,"value":[880.9744123901779,89.02104760529215]},{"x":690.5,"y":279.8636363636364,"value":[897.3709011405527,88.54007420606943]},{"x":701.5,"y":282.09090909090907,"value":[913.7669030246203,88.00421880235753]},{"x":712.5,"y":284.40909090909093,"value":[930.1627101621651,87.4464105968499]},{"x":723.5,"y":286.72727272727275,"value":[946.5585172997099,86.8886023913423]},{"x":734.5,"y":289.22727272727275,"value":[962.9539349442088,86.28688858224332]},{"x":745.5,"y":291.6818181818182,"value":[979.3494499619691,85.6961511740422]},{"x":755.75,"y":294.0625,"value":[994.6268886766965,85.12311485546262]},{"x":767.5,"y":297,"value":[1012.1396036381367,84.41588874955934]},{"x":778.5,"y":299.8636363636364,"value":[1028.534242296544,83.72636373327761]},{"x":789.5,"y":302.8636363636364,"value":[1044.9285888351667,83.00390951430236]},{"x":800.5,"y":305.95454545454544,"value":[1061.3227406272667,82.25950249353141]},{"x":811.5,"y":309.1818181818182,"value":[1077.7166002995823,81.48216627006695]},{"x":822.5,"y":312.72727272727275,"value":[1094.1097783590676,80.62799524031756]},{"x":833.5,"y":316.40909090909093,"value":[1110.5026642987687,79.74089500787467]},{"x":844.5,"y":319.6363636363636,"value":[1126.8965239710842,78.9635587844102]},{"x":854,"y":322.6875,"value":[1141.0542918956226,78.22848499075]},{"x":868.5,"y":327.8181818181818,"value":[1162.662501890667,76.99214460159638]},{"x":879.5,"y":331.72727272727275,"value":[1179.0549009640606,76.05016236466427]},{"x":890.5,"y":335.8636363636364,"value":[1195.4468131711471,75.05329812324293]},{"x":901.5,"y":340.09090909090907,"value":[1211.8385306317105,74.03448108002593]},{"x":912.5,"y":344.54545454545456,"value":[1228.2297612259667,72.96078203231967]},{"x":923.5,"y":349.1363636363636,"value":[1244.6206997004383,71.85415378191993]},{"x":934.5,"y":353.77272727272725,"value":[1261.0115408016488,70.73654913062231]},{"x":945.5,"y":358.59090909090907,"value":[1277.4019924098134,69.57503887573334]},{"x":956.5,"y":363.6363636363636,"value":[1293.7919571516707,68.35864661635513]},{"x":967.5,"y":369.0625,"value":[1310.181106392463,67.05032699945751]},{"x":977.5,"y":373.72222222222223,"value":[1325.0809180751928,65.92690094858192]}],"autoDetectionData":{"fgColor":[0,0,255],"bgColor":[255,255,255],"mask":[[261144,44],[262329,56],[263521,62],[264713,68],[265905,73],[267097,74],[268289,86],[269481,86],[270673,97],[271865,103],[273047,119],[274239,128],[275431,133],[275592,57],[276623,229],[277815,234],[279007,239],[280199,310],[281391,349],[282583,352],[283775,354],[284168,7],[284967,357],[285360,12],[286159,37],[286215,304],[286552,16],[287412,302],[287744,24],[288611,299],[288936,37],[289804,302],[290128,65],[291001,301],[291320,75],[292194,306],[292512,83],[293386,311],[293704,91],[294604,393],[295802,393],[296998,390],[298197,390],[299397,60],[299483,306],[300595,34],[300678,308],[301881,304],[303079,301],[304318,263],[305540,236],[306767,205],[307963,207],[309157,207],[310351,211],[311547,209],[312741,210],[313938,53],[314018,130],[315136,47],[315222,120],[316331,44],[316424,122],[317530,37],[317625,113],[318727,32],[318826,106],[319926,25],[320025,106],[321123,20],[321218,113],[322320,15],[322411,116],[323515,12],[323619,124],[324713,6],[324818,128],[326016,125],[327214,129],[328413,127],[329609,137],[330806,133],[332001,137],[333196,138],[334393,141],[335586,141],[336784,142],[337978,148],[339173,145],[340365,145],[341557,145],[341710,26],[342762,133],[342902,26],[343960,160],[345161,153],[346354,153],[347556,145],[348755,146],[349951,146],[351154,135],[352354,127],[353549,124],[354752,120],[355950,117],[357148,111],[358347,104],[359557,86],[360753,82],[361945,87],[363143,92],[364337,91],[365529,91],[366722,90],[367914,23],[367939,66],[369112,17],[369132,67],[370306,15],[370325,67],[371498,15],[371518,67],[372692,13],[372720,60],[373920,53],[375114,52],[376307,53],[377499,55],[378691,57],[379883,59],[381079,57],[382275,54],[383467,55],[384659,57],[385863,47],[387055,49],[388247,51],[389448,44],[390642,43],[391835,43],[393029,42],[394224,42],[395417,42],[396611,42],[397805,42],[398999,43],[400193,43],[401386,45],[402579,46],[403772,48],[404965,51],[406161,50],[407354,52],[408547,53],[409740,54],[410936,52],[412129,53],[413322,57],[414515,57],[415710,55],[416903,56],[418097,56],[419291,55],[420486,54],[421680,54],[422875,53],[424070,51],[425264,52],[426458,52],[427653,52],[428847,51],[430041,50],[431239,46],[432433,44],[433627,45],[434821,46],[436015,45],[437209,46],[438403,45],[439598,46],[440791,46],[441985,45],[443178,47],[444371,46],[445566,44],[446760,43],[447954,40],[449148,37],[450341,36],[451534,35],[452729,32],[453922,31],[455116,29],[456309,28],[457504,25],[458697,24],[459890,23],[461083,22],[462278,19],[463475,14],[464668,13],[465861,12],[467054,11]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":0,"imageWidth":1192,"imageHeight":669}},{"name":"Min Head","axesName":"XY","colorRGB":[8,5,7,255],"metadataKeys":[],"data":[{"x":300.40970350404314,"y":408.8463611859839,"value":[315.47800463513124,57.32271160557292]},{"x":318.08086253369277,"y":409.64959568733155,"value":[341.8236176608182,57.131939926117525]},{"x":350.2102425876011,"y":412.8625336927224,"value":[389.7209780019466,56.36188437982267]},{"x":376.7169811320755,"y":416.87870619946096,"value":[429.23337509611713,55.396846820203166]},{"x":397.60107816711593,"y":419.28840970350404,"value":[460.3659710384952,54.81872442477592]},{"x":424.1078167115903,"y":423.3045822102426,"value":[499.87836813266586,53.85368686515642]},{"x":450.6145552560647,"y":428.12398921832886,"value":[539.389044528448,52.69468357969792]},{"x":477.9245283018868,"y":432.1401617250674,"value":[580.0990477009856,51.72979120400494]},{"x":491.57951482479785,"y":434.54986522911054,"value":[600.4531889380602,51.15036215323896]},{"x":518.0862533692723,"y":439.3692722371968,"value":[639.9638653338424,49.99135886778048]},{"x":537.3638814016173,"y":443.38544474393535,"value":[668.6978077227095,49.02501465282222]},{"x":559.8544474393532,"y":448.20485175202157,"value":[702.2204537266564,47.865285447731125]},{"x":577.5256064690027,"y":452.2210242587601,"value":[728.5591839587892,46.898650864919816]},{"x":600.8194070080863,"y":458.6469002695418,"value":[763.2759946443263,45.35113539207728]},{"x":620.0970350404313,"y":462.66307277628033,"value":[792.0099370331933,44.38479117711903]},{"x":644.1940700808626,"y":469.088948787062,"value":[827.9243537970974,42.83742088820301]},{"x":661.0619946091645,"y":473.9083557951483,"value":[853.0637572524748,41.67667539562622]},{"x":683.5525606469004,"y":480.33423180592996,"value":[886.5829618596449,40.12901473885715]},{"x":706.0431266846361,"y":486.76010781671164,"value":[920.1021664668148,38.58135408208808]},{"x":730.9433962264152,"y":495.5956873315364,"value":[957.2090272139204,36.45223179958168]},{"x":758.2533692722373,"y":505.23450134770894,"value":[997.9069854977389,34.12957934301586]}],"autoDetectionData":null},{"name":"52 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":341.1,"y":404.2,"value":[376.1563511435842,58.452073448775806]},{"x":343.5,"y":389.875,"value":[379.76538883759713,61.91171998961086]},{"x":345.5,"y":376.5,"value":[382.7759996786682,65.14188745203437]},{"x":347.5,"y":362.875,"value":[385.7871460726773,68.43242511939602]},{"x":349.5,"y":348.375,"value":[388.80016690196953,71.93425850404115]},{"x":351.5,"y":333.875,"value":[391.8131877312617,75.43609188868628]},{"x":353.5,"y":319,"value":[394.8270118899609,79.02848058073862]},{"x":355.5,"y":303.625,"value":[397.8419071545361,82.74160968266722]},{"x":357.5,"y":287.125,"value":[400.8592124073325,86.72640470681743]},{"x":359.5,"y":271.5,"value":[403.8746432248456,90.49990401368419]},{"x":361.5,"y":255,"value":[406.891948477642,94.4846990378344]},{"x":363.5,"y":238,"value":[409.9103248363143,98.5902344718609]},{"x":365,"y":226.25,"value":[412.1719648935665,101.42790522762823]}],"autoDetectionData":{"fgColor":[230,60,43],"bgColor":[255,255,255],"mask":[[254253,12],[255445,12],[256637,12],[257829,12],[259021,12],[260213,12],[261405,12],[262597,12],[263789,12],[264981,22],[266173,22],[267365,22],[268557,22],[269749,22],[270941,22],[272133,22],[273325,22],[274517,22],[275709,22],[276901,22],[278093,22],[279285,21],[280476,22],[281668,22],[282860,22],[284052,22],[285244,22],[286436,22],[287628,21],[288820,21],[290012,21],[291204,21],[292396,21],[293588,21],[294780,21],[295972,21],[297164,21],[298356,21],[299547,22],[300739,22],[301931,22],[303123,22],[304315,22],[305507,22],[306699,22],[307891,22],[309083,22],[310275,21],[311466,22],[312658,22],[313850,22],[315042,22],[316234,22],[317426,22],[318618,22],[319809,23],[321001,23],[322193,22],[323385,22],[324577,22],[325769,22],[326961,22],[328153,22],[329344,23],[330536,22],[331728,22],[332919,23],[334110,24],[335302,24],[336494,24],[337685,25],[338877,24],[340069,24],[341261,24],[342453,23],[343642,26],[344834,25],[346026,25],[347218,25],[348410,24],[349602,23],[350794,23],[351986,23],[353178,23],[354370,22],[355561,23],[356753,23],[357945,23],[359137,23],[360328,24],[361520,24],[362712,24],[363904,24],[365096,24],[366287,25],[367479,25],[368670,24],[369862,23],[371054,23],[372246,23],[373438,23],[374629,24],[375821,23],[377013,22],[378205,22],[379396,23],[380588,22],[381780,22],[382972,22],[384164,21],[385356,21],[386547,22],[387739,22],[388931,22],[390123,22],[391315,22],[392507,21],[393699,21],[394891,21],[396082,22],[397274,22],[398466,22],[399658,22],[400850,21],[402042,21],[403234,21],[404426,21],[405618,21],[406810,21],[408002,21],[409194,21],[410386,21],[411578,21],[412770,21],[413962,21],[415154,21],[416346,21],[417538,21],[418730,21],[419922,21],[421114,21],[422305,22],[423497,22],[424689,22],[425881,22],[427073,22],[428265,22],[429457,21],[430649,21],[431841,21],[433033,21],[434225,21],[435417,21],[436609,21],[437801,21],[438993,21],[440185,21],[441376,22],[442568,22],[443760,22],[444952,22],[446144,21],[447336,21],[448528,21],[449720,21],[450912,21],[452104,21],[453295,22],[454487,22],[455679,22],[456871,22],[458063,22],[459254,23],[460446,23],[461638,23],[462830,22],[464022,22],[465214,22],[466406,22],[467596,24],[468788,24],[469980,24],[471172,23],[472364,23],[473556,23],[474748,22],[475939,23],[477130,24],[478322,24],[479514,24],[480706,24],[481898,23],[483090,23],[484281,24],[485473,24],[486665,24],[487857,24],[489049,24],[490241,24],[491432,25],[492624,22],[493816,22],[495008,22],[496200,21],[497392,21],[498584,21],[499787,10],[500980,9],[502173,8],[503366,6],[504559,4],[505752,2]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":2,"imageWidth":1192,"imageHeight":669}},{"name":"62 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":432.7,"y":417.8,"value":[512.7009282207852,55.18449091921997]},{"x":434.5,"y":401.25,"value":[515.4201447082804,59.18132383453451]},{"x":435.5,"y":386.8333333333333,"value":[516.942007640483,62.66285306841702]},{"x":436.5,"y":374.8333333333333,"value":[518.4586935609515,65.5608036545642]},{"x":437.5,"y":362.3333333333333,"value":[519.976450587296,68.57949465058765]},{"x":438.5,"y":350.1666666666667,"value":[521.4934935430564,71.5176920400269]},{"x":439.5,"y":338.8333333333333,"value":[523.0087513223568,74.25465541300571]},{"x":440,"y":329.5,"value":[523.7742349884313,76.50856677192111]},{"x":441.5,"y":315.8333333333333,"value":[526.0399809515416,79.8090757655475]},{"x":442.5,"y":303.8333333333333,"value":[527.5566668720099,82.70702635169468]},{"x":443.5,"y":291.8333333333333,"value":[529.0733527924785,85.60497693784185]},{"x":444.5,"y":279.6666666666667,"value":[530.5903957482388,88.54317432728111]},{"x":445,"y":269.5,"value":[531.3576645907734,90.99831970265697]},{"x":446.5,"y":254,"value":[533.6273379420959,94.74154353249637]},{"x":448.5,"y":233.375,"value":[536.6534798183695,99.72244693812586]},{"x":447.5,"y":246.5,"value":[535.1343839096801,96.55283042975707]}],"autoDetectionData":{"fgColor":[230,60,43],"bgColor":[255,255,255],"mask":[[268639,20],[269831,21],[271023,21],[272215,21],[273407,21],[274599,21],[275791,21],[276983,21],[278175,21],[279367,21],[280559,21],[281751,21],[282943,21],[284135,21],[285327,21],[286519,21],[287711,21],[288901,22],[290093,23],[291285,23],[292477,22],[293669,23],[294861,22],[296053,23],[297245,22],[298436,24],[299628,23],[300820,23],[302012,23],[303204,23],[304396,23],[305588,23],[306780,23],[307972,23],[309164,23],[310356,23],[311548,23],[312739,24],[313931,22],[315123,22],[316315,22],[317507,21],[318699,21],[319890,22],[321082,22],[322274,22],[323467,21],[324658,22],[325850,22],[327042,22],[328234,22],[329426,21],[330618,21],[331810,21],[333002,21],[334194,21],[335386,21],[336578,21],[337770,21],[338962,21],[340154,21],[341346,21],[342538,21],[343730,21],[344922,21],[346113,22],[347305,22],[348497,22],[349689,22],[350881,22],[352073,22],[353264,23],[354456,23],[355648,23],[356840,22],[358032,22],[359224,22],[360415,23],[361607,23],[362799,23],[363991,22],[365183,22],[366375,21],[367567,21],[368759,21],[369951,21],[371142,22],[372334,22],[373526,22],[374718,22],[375910,22],[377102,21],[378294,21],[379486,21],[380678,21],[381870,21],[383062,21],[384254,21],[385446,21],[386638,21],[387830,21],[389022,21],[390214,21],[391406,21],[392598,21],[393790,21],[394982,21],[396174,21],[397366,21],[398558,21],[399750,21],[400941,22],[402133,22],[403325,22],[404517,21],[405709,21],[406901,21],[408093,21],[409285,21],[410477,21],[411669,21],[412861,21],[414053,21],[415245,21],[416437,21],[417629,21],[418821,21],[420013,21],[421205,21],[422397,21],[423589,21],[424781,21],[425973,21],[427165,21],[428357,21],[429549,21],[430741,21],[431933,21],[433125,21],[434317,21],[435509,21],[436701,21],[437893,21],[439084,22],[440276,22],[441467,23],[442659,23],[443851,23],[445043,23],[446235,22],[447427,22],[448619,22],[449811,22],[451003,22],[452195,22],[453387,22],[454579,22],[455771,22],[456963,22],[458155,22],[459347,22],[460539,22],[461731,22],[462923,22],[464114,23],[465306,23],[466498,22],[467690,22],[468882,22],[470073,23],[471265,23],[472456,24],[473648,23],[474840,23],[476031,24],[477222,24],[478414,24],[479606,24],[480798,24],[481990,24],[483181,24],[484373,23],[485565,23],[486757,22],[487949,22],[489141,22],[490330,25],[491522,25],[492714,25],[493906,25],[495098,25],[496290,25],[497482,25],[498674,25],[499866,25],[501058,25],[502250,25],[503442,25],[504634,25],[505826,25],[507018,25],[508210,22],[509402,21],[510594,21],[511786,21],[512978,21],[514170,21]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":3,"imageWidth":1192,"imageHeight":669}},{"name":"71 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":546,"y":239.5,"value":[682.0108482671344,98.26099995600816]},{"x":546,"y":250.5,"value":[681.9872839378615,95.60471093873012]},{"x":546,"y":261.5,"value":[681.9637196085887,92.94842192145208]},{"x":546,"y":272.5,"value":[681.940155279316,90.29213290417404]},{"x":546,"y":283.5,"value":[681.9165909500431,87.635843886896]},{"x":545.8333333333334,"y":297.6666666666667,"value":[681.6377463869815,84.21483548221545]},{"x":547,"y":310,"value":[683.3508017180567,81.23678291257002]},{"x":547,"y":321,"value":[683.3272373887838,78.58049389529198]},{"x":546.8333333333334,"y":333.0555555555556,"value":[683.0529152727544,75.66927833231126]},{"x":548,"y":348.7,"value":[684.758877502695,71.89165593726295]},{"x":549,"y":366.25,"value":[686.2122610658896,67.65384829972228]},{"x":550.5,"y":383.75,"value":[688.4112414293936,63.428205077727554]},{"x":552.1666666666666,"y":402.3333333333333,"value":[690.8563976267401,58.940987759186996]},{"x":553.8333333333334,"y":414.6666666666667,"value":[693.3149426475371,55.96302556409984]},{"x":555.5,"y":426.875,"value":[695.7737554448031,53.01524847148177]},{"x":558.5,"y":441,"value":[700.2164348421359,49.60487413982676]},{"x":560.5,"y":447.5,"value":[703.1844692246344,48.03561030966834]}],"autoDetectionData":{"fgColor":[230,60,43],"bgColor":[255,255,255],"mask":[[275890,21],[277082,21],[278274,21],[279466,21],[280658,21],[281850,21],[283042,21],[284234,21],[285426,21],[286618,21],[287810,21],[289002,21],[290194,21],[291386,21],[292578,21],[293770,21],[294962,21],[296154,21],[297346,21],[298538,21],[299730,21],[300922,21],[302114,21],[303306,21],[304498,21],[305690,21],[306882,21],[308074,21],[309266,21],[310458,21],[311650,21],[312842,21],[314034,21],[315226,21],[316418,21],[317610,21],[318801,22],[319993,22],[321185,22],[322377,22],[323569,22],[324761,21],[325953,21],[327145,21],[328337,20],[329529,20],[330721,20],[331913,20],[333105,20],[334297,20],[335489,20],[336681,20],[337873,20],[339065,20],[340257,20],[341449,20],[342641,20],[343833,20],[345025,20],[346217,20],[347409,20],[348601,20],[349793,20],[350985,20],[352177,20],[353369,20],[354561,20],[355753,20],[356945,20],[358137,20],[359329,20],[360521,20],[361713,20],[362905,20],[364097,20],[365289,20],[366481,20],[367673,20],[368865,20],[370057,20],[371249,20],[372441,20],[373633,20],[374825,20],[376017,21],[377209,21],[378401,21],[379593,21],[380785,21],[381977,21],[383169,21],[384361,21],[385553,21],[386745,21],[387937,22],[389129,22],[390321,22],[391514,21],[392706,21],[393898,22],[395090,22],[396282,22],[397474,22],[398666,22],[399859,21],[401051,21],[402243,21],[403435,21],[404627,21],[405819,21],[407011,21],[408203,21],[409395,21],[410587,21],[411779,21],[412971,22],[414163,22],[415355,22],[416548,21],[417740,21],[418932,21],[420124,21],[421316,21],[422508,21],[423700,21],[424892,21],[426084,21],[427276,21],[428468,21],[429660,21],[430852,21],[432044,21],[433236,21],[434428,21],[435620,21],[436812,21],[438004,21],[439196,21],[440388,21],[441580,21],[442772,21],[443964,21],[445156,21],[446348,21],[447540,21],[448732,21],[449924,21],[451116,21],[452308,21],[453500,21],[454692,21],[455884,21],[457076,21],[458268,21],[459460,21],[460652,21],[461844,22],[463036,21],[464228,21],[465420,22],[466613,21],[467805,21],[468997,21],[470189,21],[471381,21],[472573,21],[473765,21],[474957,21],[476149,22],[477341,22],[478533,22],[479725,23],[480917,24],[482109,25],[483301,25],[484493,25],[485685,27],[486878,26],[488070,26],[489263,25],[490456,25],[491649,24],[492841,24],[494033,24],[495225,24],[496417,24],[497610,23],[498802,23],[499994,24],[501186,24],[502378,24],[503570,24],[504762,24],[505954,24],[507146,24],[508338,24],[509531,23],[510723,23],[511915,23],[513107,23],[514301,21],[515493,21],[516685,21],[517877,21],[519066,24],[520258,24],[521450,24],[522642,24],[523834,24],[525026,24],[526218,23],[527410,23],[528601,24],[529793,24],[530985,24],[532177,24],[533369,24],[534561,24],[535753,24],[536945,23],[538137,22],[539329,22],[540521,21],[541713,20],[542906,18],[544099,17],[545292,16],[546485,15],[547678,14],[548871,13],[550064,12],[551257,11],[552450,10],[553644,8],[554839,5]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":4,"imageWidth":1192,"imageHeight":669}},{"name":"77 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":636.5,"y":249.33333333333334,"value":[816.9234170245469,95.90279635682538]},{"x":638.5,"y":262.375,"value":[819.877437771834,92.75384549745237]},{"x":641,"y":274.5,"value":[823.5789119029491,89.82634243074416]},{"x":643.5,"y":287.3333333333333,"value":[827.2788686340731,86.72779045004457]},{"x":646.5,"y":301,"value":[831.7225298784587,83.4280948274428]},{"x":649.5,"y":312.8333333333333,"value":[836.1701185110564,80.57111404105405]},{"x":653,"y":325.125,"value":[841.3622149863229,77.60354492017034]},{"x":657,"y":337.125,"value":[847.3004259630723,74.70649807960606]},{"x":661.5,"y":348.7,"value":[853.985037069538,71.91217096199493]},{"x":666.5,"y":359.8,"value":[861.4161554163077,69.23263760832452]},{"x":672.5,"y":370.7857142857143,"value":[870.3384979667212,66.58088281174244]},{"x":680,"y":382,"value":[881.4968199378997,63.87420352289179]},{"x":689,"y":392.85,"value":[894.8923913553816,61.25576337062586]},{"x":699.5,"y":401.95454545454544,"value":[910.5281709752688,59.05908813651199]},{"x":710.5,"y":409.1363636363636,"value":[926.9135591738376,57.32680503493516]},{"x":721.5,"y":413.6818181818182,"value":[943.3045950215709,56.23115318543324]},{"x":732.5,"y":416.95454545454544,"value":[959.698357320625,55.44284056107092]},{"x":743.5,"y":420,"value":[976.0926064859863,54.70940994119783]},{"x":754.5,"y":421.5,"value":[992.4901663422371,54.34917695185139]},{"x":765.5,"y":422,"value":[1008.8898684102402,54.23042478225753]},{"x":776.5,"y":422,"value":[1025.2906415841194,54.232413022539916]},{"x":787.5,"y":421.1363636363636,"value":[1041.6932648499662,54.44295287988133]},{"x":798.5,"y":419.95454545454544,"value":[1058.0965697286433,54.73032754350764]},{"x":809.5,"y":418.45454545454544,"value":[1074.5005562201504,55.09453701341887]},{"x":820.5,"y":416.3636363636364,"value":[1090.9058085640565,55.60143969500203]},{"x":831.5,"y":414.1363636363636,"value":[1107.3113530277471,56.14127157927875]},{"x":842.5,"y":411.6363636363636,"value":[1123.717481731006,56.746961868942506]},{"x":853.5,"y":408.72727272727275,"value":[1140.1244867936186,57.451439766686875]},{"x":864.5,"y":405.6363636363636,"value":[1156.5318813492768,58.1998232680226]},{"x":875.5,"y":402.40909090909093,"value":[1172.9395680247194,58.981135972051845]},{"x":886.5,"y":398.95454545454544,"value":[1189.3477415664693,59.81733068057032]},{"x":897.5,"y":395.40909090909093,"value":[1205.7561098547421,60.67547819088449]},{"x":908.5,"y":391.54545454545456,"value":[1222.165159755845,61.61046050748354]},{"x":919.5,"y":387.6363636363636,"value":[1238.5743070302096,62.55641922498046]},{"x":930.5,"y":383.6363636363636,"value":[1254.9836490510968,63.524330744273044]},{"x":941.5,"y":379.40909090909093,"value":[1271.3934779382914,64.54712426805484]},{"x":952.5,"y":375.09090909090907,"value":[1287.803501572009,65.59187059363235]},{"x":963.5,"y":370.77272727272725,"value":[1304.2135252057265,66.63661691920984]},{"x":974.5,"y":366.27272727272725,"value":[1320.62393833249,67.7252688483787]},{"x":985.5,"y":361.72727272727275,"value":[1337.034448832515,68.82489717844541]},{"x":996.5,"y":357.09090909090907,"value":[1353.4451540790626,69.94647831030781]},{"x":1002.5,"y":355,"value":[1362.3955095257509,70.45247724630808]}],"autoDetectionData":{"fgColor":[230,60,43],"bgColor":[255,255,255],"mask":[[281953,3],[283144,5],[284335,7],[285526,9],[286717,10],[287908,11],[289089,22],[290281,22],[291473,22],[292665,22],[293857,22],[295049,22],[296241,22],[297434,21],[298626,24],[299818,24],[301010,24],[302205,21],[303397,21],[304589,21],[305781,21],[306973,21],[308165,21],[309357,21],[310549,21],[311741,21],[312933,21],[314125,21],[315317,21],[316509,21],[317701,21],[318893,21],[320085,21],[321277,21],[322469,21],[323661,21],[324853,21],[326045,21],[327237,21],[328429,21],[329621,21],[330813,21],[332005,21],[333197,21],[334389,21],[335581,21],[336773,21],[337965,21],[339157,21],[340349,21],[341541,21],[342733,21],[343925,21],[345117,21],[346309,21],[347501,21],[348693,21],[349885,21],[351077,21],[352269,21],[353461,21],[354653,21],[355845,21],[357037,21],[358229,21],[359421,21],[360613,21],[361805,21],[362997,21],[364189,21],[365381,21],[366573,22],[367765,22],[368957,22],[370150,21],[371342,22],[372534,22],[373726,22],[374919,21],[376111,21],[377303,21],[378495,22],[379687,22],[380879,23],[382072,22],[383264,22],[384456,23],[385649,22],[386841,22],[388033,23],[389226,22],[390418,22],[391610,22],[392802,25],[393994,26],[395186,26],[396378,27],[397570,28],[398763,29],[399955,30],[401147,32],[402341,31],[403533,33],[404725,35],[405918,35],[407111,36],[408303,46],[409495,46],[410688,45],[411037,2],[411882,43],[412220,11],[412244,1],[413076,41],[413412,11],[413436,1],[414269,40],[414601,14],[414628,1],[415461,41],[415792,15],[415820,1],[416655,41],[416981,18],[417012,1],[417850,38],[418173,32],[419043,38],[419365,32],[420236,38],[420557,32],[421430,37],[421749,32],[422623,37],[422934,39],[423815,38],[424126,39],[425007,39],[425318,39],[426199,40],[426510,39],[427391,41],[427701,40],[428583,42],[428892,41],[429775,43],[430082,43],[430967,44],[431272,45],[432159,45],[432462,47],[433351,46],[433652,49],[434544,46],[434841,49],[435736,47],[436031,51],[436928,48],[437219,54],[438120,49],[438409,53],[439312,36],[439598,56],[440505,35],[440784,60],[441700,33],[441975,59],[442895,30],[443166,53],[444087,30],[444357,52],[445279,30],[445550,50],[446471,31],[446742,49],[447663,32],[447932,50],[448856,33],[449123,50],[450049,33],[450313,48],[451242,32],[451503,48],[452435,39],[452684,56],[453628,38],[453876,54],[454821,37],[455068,52],[456013,37],[456260,49],[457205,37],[457451,48],[458397,37],[458641,48],[459590,37],[459806,72],[460783,37],[460988,78],[461975,38],[462179,78],[463168,38],[463371,79],[464361,38],[464561,81],[465553,39],[465753,79],[466746,39],[466945,77],[467939,39],[468137,76],[469132,39],[469329,75],[470325,39],[470521,70],[471517,39],[471713,69],[472710,39],[472905,68],[473903,40],[474097,65],[475095,46],[475287,66],[476288,47],[476479,66],[477481,46],[477671,66],[478673,46],[478861,63],[479866,45],[480049,67],[481059,44],[481235,68],[482251,44],[482423,72],[483444,43],[483609,78],[484637,42],[484795,84],[485829,13],[485843,35],[485986,85],[487022,12],[487035,36],[487165,97],[488215,11],[488228,38],[488357,90],[489407,11],[489421,39],[489549,89],[490600,10],[490614,43],[490739,88],[491793,9],[491806,44],[491929,88],[492985,9],[492998,51],[493113,92],[494178,8],[494190,56],[494303,88],[495371,7],[495382,61],[495483,96],[496563,7],[496574,67],[496674,94],[497756,6],[497766,192],[498949,5],[498960,188],[500141,5],[500152,188],[501334,4],[501347,174],[502526,4],[502540,171],[503719,3],[503732,167],[504912,2],[504924,162],[506104,2],[506116,160],[507308,150],[508500,144],[509703,131],[510901,122],[512094,118],[513293,107],[514488,98],[515682,94],[516876,87],[518079,73],[519274,70],[520472,64],[521668,47]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":5,"imageWidth":1192,"imageHeight":669}},{"name":"81 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":737.5,"y":267.35714285714283,"value":[967.4737235317665,91.56864771872675]},{"x":745,"y":278.4375,"value":[978.6323324063047,88.89430961109295]},{"x":754,"y":289.3,"value":[992.0278770461397,86.27285094858011]},{"x":764.5,"y":299.5,"value":[1007.6613099704256,83.81164445282822]},{"x":785.5,"y":312.92857142857144,"value":[1038.9431100952127,80.57269774759934]},{"x":798.1,"y":317.25,"value":[1057.7201928611298,79.5314330725376]},{"x":809.5,"y":320.3636363636364,"value":[1074.7106877183767,78.78161015096437]},{"x":820.3888888888889,"y":323.55555555555554,"value":[1090.9389587499572,78.01279104496305]},{"x":831.8333333333334,"y":325.22222222222223,"value":[1107.9988190728911,77.61239158526523]},{"x":842.5,"y":326,"value":[1123.900932955593,77.426501160479]},{"x":853.5,"y":325.40909090909093,"value":[1140.302971981871,77.57118261243336]},{"x":864.5,"y":324.54545454545456,"value":[1156.7055952477176,77.78172246977476]},{"x":875.5,"y":323.3181818181818,"value":[1173.1089974996562,78.08007353429893]},{"x":886.5,"y":321.40909090909093,"value":[1189.5138603505166,78.54307061229072]},{"x":897.5,"y":319.22727272727275,"value":[1205.9193074409454,79.0719260956696]},{"x":908.5,"y":316.77272727272725,"value":[1222.3253387709433,79.66663998443552]},{"x":915,"y":315.5,"value":[1232.019431188647,79.97515407883292]},{"x":773.5148247978437,"y":306.0323450134771,"value":[1021.0882341870507,82.23583784568565]}],"autoDetectionData":{"fgColor":[230,60,43],"bgColor":[255,255,255],"mask":[[301116,13],[302308,15],[303500,17],[304692,17],[305884,17],[307076,17],[308268,17],[309460,17],[310652,21],[311844,22],[313028,30],[314220,30],[315412,31],[316604,31],[317796,31],[318988,31],[320180,31],[321372,31],[322564,31],[323756,31],[324948,31],[326140,34],[327334,32],[328529,29],[329721,29],[330913,33],[332108,30],[333300,30],[334492,34],[335684,34],[336877,33],[338069,33],[339261,33],[340455,31],[341647,31],[342839,39],[344031,39],[345223,39],[346415,39],[347607,39],[348804,49],[349996,49],[351189,51],[352381,51],[353573,55],[354765,56],[355957,56],[357152,53],[358344,58],[359543,51],[360736,50],[361929,55],[363121,55],[364313,61],[365506,61],[366702,57],[367895,56],[369088,66],[370280,67],[370411,25],[371479,60],[371603,25],[372671,62],[372795,25],[373864,63],[373987,25],[375059,63],[375179,30],[376251,67],[376371,30],[377447,70],[377563,30],[378639,82],[378755,30],[379832,100],[379947,30],[381028,141],[382220,141],[383414,139],[384611,134],[385803,134],[387002,127],[388194,127],[389386,127],[390587,118],[391781,116],[392974,115],[394166,115],[395366,107],[396563,102],[397761,96],[398954,95],[400147,89],[401347,76],[402546,65],[403748,52],[404956,32]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":6,"imageWidth":1192,"imageHeight":669}},{"name":"82 Efficiency","axesName":"XY","colorRGB":[200,0,0,255],"metadataKeys":[],"data":[{"x":787.5,"y":276.27272727272725,"value":[1042.0035934342327,89.42474254130744]},{"x":798.5,"y":283.04545454545456,"value":[1058.3898579921545,87.7912470478112]},{"x":809.5,"y":287.90909090909093,"value":[1074.7802122270575,86.61876039202437]},{"x":820.5,"y":291.27272727272725,"value":[1091.1737797795888,85.80849496586639]},{"x":831.5,"y":294.45454545454544,"value":[1107.5677368251659,85.04213514329976]},{"x":842.5,"y":296.8181818181818,"value":[1123.9634465894487,84.4733505368943]},{"x":853.5,"y":297.95454545454544,"value":[1140.3617854317915,84.20092875473063]},{"x":864.5,"y":298.1818181818182,"value":[1156.7620717393634,84.1480349905238]}],"autoDetectionData":{"fgColor":[230,60,43],"bgColor":[255,255,255],"mask":[[315462,20],[316654,22],[317846,24],[319038,24],[320230,24],[321422,25],[322614,36],[323806,36],[324998,37],[326190,37],[327381,38],[328573,42],[329765,48],[330957,51],[332149,59],[333341,62],[334533,68],[335725,69],[336917,76],[338109,76],[339301,76],[340493,76],[341687,74],[342891,52],[344085,50],[345277,50],[346469,50],[347661,50],[347712,5],[348861,42],[348904,5],[348939,4],[350057,38],[350096,18],[350131,4],[351250,62],[351319,8],[352443,76],[353640,71],[354841,62],[356037,58],[357231,56],[358429,50],[359623,48],[360815,48],[362007,48],[363206,31],[364399,30],[365591,30],[366786,27],[367979,26],[369171,26],[370363,26],[371560,21],[372764,9]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":7,"imageWidth":1192,"imageHeight":669}},{"name":"MCSF","axesName":"XY","colorRGB":[30,32,239,255],"metadataKeys":[],"data":[{"x":298,"y":403.0833333333333,"value":[311.89753202602355,58.71393674390818]},{"x":303,"y":391.375,"value":[319.3775106525052,61.54217842076051]},{"x":307,"y":380.375,"value":[325.36499249955216,64.19919043450487]},{"x":311,"y":369.125,"value":[331.35300989953726,66.91657265318737]},{"x":315,"y":357.875,"value":[337.34102729952224,69.63395487186988]},{"x":319,"y":346.25,"value":[343.3298480289144,72.44189239795959]},{"x":323,"y":334.625,"value":[349.31866875830644,75.2498299240493]},{"x":327,"y":321.75,"value":[355.3101672523886,78.35961847482969]},{"x":331,"y":309.375,"value":[361.3005946405947,81.3486666157338]},{"x":335,"y":296.5,"value":[367.29209313467686,84.4584551665142]},{"x":339,"y":283.375,"value":[373.28412718169704,87.62861392223274]},{"x":343,"y":269.75,"value":[379.27723233459324,90.91951308782755]},{"x":347,"y":257.75,"value":[385.26685639339223,93.81800592132447]},{"x":351.0833333333333,"y":244.23333333333335,"value":[391.383977754969,97.0827597272058]},{"x":355.5,"y":227.75,"value":[398.0044474712248,101.06396688139189]}],"autoDetectionData":{"fgColor":[0,0,255],"bgColor":[255,255,255],"mask":[[257828,5],[259020,5],[260211,6],[261401,8],[262593,11],[263784,12],[264976,12],[266167,13],[267358,14],[268550,11],[269741,12],[270933,12],[272125,12],[273317,12],[274509,12],[275701,11],[276893,11],[278085,9],[279277,8],[280468,9],[281659,10],[282851,10],[284043,10],[285235,9],[286427,9],[287619,9],[288810,10],[290002,10],[291193,10],[292385,10],[293577,10],[294769,10],[295961,10],[297152,11],[298344,10],[299535,11],[300727,10],[301918,11],[303110,9],[304301,10],[305493,10],[306685,9],[307877,9],[309069,8],[310260,9],[311451,10],[312643,10],[313835,9],[315027,9],[316219,9],[317409,11],[318601,11],[319793,11],[320985,9],[322177,9],[323368,10],[324560,10],[325752,10],[326943,10],[328135,10],[329327,10],[330518,11],[331710,10],[332902,10],[334094,10],[335285,11],[336477,10],[337669,10],[338860,11],[340052,9],[341243,10],[342435,10],[343626,11],[344817,12],[346009,12],[347201,11],[348393,11],[349584,12],[350776,11],[351968,10],[353159,11],[354350,16],[355542,16],[356733,17],[357925,17],[359117,17],[360309,17],[361501,17],[362693,16],[363885,16],[365077,16],[366269,16],[367461,16],[368653,15],[369845,13],[371037,13],[372229,13],[373421,13],[374611,14],[375803,14],[376995,14],[378187,14],[379378,14],[380570,14],[381761,14],[382952,15],[384144,15],[385335,16],[386527,15],[387719,14],[388910,14],[390102,13],[391294,12],[392485,12],[393677,11],[394869,11],[396060,11],[397252,11],[398444,11],[399636,11],[400828,11],[402020,11],[403211,12],[404403,12],[405595,12],[406786,13],[407978,13],[409170,13],[410362,13],[411554,13],[412745,14],[413937,13],[415129,13],[416321,12],[417513,11],[418704,12],[419896,11],[421088,11],[422279,11],[423471,11],[424663,10],[425855,10],[427047,9],[428239,9],[429431,9],[430622,9],[431814,9],[433005,9],[434197,9],[435389,9],[436579,13],[437771,13],[438963,12],[440155,11],[441346,11],[442538,10],[443729,10],[444921,10],[446112,11],[447304,10],[448496,10],[449688,10],[450879,11],[452071,10],[453263,10],[454454,10],[455646,10],[456837,10],[458029,9],[459221,8],[460412,9],[461604,8],[462796,8],[463988,8],[465179,9],[466371,8],[467563,8],[468755,8],[469946,9],[471138,9],[472329,9],[473521,9],[474712,9],[475904,9],[477096,9],[478287,10],[479477,11],[480669,11],[481860,11],[483052,11],[484244,10],[485436,10],[486628,10],[487823,7],[489015,6],[490207,5],[491399,5]],"colorDetectionMode":"fg","colorDistance":120,"algorithm":{"algoType":"AveragingWindowAlgo","xStep":10,"yStep":10},"name":8,"imageWidth":1192,"imageHeight":669}}],"measurementColl":[]} \ No newline at end of file diff --git a/src/wrd/surrogate_models/wpd_project.json b/src/wrd/surrogate_models/RO_feed_pump_curves.json similarity index 100% rename from src/wrd/surrogate_models/wpd_project.json rename to src/wrd/surrogate_models/RO_feed_pump_curves.json From eccbbe95ccff3a2f3d88af212ea179b924c10bfe Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Mon, 26 Jan 2026 19:03:57 -0700 Subject: [PATCH 06/12] Upper limit on head curve change for consistiency (gpm as input) --- .../surrogate_models/create_pump_surrogate.py | 26 +++++++++---------- src/wrd/surrogate_models/temp_surrogate.py | 4 +-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/wrd/surrogate_models/create_pump_surrogate.py b/src/wrd/surrogate_models/create_pump_surrogate.py index 221fac3c..a1548047 100644 --- a/src/wrd/surrogate_models/create_pump_surrogate.py +++ b/src/wrd/surrogate_models/create_pump_surrogate.py @@ -37,25 +37,25 @@ def head_limit(flow): """Helper function to define minimum head for given flowrate.""" # Coefficients from pump curve data - # Flow must be units of m3/s. Head is in ft. - b_0 = 374.73 - b_1 = -1347.1 - b_2 = 8953.8 - b_3 = -26539 - head = b_0 + b_1 * flow + b_2 * flow**2 + b_3 * flow**3 + # Flow must be units of scaled gpm. Head is in ft. + b_0 = 3.127555 + b_1 = -0.09634 + b_2 = 0.051555 + b_3 = -0.026339 + head = (b_0 + b_1 * (flow) + b_2 * (flow)**2 + b_3 * (flow)**3) return head def MCSF(flow): """Helper function to define max head for given flowrate along the minimum continuous stable flow.""" # Coefficients from pump curve data - # Flow must be in units of gpm. Head is in ft. + # Flow must be in units of scaled gpm. Head is in ft. c_0 = 0.838 c_1 = -1.869681 c_2 = 2.477258 c_3 = 0 - head = 100 * ( - c_0 + c_1 * (flow / 1e3) + c_2 * (flow / 1e3) ** 2 + c_3 * (flow / 1e3) ** 3 + head = ( + c_0 + c_1 * (flow) + c_2 * (flow) ** 2 + c_3 * (flow) ** 3 ) return head @@ -68,7 +68,7 @@ def min_head_limit(flow): a_1 = -0.202589 a_2 = 0.148054 a_3 = -0.060852 - head = 100 * (a_0 + a_1 * (flow / 1e3) + a_2 * (flow / 1e3) ** 2 + a_3 * (flow / 1e3) ** 3) + head = a_0 + a_1 * (flow) + a_2 * (flow) ** 2 + a_3 * (flow) ** 3 return head @@ -152,9 +152,9 @@ def min_head_limit(flow): for j in range(num_points): # Filter out infeasible points if ( - y_vals[j] > head_limit(x_vals[i] / 264.2 / 60 * 1e3) / 1e2 - or y_vals[j] > MCSF(x_vals[i] * 1e3) / 1e2 - or y_vals[j] < min_head_limit(x_vals[i] * 1e3) / 1e2 + y_vals[j] > head_limit(x_vals[i]) + or y_vals[j] > MCSF(x_vals[i]) + or y_vals[j] < min_head_limit(x_vals[i]) ): z_vals[i, j] = np.nan continue diff --git a/src/wrd/surrogate_models/temp_surrogate.py b/src/wrd/surrogate_models/temp_surrogate.py index 4892526c..450b8450 100644 --- a/src/wrd/surrogate_models/temp_surrogate.py +++ b/src/wrd/surrogate_models/temp_surrogate.py @@ -10,9 +10,9 @@ # load data pump_data = pd.read_csv(os.path.join(os.path.dirname(__file__), 'RO_feed_pump_head_curves_data.csv')) input_labels = ['Flow (gpm)'] -output_labels= ['Head Min (ft)'] +output_labels= ['Head 100% Speed (ft)'] pump_data.dropna(inplace=True,subset=output_labels) -pump_data.drop(columns= ['Head 100% Speed (ft)','MCSF (ft)'],inplace=True) +pump_data.drop(columns= ['Head Min (ft)','MCSF (ft)'],inplace=True) input_data = pump_data[input_labels] output_data = pump_data[output_labels] From 4a7a6b409b2b265379df5f795bed291f33d95ad6 Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Mon, 26 Jan 2026 19:04:40 -0700 Subject: [PATCH 07/12] IS pump data brought over and converted to csv --- solution.pickle | Bin 9925 -> 9925 bytes .../RO_IS_pump_eff_curve_data.csv | 115 ++++++++++++++++++ .../RO_IS_pump_head_curves_data.csv | 94 ++++++++++++++ src/wrd/surrogate_models/pump_curve_data.py | 6 +- 4 files changed, 212 insertions(+), 3 deletions(-) create mode 100644 src/wrd/surrogate_models/RO_IS_pump_eff_curve_data.csv create mode 100644 src/wrd/surrogate_models/RO_IS_pump_head_curves_data.csv diff --git a/solution.pickle b/solution.pickle index f5d88827cc2ec4050344633f989684ed50448e30..c0ae2f2eac827a3cd3e86304d8fdc81541ddfd12 100644 GIT binary patch delta 29 kcmX@=d(?Nsbyc Date: Mon, 26 Jan 2026 19:34:38 -0700 Subject: [PATCH 08/12] Added surrogate creation for IS pump --- solution.pickle | Bin 9925 -> 11525 bytes .../surrogate_models/create_pump_surrogate.py | 96 ++++++++++++------ src/wrd/surrogate_models/temp_surrogate.py | 8 +- 3 files changed, 70 insertions(+), 34 deletions(-) diff --git a/solution.pickle b/solution.pickle index c0ae2f2eac827a3cd3e86304d8fdc81541ddfd12..f8c5c7a2471abfed9305d6b1d8237ce292e12fe6 100644 GIT binary patch literal 11525 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 -I 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 Y1$!t@h&O^EMXU&{h>+$abmE)*9WHdlkpKVy diff --git a/src/wrd/surrogate_models/create_pump_surrogate.py b/src/wrd/surrogate_models/create_pump_surrogate.py index a1548047..1f5eaf68 100644 --- a/src/wrd/surrogate_models/create_pump_surrogate.py +++ b/src/wrd/surrogate_models/create_pump_surrogate.py @@ -34,47 +34,70 @@ # Helper Function, stealing fit from pump head curve, but could also make a surrogate from json data -def head_limit(flow): +def min_head_limit(flow,pump_type): + """Helper function to define minimum head for given flowrate.""" + # Coefficients from pump curve data + # Flow must be units of gpm. Head is in ft. + if pump_type == 'RO_feed': + a_0 = 1.8033 + a_1 = -0.202589 + a_2 = 0.148054 + a_3 = -0.060852 + if pump_type == 'RO_IS': + a_0 = 0.607309 + a_1 = -0.059714 + a_2 = -0.105637 + a_3 = -0.10102 + head = a_0 + a_1 * (flow) + a_2 * (flow) ** 2 + a_3 * (flow) ** 3 + return head + + +def head_limit(flow,pump_type): """Helper function to define minimum head for given flowrate.""" # Coefficients from pump curve data # Flow must be units of scaled gpm. Head is in ft. - b_0 = 3.127555 - b_1 = -0.09634 - b_2 = 0.051555 - b_3 = -0.026339 + if pump_type == 'RO_feed': + b_0 = 3.127555 + b_1 = -0.09634 + b_2 = 0.051555 + b_3 = -0.026339 + if pump_type == 'RO_IS': + b_0 = 1.02801 + b_1 = -0.21038 + b_2 = 0.284634 + b_3 = -0.253384 head = (b_0 + b_1 * (flow) + b_2 * (flow)**2 + b_3 * (flow)**3) return head -def MCSF(flow): +def MCSF(flow,pump_type): """Helper function to define max head for given flowrate along the minimum continuous stable flow.""" # Coefficients from pump curve data # Flow must be in units of scaled gpm. Head is in ft. - c_0 = 0.838 - c_1 = -1.869681 - c_2 = 2.477258 - c_3 = 0 + if pump_type == 'RO_feed': + c_0 = 0.838 + c_1 = -1.869681 + c_2 = 2.477258 + c_3 = 0 + if pump_type == 'RO_IS': + c_0 = 0.185777 + c_1 = -1.584001 + c_2 = 9.184983 + c_3 = 0 head = ( c_0 + c_1 * (flow) + c_2 * (flow) ** 2 + c_3 * (flow) ** 3 ) return head -def min_head_limit(flow): - """Helper function to define minimum head for given flowrate.""" - # Coefficients from pump curve data - # Flow must be units of gpm. Head is in ft. - a_0 = 1.8033 - a_1 = -0.202589 - a_2 = 0.148054 - a_3 = -0.060852 - head = a_0 + a_1 * (flow) + a_2 * (flow) ** 2 + a_3 * (flow) ** 3 - return head +# Select Types +pump_type = 'RO_IS' +fittype = "rbf" # load data pump_data = pd.read_csv( - os.path.join(os.path.dirname(__file__), "RO_feed_pump_eff_curve_data.csv") + os.path.join(os.path.dirname(__file__), f"{pump_type}_pump_eff_curve_data.csv") ) input_labels = ["Flow (gpm)", "Head (ft)"] output_labels = ["efficiency"] @@ -97,7 +120,7 @@ def min_head_limit(flow): # Create Surrogate Type and trainer # Create the trainer -fittype = "rbf" + if fittype == "poly": trainer = PysmoPolyTrainer( input_labels=input_labels, @@ -152,9 +175,9 @@ def min_head_limit(flow): for j in range(num_points): # Filter out infeasible points if ( - y_vals[j] > head_limit(x_vals[i]) - or y_vals[j] > MCSF(x_vals[i]) - or y_vals[j] < min_head_limit(x_vals[i]) + y_vals[j] > head_limit(x_vals[i],pump_type) + or y_vals[j] > MCSF(x_vals[i],pump_type) + or y_vals[j] < min_head_limit(x_vals[i],pump_type) ): z_vals[i, j] = np.nan continue @@ -184,21 +207,34 @@ def min_head_limit(flow): ) plt.colorbar(label="Efficiency (%)") # Add countour lines for specific efficiencies in the orginial plot +if pump_type == 'RO_feed': + plt.xlim(0, 4500) + plt.ylim(0, 400) + levels=[59,68,75,80,83] + labels=["59%","68%","75%","80%","83%"] + +elif pump_type == 'RO_IS': + plt.xlim(0, 1600) + plt.ylim(0, 150) + levels=[52,62,71,77,81,82] + labels=["52%","62%","71%","77%","81%","82%"] + + iso_eff = plt.contour( X, Y, Z, - levels=[59,68,75,80,83], - labels=["59%","68%","75%","80%","83%"], + levels=levels, + labels=labels, colors='red', ) plt.clabel(iso_eff, inline=True, fontsize=8, fmt="%1.0f%%", colors='black') plt.xlabel("Flow (gpm)") plt.ylabel("Head (ft)") -plt.title("RO Feed Pump Efficiency Contour Plot") -plt.xlim(0, 4500) -plt.ylim(0, 400) +plt.title(f"{pump_type.replace('_', ' ').title()} Pump Efficiency Contour Plot") + + plt.show() diff --git a/src/wrd/surrogate_models/temp_surrogate.py b/src/wrd/surrogate_models/temp_surrogate.py index 450b8450..1bad259a 100644 --- a/src/wrd/surrogate_models/temp_surrogate.py +++ b/src/wrd/surrogate_models/temp_surrogate.py @@ -8,11 +8,11 @@ ) # load data -pump_data = pd.read_csv(os.path.join(os.path.dirname(__file__), 'RO_feed_pump_head_curves_data.csv')) +pump_data = pd.read_csv(os.path.join(os.path.dirname(__file__), 'RO_IS_pump_head_curves_data.csv')) input_labels = ['Flow (gpm)'] -output_labels= ['Head 100% Speed (ft)'] +output_labels= ['MCSF (ft)'] pump_data.dropna(inplace=True,subset=output_labels) -pump_data.drop(columns= ['Head Min (ft)','MCSF (ft)'],inplace=True) +pump_data.drop(columns= ['Head 100% Speed (ft)','Min Head (ft)'],inplace=True) input_data = pump_data[input_labels] output_data = pump_data[output_labels] @@ -34,7 +34,7 @@ output_labels=output_labels, training_dataframe=Data_scaled, # NOT spliting data for training and validation because there's not that much data to begin with. ) -trainer.config.maximum_polynomial_order = 3 +trainer.config.maximum_polynomial_order = 2 # Train Data trained_surr = trainer.train_surrogate() From 2747ed78bb4156b250111a216d6e6c0e688e8054 Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Tue, 27 Jan 2026 15:01:54 -0700 Subject: [PATCH 09/12] Added a plot and max flow point from head curves at different speeds --- solution.pickle | Bin 11525 -> 9925 bytes .../surrogate_models/create_pump_surrogate.py | 105 ++++++++++-------- 2 files changed, 56 insertions(+), 49 deletions(-) diff --git a/solution.pickle b/solution.pickle index f8c5c7a2471abfed9305d6b1d8237ce292e12fe6..ec1c966737b78b5ae46aa56455fe7dcc4c3635a7 100644 GIT binary patch literal 9925 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 X_E5eEZv;b%*brC|5zR&9A~5@JjNHSO literal 11525 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 -I z0Inz+bMnyF^SO*U&n zkpI5-;Pws_gf=qK(B}yu!;aIwyH5z0Y%^>Qw+Lavfuy>yZXu}hrlwf;2%*e|VyM-JPFMU+B5yizG zPnn>&0e!_+Y7u3u6~UOhk8)0LMM*=GkEm%a5rL1jJ(Fc4g3W|)q?fZqFn7V~gvI7R zg4;?c+sx5LZ2#?0rkVZEd%z}VSj*3ZHJBBC}r_^%PQk-;B2Zh0b8JR6M+?DCtm=%!j-!l!Pe0R8co$iX+jB z=(s~tl%yH%A4xQ{J4_&>^hK0th-b;$xic9Adz4lfg3|vSiB1HR4=C=yCPlI)O2%sA zse1@yrX;s-GU`I16YX3mXw?vvBSdy6OV*BwigZLx*3Lna1&GFu9p%fCcBDF>wy}1S zd`3KC^E1Z~Wg{ZLPizLz7a2((aiCNzC20bpF-}5bi@55C{EJAJNE1wPM0?Ui(gTz@ ziBca?%|vkxlQkZRg{EvrCnB{d|5YuLS|tmbBM})5ONouLL>+$;PR2{v;z<+nOxDc5 zj&>$f?NLsrgovV@Gm&BUry7*>D7}f|%|3x_oT-$U4w|G`MRtxK`n zn%F#!h>s5?+OrgX^mcJ4qC`=(zcT-awvpqkY$(pqBvAgA8e*ilo8m^HdQuR-EfRX? z*7!r;6vQNq0^v}9A zEQN$1*t29umpKxt+1MSa)xm`!-VmdUOzOguE{S!4kurbibX2!pXy)R{=ls-mp}1It zN2(w-h*iLmOr4Y}R+?nuUE+zikXlKCpVI6|?Tbdzbcv;r`?>47(1CQ6>;Y0Cs head_limit(x_vals[i],pump_type) or y_vals[j] > MCSF(x_vals[i],pump_type) or y_vals[j] < min_head_limit(x_vals[i],pump_type) + or y_vals[j] < max_flows(x_vals[i],pump_type) ): z_vals[i, j] = np.nan continue @@ -219,59 +225,60 @@ def MCSF(flow,pump_type): levels=[52,62,71,77,81,82] labels=["52%","62%","71%","77%","81%","82%"] - -iso_eff = plt.contour( - X, - Y, - Z, - levels=levels, - labels=labels, - colors='red', -) -plt.clabel(iso_eff, inline=True, fontsize=8, fmt="%1.0f%%", colors='black') - plt.xlabel("Flow (gpm)") plt.ylabel("Head (ft)") plt.title(f"{pump_type.replace('_', ' ').title()} Pump Efficiency Contour Plot") +# Data points vs. surrogate outputs +X_data = pump_data["Flow (gpm)"] * 1e3 +Y_data = pump_data["Head (ft)"] * 1e2 +Z_data = pump_data["efficiency"] * 1e2 +for l in levels: + X_points = X_data[Z_data == l] + Y_points = Y_data[Z_data == l] + plt.scatter(X_points, Y_points, color="red", s=10, label=f"{l}%") + plt.text(X_points.iloc[0]+20,Y_points.iloc[0]+3, f"{l}%",color="red") plt.show() +# Data Validation Scatter plot + +Z_modeled = pd.DataFrame() + +for i in range(len(X_data)): + m.flowrate.fix(X_data[i]/1e3) + m.head.fix(Y_data[i]/1e2) + calculate_variable_from_constraint(m.eff, m.surrogate_blk.pysmo_constraint["efficiency"]) + Z_modeled.at[i, "efficiency_modeled"] = value(m.eff)*1e2 # # Create 3D scatter plot -# fig2 = plt.figure(figsize=(10, 8)) -# ax2 = fig2.add_subplot(111, projection="3d") +fig2 = plt.figure(figsize=(10, 8)) +ax2 = fig2.add_subplot(111, projection="3d") -# # Flatten the data for scatter plot +# Flatten the data for scatter plot # X_flat = X.flatten() # Y_flat = Y.flatten() # Z_flat = Z.flatten() -# # Remove NaN values for cleaner plot +# Remove NaN values for cleaner plot # mask = ~np.isnan(Z_flat) # X_clean = X_flat[mask] # Y_clean = Y_flat[mask] # Z_clean = Z_flat[mask] -# # Create scatter plot with color mapping -# scatter = ax2.scatter( -# X_clean, Y_clean, Z_clean, c=Z_clean, cmap="viridis", s=50, alpha=0.6 -# ) -# fig2.colorbar(scatter, ax=ax, label="Efficiency (%)") - -# # Plot actual data points -# X = pump_data["Flow (gpm)"] * 1e3 -# Y = pump_data["Head (ft)"] * 1e2 -# Z = pump_data["efficiency"] * 1e2 -# ax2.scatter(X, Y, Z, color="red", s=20, label="Data Points") - -# ax2.set_xlabel("Flow (gpm)") -# ax2.set_ylabel("Head (ft)") -# ax2.set_zlabel("Efficiency (%)") -# ax2.set_title("RO Feed Pump Efficiency 3D Scatter Plot") -# ax2.set_xlim(0, 4500) -# ax2.set_ylim(0, 400) -# plt.show() +# Create scatter plot with color mapping +scatter = ax2.scatter(X_data, Y_data, Z_data, color='red', s=50, alpha=0.6) + +# Plot actual data points +ax2.scatter(X_data,Y_data,Z_modeled["efficiency_modeled"], color="black", s=20, label="Modeled Points") + +ax2.set_xlabel("Flow (gpm)") +ax2.set_ylabel("Head (ft)") +ax2.set_zlabel("Efficiency (%)") +ax2.set_title("RO Feed Pump Efficiency 3D Scatter Plot") +ax2.set_xlim(0, 4500) +ax2.set_ylim(0, 400) +plt.show() # # Get the absolute path of the current script From 6e2d82485595ab2bab3c76f8ff2bcad1145509fe Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Wed, 28 Jan 2026 13:19:45 -0700 Subject: [PATCH 10/12] Created surrogate for the affinity law data for RO_feed pump --- solution.pickle | Bin 9925 -> 7605 bytes src/wrd/components/pump.py | 6 +- .../RO_feed_aff_laws_surr_1.csv | 66 +++++++++++++++ .../surrogate_models/create_pump_surrogate.py | 77 ++++++++++-------- 4 files changed, 114 insertions(+), 35 deletions(-) create mode 100644 src/wrd/surrogate_models/RO_feed_aff_laws_surr_1.csv diff --git a/solution.pickle b/solution.pickle index ec1c966737b78b5ae46aa56455fe7dcc4c3635a7..45efb0a0f2dc5e8ac323b8a39e6a4bec638a190d 100644 GIT binary patch literal 7605 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 X_E5eEZv;b%*brC|5zR&9A~5@JjNHSO diff --git a/src/wrd/components/pump.py b/src/wrd/components/pump.py index 2c955c52..87e00d36 100644 --- a/src/wrd/components/pump.py +++ b/src/wrd/components/pump.py @@ -169,14 +169,14 @@ def build_pump( blk.unit.efficiency_pump.bounds = (0, 1) blk.unit.efficiency_motor = Param( - initialize=0.938, + initialize=0.938, # Where did this value come from? mutable=True, units=pyunits.dimensionless, - doc="Efficiency of motor and VFD", + doc="Efficiency of motor", ) blk.unit.efficiency_vfd = Param( - initialize=0.95, + initialize=0.95, # More likely 96-97%. Would change significantly if pump speed is below like 63% mutable=True, units=pyunits.dimensionless, doc="Efficiency of VFD", diff --git a/src/wrd/surrogate_models/RO_feed_aff_laws_surr_1.csv b/src/wrd/surrogate_models/RO_feed_aff_laws_surr_1.csv new file mode 100644 index 00000000..fc8d2098 --- /dev/null +++ b/src/wrd/surrogate_models/RO_feed_aff_laws_surr_1.csv @@ -0,0 +1,66 @@ +Flow (gpm),Head (ft),efficiency,speed +1000,140,58.61067573,67.69829629 +1000,159.4444444,56.63978405,71.99854412 +1000,178.8888889,55.01580958,76.0334504 +1000,198.3333333,53.65533083,79.84524018 +1000,217.7777778,52.49928813,83.4662564 +1000,237.2222222,51.5048845,86.92186286 +1000,256.6666667,50.64042492,90.23235315 +1000,276.1111111,49.88196821,93.41424591 +1000,295.5555556,49.21110695,96.48118837 +1305.555556,140,68.00500682,68.74769369 +1305.555556,159.4444444,65.55765452,73.06873409 +1305.555556,178.8888889,63.46075248,77.1347949 +1305.555556,198.3333333,61.65219521,80.98290465 +1305.555556,217.7777778,60.08029721,84.64250922 +1305.555556,237.2222222,58.70348942,88.1373237 +1305.555556,256.6666667,57.4886522,91.48669639 +1305.555556,276.1111111,56.40937644,94.70660865 +1305.555556,295.5555556,55.44449155,97.8104126 +1611.111111,140,75.92264137,69.89586349 +1611.111111,159.4444444,73.54983351,74.1539811 +1611.111111,178.8888889,71.367001,78.18797764 +1611.111111,198.3333333,69.38727427,82.02397976 +1611.111111,217.7777778,67.60107454,85.68456993 +1611.111111,237.2222222,65.99075838,89.18903828 +1611.111111,256.6666667,64.53690624,92.55381834 +1611.111111,276.1111111,63.22092877,95.79293535 +1611.111111,295.5555556,62.02603099,98.91840768 +1916.666667,140,81.06838939,71.41463369 +1916.666667,159.4444444,79.42272379,75.51081029 +1916.666667,178.8888889,77.66216435,79.43140806 +1916.666667,198.3333333,75.90533962,83.18873945 +1916.666667,217.7777778,74.2114792,86.7957234 +1916.666667,237.2222222,72.60791091,90.26485301 +1916.666667,256.6666667,71.10483175,93.60773453 +1916.666667,276.1111111,69.70334104,96.83492565 +2222.222222,140,82.88475643,73.47673123 +2222.222222,159.4444444,82.46615853,77.32738103 +2222.222222,178.8888889,81.58806964,81.05713316 +2222.222222,198.3333333,80.45511804,84.66650567 +2222.222222,217.7777778,79.19395256,88.1590041 +2222.222222,237.2222222,77.88257808,91.53977687 +2222.222222,256.6666667,76.56858143,94.81475608 +2222.222222,276.1111111,75.28045803,97.99012759 +2527.777778,140,81.63935037,76.13683722 +2527.777778,159.4444444,82.62878871,79.69471277 +2527.777778,178.8888889,82.88990112,83.18006774 +2527.777778,198.3333333,82.66115167,86.58664556 +2527.777778,217.7777778,82.10819708,89.91146936 +2527.777778,237.2222222,81.34575253,93.15389592 +2527.777778,256.6666667,80.45309585,96.31487975 +2527.777778,276.1111111,79.48490454,99.39642456 +2833.333333,140,78.11462641,79.36026077 +2833.333333,159.4444444,80.3969664,82.6152386 +2833.333333,178.8888889,81.81026046,85.83347288 +2833.333333,198.3333333,82.5793374,89.00654268 +2833.333333,217.7777778,82.87416185,92.1285053 +2833.333333,237.2222222,82.82249237,95.19544793 +2833.333333,256.6666667,82.52000262,98.20506647 +3138.888889,159.4444444,76.49401747,86.03605688 +3138.888889,178.8888889,78.89675683,88.98976894 +3138.888889,198.3333333,80.59175107,91.9220164 +3138.888889,217.7777778,81.72970668,94.82639474 +3138.888889,237.2222222,82.43128057,97.69789809 +3444.444444,198.3333333,77.22393518,95.29015776 +3444.444444,217.7777778,79.09738569,97.97880664 diff --git a/src/wrd/surrogate_models/create_pump_surrogate.py b/src/wrd/surrogate_models/create_pump_surrogate.py index 6e6ac9b2..6527cd88 100644 --- a/src/wrd/surrogate_models/create_pump_surrogate.py +++ b/src/wrd/surrogate_models/create_pump_surrogate.py @@ -27,6 +27,7 @@ def min_head_limit(flow,pump_type): """Helper function to define minimum head for given flowrate.""" # Coefficients from pump curve data # Flow must be units of gpm. Head is in ft. + # This isn't valid anymore b/ it was for a smaller pump impeller diameter,not speed if pump_type == 'RO_feed': a_0 = 1.8033 a_1 = -0.202589 @@ -101,8 +102,10 @@ def max_flows(flow,pump_type): fittype = "rbf" # load data +# filename = f"{pump_type}_pump_eff_curve_data.csv" +filename = "RO_feed_aff_laws_surr_1.csv" pump_data = pd.read_csv( - os.path.join(os.path.dirname(__file__), f"{pump_type}_pump_eff_curve_data.csv") + os.path.join(os.path.dirname(__file__), filename) ) input_labels = ["Flow (gpm)", "Head (ft)"] output_labels = ["efficiency"] @@ -182,7 +185,7 @@ def max_flows(flow,pump_type): if ( y_vals[j] > head_limit(x_vals[i],pump_type) or y_vals[j] > MCSF(x_vals[i],pump_type) - or y_vals[j] < min_head_limit(x_vals[i],pump_type) + # or y_vals[j] < min_head_limit(x_vals[i],pump_type) or y_vals[j] < max_flows(x_vals[i],pump_type) ): z_vals[i, j] = np.nan @@ -229,31 +232,41 @@ def max_flows(flow,pump_type): plt.ylabel("Head (ft)") plt.title(f"{pump_type.replace('_', ' ').title()} Pump Efficiency Contour Plot") -# Data points vs. surrogate outputs -X_data = pump_data["Flow (gpm)"] * 1e3 -Y_data = pump_data["Head (ft)"] * 1e2 -Z_data = pump_data["efficiency"] * 1e2 - -for l in levels: - X_points = X_data[Z_data == l] - Y_points = Y_data[Z_data == l] - plt.scatter(X_points, Y_points, color="red", s=10, label=f"{l}%") - plt.text(X_points.iloc[0]+20,Y_points.iloc[0]+3, f"{l}%",color="red") +# Test value at 80% speed point +m.flowrate.fix(2778/1e3) +m.head.fix(150.8/1e2) +calculate_variable_from_constraint( + m.eff, m.surrogate_blk.pysmo_constraint["efficiency"] +) +print(m.flowrate.value, m.head.value) +print(value(m.eff)) + +# BELOW CODE WON'T WORK ANYMORE. WE ONLY HAVE A FEW ACTUAL DATA POINTS (100% CURVE, PLUS ONE 80% SPEED POINT) +# # Data points vs. surrogate outputs +# X_data = pump_data["Flow (gpm)"] * 1e3 +# Y_data = pump_data["Head (ft)"] * 1e2 +# Z_data = pump_data["efficiency"] * 1e2 + +# for l in levels: +# X_points = X_data[Z_data == l] +# Y_points = Y_data[Z_data == l] +# plt.scatter(X_points, Y_points, color="red", s=10, label=f"{l}%") +# plt.text(X_points.iloc[0]+20,Y_points.iloc[0]+3, f"{l}%",color="red") plt.show() # Data Validation Scatter plot -Z_modeled = pd.DataFrame() +# Z_modeled = pd.DataFrame() -for i in range(len(X_data)): - m.flowrate.fix(X_data[i]/1e3) - m.head.fix(Y_data[i]/1e2) - calculate_variable_from_constraint(m.eff, m.surrogate_blk.pysmo_constraint["efficiency"]) - Z_modeled.at[i, "efficiency_modeled"] = value(m.eff)*1e2 +# for i in range(len(X_data)): +# m.flowrate.fix(X_data[i]/1e3) +# m.head.fix(Y_data[i]/1e2) +# calculate_variable_from_constraint(m.eff, m.surrogate_blk.pysmo_constraint["efficiency"]) +# Z_modeled.at[i, "efficiency_modeled"] = value(m.eff)*1e2 -# # Create 3D scatter plot -fig2 = plt.figure(figsize=(10, 8)) -ax2 = fig2.add_subplot(111, projection="3d") +# # # Create 3D scatter plot +# fig2 = plt.figure(figsize=(10, 8)) +# ax2 = fig2.add_subplot(111, projection="3d") # Flatten the data for scatter plot # X_flat = X.flatten() @@ -266,19 +279,19 @@ def max_flows(flow,pump_type): # Y_clean = Y_flat[mask] # Z_clean = Z_flat[mask] -# Create scatter plot with color mapping -scatter = ax2.scatter(X_data, Y_data, Z_data, color='red', s=50, alpha=0.6) +# # Create scatter plot with color mapping +# scatter = ax2.scatter(X_data, Y_data, Z_data, color='red', s=50, alpha=0.6) -# Plot actual data points -ax2.scatter(X_data,Y_data,Z_modeled["efficiency_modeled"], color="black", s=20, label="Modeled Points") +# # Plot actual data points +# ax2.scatter(X_data,Y_data,Z_modeled["efficiency_modeled"], color="black", s=20, label="Modeled Points") -ax2.set_xlabel("Flow (gpm)") -ax2.set_ylabel("Head (ft)") -ax2.set_zlabel("Efficiency (%)") -ax2.set_title("RO Feed Pump Efficiency 3D Scatter Plot") -ax2.set_xlim(0, 4500) -ax2.set_ylim(0, 400) -plt.show() +# ax2.set_xlabel("Flow (gpm)") +# ax2.set_ylabel("Head (ft)") +# ax2.set_zlabel("Efficiency (%)") +# ax2.set_title("RO Feed Pump Efficiency 3D Scatter Plot") +# ax2.set_xlim(0, 4500) +# ax2.set_ylim(0, 400) +# plt.show() # # Get the absolute path of the current script From 6343c55201d4ff1cf64e1b2d5a4feaf27a8c6018 Mon Sep 17 00:00:00 2001 From: Jake Churchill Date: Wed, 28 Jan 2026 14:48:17 -0700 Subject: [PATCH 11/12] Changing to reading from the total efficiency, including motor and vfd losses --- solution.pickle | Bin 7605 -> 5284 bytes .../RO_feed_aff_laws_surr_2.csv | 37 ++++++++++++++++++ .../surrogate_models/create_pump_surrogate.py | 19 ++++----- 3 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 src/wrd/surrogate_models/RO_feed_aff_laws_surr_2.csv diff --git a/solution.pickle b/solution.pickle index 45efb0a0f2dc5e8ac323b8a39e6a4bec638a190d..5915dac276fcca75a05e94d0395ae6ad3157b08b 100644 GIT binary patch literal 5284 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 literal 7605 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 j9P%;yp`&) Date: Wed, 28 Jan 2026 15:09:25 -0700 Subject: [PATCH 12/12] Saving surrogate for RO feed --- solution.pickle | Bin 5284 -> 5844 bytes .../RO_feed_aff_laws_surr_3.csv | 44 ++++++++++++++++++ .../RO_feed_total_efficiency_rbf_fit.json | 1 + .../surrogate_models/create_pump_surrogate.py | 16 +++---- 4 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 src/wrd/surrogate_models/RO_feed_aff_laws_surr_3.csv create mode 100644 src/wrd/surrogate_models/RO_feed_total_efficiency_rbf_fit.json diff --git a/solution.pickle b/solution.pickle index 5915dac276fcca75a05e94d0395ae6ad3157b08b..489cd0024804448c09166c1326c61ed9f1ec4f41 100644 GIT binary patch delta 1412 zcmd6n`%@EF7>0L40wI8CMNzR_YGJq+A_C?1?NAg7Sd>z^U*!@<1w?2^3PKf~NYPSv z(MlLfsX)DeQ7WQDHr|jH+Dd_;qJ{*Pu%HAHL`2kX(h=MLpzklwnRCv3=e*yU^PaTn zao`lP%YIpYp0f%??QnC{6%{vzqiaw%L?bTth9@(H#eJd7TDmg$Tezs z4L;0jrZ)?B*0RB?S+j1T&8EywHnvtHEi5fnE!G16smsR7PpHLtL;Qr64bLtJJxB;l z5BWwkc4{$qNwDRB$u1h4I;0Vn3I|YXM)9`3Z33qlG4Y{%w?@aw+ z@QfHbik2yH6}wi?E{LVBCG-`u@Es=pU{5d?$@yM=l0KKz&Gh*Om=~fhSwI@^^-5tmVV$4mN1@`3&a&VX8$(F<1*$1 z4-!9&emw!m{msSpPbc7hgk{>VMk+`ui}gB}F##DBfvYEOsi5P+F$*+|f=xQLxAe+K zaeG~h|ChOPy=?_=Uk*hOcFprKvv7Uv=nAB1>h>HdB<|j$$0?wFDqG%_jDdRxbu%#n zl{$X2_r36(Wf(@h%sBJVQ2J^19SdXcr=*mZUub;o5s3-T##flrWa<0cb8Pab$%s1Z ztCLzQq|`j**SvfIQq`GF)x`?HiVDs)I|MuiL|%VbpxIqNj3Lo-fGu^B(h4M<+mPe?za8&(y2R zZ4$of2Sn^^`K(tA@|yhRM$ac9sj`>fl|BijZdM&T98`d$(ZwDv>*Y|mr#X0?Q7>6) z_bjO{eTI}yE0uA{b5OXB`Xq>?Naa-ERl`Lr45`B0kyEEhr0V-6?-Yxm;GS!9mBnJ| z<2$>%E{oYxq|iXyr}hGgq;}*ff13t`Tj!m(T|web1}WM%dSgzV7UCiU$N#pyC`I*q zs}wR$-sK|x24=sXE~P^#n9k#9j`s)M?=hmwpBGNXy89IEq3#zL6R2sbz&?HSGGnc zeC#p;ilrf?>O9G7(J@iy$(FRQct@B6z2ch;lbJlRirSE?&XY2tKSaRfN#%n}6uV3b zL^hFBvUqDodh)jHZ5iqD={Y--QnCnvd9=XvBW_Q1_w1nmI7S>KLWvSqD4!5$=FgF~ djgE#wwzhfIjGqF*9LK-E>)g&E61q`b9dqO{%`DaDm!ex)q0C4eC8w2#LYvavRCbjf`2D13 zC*;Uet|`s>-6|!mRp>pMbt-Lb)j$39e($}#_I~gE%Co}FM9M6_U~|*N z9>bgo9_EkX$|#JFDVrEPjNmW@9OsQ#J}GuQ9>i0wWb!eh#H7;9c_ZUjCJVwD#7&MH zA!3;lJ)BQUhWRWs&35`5T4Fj2<#Krchhi*JB!8MPgzik0R(mKca8+5!vjrYAl$3wx zu+yz!P=|QS&oM?JEVpy%w=0A*Fc$7iM8LO0WkXMw;7KPz|(k3O{;JK{0v2z-KN7Z z9?)p|xPA!q^^&P5v*;lhiFJ9O%^rfWm8bphw+;fE_qOLq)*z5RR(y{UEu4uy7v6SJ z3o$ud?y*oUV2h6}_d!~SlUdgKHxENxjzl|eJ`INQ4)yy7+hE pWIh=|7BC`~{mu_Yx+>%5$(SrrY1P*A3_@=!W8vb+UpB`s<|lghc0m9D diff --git a/src/wrd/surrogate_models/RO_feed_aff_laws_surr_3.csv b/src/wrd/surrogate_models/RO_feed_aff_laws_surr_3.csv new file mode 100644 index 00000000..0648d32c --- /dev/null +++ b/src/wrd/surrogate_models/RO_feed_aff_laws_surr_3.csv @@ -0,0 +1,44 @@ +Flow (gpm),Head (ft),speed,pump_efficiency,total_efficiency,power +1100,220,84.28318774,54.79567406,50.49421364,90.3391619 +1100,234.2857143,86.83483162,53.9641087,49.72792617,97.68782711 +1100,248.5714286,89.30638763,53.21220512,49.03504702,105.1089268 +1100,262.8571429,91.70474224,52.52906803,48.40553619,112.5951639 +1100,277.1428571,94.03586875,51.90568586,47.83108952,120.1402153 +1100,291.4285714,96.30498533,51.33454633,47.30478444,127.7385697 +1442.857143,220,85.52331391,63.33809647,58.3660559,102.5151313 +1442.857143,234.2857143,88.09936327,62.22947221,57.34445864,111.1168673 +1442.857143,248.5714286,90.59650789,61.21210662,56.40695625,119.8516951 +1442.857143,262.8571429,93.0211105,60.27583875,55.54418541,128.7083786 +1442.857143,277.1428571,95.3787704,59.41178885,54.74796343,137.6769891 +1442.857143,291.4285714,97.67443812,58.61221494,54.01115607,146.7487101 +1785.714286,220,86.70460696,71.34644269,65.74574694,112.6339447 +1785.714286,234.2857143,89.27076778,70.13959365,64.63363555,122.0117062 +1785.714286,248.5714286,91.76411955,69.00405752,63.587239,131.5817074 +1785.714286,262.8571429,94.18967976,67.93667681,62.60364768,141.3300204 +1785.714286,277.1428571,96.55200932,66.93357543,61.67928976,151.2441562 +1785.714286,291.4285714,98.85525114,65.9905953,60.81033357,161.3128704 +2128.571429,220,88.10107802,77.70880361,71.60866253,123.2672341 +2128.571429,234.2857143,90.61044434,76.65664934,70.63910236,133.0733742 +2128.571429,248.5714286,93.05837587,75.62036743,69.68416859,143.1224027 +2128.571429,262.8571429,95.44790169,74.60915298,68.75233447,153.3991195 +2128.571429,277.1428571,97.78196917,73.62872069,67.84886612,163.889688 +2471.428571,220,89.93300027,81.64182207,75.23293904,136.2275732 +2471.428571,234.2857143,92.3374897,80.9966516,74.63841445,146.2290877 +2471.428571,248.5714286,94.69533542,80.2895182,73.98679102,156.5119075 +2471.428571,262.8571429,97.00753419,79.54255345,73.298463,167.0610792 +2471.428571,277.1428571,99.27528384,78.77234336,72.58871441,177.8627294 +2814.285714,220,92.33092279,82.8898301,76.38297844,152.790581 +2814.285714,234.2857143,94.59359617,82.8200628,76.31868787,162.8491153 +2814.285714,248.5714286,96.8246585,82.61227456,76.12721101,173.2135169 +2814.285714,262.8571429,99.02362901,82.29684867,75.83654605,183.8703609 +3157.142857,220,95.33086487,81.7150666,75.30043387,173.8688335 +3157.142857,234.2857143,97.43227487,82.26673038,75.80879204,183.9173792 +3157.142857,248.5714286,99.51473808,82.62584552,76.13971665,194.2837556 +3500,220,98.89922918,78.69117823,72.51392074,200.1573959 +3000,254,99.02220228,82.88735076,76.38069373,188.050147 +3000,240,96.92258044,82.84812869,76.34455059,177.7692982 +3330,230,98.4767745,80.99770964,74.63938943,193.4221898 +2640,230,92.67792873,82.33393214,75.87071847,150.8550561 +2640,250,95.90236301,81.68005948,75.26817481,165.2855378 +1980,270,96.05973503,71.38018063,65.77683645,153.1998276 +2280,270,97.24974005,76.58049127,70.5689227,164.4324122 diff --git a/src/wrd/surrogate_models/RO_feed_total_efficiency_rbf_fit.json b/src/wrd/surrogate_models/RO_feed_total_efficiency_rbf_fit.json new file mode 100644 index 00000000..c1b3718c --- /dev/null +++ b/src/wrd/surrogate_models/RO_feed_total_efficiency_rbf_fit.json @@ -0,0 +1 @@ +{"model_encoding": {"total_efficiency": {"attr": {"x_data_columns": ["Flow (gpm)", "Head (ft)"], "x_data": [[0.0, 0.0], [0.0, 0.20000000027999953], [0.0, 0.4000000005599997], [0.0, 0.6000000008399998], [0.0, 0.7999999997200005], [0.0, 1.0], [0.1428571429166666, 0.0], [0.1428571429166666, 0.20000000027999953], [0.1428571429166666, 0.4000000005599997], [0.1428571429166666, 0.6000000008399998], [0.1428571429166666, 0.7999999997200005], [0.1428571429166666, 1.0], [0.2857142858333333, 0.0], [0.2857142858333333, 0.20000000027999953], [0.2857142858333333, 0.4000000005599997], [0.2857142858333333, 0.6000000008399998], [0.2857142858333333, 0.7999999997200005], [0.2857142858333333, 1.0], [0.42857142875, 0.0], [0.42857142875, 0.20000000027999953], [0.42857142875, 0.4000000005599997], [0.42857142875, 0.6000000008399998], [0.42857142875, 0.7999999997200005], [0.57142857125, 0.0], [0.57142857125, 0.20000000027999953], [0.57142857125, 0.4000000005599997], [0.57142857125, 0.6000000008399998], [0.57142857125, 0.7999999997200005], [0.7142857141666666, 0.0], [0.7142857141666666, 0.20000000027999953], [0.7142857141666666, 0.4000000005599997], [0.7142857141666666, 0.6000000008399998], [0.8571428570833333, 0.0], [0.8571428570833333, 0.20000000027999953], [0.8571428570833333, 0.4000000005599997], [1.0, 0.0], [0.7916666666666666, 0.4760000001903999], [0.7916666666666666, 0.28000000011199966], [0.9291666666666667, 0.14000000005600016], [0.6416666666666667, 0.14000000005600016], [0.6416666666666667, 0.4200000001679998], [0.36666666666666664, 0.7000000002800002], [0.49166666666666675, 0.7000000002800002]], "centres": [[0.0, 0.0], [0.0, 0.20000000027999953], [0.0, 0.4000000005599997], [0.0, 0.6000000008399998], [0.0, 0.7999999997200005], [0.0, 1.0], [0.1428571429166666, 0.0], [0.1428571429166666, 0.20000000027999953], [0.1428571429166666, 0.4000000005599997], [0.1428571429166666, 0.6000000008399998], [0.1428571429166666, 0.7999999997200005], [0.1428571429166666, 1.0], [0.2857142858333333, 0.0], [0.2857142858333333, 0.20000000027999953], [0.2857142858333333, 0.4000000005599997], [0.2857142858333333, 0.6000000008399998], [0.2857142858333333, 0.7999999997200005], [0.2857142858333333, 1.0], [0.42857142875, 0.0], [0.42857142875, 0.20000000027999953], [0.42857142875, 0.4000000005599997], [0.42857142875, 0.6000000008399998], [0.42857142875, 0.7999999997200005], [0.57142857125, 0.0], [0.57142857125, 0.20000000027999953], [0.57142857125, 0.4000000005599997], [0.57142857125, 0.6000000008399998], [0.57142857125, 0.7999999997200005], [0.7142857141666666, 0.0], [0.7142857141666666, 0.20000000027999953], [0.7142857141666666, 0.4000000005599997], [0.7142857141666666, 0.6000000008399998], [0.8571428570833333, 0.0], [0.8571428570833333, 0.20000000027999953], [0.8571428570833333, 0.4000000005599997], [1.0, 0.0], [0.7916666666666666, 0.4760000001903999], [0.7916666666666666, 0.28000000011199966], [0.9291666666666667, 0.14000000005600016], [0.6416666666666667, 0.14000000005600016], [0.6416666666666667, 0.4200000001679998], [0.36666666666666664, 0.7000000002800002], [0.49166666666666675, 0.7000000002800002]], "basis_function": "cubic", "weights": [[3.5425413472590908], [-1.6738164052381177], [0.6540416997855951], [0.83546339649362], [-2.1681552297899565], [5.3645902051683105], [-3.9900730847607804], [-1.3274146386022678], [-0.898570776895518], [-0.7539808148023965], [-1.2805571161900708], [-6.003851848226837], [1.7494254009796402], [0.5481731010072153], [1.0176217283081002], [0.6629159705325947], [-0.07440759959379761], [2.905858455059956], [0.1931547817750312], [-0.9335445728494349], [0.220553290703549], [-0.1416350913266342], [-1.7019066436238859], [0.9866886068680794], [1.0123882731884777], [0.42178552456107354], [0.06576485309295776], [1.123310172896133], [1.0895549760552048], [0.9430450408706168], [0.5084477561388212], [-0.3293584107613228], [-1.4020151010360884], [1.6495045680633638], [-0.6483513394211258], [2.2568659580706365], [-0.05207062422442732], [0.026893884969382498], [-4.032839659069281], [-2.586291920039109], [-0.07284915588161311], [1.3002686381136073], [-0.5443707660817836]], "sigma": 0.0, "regularization_parameter": 1e-05, "rmse": 1.9582609261455943e-05, "R2": 0.9999999965857479, "x_data_min": [[1.1, 2.2]], "x_data_max": [[3.5, 2.914285714]], "y_data_min": [0.4730478444], "y_data_max": [0.7638297844]}, "map": {"x_data_columns": "list", "x_data": "numpy", "centres": "numpy", "basis_function": "str", "weights": "numpy", "sigma": "str", "regularization_parameter": "str", "rmse": "str", "R2": "str", "x_data_min": "numpy", "x_data_max": "numpy", "y_data_min": "numpy", "y_data_max": "numpy"}}}, "input_labels": ["Flow (gpm)", "Head (ft)"], "output_labels": ["total_efficiency"], "input_bounds": {"Flow (gpm)": [1.1, 3.5], "Head (ft)": [2.2, 2.914285714]}, "surrogate_type": "rbf"} \ No newline at end of file diff --git a/src/wrd/surrogate_models/create_pump_surrogate.py b/src/wrd/surrogate_models/create_pump_surrogate.py index 8a389796..d946eef5 100644 --- a/src/wrd/surrogate_models/create_pump_surrogate.py +++ b/src/wrd/surrogate_models/create_pump_surrogate.py @@ -103,7 +103,7 @@ def max_flows(flow,pump_type): # load data # filename = f"{pump_type}_pump_eff_curve_data.csv" -filename = "RO_feed_aff_laws_surr_2.csv" +filename = "RO_feed_aff_laws_surr_3.csv" pump_data = pd.read_csv( os.path.join(os.path.dirname(__file__), filename) ) @@ -253,7 +253,7 @@ def max_flows(flow,pump_type): # Y_points = Y_data[Z_data == l] # plt.scatter(X_points, Y_points, color="red", s=10, label=f"{l}%") # plt.text(X_points.iloc[0]+20,Y_points.iloc[0]+3, f"{l}%",color="red") -plt.show() +# plt.show() # Data Validation Scatter plot @@ -295,9 +295,9 @@ def max_flows(flow,pump_type): # plt.show() -# # Get the absolute path of the current script -# current_script_path = os.path.abspath(__file__) -# # Get the directory containing the current script -# current_directory = os.path.dirname(current_script_path) -# surr_name = f"UV_power_poly_fit_order_{trainer.config.maximum_polynomial_order}.json" -# Surrogate.save_to_file(current_directory+surr_name, overwrite=True) +# Get the absolute path of the current script +current_script_path = os.path.abspath(__file__) +# Get the directory containing the current script +current_directory = os.path.dirname(current_script_path) +surr_name = f"{pump_type}_total_efficiency_rbf_fit.json" +Surrogate.save_to_file(os.path.join(current_directory, surr_name), overwrite=True)