diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 87018ed..f9c0da9 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-09-03T21:45:44","documenter_version":"1.6.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.11.0","generation_timestamp":"2024-10-10T18:32:23","documenter_version":"1.6.0"}} \ No newline at end of file diff --git a/dev/benchmarks/91acf8d5.svg b/dev/benchmarks/194cd3de.svg similarity index 96% rename from dev/benchmarks/91acf8d5.svg rename to dev/benchmarks/194cd3de.svg index e232fe3..ea2305f 100644 --- a/dev/benchmarks/91acf8d5.svg +++ b/dev/benchmarks/194cd3de.svg @@ -1 +1 @@ -10100100010k100k1M89123456789102argmaximadiffmaximafindlocalmaximanaivemaximasimplemaximaviewsmaximaVector length (n)Ratio \ No newline at end of file +10100100010k100k1M89123456789102argmaximadiffmaximafindlocalmaximanaivemaximasimplemaximaviewsmaximaVector length (n)Ratio \ No newline at end of file diff --git a/dev/benchmarks/a2afe874.svg b/dev/benchmarks/55b0836f.svg similarity index 97% rename from dev/benchmarks/a2afe874.svg rename to dev/benchmarks/55b0836f.svg index 15cf1c4..4525c3a 100644 --- a/dev/benchmarks/a2afe874.svg +++ b/dev/benchmarks/55b0836f.svg @@ -1 +1 @@ -10100100010k100k1M6789123456789102345argmaximadiffmaximafindlocalmaximanaivemaximasimplemaximaviewsmaximaVector length (n)Time (ns) \ No newline at end of file +10100100010k100k1M6789123456789102345argmaximadiffmaximafindlocalmaximanaivemaximasimplemaximaviewsmaximaVector length (n)Time (ns) \ No newline at end of file diff --git a/dev/benchmarks/index.html b/dev/benchmarks/index.html index ff30f81..fdad26a 100644 --- a/dev/benchmarks/index.html +++ b/dev/benchmarks/index.html @@ -1,5 +1,5 @@ -Benchmarks · Peaks

Peak finding benchmarks

Peaks.jl functions can be very fast, but some features (wider window widths, support for missing, etc) come at a performance penalty. Below, 3 example peak finding functions[1] and Images.findlocalmaxima are benchmarked against argmaxima and simplemaxima from Peaks.jl. (Only maxima type functions are benchmarked below, but similar results can be found for equivalent minima finding functions.)

One important difference between the Peaks.jl functions (argmaxima, simplemaxima, etc) and Images.findlocalmaxima or the example functions is that only Peaks.jl functions recognize plateaus. Depending on the type and origins of your data (quantized data, such as data sampled from physical measurements using ADC's, has a higher likelihood of plateaus), recognizing plateaus may or may not be an important/relevant feature. As a result, Peaks.jl functions are doing more work, but are still competitive with other obvious implementations.

Example block output

The data generation for the above benchmark was a sine function with a peak every 5 elements; similar results are observed for more sparsely spaced peaks. However, that benchmark may not accurately reflect real-world performance when peaks are spaced more variably[2].

When benchmarking against randomly sampled data, we see roughly the same performance characteristics, now presented relative to the speed of simplemaxima (higher is slower):

Example block output

The large difference in speed between simplemaxima and other functions is due to the use of SIMD code for suitable input arrays and element types; see the docstring for its limitations compared to argmaxima.

Benchmarked functions:

`naivemaxima`
function naivemaxima(x)
+Benchmarks · Peaks

Peak finding benchmarks

Peaks.jl functions can be very fast, but some features (wider window widths, support for missing, etc) come at a performance penalty. Below, 3 example peak finding functions[1] and Images.findlocalmaxima are benchmarked against argmaxima and simplemaxima from Peaks.jl. (Only maxima type functions are benchmarked below, but similar results can be found for equivalent minima finding functions.)

One important difference between the Peaks.jl functions (argmaxima, simplemaxima, etc) and Images.findlocalmaxima or the example functions is that only Peaks.jl functions recognize plateaus. Depending on the type and origins of your data (quantized data, such as data sampled from physical measurements using ADC's, has a higher likelihood of plateaus), recognizing plateaus may or may not be an important/relevant feature. As a result, Peaks.jl functions are doing more work, but are still competitive with other obvious implementations.

Example block output

The data generation for the above benchmark was a sine function with a peak every 5 elements; similar results are observed for more sparsely spaced peaks. However, that benchmark may not accurately reflect real-world performance when peaks are spaced more variably[2].

When benchmarking against randomly sampled data, we see roughly the same performance characteristics, now presented relative to the speed of simplemaxima (higher is slower):

Example block output

The large difference in speed between simplemaxima and other functions is due to the use of SIMD code for suitable input arrays and element types; see the docstring for its limitations compared to argmaxima.

Benchmarked functions:

`naivemaxima`
function naivemaxima(x)
    pks = Int[]
    i = firstindex(x) + 1
    for i in firstindex(x)+1:lastindex(x)-1
@@ -16,4 +16,4 @@
     x2 = @view x[begin+1:end - 1]
     x3 = @view x[begin+2:end]
     return axes(x,1)[2:end-1][x1 .< x2 .> x3]
-end
  • 1Currently/previously used by other Julia packages or public code. Those packages/codes are intentionally not named because they are not primarily peak finding packages, and the functions aren't part of their public API.
  • 2This benchmark will be distorted by how well the CPU branch-predictor can learn each function; more predictable branches will make the function run faster than could be expected with more realistic data.
+end
  • 1Currently/previously used by other Julia packages or public code. Those packages/codes are intentionally not named because they are not primarily peak finding packages, and the functions aren't part of their public API.
  • 2This benchmark will be distorted by how well the CPU branch-predictor can learn each function; more predictable branches will make the function run faster than could be expected with more realistic data.
diff --git a/dev/glossary/db4b40e1.svg b/dev/glossary/6e175c65.svg similarity index 95% rename from dev/glossary/db4b40e1.svg rename to dev/glossary/6e175c65.svg index 4a22260..078364c 100644 --- a/dev/glossary/db4b40e1.svg +++ b/dev/glossary/6e175c65.svg @@ -1 +1 @@ -050100150200−1−0.500.51 Prominencerelheight = 0relheight = 0.7relheight = 1width = 121.63 \ No newline at end of file +050100150200−1−0.500.51 Prominencerelheight = 0relheight = 0.7relheight = 1width = 121.63 \ No newline at end of file diff --git a/dev/glossary/c5f56ed7.svg b/dev/glossary/81bc9bf7.svg similarity index 91% rename from dev/glossary/c5f56ed7.svg rename to dev/glossary/81bc9bf7.svg index 9105a22..cd54d43 100644 --- a/dev/glossary/c5f56ed7.svg +++ b/dev/glossary/81bc9bf7.svg @@ -1 +1 @@ -00.5100.20.40.60.8100.51PlateauNot plateaus \ No newline at end of file +00.5100.20.40.60.8100.51PlateauNot plateaus \ No newline at end of file diff --git a/dev/glossary/index.html b/dev/glossary/index.html index 0ef4609..5f04a30 100644 --- a/dev/glossary/index.html +++ b/dev/glossary/index.html @@ -22,7 +22,7 @@
@@ -30,25 +30,25 @@ require(["plotly"], function(Plotly) { window.PLOTLYENV = window.PLOTLYENV || {} - if (document.getElementById('5347bb21-2c5e-4f9d-921e-58073c6add86')) { + if (document.getElementById('92c43c76-983e-4612-8f4b-7b7e89bef3dd')) { Plotly.newPlot( - '5347bb21-2c5e-4f9d-921e-58073c6add86', + '92c43c76-983e-4612-8f4b-7b7e89bef3dd', [{"x":[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4.0,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5.0,5.1,5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,6.0,6.1,6.2,6.3,6.4,6.5,6.6,6.7,6.8,6.9,7.0,7.1,7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,8.0,8.1,8.2,8.3,8.4,8.5,8.6,8.7,8.8,8.9,9.0,9.1,9.2,9.3,9.4,9.5,9.6,9.7,9.8,9.9,10.0,10.1,10.2,10.3,10.4,10.5,10.6,10.7,10.8,10.9,11.0,11.1,11.2,11.3,11.4,11.5,11.6,11.7,11.8,11.9,12.0,12.1,12.2,12.3,12.4,12.5,12.6,12.7,12.8,12.9,13.0,13.1,13.2,13.3,13.4,13.5,13.6,13.7,13.8,13.9,14.0,14.1,14.2,14.3,14.4,14.5,14.6,14.7,14.8,14.9,15.0,15.1,15.2,15.3,15.4,15.5,15.6,15.7,15.8,15.9,16.0,16.1,16.2,16.3,16.4,16.5,16.6,16.7,16.8,16.9,17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0],"y":[0.0,0.407,0.807,1.19,1.56,1.9,2.2,2.47,2.71,2.9,3.05,3.17,3.24,3.29,3.3,3.29,3.26,3.22,3.17,3.12,3.08,3.05,3.03,3.04,3.07,3.12,3.2,3.3,3.43,3.58,3.74,3.92,4.09,4.27,4.44,4.6,4.74,4.85,4.93,4.97,4.98,4.94,4.87,4.75,4.59,4.39,4.16,3.9,3.61,3.31,3.0,2.69,2.38,2.08,1.79,1.54,1.31,1.11,0.944,0.817,0.727,0.671,0.65,0.658,0.692,0.746,0.815,0.892,0.972,1.05,1.11,1.16,1.19,1.2,1.17,1.12,1.04,0.929,0.792,0.631,0.449,0.252,0.0465,-0.163,-0.369,-0.565,-0.745,-0.904,-1.04,-1.13,-1.2,-1.23,-1.22,-1.17,-1.08,-0.958,-0.806,-0.628,-0.43,-0.219,0.0,0.219,0.43,0.628,0.806,0.958,1.08,1.17,1.22,1.23,1.2,1.13,1.04,0.904,0.745,0.565,0.369,0.163,-0.0465,-0.252,-0.449,-0.631,-0.792,-0.929,-1.04,-1.12,-1.17,-1.2,-1.19,-1.16,-1.11,-1.05,-0.972,-0.892,-0.815,-0.746,-0.692,-0.658,-0.65,-0.671,-0.727,-0.817,-0.944,-1.11,-1.31,-1.54,-1.79,-2.08,-2.38,-2.69,-3.0,-3.31,-3.61,-3.9,-4.16,-4.39,-4.59,-4.75,-4.87,-4.94,-4.98,-4.97,-4.93,-4.85,-4.74,-4.6,-4.44,-4.27,-4.09,-3.92,-3.74,-3.58,-3.43,-3.3,-3.2,-3.12,-3.07,-3.04,-3.03,-3.05,-3.08,-3.12,-3.17,-3.22,-3.26,-3.29,-3.3,-3.29,-3.24,-3.17,-3.05,-2.9,-2.71,-2.47,-2.2,-1.9,-1.56,-1.19,-0.807,-0.407,0.0,0.407,0.807,1.19,1.56,1.9,2.2,2.47,2.71,2.9,3.05,3.17,3.24,3.29,3.3,3.29,3.26,3.22,3.17,3.12,3.08,3.05,3.03,3.04,3.07,3.12,3.2,3.3,3.43,3.58,3.74],"type":"scatter","name":"Signal","legendrank":1},{"legendrank":3,"mode":"markers","zorder":5,"x":[1.4],"y":[3.3],"type":"scatter","name":"Window maximum","marker":{"color":"blueviolet"}},{"marker":{"color":"#d62728","opacity":[0,0,0,0]},"mode":"markers","zorder":10,"x":[4.0,7.3,10.9,13.8],"y":[4.98,1.2,1.23,-0.65],"type":"scatter","name":"Maxima","legendrank":2},{"line":{"color":"black","width":15},"y":[0],"type":"scatter","visible":"legendonly","opacity":0.65,"name":"Window","x":[0]}], {"xaxis":{"range":[0.0,23.0],"fixedrange":true},"shapes":[{"x0":0.0,"fillcolor":"black","line":{"width":0},"type":"rect","y0":0,"y1":1,"yref":"y domain","opacity":0.25,"layer":"below","x1":1.6},{"x0":0.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.0}],"font":{"size":14},"template":{"layout":{"coloraxis":{"colorbar":{"ticks":"","outlinewidth":0}},"xaxis":{"gridcolor":"white","zerolinewidth":2,"title":{"standoff":15},"ticks":"","zerolinecolor":"white","automargin":true,"linecolor":"white"},"hovermode":"closest","paper_bgcolor":"white","geo":{"showlakes":true,"showland":true,"landcolor":"#E5ECF6","bgcolor":"white","subunitcolor":"white","lakecolor":"white"},"hoverlabel":{"align":"left"},"yaxis":{"gridcolor":"white","zerolinewidth":2,"title":{"standoff":15},"ticks":"","zerolinecolor":"white","automargin":true,"linecolor":"white"},"shapedefaults":{"line":{"color":"#2a3f5f"}},"mapbox":{"style":"light"},"polar":{"angularaxis":{"gridcolor":"white","ticks":"","linecolor":"white"},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","ticks":"","linecolor":"white"}},"autotypenumbers":"strict","font":{"color":"#2a3f5f"},"ternary":{"aaxis":{"gridcolor":"white","ticks":"","linecolor":"white"},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","ticks":"","linecolor":"white"},"baxis":{"gridcolor":"white","ticks":"","linecolor":"white"}},"annotationdefaults":{"arrowhead":0,"arrowwidth":1,"arrowcolor":"#2a3f5f"},"plot_bgcolor":"#E5ECF6","title":{"x":0.05},"scene":{"xaxis":{"gridcolor":"white","gridwidth":2,"backgroundcolor":"#E5ECF6","ticks":"","showbackground":true,"zerolinecolor":"white","linecolor":"white"},"zaxis":{"gridcolor":"white","gridwidth":2,"backgroundcolor":"#E5ECF6","ticks":"","showbackground":true,"zerolinecolor":"white","linecolor":"white"},"yaxis":{"gridcolor":"white","gridwidth":2,"backgroundcolor":"#E5ECF6","ticks":"","showbackground":true,"zerolinecolor":"white","linecolor":"white"}},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"]},"data":{}},"legend":{"itemclick":false,"itemdoubleclick":false},"margin":{"l":10,"b":10,"autoexpand":0,"r":10,"t":10},"yaxis":{"fixedrange":true},"sliders":[{"pad":{"l":-8,"r":-8,"t":20},"xanchor":"right","transition":{"easing":"linear","duration":60.0},"ticklen":0,"currentvalue":{"visible":false},"minorticklen":0,"steps":[{"method":"animate","label":"","args":[[1],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[6],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[11],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[16],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[21],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[26],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[31],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[36],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[41],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[46],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[51],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[56],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[61],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[66],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[71],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[76],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[81],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[86],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[91],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[96],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[101],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[106],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[111],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[116],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[121],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[126],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[131],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[136],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[141],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[146],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[151],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[156],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[161],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[166],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[171],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[176],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[181],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[186],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[191],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[196],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[201],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[206],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[211],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[216],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[221],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[226],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]},{"method":"animate","label":"","args":[[231],{"mode":"immediate","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":0}}]}],"len":1,"x":1}],"updatemenus":[{"pad":{"l":6,"b":6},"yanchor":"bottom","xanchor":"left","y":0,"active":0,"type":"buttons","buttons":[{"method":"animate","label":"Play","args":[null,{"mode":"next","transition":{"easing":"linear","duration":60.0},"frame":{"redraw":false,"duration":60.0},"fromcurrent":true}]},{"method":"animate","label":"Pause","args":[[null],{"mode":"next","transition":{"duration":0},"frame":{"redraw":false,"duration":0},"fromcurrent":true}]},{"method":"animate","label":"Reset","args":[[1],{"mode":"next","transition":{"duration":0},"frame":{"redraw":false,"duration":0}}]}],"direction":"left","x":0}]}, {"editable":false,"responsive":true,"staticPlot":false,"displayModeBar":false,"scrollZoom":true,"showEditInChartStudio":false}, ).then(function() { - Plotly.addFrames('5347bb21-2c5e-4f9d-921e-58073c6add86', [{"name":1,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":1.6},{"x0":0.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.0}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":2,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":1.7},{"x0":0.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.1}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":3,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":1.8},{"x0":0.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.2}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":4,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":1.9},{"x0":0.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.3}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":5,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.0},{"x0":0.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.4}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":6,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.1},{"x0":0.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.5}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":7,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.2},{"x0":0.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.6}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":8,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.3},{"x0":0.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.7}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":9,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.4},{"x0":0.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.8}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":10,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.5},{"x0":0.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.9}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":11,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.6},{"x0":1.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.0}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":12,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.7},{"x0":1.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.1}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":13,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.8},{"x0":1.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.2}]},"traces":[1,2],"data":[{"y":[3.43],"x":[2.8]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":14,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.9},{"x0":1.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.3}]},"traces":[1,2],"data":[{"y":[3.58],"x":[2.9]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":15,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":3.0},{"x0":1.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.4}]},"traces":[1,2],"data":[{"y":[3.74],"x":[3.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":16,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":3.1},{"x0":1.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.5}]},"traces":[1,2],"data":[{"y":[3.92],"x":[3.1]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":17,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":3.2},{"x0":1.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.6}]},"traces":[1,2],"data":[{"y":[4.09],"x":[3.2]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":18,"layout":{"shapes":[{"x0":0.1,"type":"rect","y0":0,"y1":1,"x1":3.3},{"x0":1.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.7}]},"traces":[1,2],"data":[{"y":[4.27],"x":[3.3]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":19,"layout":{"shapes":[{"x0":0.2,"type":"rect","y0":0,"y1":1,"x1":3.4},{"x0":1.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.8}]},"traces":[1,2],"data":[{"y":[4.44],"x":[3.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":20,"layout":{"shapes":[{"x0":0.3,"type":"rect","y0":0,"y1":1,"x1":3.5},{"x0":1.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.9}]},"traces":[1,2],"data":[{"y":[4.6],"x":[3.5]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":21,"layout":{"shapes":[{"x0":0.4,"type":"rect","y0":0,"y1":1,"x1":3.6},{"x0":2.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.0}]},"traces":[1,2],"data":[{"y":[4.74],"x":[3.6]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":22,"layout":{"shapes":[{"x0":0.5,"type":"rect","y0":0,"y1":1,"x1":3.7},{"x0":2.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.1}]},"traces":[1,2],"data":[{"y":[4.85],"x":[3.7]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":23,"layout":{"shapes":[{"x0":0.6,"type":"rect","y0":0,"y1":1,"x1":3.8},{"x0":2.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.2}]},"traces":[1,2],"data":[{"y":[4.93],"x":[3.8]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":24,"layout":{"shapes":[{"x0":0.7,"type":"rect","y0":0,"y1":1,"x1":3.9},{"x0":2.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.3}]},"traces":[1,2],"data":[{"y":[4.97],"x":[3.9]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":25,"layout":{"shapes":[{"x0":0.8,"type":"rect","y0":0,"y1":1,"x1":4.0},{"x0":2.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.4}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":26,"layout":{"shapes":[{"x0":0.9,"type":"rect","y0":0,"y1":1,"x1":4.1},{"x0":2.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.5}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":27,"layout":{"shapes":[{"x0":1.0,"type":"rect","y0":0,"y1":1,"x1":4.2},{"x0":2.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.6}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":28,"layout":{"shapes":[{"x0":1.1,"type":"rect","y0":0,"y1":1,"x1":4.3},{"x0":2.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.7}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":29,"layout":{"shapes":[{"x0":1.2,"type":"rect","y0":0,"y1":1,"x1":4.4},{"x0":2.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.8}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":30,"layout":{"shapes":[{"x0":1.3,"type":"rect","y0":0,"y1":1,"x1":4.5},{"x0":2.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.9}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":31,"layout":{"shapes":[{"x0":1.4,"type":"rect","y0":0,"y1":1,"x1":4.6},{"x0":3.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.0}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":32,"layout":{"shapes":[{"x0":1.5,"type":"rect","y0":0,"y1":1,"x1":4.7},{"x0":3.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.1}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":33,"layout":{"shapes":[{"x0":1.6,"type":"rect","y0":0,"y1":1,"x1":4.8},{"x0":3.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.2}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":34,"layout":{"shapes":[{"x0":1.7,"type":"rect","y0":0,"y1":1,"x1":4.9},{"x0":3.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.3}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":35,"layout":{"shapes":[{"x0":1.8,"type":"rect","y0":0,"y1":1,"x1":5.0},{"x0":3.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.4}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":36,"layout":{"shapes":[{"x0":1.9,"type":"rect","y0":0,"y1":1,"x1":5.1},{"x0":3.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.5}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":37,"layout":{"shapes":[{"x0":2.0,"type":"rect","y0":0,"y1":1,"x1":5.2},{"x0":3.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.6}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":38,"layout":{"shapes":[{"x0":2.1,"type":"rect","y0":0,"y1":1,"x1":5.3},{"x0":3.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.7}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":39,"layout":{"shapes":[{"x0":2.2,"type":"rect","y0":0,"y1":1,"x1":5.4},{"x0":3.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.8}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":40,"layout":{"shapes":[{"x0":2.3,"type":"rect","y0":0,"y1":1,"x1":5.5},{"x0":3.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.9}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":41,"layout":{"shapes":[{"x0":2.4,"type":"rect","y0":0,"y1":1,"x1":5.6},{"x0":4.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.0}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":42,"layout":{"shapes":[{"x0":2.5,"type":"rect","y0":0,"y1":1,"x1":5.7},{"x0":4.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.1}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":43,"layout":{"shapes":[{"x0":2.6,"type":"rect","y0":0,"y1":1,"x1":5.8},{"x0":4.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.2}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":44,"layout":{"shapes":[{"x0":2.7,"type":"rect","y0":0,"y1":1,"x1":5.9},{"x0":4.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.3}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":45,"layout":{"shapes":[{"x0":2.8,"type":"rect","y0":0,"y1":1,"x1":6.0},{"x0":4.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.4}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":46,"layout":{"shapes":[{"x0":2.9,"type":"rect","y0":0,"y1":1,"x1":6.1},{"x0":4.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.5}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":47,"layout":{"shapes":[{"x0":3.0,"type":"rect","y0":0,"y1":1,"x1":6.2},{"x0":4.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.6}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":48,"layout":{"shapes":[{"x0":3.1,"type":"rect","y0":0,"y1":1,"x1":6.3},{"x0":4.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.7}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":49,"layout":{"shapes":[{"x0":3.2,"type":"rect","y0":0,"y1":1,"x1":6.4},{"x0":4.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.8}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":50,"layout":{"shapes":[{"x0":3.3,"type":"rect","y0":0,"y1":1,"x1":6.5},{"x0":4.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.9}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":51,"layout":{"shapes":[{"x0":3.4,"type":"rect","y0":0,"y1":1,"x1":6.6},{"x0":5.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.0}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":52,"layout":{"shapes":[{"x0":3.5,"type":"rect","y0":0,"y1":1,"x1":6.7},{"x0":5.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.1}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":53,"layout":{"shapes":[{"x0":3.6,"type":"rect","y0":0,"y1":1,"x1":6.8},{"x0":5.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.2}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":54,"layout":{"shapes":[{"x0":3.7,"type":"rect","y0":0,"y1":1,"x1":6.9},{"x0":5.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.3}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":55,"layout":{"shapes":[{"x0":3.8,"type":"rect","y0":0,"y1":1,"x1":7.0},{"x0":5.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.4}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":56,"layout":{"shapes":[{"x0":3.9,"type":"rect","y0":0,"y1":1,"x1":7.1},{"x0":5.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.5}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":57,"layout":{"shapes":[{"x0":4.0,"type":"rect","y0":0,"y1":1,"x1":7.2},{"x0":5.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.6}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":58,"layout":{"shapes":[{"x0":4.1,"type":"rect","y0":0,"y1":1,"x1":7.3},{"x0":5.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.7}]},"traces":[1,2],"data":[{"y":[4.94],"x":[4.1]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":59,"layout":{"shapes":[{"x0":4.2,"type":"rect","y0":0,"y1":1,"x1":7.4},{"x0":5.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.8}]},"traces":[1,2],"data":[{"y":[4.87],"x":[4.2]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":60,"layout":{"shapes":[{"x0":4.3,"type":"rect","y0":0,"y1":1,"x1":7.5},{"x0":5.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.9}]},"traces":[1,2],"data":[{"y":[4.75],"x":[4.3]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":61,"layout":{"shapes":[{"x0":4.4,"type":"rect","y0":0,"y1":1,"x1":7.6},{"x0":6.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.0}]},"traces":[1,2],"data":[{"y":[4.59],"x":[4.4]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":62,"layout":{"shapes":[{"x0":4.5,"type":"rect","y0":0,"y1":1,"x1":7.7},{"x0":6.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.1}]},"traces":[1,2],"data":[{"y":[4.39],"x":[4.5]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":63,"layout":{"shapes":[{"x0":4.6,"type":"rect","y0":0,"y1":1,"x1":7.8},{"x0":6.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.2}]},"traces":[1,2],"data":[{"y":[4.16],"x":[4.6]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":64,"layout":{"shapes":[{"x0":4.7,"type":"rect","y0":0,"y1":1,"x1":7.9},{"x0":6.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.3}]},"traces":[1,2],"data":[{"y":[3.9],"x":[4.7]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":65,"layout":{"shapes":[{"x0":4.8,"type":"rect","y0":0,"y1":1,"x1":8.0},{"x0":6.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.4}]},"traces":[1,2],"data":[{"y":[3.61],"x":[4.8]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":66,"layout":{"shapes":[{"x0":4.9,"type":"rect","y0":0,"y1":1,"x1":8.1},{"x0":6.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.5}]},"traces":[1,2],"data":[{"y":[3.31],"x":[4.9]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":67,"layout":{"shapes":[{"x0":5.0,"type":"rect","y0":0,"y1":1,"x1":8.2},{"x0":6.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.6}]},"traces":[1,2],"data":[{"y":[3.0],"x":[5.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":68,"layout":{"shapes":[{"x0":5.1,"type":"rect","y0":0,"y1":1,"x1":8.3},{"x0":6.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.7}]},"traces":[1,2],"data":[{"y":[2.69],"x":[5.1]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":69,"layout":{"shapes":[{"x0":5.2,"type":"rect","y0":0,"y1":1,"x1":8.4},{"x0":6.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.8}]},"traces":[1,2],"data":[{"y":[2.38],"x":[5.2]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":70,"layout":{"shapes":[{"x0":5.3,"type":"rect","y0":0,"y1":1,"x1":8.5},{"x0":6.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.9}]},"traces":[1,2],"data":[{"y":[2.08],"x":[5.3]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":71,"layout":{"shapes":[{"x0":5.4,"type":"rect","y0":0,"y1":1,"x1":8.6},{"x0":7.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.0}]},"traces":[1,2],"data":[{"y":[1.79],"x":[5.4]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":72,"layout":{"shapes":[{"x0":5.5,"type":"rect","y0":0,"y1":1,"x1":8.7},{"x0":7.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.1}]},"traces":[1,2],"data":[{"y":[1.54],"x":[5.5]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":73,"layout":{"shapes":[{"x0":5.6,"type":"rect","y0":0,"y1":1,"x1":8.8},{"x0":7.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.2}]},"traces":[1,2],"data":[{"y":[1.31],"x":[5.6]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":74,"layout":{"shapes":[{"x0":5.7,"type":"rect","y0":0,"y1":1,"x1":8.9},{"x0":7.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.3}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":75,"layout":{"shapes":[{"x0":5.8,"type":"rect","y0":0,"y1":1,"x1":9.0},{"x0":7.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.4}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":76,"layout":{"shapes":[{"x0":5.9,"type":"rect","y0":0,"y1":1,"x1":9.1},{"x0":7.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.5}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":77,"layout":{"shapes":[{"x0":6.0,"type":"rect","y0":0,"y1":1,"x1":9.2},{"x0":7.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.6}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":78,"layout":{"shapes":[{"x0":6.1,"type":"rect","y0":0,"y1":1,"x1":9.3},{"x0":7.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.7}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":79,"layout":{"shapes":[{"x0":6.2,"type":"rect","y0":0,"y1":1,"x1":9.4},{"x0":7.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.8}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":80,"layout":{"shapes":[{"x0":6.3,"type":"rect","y0":0,"y1":1,"x1":9.5},{"x0":7.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.9}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":81,"layout":{"shapes":[{"x0":6.4,"type":"rect","y0":0,"y1":1,"x1":9.6},{"x0":8.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.0}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":82,"layout":{"shapes":[{"x0":6.5,"type":"rect","y0":0,"y1":1,"x1":9.7},{"x0":8.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.1}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":83,"layout":{"shapes":[{"x0":6.6,"type":"rect","y0":0,"y1":1,"x1":9.8},{"x0":8.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.2}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":84,"layout":{"shapes":[{"x0":6.7,"type":"rect","y0":0,"y1":1,"x1":9.9},{"x0":8.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.3}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":85,"layout":{"shapes":[{"x0":6.8,"type":"rect","y0":0,"y1":1,"x1":10.0},{"x0":8.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.4}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":86,"layout":{"shapes":[{"x0":6.9,"type":"rect","y0":0,"y1":1,"x1":10.1},{"x0":8.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.5}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":87,"layout":{"shapes":[{"x0":7.0,"type":"rect","y0":0,"y1":1,"x1":10.2},{"x0":8.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.6}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":88,"layout":{"shapes":[{"x0":7.1,"type":"rect","y0":0,"y1":1,"x1":10.3},{"x0":8.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.7}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":89,"layout":{"shapes":[{"x0":7.2,"type":"rect","y0":0,"y1":1,"x1":10.4},{"x0":8.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.8}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":90,"layout":{"shapes":[{"x0":7.3,"type":"rect","y0":0,"y1":1,"x1":10.5},{"x0":8.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.9}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":91,"layout":{"shapes":[{"x0":7.4,"type":"rect","y0":0,"y1":1,"x1":10.6},{"x0":9.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.0}]},"traces":[1,2],"data":[{"y":[1.17],"x":[7.4]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":92,"layout":{"shapes":[{"x0":7.5,"type":"rect","y0":0,"y1":1,"x1":10.7},{"x0":9.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.1}]},"traces":[1,2],"data":[{"y":[1.17],"x":[10.7]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":93,"layout":{"shapes":[{"x0":7.6,"type":"rect","y0":0,"y1":1,"x1":10.8},{"x0":9.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.2}]},"traces":[1,2],"data":[{"y":[1.22],"x":[10.8]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":94,"layout":{"shapes":[{"x0":7.7,"type":"rect","y0":0,"y1":1,"x1":10.9},{"x0":9.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.3}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":95,"layout":{"shapes":[{"x0":7.8,"type":"rect","y0":0,"y1":1,"x1":11.0},{"x0":9.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.4}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":96,"layout":{"shapes":[{"x0":7.9,"type":"rect","y0":0,"y1":1,"x1":11.1},{"x0":9.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.5}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":97,"layout":{"shapes":[{"x0":8.0,"type":"rect","y0":0,"y1":1,"x1":11.2},{"x0":9.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.6}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":98,"layout":{"shapes":[{"x0":8.1,"type":"rect","y0":0,"y1":1,"x1":11.3},{"x0":9.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.7}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":99,"layout":{"shapes":[{"x0":8.2,"type":"rect","y0":0,"y1":1,"x1":11.4},{"x0":9.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.8}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":100,"layout":{"shapes":[{"x0":8.3,"type":"rect","y0":0,"y1":1,"x1":11.5},{"x0":9.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.9}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":101,"layout":{"shapes":[{"x0":8.4,"type":"rect","y0":0,"y1":1,"x1":11.6},{"x0":10.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.0}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":102,"layout":{"shapes":[{"x0":8.5,"type":"rect","y0":0,"y1":1,"x1":11.7},{"x0":10.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.1}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":103,"layout":{"shapes":[{"x0":8.6,"type":"rect","y0":0,"y1":1,"x1":11.8},{"x0":10.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.2}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":104,"layout":{"shapes":[{"x0":8.7,"type":"rect","y0":0,"y1":1,"x1":11.9},{"x0":10.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.3}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":105,"layout":{"shapes":[{"x0":8.8,"type":"rect","y0":0,"y1":1,"x1":12.0},{"x0":10.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.4}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":106,"layout":{"shapes":[{"x0":8.9,"type":"rect","y0":0,"y1":1,"x1":12.1},{"x0":10.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.5}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":107,"layout":{"shapes":[{"x0":9.0,"type":"rect","y0":0,"y1":1,"x1":12.2},{"x0":10.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.6}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":108,"layout":{"shapes":[{"x0":9.1,"type":"rect","y0":0,"y1":1,"x1":12.3},{"x0":10.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.7}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":109,"layout":{"shapes":[{"x0":9.2,"type":"rect","y0":0,"y1":1,"x1":12.4},{"x0":10.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.8}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":110,"layout":{"shapes":[{"x0":9.3,"type":"rect","y0":0,"y1":1,"x1":12.5},{"x0":10.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.9}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":111,"layout":{"shapes":[{"x0":9.4,"type":"rect","y0":0,"y1":1,"x1":12.6},{"x0":11.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.0}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":112,"layout":{"shapes":[{"x0":9.5,"type":"rect","y0":0,"y1":1,"x1":12.7},{"x0":11.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.1}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":113,"layout":{"shapes":[{"x0":9.6,"type":"rect","y0":0,"y1":1,"x1":12.8},{"x0":11.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.2}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":114,"layout":{"shapes":[{"x0":9.7,"type":"rect","y0":0,"y1":1,"x1":12.9},{"x0":11.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.3}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":115,"layout":{"shapes":[{"x0":9.8,"type":"rect","y0":0,"y1":1,"x1":13.0},{"x0":11.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.4}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":116,"layout":{"shapes":[{"x0":9.9,"type":"rect","y0":0,"y1":1,"x1":13.1},{"x0":11.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.5}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":117,"layout":{"shapes":[{"x0":10.0,"type":"rect","y0":0,"y1":1,"x1":13.2},{"x0":11.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.6}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":118,"layout":{"shapes":[{"x0":10.1,"type":"rect","y0":0,"y1":1,"x1":13.3},{"x0":11.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.7}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":119,"layout":{"shapes":[{"x0":10.2,"type":"rect","y0":0,"y1":1,"x1":13.4},{"x0":11.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.8}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":120,"layout":{"shapes":[{"x0":10.3,"type":"rect","y0":0,"y1":1,"x1":13.5},{"x0":11.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.9}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":121,"layout":{"shapes":[{"x0":10.4,"type":"rect","y0":0,"y1":1,"x1":13.6},{"x0":12.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.0}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":122,"layout":{"shapes":[{"x0":10.5,"type":"rect","y0":0,"y1":1,"x1":13.7},{"x0":12.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.1}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":123,"layout":{"shapes":[{"x0":10.6,"type":"rect","y0":0,"y1":1,"x1":13.8},{"x0":12.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.2}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":124,"layout":{"shapes":[{"x0":10.7,"type":"rect","y0":0,"y1":1,"x1":13.9},{"x0":12.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.3}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":125,"layout":{"shapes":[{"x0":10.8,"type":"rect","y0":0,"y1":1,"x1":14.0},{"x0":12.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.4}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":126,"layout":{"shapes":[{"x0":10.9,"type":"rect","y0":0,"y1":1,"x1":14.1},{"x0":12.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.5}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":127,"layout":{"shapes":[{"x0":11.0,"type":"rect","y0":0,"y1":1,"x1":14.2},{"x0":12.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.6}]},"traces":[1,2],"data":[{"y":[1.2],"x":[11.0]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":128,"layout":{"shapes":[{"x0":11.1,"type":"rect","y0":0,"y1":1,"x1":14.3},{"x0":12.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.7}]},"traces":[1,2],"data":[{"y":[1.13],"x":[11.1]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":129,"layout":{"shapes":[{"x0":11.2,"type":"rect","y0":0,"y1":1,"x1":14.4},{"x0":12.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.8}]},"traces":[1,2],"data":[{"y":[1.04],"x":[11.2]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":130,"layout":{"shapes":[{"x0":11.3,"type":"rect","y0":0,"y1":1,"x1":14.5},{"x0":12.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.9}]},"traces":[1,2],"data":[{"y":[0.904],"x":[11.3]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":131,"layout":{"shapes":[{"x0":11.4,"type":"rect","y0":0,"y1":1,"x1":14.6},{"x0":13.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.0}]},"traces":[1,2],"data":[{"y":[0.745],"x":[11.4]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":132,"layout":{"shapes":[{"x0":11.5,"type":"rect","y0":0,"y1":1,"x1":14.7},{"x0":13.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.1}]},"traces":[1,2],"data":[{"y":[0.565],"x":[11.5]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":133,"layout":{"shapes":[{"x0":11.6,"type":"rect","y0":0,"y1":1,"x1":14.8},{"x0":13.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.2}]},"traces":[1,2],"data":[{"y":[0.369],"x":[11.6]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":134,"layout":{"shapes":[{"x0":11.7,"type":"rect","y0":0,"y1":1,"x1":14.9},{"x0":13.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.3}]},"traces":[1,2],"data":[{"y":[0.163],"x":[11.7]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":135,"layout":{"shapes":[{"x0":11.8,"type":"rect","y0":0,"y1":1,"x1":15.0},{"x0":13.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.4}]},"traces":[1,2],"data":[{"y":[-0.0465],"x":[11.8]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":136,"layout":{"shapes":[{"x0":11.9,"type":"rect","y0":0,"y1":1,"x1":15.1},{"x0":13.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.5}]},"traces":[1,2],"data":[{"y":[-0.252],"x":[11.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":137,"layout":{"shapes":[{"x0":12.0,"type":"rect","y0":0,"y1":1,"x1":15.2},{"x0":13.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.6}]},"traces":[1,2],"data":[{"y":[-0.449],"x":[12.0]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":138,"layout":{"shapes":[{"x0":12.1,"type":"rect","y0":0,"y1":1,"x1":15.3},{"x0":13.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.7}]},"traces":[1,2],"data":[{"y":[-0.631],"x":[12.1]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":139,"layout":{"shapes":[{"x0":12.2,"type":"rect","y0":0,"y1":1,"x1":15.4},{"x0":13.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.8}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":140,"layout":{"shapes":[{"x0":12.3,"type":"rect","y0":0,"y1":1,"x1":15.5},{"x0":13.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.9}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":141,"layout":{"shapes":[{"x0":12.4,"type":"rect","y0":0,"y1":1,"x1":15.6},{"x0":14.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.0}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":142,"layout":{"shapes":[{"x0":12.5,"type":"rect","y0":0,"y1":1,"x1":15.7},{"x0":14.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.1}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":143,"layout":{"shapes":[{"x0":12.6,"type":"rect","y0":0,"y1":1,"x1":15.8},{"x0":14.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.2}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":144,"layout":{"shapes":[{"x0":12.7,"type":"rect","y0":0,"y1":1,"x1":15.9},{"x0":14.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.3}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":145,"layout":{"shapes":[{"x0":12.8,"type":"rect","y0":0,"y1":1,"x1":16.0},{"x0":14.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.4}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":146,"layout":{"shapes":[{"x0":12.9,"type":"rect","y0":0,"y1":1,"x1":16.1},{"x0":14.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.5}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":147,"layout":{"shapes":[{"x0":13.0,"type":"rect","y0":0,"y1":1,"x1":16.2},{"x0":14.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.6}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":148,"layout":{"shapes":[{"x0":13.1,"type":"rect","y0":0,"y1":1,"x1":16.3},{"x0":14.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.7}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":149,"layout":{"shapes":[{"x0":13.2,"type":"rect","y0":0,"y1":1,"x1":16.4},{"x0":14.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.8}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":150,"layout":{"shapes":[{"x0":13.3,"type":"rect","y0":0,"y1":1,"x1":16.5},{"x0":14.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.9}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":151,"layout":{"shapes":[{"x0":13.4,"type":"rect","y0":0,"y1":1,"x1":16.6},{"x0":15.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.0}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":152,"layout":{"shapes":[{"x0":13.5,"type":"rect","y0":0,"y1":1,"x1":16.7},{"x0":15.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.1}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":153,"layout":{"shapes":[{"x0":13.6,"type":"rect","y0":0,"y1":1,"x1":16.8},{"x0":15.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.2}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":154,"layout":{"shapes":[{"x0":13.7,"type":"rect","y0":0,"y1":1,"x1":16.9},{"x0":15.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.3}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":155,"layout":{"shapes":[{"x0":13.8,"type":"rect","y0":0,"y1":1,"x1":17.0},{"x0":15.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.4}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":156,"layout":{"shapes":[{"x0":13.9,"type":"rect","y0":0,"y1":1,"x1":17.1},{"x0":15.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.5}]},"traces":[1,2],"data":[{"y":[-0.671],"x":[13.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":157,"layout":{"shapes":[{"x0":14.0,"type":"rect","y0":0,"y1":1,"x1":17.2},{"x0":15.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.6}]},"traces":[1,2],"data":[{"y":[-0.727],"x":[14.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":158,"layout":{"shapes":[{"x0":14.1,"type":"rect","y0":0,"y1":1,"x1":17.3},{"x0":15.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.7}]},"traces":[1,2],"data":[{"y":[-0.817],"x":[14.1]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":159,"layout":{"shapes":[{"x0":14.2,"type":"rect","y0":0,"y1":1,"x1":17.4},{"x0":15.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.8}]},"traces":[1,2],"data":[{"y":[-0.944],"x":[14.2]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":160,"layout":{"shapes":[{"x0":14.3,"type":"rect","y0":0,"y1":1,"x1":17.5},{"x0":15.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.9}]},"traces":[1,2],"data":[{"y":[-1.11],"x":[14.3]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":161,"layout":{"shapes":[{"x0":14.4,"type":"rect","y0":0,"y1":1,"x1":17.6},{"x0":16.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.0}]},"traces":[1,2],"data":[{"y":[-1.31],"x":[14.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":162,"layout":{"shapes":[{"x0":14.5,"type":"rect","y0":0,"y1":1,"x1":17.7},{"x0":16.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.1}]},"traces":[1,2],"data":[{"y":[-1.54],"x":[14.5]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":163,"layout":{"shapes":[{"x0":14.6,"type":"rect","y0":0,"y1":1,"x1":17.8},{"x0":16.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.2}]},"traces":[1,2],"data":[{"y":[-1.79],"x":[14.6]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":164,"layout":{"shapes":[{"x0":14.7,"type":"rect","y0":0,"y1":1,"x1":17.9},{"x0":16.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.3}]},"traces":[1,2],"data":[{"y":[-2.08],"x":[14.7]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":165,"layout":{"shapes":[{"x0":14.8,"type":"rect","y0":0,"y1":1,"x1":18.0},{"x0":16.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.4}]},"traces":[1,2],"data":[{"y":[-2.38],"x":[14.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":166,"layout":{"shapes":[{"x0":14.9,"type":"rect","y0":0,"y1":1,"x1":18.1},{"x0":16.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.5}]},"traces":[1,2],"data":[{"y":[-2.69],"x":[14.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":167,"layout":{"shapes":[{"x0":15.0,"type":"rect","y0":0,"y1":1,"x1":18.2},{"x0":16.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.6}]},"traces":[1,2],"data":[{"y":[-3.0],"x":[15.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":168,"layout":{"shapes":[{"x0":15.1,"type":"rect","y0":0,"y1":1,"x1":18.3},{"x0":16.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.7}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":169,"layout":{"shapes":[{"x0":15.2,"type":"rect","y0":0,"y1":1,"x1":18.4},{"x0":16.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.8}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":170,"layout":{"shapes":[{"x0":15.3,"type":"rect","y0":0,"y1":1,"x1":18.5},{"x0":16.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.9}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":171,"layout":{"shapes":[{"x0":15.4,"type":"rect","y0":0,"y1":1,"x1":18.6},{"x0":17.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.0}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":172,"layout":{"shapes":[{"x0":15.5,"type":"rect","y0":0,"y1":1,"x1":18.7},{"x0":17.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.1}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":173,"layout":{"shapes":[{"x0":15.6,"type":"rect","y0":0,"y1":1,"x1":18.8},{"x0":17.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.2}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":174,"layout":{"shapes":[{"x0":15.7,"type":"rect","y0":0,"y1":1,"x1":18.9},{"x0":17.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.3}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":175,"layout":{"shapes":[{"x0":15.8,"type":"rect","y0":0,"y1":1,"x1":19.0},{"x0":17.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.4}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":176,"layout":{"shapes":[{"x0":15.9,"type":"rect","y0":0,"y1":1,"x1":19.1},{"x0":17.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.5}]},"traces":[1,2],"data":[{"y":[-2.9],"x":[19.1]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":177,"layout":{"shapes":[{"x0":16.0,"type":"rect","y0":0,"y1":1,"x1":19.2},{"x0":17.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.6}]},"traces":[1,2],"data":[{"y":[-2.71],"x":[19.2]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":178,"layout":{"shapes":[{"x0":16.1,"type":"rect","y0":0,"y1":1,"x1":19.3},{"x0":17.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.7}]},"traces":[1,2],"data":[{"y":[-2.47],"x":[19.3]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":179,"layout":{"shapes":[{"x0":16.2,"type":"rect","y0":0,"y1":1,"x1":19.4},{"x0":17.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.8}]},"traces":[1,2],"data":[{"y":[-2.2],"x":[19.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":180,"layout":{"shapes":[{"x0":16.3,"type":"rect","y0":0,"y1":1,"x1":19.5},{"x0":17.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.9}]},"traces":[1,2],"data":[{"y":[-1.9],"x":[19.5]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":181,"layout":{"shapes":[{"x0":16.4,"type":"rect","y0":0,"y1":1,"x1":19.6},{"x0":18.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.0}]},"traces":[1,2],"data":[{"y":[-1.56],"x":[19.6]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":182,"layout":{"shapes":[{"x0":16.5,"type":"rect","y0":0,"y1":1,"x1":19.7},{"x0":18.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.1}]},"traces":[1,2],"data":[{"y":[-1.19],"x":[19.7]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":183,"layout":{"shapes":[{"x0":16.6,"type":"rect","y0":0,"y1":1,"x1":19.8},{"x0":18.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.2}]},"traces":[1,2],"data":[{"y":[-0.807],"x":[19.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":184,"layout":{"shapes":[{"x0":16.7,"type":"rect","y0":0,"y1":1,"x1":19.9},{"x0":18.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.3}]},"traces":[1,2],"data":[{"y":[-0.407],"x":[19.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":185,"layout":{"shapes":[{"x0":16.8,"type":"rect","y0":0,"y1":1,"x1":20.0},{"x0":18.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.4}]},"traces":[1,2],"data":[{"y":[0.0],"x":[20.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":186,"layout":{"shapes":[{"x0":16.9,"type":"rect","y0":0,"y1":1,"x1":20.1},{"x0":18.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.5}]},"traces":[1,2],"data":[{"y":[0.407],"x":[20.1]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":187,"layout":{"shapes":[{"x0":17.0,"type":"rect","y0":0,"y1":1,"x1":20.2},{"x0":18.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.6}]},"traces":[1,2],"data":[{"y":[0.807],"x":[20.2]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":188,"layout":{"shapes":[{"x0":17.1,"type":"rect","y0":0,"y1":1,"x1":20.3},{"x0":18.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.7}]},"traces":[1,2],"data":[{"y":[1.19],"x":[20.3]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":189,"layout":{"shapes":[{"x0":17.2,"type":"rect","y0":0,"y1":1,"x1":20.4},{"x0":18.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.8}]},"traces":[1,2],"data":[{"y":[1.56],"x":[20.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":190,"layout":{"shapes":[{"x0":17.3,"type":"rect","y0":0,"y1":1,"x1":20.5},{"x0":18.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.9}]},"traces":[1,2],"data":[{"y":[1.9],"x":[20.5]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":191,"layout":{"shapes":[{"x0":17.4,"type":"rect","y0":0,"y1":1,"x1":20.6},{"x0":19.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.0}]},"traces":[1,2],"data":[{"y":[2.2],"x":[20.6]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":192,"layout":{"shapes":[{"x0":17.5,"type":"rect","y0":0,"y1":1,"x1":20.7},{"x0":19.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.1}]},"traces":[1,2],"data":[{"y":[2.47],"x":[20.7]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":193,"layout":{"shapes":[{"x0":17.6,"type":"rect","y0":0,"y1":1,"x1":20.8},{"x0":19.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.2}]},"traces":[1,2],"data":[{"y":[2.71],"x":[20.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":194,"layout":{"shapes":[{"x0":17.7,"type":"rect","y0":0,"y1":1,"x1":20.9},{"x0":19.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.3}]},"traces":[1,2],"data":[{"y":[2.9],"x":[20.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":195,"layout":{"shapes":[{"x0":17.8,"type":"rect","y0":0,"y1":1,"x1":21.0},{"x0":19.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.4}]},"traces":[1,2],"data":[{"y":[3.05],"x":[21.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":196,"layout":{"shapes":[{"x0":17.9,"type":"rect","y0":0,"y1":1,"x1":21.1},{"x0":19.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.5}]},"traces":[1,2],"data":[{"y":[3.17],"x":[21.1]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":197,"layout":{"shapes":[{"x0":18.0,"type":"rect","y0":0,"y1":1,"x1":21.2},{"x0":19.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.6}]},"traces":[1,2],"data":[{"y":[3.24],"x":[21.2]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":198,"layout":{"shapes":[{"x0":18.1,"type":"rect","y0":0,"y1":1,"x1":21.3},{"x0":19.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.7}]},"traces":[1,2],"data":[{"y":[3.29],"x":[21.3]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":199,"layout":{"shapes":[{"x0":18.2,"type":"rect","y0":0,"y1":1,"x1":21.4},{"x0":19.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.8}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":200,"layout":{"shapes":[{"x0":18.3,"type":"rect","y0":0,"y1":1,"x1":21.5},{"x0":19.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.9}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":201,"layout":{"shapes":[{"x0":18.4,"type":"rect","y0":0,"y1":1,"x1":21.6},{"x0":20.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.0}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":202,"layout":{"shapes":[{"x0":18.5,"type":"rect","y0":0,"y1":1,"x1":21.7},{"x0":20.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.1}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":203,"layout":{"shapes":[{"x0":18.6,"type":"rect","y0":0,"y1":1,"x1":21.8},{"x0":20.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.2}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":204,"layout":{"shapes":[{"x0":18.7,"type":"rect","y0":0,"y1":1,"x1":21.9},{"x0":20.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.3}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":205,"layout":{"shapes":[{"x0":18.8,"type":"rect","y0":0,"y1":1,"x1":22.0},{"x0":20.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.4}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":206,"layout":{"shapes":[{"x0":18.9,"type":"rect","y0":0,"y1":1,"x1":22.1},{"x0":20.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.5}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":207,"layout":{"shapes":[{"x0":19.0,"type":"rect","y0":0,"y1":1,"x1":22.2},{"x0":20.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.6}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":208,"layout":{"shapes":[{"x0":19.1,"type":"rect","y0":0,"y1":1,"x1":22.3},{"x0":20.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.7}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":209,"layout":{"shapes":[{"x0":19.2,"type":"rect","y0":0,"y1":1,"x1":22.4},{"x0":20.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.8}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":210,"layout":{"shapes":[{"x0":19.3,"type":"rect","y0":0,"y1":1,"x1":22.5},{"x0":20.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.9}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":211,"layout":{"shapes":[{"x0":19.4,"type":"rect","y0":0,"y1":1,"x1":22.6},{"x0":21.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.0}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":212,"layout":{"shapes":[{"x0":19.5,"type":"rect","y0":0,"y1":1,"x1":22.7},{"x0":21.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.1}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":213,"layout":{"shapes":[{"x0":19.6,"type":"rect","y0":0,"y1":1,"x1":22.8},{"x0":21.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.2}]},"traces":[1,2],"data":[{"y":[3.43],"x":[22.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":214,"layout":{"shapes":[{"x0":19.7,"type":"rect","y0":0,"y1":1,"x1":22.9},{"x0":21.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.3}]},"traces":[1,2],"data":[{"y":[3.58],"x":[22.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":215,"layout":{"shapes":[{"x0":19.8,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.4}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":216,"layout":{"shapes":[{"x0":19.9,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.5}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":217,"layout":{"shapes":[{"x0":20.0,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.6}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":218,"layout":{"shapes":[{"x0":20.1,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.7}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":219,"layout":{"shapes":[{"x0":20.2,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.8}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":220,"layout":{"shapes":[{"x0":20.3,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.9}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":221,"layout":{"shapes":[{"x0":20.4,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.0}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":222,"layout":{"shapes":[{"x0":20.5,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.1}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":223,"layout":{"shapes":[{"x0":20.6,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.2}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":224,"layout":{"shapes":[{"x0":20.7,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.3}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":225,"layout":{"shapes":[{"x0":20.8,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.4}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":226,"layout":{"shapes":[{"x0":20.9,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.5}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":227,"layout":{"shapes":[{"x0":21.0,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.6}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":228,"layout":{"shapes":[{"x0":21.1,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.7}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":229,"layout":{"shapes":[{"x0":21.2,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.8}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":230,"layout":{"shapes":[{"x0":21.3,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.9}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":231,"layout":{"shapes":[{"x0":21.4,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":23.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":23.0}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]}]); + Plotly.addFrames('92c43c76-983e-4612-8f4b-7b7e89bef3dd', [{"name":1,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":1.6},{"x0":0.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.0}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":2,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":1.7},{"x0":0.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.1}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":3,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":1.8},{"x0":0.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.2}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":4,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":1.9},{"x0":0.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.3}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":5,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.0},{"x0":0.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.4}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":6,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.1},{"x0":0.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.5}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":7,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.2},{"x0":0.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.6}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":8,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.3},{"x0":0.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.7}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":9,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.4},{"x0":0.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.8}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":10,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.5},{"x0":0.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":0.9}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":11,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.6},{"x0":1.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.0}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":12,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.7},{"x0":1.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.1}]},"traces":[1,2],"data":[{"y":[3.3],"x":[1.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":13,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.8},{"x0":1.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.2}]},"traces":[1,2],"data":[{"y":[3.43],"x":[2.8]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":14,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":2.9},{"x0":1.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.3}]},"traces":[1,2],"data":[{"y":[3.58],"x":[2.9]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":15,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":3.0},{"x0":1.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.4}]},"traces":[1,2],"data":[{"y":[3.74],"x":[3.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":16,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":3.1},{"x0":1.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.5}]},"traces":[1,2],"data":[{"y":[3.92],"x":[3.1]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":17,"layout":{"shapes":[{"x0":0.0,"type":"rect","y0":0,"y1":1,"x1":3.2},{"x0":1.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.6}]},"traces":[1,2],"data":[{"y":[4.09],"x":[3.2]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":18,"layout":{"shapes":[{"x0":0.1,"type":"rect","y0":0,"y1":1,"x1":3.3},{"x0":1.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.7}]},"traces":[1,2],"data":[{"y":[4.27],"x":[3.3]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":19,"layout":{"shapes":[{"x0":0.2,"type":"rect","y0":0,"y1":1,"x1":3.4},{"x0":1.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.8}]},"traces":[1,2],"data":[{"y":[4.44],"x":[3.4]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":20,"layout":{"shapes":[{"x0":0.3,"type":"rect","y0":0,"y1":1,"x1":3.5},{"x0":1.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":1.9}]},"traces":[1,2],"data":[{"y":[4.6],"x":[3.5]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":21,"layout":{"shapes":[{"x0":0.4,"type":"rect","y0":0,"y1":1,"x1":3.6},{"x0":2.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.0}]},"traces":[1,2],"data":[{"y":[4.74],"x":[3.6]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":22,"layout":{"shapes":[{"x0":0.5,"type":"rect","y0":0,"y1":1,"x1":3.7},{"x0":2.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.1}]},"traces":[1,2],"data":[{"y":[4.85],"x":[3.7]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":23,"layout":{"shapes":[{"x0":0.6,"type":"rect","y0":0,"y1":1,"x1":3.8},{"x0":2.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.2}]},"traces":[1,2],"data":[{"y":[4.93],"x":[3.8]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":24,"layout":{"shapes":[{"x0":0.7,"type":"rect","y0":0,"y1":1,"x1":3.9},{"x0":2.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.3}]},"traces":[1,2],"data":[{"y":[4.97],"x":[3.9]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":25,"layout":{"shapes":[{"x0":0.8,"type":"rect","y0":0,"y1":1,"x1":4.0},{"x0":2.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.4}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":26,"layout":{"shapes":[{"x0":0.9,"type":"rect","y0":0,"y1":1,"x1":4.1},{"x0":2.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.5}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":27,"layout":{"shapes":[{"x0":1.0,"type":"rect","y0":0,"y1":1,"x1":4.2},{"x0":2.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.6}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":28,"layout":{"shapes":[{"x0":1.1,"type":"rect","y0":0,"y1":1,"x1":4.3},{"x0":2.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.7}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":29,"layout":{"shapes":[{"x0":1.2,"type":"rect","y0":0,"y1":1,"x1":4.4},{"x0":2.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.8}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":30,"layout":{"shapes":[{"x0":1.3,"type":"rect","y0":0,"y1":1,"x1":4.5},{"x0":2.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":2.9}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":31,"layout":{"shapes":[{"x0":1.4,"type":"rect","y0":0,"y1":1,"x1":4.6},{"x0":3.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.0}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":32,"layout":{"shapes":[{"x0":1.5,"type":"rect","y0":0,"y1":1,"x1":4.7},{"x0":3.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.1}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":33,"layout":{"shapes":[{"x0":1.6,"type":"rect","y0":0,"y1":1,"x1":4.8},{"x0":3.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.2}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":34,"layout":{"shapes":[{"x0":1.7,"type":"rect","y0":0,"y1":1,"x1":4.9},{"x0":3.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.3}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":35,"layout":{"shapes":[{"x0":1.8,"type":"rect","y0":0,"y1":1,"x1":5.0},{"x0":3.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.4}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":36,"layout":{"shapes":[{"x0":1.9,"type":"rect","y0":0,"y1":1,"x1":5.1},{"x0":3.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.5}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":37,"layout":{"shapes":[{"x0":2.0,"type":"rect","y0":0,"y1":1,"x1":5.2},{"x0":3.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.6}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":38,"layout":{"shapes":[{"x0":2.1,"type":"rect","y0":0,"y1":1,"x1":5.3},{"x0":3.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.7}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":39,"layout":{"shapes":[{"x0":2.2,"type":"rect","y0":0,"y1":1,"x1":5.4},{"x0":3.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.8}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":40,"layout":{"shapes":[{"x0":2.3,"type":"rect","y0":0,"y1":1,"x1":5.5},{"x0":3.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":3.9}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":41,"layout":{"shapes":[{"x0":2.4,"type":"rect","y0":0,"y1":1,"x1":5.6},{"x0":4.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.0}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[0,0,0,0]}}]},{"name":42,"layout":{"shapes":[{"x0":2.5,"type":"rect","y0":0,"y1":1,"x1":5.7},{"x0":4.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.1}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":43,"layout":{"shapes":[{"x0":2.6,"type":"rect","y0":0,"y1":1,"x1":5.8},{"x0":4.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.2}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":44,"layout":{"shapes":[{"x0":2.7,"type":"rect","y0":0,"y1":1,"x1":5.9},{"x0":4.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.3}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":45,"layout":{"shapes":[{"x0":2.8,"type":"rect","y0":0,"y1":1,"x1":6.0},{"x0":4.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.4}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":46,"layout":{"shapes":[{"x0":2.9,"type":"rect","y0":0,"y1":1,"x1":6.1},{"x0":4.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.5}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":47,"layout":{"shapes":[{"x0":3.0,"type":"rect","y0":0,"y1":1,"x1":6.2},{"x0":4.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.6}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":48,"layout":{"shapes":[{"x0":3.1,"type":"rect","y0":0,"y1":1,"x1":6.3},{"x0":4.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.7}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":49,"layout":{"shapes":[{"x0":3.2,"type":"rect","y0":0,"y1":1,"x1":6.4},{"x0":4.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.8}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":50,"layout":{"shapes":[{"x0":3.3,"type":"rect","y0":0,"y1":1,"x1":6.5},{"x0":4.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":4.9}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":51,"layout":{"shapes":[{"x0":3.4,"type":"rect","y0":0,"y1":1,"x1":6.6},{"x0":5.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.0}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":52,"layout":{"shapes":[{"x0":3.5,"type":"rect","y0":0,"y1":1,"x1":6.7},{"x0":5.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.1}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":53,"layout":{"shapes":[{"x0":3.6,"type":"rect","y0":0,"y1":1,"x1":6.8},{"x0":5.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.2}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":54,"layout":{"shapes":[{"x0":3.7,"type":"rect","y0":0,"y1":1,"x1":6.9},{"x0":5.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.3}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":55,"layout":{"shapes":[{"x0":3.8,"type":"rect","y0":0,"y1":1,"x1":7.0},{"x0":5.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.4}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":56,"layout":{"shapes":[{"x0":3.9,"type":"rect","y0":0,"y1":1,"x1":7.1},{"x0":5.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.5}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":57,"layout":{"shapes":[{"x0":4.0,"type":"rect","y0":0,"y1":1,"x1":7.2},{"x0":5.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.6}]},"traces":[1,2],"data":[{"y":[4.98],"x":[4.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":58,"layout":{"shapes":[{"x0":4.1,"type":"rect","y0":0,"y1":1,"x1":7.3},{"x0":5.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.7}]},"traces":[1,2],"data":[{"y":[4.94],"x":[4.1]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":59,"layout":{"shapes":[{"x0":4.2,"type":"rect","y0":0,"y1":1,"x1":7.4},{"x0":5.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.8}]},"traces":[1,2],"data":[{"y":[4.87],"x":[4.2]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":60,"layout":{"shapes":[{"x0":4.3,"type":"rect","y0":0,"y1":1,"x1":7.5},{"x0":5.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":5.9}]},"traces":[1,2],"data":[{"y":[4.75],"x":[4.3]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":61,"layout":{"shapes":[{"x0":4.4,"type":"rect","y0":0,"y1":1,"x1":7.6},{"x0":6.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.0}]},"traces":[1,2],"data":[{"y":[4.59],"x":[4.4]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":62,"layout":{"shapes":[{"x0":4.5,"type":"rect","y0":0,"y1":1,"x1":7.7},{"x0":6.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.1}]},"traces":[1,2],"data":[{"y":[4.39],"x":[4.5]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":63,"layout":{"shapes":[{"x0":4.6,"type":"rect","y0":0,"y1":1,"x1":7.8},{"x0":6.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.2}]},"traces":[1,2],"data":[{"y":[4.16],"x":[4.6]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":64,"layout":{"shapes":[{"x0":4.7,"type":"rect","y0":0,"y1":1,"x1":7.9},{"x0":6.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.3}]},"traces":[1,2],"data":[{"y":[3.9],"x":[4.7]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":65,"layout":{"shapes":[{"x0":4.8,"type":"rect","y0":0,"y1":1,"x1":8.0},{"x0":6.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.4}]},"traces":[1,2],"data":[{"y":[3.61],"x":[4.8]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":66,"layout":{"shapes":[{"x0":4.9,"type":"rect","y0":0,"y1":1,"x1":8.1},{"x0":6.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.5}]},"traces":[1,2],"data":[{"y":[3.31],"x":[4.9]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":67,"layout":{"shapes":[{"x0":5.0,"type":"rect","y0":0,"y1":1,"x1":8.2},{"x0":6.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.6}]},"traces":[1,2],"data":[{"y":[3.0],"x":[5.0]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":68,"layout":{"shapes":[{"x0":5.1,"type":"rect","y0":0,"y1":1,"x1":8.3},{"x0":6.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.7}]},"traces":[1,2],"data":[{"y":[2.69],"x":[5.1]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":69,"layout":{"shapes":[{"x0":5.2,"type":"rect","y0":0,"y1":1,"x1":8.4},{"x0":6.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.8}]},"traces":[1,2],"data":[{"y":[2.38],"x":[5.2]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":70,"layout":{"shapes":[{"x0":5.3,"type":"rect","y0":0,"y1":1,"x1":8.5},{"x0":6.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":6.9}]},"traces":[1,2],"data":[{"y":[2.08],"x":[5.3]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":71,"layout":{"shapes":[{"x0":5.4,"type":"rect","y0":0,"y1":1,"x1":8.6},{"x0":7.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.0}]},"traces":[1,2],"data":[{"y":[1.79],"x":[5.4]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":72,"layout":{"shapes":[{"x0":5.5,"type":"rect","y0":0,"y1":1,"x1":8.7},{"x0":7.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.1}]},"traces":[1,2],"data":[{"y":[1.54],"x":[5.5]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":73,"layout":{"shapes":[{"x0":5.6,"type":"rect","y0":0,"y1":1,"x1":8.8},{"x0":7.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.2}]},"traces":[1,2],"data":[{"y":[1.31],"x":[5.6]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":74,"layout":{"shapes":[{"x0":5.7,"type":"rect","y0":0,"y1":1,"x1":8.9},{"x0":7.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.3}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,0,0,0]}}]},{"name":75,"layout":{"shapes":[{"x0":5.8,"type":"rect","y0":0,"y1":1,"x1":9.0},{"x0":7.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.4}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":76,"layout":{"shapes":[{"x0":5.9,"type":"rect","y0":0,"y1":1,"x1":9.1},{"x0":7.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.5}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":77,"layout":{"shapes":[{"x0":6.0,"type":"rect","y0":0,"y1":1,"x1":9.2},{"x0":7.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.6}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":78,"layout":{"shapes":[{"x0":6.1,"type":"rect","y0":0,"y1":1,"x1":9.3},{"x0":7.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.7}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":79,"layout":{"shapes":[{"x0":6.2,"type":"rect","y0":0,"y1":1,"x1":9.4},{"x0":7.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.8}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":80,"layout":{"shapes":[{"x0":6.3,"type":"rect","y0":0,"y1":1,"x1":9.5},{"x0":7.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":7.9}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":81,"layout":{"shapes":[{"x0":6.4,"type":"rect","y0":0,"y1":1,"x1":9.6},{"x0":8.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.0}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":82,"layout":{"shapes":[{"x0":6.5,"type":"rect","y0":0,"y1":1,"x1":9.7},{"x0":8.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.1}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":83,"layout":{"shapes":[{"x0":6.6,"type":"rect","y0":0,"y1":1,"x1":9.8},{"x0":8.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.2}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":84,"layout":{"shapes":[{"x0":6.7,"type":"rect","y0":0,"y1":1,"x1":9.9},{"x0":8.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.3}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":85,"layout":{"shapes":[{"x0":6.8,"type":"rect","y0":0,"y1":1,"x1":10.0},{"x0":8.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.4}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":86,"layout":{"shapes":[{"x0":6.9,"type":"rect","y0":0,"y1":1,"x1":10.1},{"x0":8.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.5}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":87,"layout":{"shapes":[{"x0":7.0,"type":"rect","y0":0,"y1":1,"x1":10.2},{"x0":8.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.6}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":88,"layout":{"shapes":[{"x0":7.1,"type":"rect","y0":0,"y1":1,"x1":10.3},{"x0":8.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.7}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":89,"layout":{"shapes":[{"x0":7.2,"type":"rect","y0":0,"y1":1,"x1":10.4},{"x0":8.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.8}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":90,"layout":{"shapes":[{"x0":7.3,"type":"rect","y0":0,"y1":1,"x1":10.5},{"x0":8.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":8.9}]},"traces":[1,2],"data":[{"y":[1.2],"x":[7.3]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":91,"layout":{"shapes":[{"x0":7.4,"type":"rect","y0":0,"y1":1,"x1":10.6},{"x0":9.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.0}]},"traces":[1,2],"data":[{"y":[1.17],"x":[7.4]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":92,"layout":{"shapes":[{"x0":7.5,"type":"rect","y0":0,"y1":1,"x1":10.7},{"x0":9.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.1}]},"traces":[1,2],"data":[{"y":[1.17],"x":[10.7]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":93,"layout":{"shapes":[{"x0":7.6,"type":"rect","y0":0,"y1":1,"x1":10.8},{"x0":9.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.2}]},"traces":[1,2],"data":[{"y":[1.22],"x":[10.8]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":94,"layout":{"shapes":[{"x0":7.7,"type":"rect","y0":0,"y1":1,"x1":10.9},{"x0":9.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.3}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":95,"layout":{"shapes":[{"x0":7.8,"type":"rect","y0":0,"y1":1,"x1":11.0},{"x0":9.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.4}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":96,"layout":{"shapes":[{"x0":7.9,"type":"rect","y0":0,"y1":1,"x1":11.1},{"x0":9.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.5}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":97,"layout":{"shapes":[{"x0":8.0,"type":"rect","y0":0,"y1":1,"x1":11.2},{"x0":9.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.6}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":98,"layout":{"shapes":[{"x0":8.1,"type":"rect","y0":0,"y1":1,"x1":11.3},{"x0":9.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.7}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":99,"layout":{"shapes":[{"x0":8.2,"type":"rect","y0":0,"y1":1,"x1":11.4},{"x0":9.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.8}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":100,"layout":{"shapes":[{"x0":8.3,"type":"rect","y0":0,"y1":1,"x1":11.5},{"x0":9.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":9.9}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":101,"layout":{"shapes":[{"x0":8.4,"type":"rect","y0":0,"y1":1,"x1":11.6},{"x0":10.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.0}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":102,"layout":{"shapes":[{"x0":8.5,"type":"rect","y0":0,"y1":1,"x1":11.7},{"x0":10.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.1}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":103,"layout":{"shapes":[{"x0":8.6,"type":"rect","y0":0,"y1":1,"x1":11.8},{"x0":10.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.2}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":104,"layout":{"shapes":[{"x0":8.7,"type":"rect","y0":0,"y1":1,"x1":11.9},{"x0":10.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.3}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":105,"layout":{"shapes":[{"x0":8.8,"type":"rect","y0":0,"y1":1,"x1":12.0},{"x0":10.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.4}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":106,"layout":{"shapes":[{"x0":8.9,"type":"rect","y0":0,"y1":1,"x1":12.1},{"x0":10.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.5}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":107,"layout":{"shapes":[{"x0":9.0,"type":"rect","y0":0,"y1":1,"x1":12.2},{"x0":10.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.6}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":108,"layout":{"shapes":[{"x0":9.1,"type":"rect","y0":0,"y1":1,"x1":12.3},{"x0":10.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.7}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":109,"layout":{"shapes":[{"x0":9.2,"type":"rect","y0":0,"y1":1,"x1":12.4},{"x0":10.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.8}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":110,"layout":{"shapes":[{"x0":9.3,"type":"rect","y0":0,"y1":1,"x1":12.5},{"x0":10.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":10.9}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,0,0]}}]},{"name":111,"layout":{"shapes":[{"x0":9.4,"type":"rect","y0":0,"y1":1,"x1":12.6},{"x0":11.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.0}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":112,"layout":{"shapes":[{"x0":9.5,"type":"rect","y0":0,"y1":1,"x1":12.7},{"x0":11.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.1}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":113,"layout":{"shapes":[{"x0":9.6,"type":"rect","y0":0,"y1":1,"x1":12.8},{"x0":11.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.2}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":114,"layout":{"shapes":[{"x0":9.7,"type":"rect","y0":0,"y1":1,"x1":12.9},{"x0":11.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.3}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":115,"layout":{"shapes":[{"x0":9.8,"type":"rect","y0":0,"y1":1,"x1":13.0},{"x0":11.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.4}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":116,"layout":{"shapes":[{"x0":9.9,"type":"rect","y0":0,"y1":1,"x1":13.1},{"x0":11.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.5}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":117,"layout":{"shapes":[{"x0":10.0,"type":"rect","y0":0,"y1":1,"x1":13.2},{"x0":11.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.6}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":118,"layout":{"shapes":[{"x0":10.1,"type":"rect","y0":0,"y1":1,"x1":13.3},{"x0":11.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.7}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":119,"layout":{"shapes":[{"x0":10.2,"type":"rect","y0":0,"y1":1,"x1":13.4},{"x0":11.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.8}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":120,"layout":{"shapes":[{"x0":10.3,"type":"rect","y0":0,"y1":1,"x1":13.5},{"x0":11.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":11.9}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":121,"layout":{"shapes":[{"x0":10.4,"type":"rect","y0":0,"y1":1,"x1":13.6},{"x0":12.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.0}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":122,"layout":{"shapes":[{"x0":10.5,"type":"rect","y0":0,"y1":1,"x1":13.7},{"x0":12.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.1}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":123,"layout":{"shapes":[{"x0":10.6,"type":"rect","y0":0,"y1":1,"x1":13.8},{"x0":12.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.2}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":124,"layout":{"shapes":[{"x0":10.7,"type":"rect","y0":0,"y1":1,"x1":13.9},{"x0":12.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.3}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":125,"layout":{"shapes":[{"x0":10.8,"type":"rect","y0":0,"y1":1,"x1":14.0},{"x0":12.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.4}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":126,"layout":{"shapes":[{"x0":10.9,"type":"rect","y0":0,"y1":1,"x1":14.1},{"x0":12.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.5}]},"traces":[1,2],"data":[{"y":[1.23],"x":[10.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":127,"layout":{"shapes":[{"x0":11.0,"type":"rect","y0":0,"y1":1,"x1":14.2},{"x0":12.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.6}]},"traces":[1,2],"data":[{"y":[1.2],"x":[11.0]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":128,"layout":{"shapes":[{"x0":11.1,"type":"rect","y0":0,"y1":1,"x1":14.3},{"x0":12.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.7}]},"traces":[1,2],"data":[{"y":[1.13],"x":[11.1]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":129,"layout":{"shapes":[{"x0":11.2,"type":"rect","y0":0,"y1":1,"x1":14.4},{"x0":12.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.8}]},"traces":[1,2],"data":[{"y":[1.04],"x":[11.2]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":130,"layout":{"shapes":[{"x0":11.3,"type":"rect","y0":0,"y1":1,"x1":14.5},{"x0":12.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":12.9}]},"traces":[1,2],"data":[{"y":[0.904],"x":[11.3]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":131,"layout":{"shapes":[{"x0":11.4,"type":"rect","y0":0,"y1":1,"x1":14.6},{"x0":13.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.0}]},"traces":[1,2],"data":[{"y":[0.745],"x":[11.4]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":132,"layout":{"shapes":[{"x0":11.5,"type":"rect","y0":0,"y1":1,"x1":14.7},{"x0":13.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.1}]},"traces":[1,2],"data":[{"y":[0.565],"x":[11.5]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":133,"layout":{"shapes":[{"x0":11.6,"type":"rect","y0":0,"y1":1,"x1":14.8},{"x0":13.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.2}]},"traces":[1,2],"data":[{"y":[0.369],"x":[11.6]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":134,"layout":{"shapes":[{"x0":11.7,"type":"rect","y0":0,"y1":1,"x1":14.9},{"x0":13.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.3}]},"traces":[1,2],"data":[{"y":[0.163],"x":[11.7]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":135,"layout":{"shapes":[{"x0":11.8,"type":"rect","y0":0,"y1":1,"x1":15.0},{"x0":13.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.4}]},"traces":[1,2],"data":[{"y":[-0.0465],"x":[11.8]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":136,"layout":{"shapes":[{"x0":11.9,"type":"rect","y0":0,"y1":1,"x1":15.1},{"x0":13.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.5}]},"traces":[1,2],"data":[{"y":[-0.252],"x":[11.9]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":137,"layout":{"shapes":[{"x0":12.0,"type":"rect","y0":0,"y1":1,"x1":15.2},{"x0":13.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.6}]},"traces":[1,2],"data":[{"y":[-0.449],"x":[12.0]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":138,"layout":{"shapes":[{"x0":12.1,"type":"rect","y0":0,"y1":1,"x1":15.3},{"x0":13.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.7}]},"traces":[1,2],"data":[{"y":[-0.631],"x":[12.1]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":139,"layout":{"shapes":[{"x0":12.2,"type":"rect","y0":0,"y1":1,"x1":15.4},{"x0":13.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.8}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,0]}}]},{"name":140,"layout":{"shapes":[{"x0":12.3,"type":"rect","y0":0,"y1":1,"x1":15.5},{"x0":13.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":13.9}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":141,"layout":{"shapes":[{"x0":12.4,"type":"rect","y0":0,"y1":1,"x1":15.6},{"x0":14.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.0}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":142,"layout":{"shapes":[{"x0":12.5,"type":"rect","y0":0,"y1":1,"x1":15.7},{"x0":14.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.1}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":143,"layout":{"shapes":[{"x0":12.6,"type":"rect","y0":0,"y1":1,"x1":15.8},{"x0":14.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.2}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":144,"layout":{"shapes":[{"x0":12.7,"type":"rect","y0":0,"y1":1,"x1":15.9},{"x0":14.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.3}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":145,"layout":{"shapes":[{"x0":12.8,"type":"rect","y0":0,"y1":1,"x1":16.0},{"x0":14.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.4}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":146,"layout":{"shapes":[{"x0":12.9,"type":"rect","y0":0,"y1":1,"x1":16.1},{"x0":14.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.5}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":147,"layout":{"shapes":[{"x0":13.0,"type":"rect","y0":0,"y1":1,"x1":16.2},{"x0":14.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.6}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":148,"layout":{"shapes":[{"x0":13.1,"type":"rect","y0":0,"y1":1,"x1":16.3},{"x0":14.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.7}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":149,"layout":{"shapes":[{"x0":13.2,"type":"rect","y0":0,"y1":1,"x1":16.4},{"x0":14.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.8}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":150,"layout":{"shapes":[{"x0":13.3,"type":"rect","y0":0,"y1":1,"x1":16.5},{"x0":14.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":14.9}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":151,"layout":{"shapes":[{"x0":13.4,"type":"rect","y0":0,"y1":1,"x1":16.6},{"x0":15.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.0}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":152,"layout":{"shapes":[{"x0":13.5,"type":"rect","y0":0,"y1":1,"x1":16.7},{"x0":15.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.1}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":153,"layout":{"shapes":[{"x0":13.6,"type":"rect","y0":0,"y1":1,"x1":16.8},{"x0":15.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.2}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":154,"layout":{"shapes":[{"x0":13.7,"type":"rect","y0":0,"y1":1,"x1":16.9},{"x0":15.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.3}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":155,"layout":{"shapes":[{"x0":13.8,"type":"rect","y0":0,"y1":1,"x1":17.0},{"x0":15.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.4}]},"traces":[1,2],"data":[{"y":[-0.65],"x":[13.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":156,"layout":{"shapes":[{"x0":13.9,"type":"rect","y0":0,"y1":1,"x1":17.1},{"x0":15.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.5}]},"traces":[1,2],"data":[{"y":[-0.671],"x":[13.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":157,"layout":{"shapes":[{"x0":14.0,"type":"rect","y0":0,"y1":1,"x1":17.2},{"x0":15.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.6}]},"traces":[1,2],"data":[{"y":[-0.727],"x":[14.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":158,"layout":{"shapes":[{"x0":14.1,"type":"rect","y0":0,"y1":1,"x1":17.3},{"x0":15.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.7}]},"traces":[1,2],"data":[{"y":[-0.817],"x":[14.1]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":159,"layout":{"shapes":[{"x0":14.2,"type":"rect","y0":0,"y1":1,"x1":17.4},{"x0":15.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.8}]},"traces":[1,2],"data":[{"y":[-0.944],"x":[14.2]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":160,"layout":{"shapes":[{"x0":14.3,"type":"rect","y0":0,"y1":1,"x1":17.5},{"x0":15.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":15.9}]},"traces":[1,2],"data":[{"y":[-1.11],"x":[14.3]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":161,"layout":{"shapes":[{"x0":14.4,"type":"rect","y0":0,"y1":1,"x1":17.6},{"x0":16.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.0}]},"traces":[1,2],"data":[{"y":[-1.31],"x":[14.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":162,"layout":{"shapes":[{"x0":14.5,"type":"rect","y0":0,"y1":1,"x1":17.7},{"x0":16.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.1}]},"traces":[1,2],"data":[{"y":[-1.54],"x":[14.5]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":163,"layout":{"shapes":[{"x0":14.6,"type":"rect","y0":0,"y1":1,"x1":17.8},{"x0":16.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.2}]},"traces":[1,2],"data":[{"y":[-1.79],"x":[14.6]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":164,"layout":{"shapes":[{"x0":14.7,"type":"rect","y0":0,"y1":1,"x1":17.9},{"x0":16.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.3}]},"traces":[1,2],"data":[{"y":[-2.08],"x":[14.7]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":165,"layout":{"shapes":[{"x0":14.8,"type":"rect","y0":0,"y1":1,"x1":18.0},{"x0":16.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.4}]},"traces":[1,2],"data":[{"y":[-2.38],"x":[14.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":166,"layout":{"shapes":[{"x0":14.9,"type":"rect","y0":0,"y1":1,"x1":18.1},{"x0":16.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.5}]},"traces":[1,2],"data":[{"y":[-2.69],"x":[14.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":167,"layout":{"shapes":[{"x0":15.0,"type":"rect","y0":0,"y1":1,"x1":18.2},{"x0":16.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.6}]},"traces":[1,2],"data":[{"y":[-3.0],"x":[15.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":168,"layout":{"shapes":[{"x0":15.1,"type":"rect","y0":0,"y1":1,"x1":18.3},{"x0":16.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.7}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":169,"layout":{"shapes":[{"x0":15.2,"type":"rect","y0":0,"y1":1,"x1":18.4},{"x0":16.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.8}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":170,"layout":{"shapes":[{"x0":15.3,"type":"rect","y0":0,"y1":1,"x1":18.5},{"x0":16.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":16.9}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":171,"layout":{"shapes":[{"x0":15.4,"type":"rect","y0":0,"y1":1,"x1":18.6},{"x0":17.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.0}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":172,"layout":{"shapes":[{"x0":15.5,"type":"rect","y0":0,"y1":1,"x1":18.7},{"x0":17.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.1}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":173,"layout":{"shapes":[{"x0":15.6,"type":"rect","y0":0,"y1":1,"x1":18.8},{"x0":17.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.2}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":174,"layout":{"shapes":[{"x0":15.7,"type":"rect","y0":0,"y1":1,"x1":18.9},{"x0":17.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.3}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":175,"layout":{"shapes":[{"x0":15.8,"type":"rect","y0":0,"y1":1,"x1":19.0},{"x0":17.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.4}]},"traces":[1,2],"data":[{"y":[-3.03],"x":[17.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":176,"layout":{"shapes":[{"x0":15.9,"type":"rect","y0":0,"y1":1,"x1":19.1},{"x0":17.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.5}]},"traces":[1,2],"data":[{"y":[-2.9],"x":[19.1]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":177,"layout":{"shapes":[{"x0":16.0,"type":"rect","y0":0,"y1":1,"x1":19.2},{"x0":17.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.6}]},"traces":[1,2],"data":[{"y":[-2.71],"x":[19.2]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":178,"layout":{"shapes":[{"x0":16.1,"type":"rect","y0":0,"y1":1,"x1":19.3},{"x0":17.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.7}]},"traces":[1,2],"data":[{"y":[-2.47],"x":[19.3]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":179,"layout":{"shapes":[{"x0":16.2,"type":"rect","y0":0,"y1":1,"x1":19.4},{"x0":17.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.8}]},"traces":[1,2],"data":[{"y":[-2.2],"x":[19.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":180,"layout":{"shapes":[{"x0":16.3,"type":"rect","y0":0,"y1":1,"x1":19.5},{"x0":17.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":17.9}]},"traces":[1,2],"data":[{"y":[-1.9],"x":[19.5]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":181,"layout":{"shapes":[{"x0":16.4,"type":"rect","y0":0,"y1":1,"x1":19.6},{"x0":18.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.0}]},"traces":[1,2],"data":[{"y":[-1.56],"x":[19.6]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":182,"layout":{"shapes":[{"x0":16.5,"type":"rect","y0":0,"y1":1,"x1":19.7},{"x0":18.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.1}]},"traces":[1,2],"data":[{"y":[-1.19],"x":[19.7]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":183,"layout":{"shapes":[{"x0":16.6,"type":"rect","y0":0,"y1":1,"x1":19.8},{"x0":18.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.2}]},"traces":[1,2],"data":[{"y":[-0.807],"x":[19.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":184,"layout":{"shapes":[{"x0":16.7,"type":"rect","y0":0,"y1":1,"x1":19.9},{"x0":18.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.3}]},"traces":[1,2],"data":[{"y":[-0.407],"x":[19.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":185,"layout":{"shapes":[{"x0":16.8,"type":"rect","y0":0,"y1":1,"x1":20.0},{"x0":18.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.4}]},"traces":[1,2],"data":[{"y":[0.0],"x":[20.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":186,"layout":{"shapes":[{"x0":16.9,"type":"rect","y0":0,"y1":1,"x1":20.1},{"x0":18.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.5}]},"traces":[1,2],"data":[{"y":[0.407],"x":[20.1]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":187,"layout":{"shapes":[{"x0":17.0,"type":"rect","y0":0,"y1":1,"x1":20.2},{"x0":18.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.6}]},"traces":[1,2],"data":[{"y":[0.807],"x":[20.2]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":188,"layout":{"shapes":[{"x0":17.1,"type":"rect","y0":0,"y1":1,"x1":20.3},{"x0":18.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.7}]},"traces":[1,2],"data":[{"y":[1.19],"x":[20.3]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":189,"layout":{"shapes":[{"x0":17.2,"type":"rect","y0":0,"y1":1,"x1":20.4},{"x0":18.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.8}]},"traces":[1,2],"data":[{"y":[1.56],"x":[20.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":190,"layout":{"shapes":[{"x0":17.3,"type":"rect","y0":0,"y1":1,"x1":20.5},{"x0":18.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":18.9}]},"traces":[1,2],"data":[{"y":[1.9],"x":[20.5]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":191,"layout":{"shapes":[{"x0":17.4,"type":"rect","y0":0,"y1":1,"x1":20.6},{"x0":19.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.0}]},"traces":[1,2],"data":[{"y":[2.2],"x":[20.6]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":192,"layout":{"shapes":[{"x0":17.5,"type":"rect","y0":0,"y1":1,"x1":20.7},{"x0":19.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.1}]},"traces":[1,2],"data":[{"y":[2.47],"x":[20.7]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":193,"layout":{"shapes":[{"x0":17.6,"type":"rect","y0":0,"y1":1,"x1":20.8},{"x0":19.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.2}]},"traces":[1,2],"data":[{"y":[2.71],"x":[20.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":194,"layout":{"shapes":[{"x0":17.7,"type":"rect","y0":0,"y1":1,"x1":20.9},{"x0":19.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.3}]},"traces":[1,2],"data":[{"y":[2.9],"x":[20.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":195,"layout":{"shapes":[{"x0":17.8,"type":"rect","y0":0,"y1":1,"x1":21.0},{"x0":19.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.4}]},"traces":[1,2],"data":[{"y":[3.05],"x":[21.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":196,"layout":{"shapes":[{"x0":17.9,"type":"rect","y0":0,"y1":1,"x1":21.1},{"x0":19.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.5}]},"traces":[1,2],"data":[{"y":[3.17],"x":[21.1]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":197,"layout":{"shapes":[{"x0":18.0,"type":"rect","y0":0,"y1":1,"x1":21.2},{"x0":19.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.6}]},"traces":[1,2],"data":[{"y":[3.24],"x":[21.2]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":198,"layout":{"shapes":[{"x0":18.1,"type":"rect","y0":0,"y1":1,"x1":21.3},{"x0":19.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.7}]},"traces":[1,2],"data":[{"y":[3.29],"x":[21.3]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":199,"layout":{"shapes":[{"x0":18.2,"type":"rect","y0":0,"y1":1,"x1":21.4},{"x0":19.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.8}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":200,"layout":{"shapes":[{"x0":18.3,"type":"rect","y0":0,"y1":1,"x1":21.5},{"x0":19.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":19.9}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":201,"layout":{"shapes":[{"x0":18.4,"type":"rect","y0":0,"y1":1,"x1":21.6},{"x0":20.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.0}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":202,"layout":{"shapes":[{"x0":18.5,"type":"rect","y0":0,"y1":1,"x1":21.7},{"x0":20.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.1}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":203,"layout":{"shapes":[{"x0":18.6,"type":"rect","y0":0,"y1":1,"x1":21.8},{"x0":20.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.2}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":204,"layout":{"shapes":[{"x0":18.7,"type":"rect","y0":0,"y1":1,"x1":21.9},{"x0":20.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.3}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":205,"layout":{"shapes":[{"x0":18.8,"type":"rect","y0":0,"y1":1,"x1":22.0},{"x0":20.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.4}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":206,"layout":{"shapes":[{"x0":18.9,"type":"rect","y0":0,"y1":1,"x1":22.1},{"x0":20.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.5}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":207,"layout":{"shapes":[{"x0":19.0,"type":"rect","y0":0,"y1":1,"x1":22.2},{"x0":20.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.6}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":208,"layout":{"shapes":[{"x0":19.1,"type":"rect","y0":0,"y1":1,"x1":22.3},{"x0":20.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.7}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":209,"layout":{"shapes":[{"x0":19.2,"type":"rect","y0":0,"y1":1,"x1":22.4},{"x0":20.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.8}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":210,"layout":{"shapes":[{"x0":19.3,"type":"rect","y0":0,"y1":1,"x1":22.5},{"x0":20.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":20.9}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":211,"layout":{"shapes":[{"x0":19.4,"type":"rect","y0":0,"y1":1,"x1":22.6},{"x0":21.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.0}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":212,"layout":{"shapes":[{"x0":19.5,"type":"rect","y0":0,"y1":1,"x1":22.7},{"x0":21.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.1}]},"traces":[1,2],"data":[{"y":[3.3],"x":[21.4]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":213,"layout":{"shapes":[{"x0":19.6,"type":"rect","y0":0,"y1":1,"x1":22.8},{"x0":21.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.2}]},"traces":[1,2],"data":[{"y":[3.43],"x":[22.8]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":214,"layout":{"shapes":[{"x0":19.7,"type":"rect","y0":0,"y1":1,"x1":22.9},{"x0":21.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.3}]},"traces":[1,2],"data":[{"y":[3.58],"x":[22.9]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":215,"layout":{"shapes":[{"x0":19.8,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.4}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":216,"layout":{"shapes":[{"x0":19.9,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.5}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":217,"layout":{"shapes":[{"x0":20.0,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.6}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":218,"layout":{"shapes":[{"x0":20.1,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.7}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":219,"layout":{"shapes":[{"x0":20.2,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.8}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":220,"layout":{"shapes":[{"x0":20.3,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":21.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":21.9}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":221,"layout":{"shapes":[{"x0":20.4,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.0}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":222,"layout":{"shapes":[{"x0":20.5,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.1,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.1}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":223,"layout":{"shapes":[{"x0":20.6,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.2,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.2}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":224,"layout":{"shapes":[{"x0":20.7,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.3,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.3}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":225,"layout":{"shapes":[{"x0":20.8,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.4,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.4}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":226,"layout":{"shapes":[{"x0":20.9,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.5,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.5}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":227,"layout":{"shapes":[{"x0":21.0,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.6,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.6}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":228,"layout":{"shapes":[{"x0":21.1,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.7,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.7}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":229,"layout":{"shapes":[{"x0":21.2,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.8,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.8}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":230,"layout":{"shapes":[{"x0":21.3,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":22.9,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":22.9}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]},{"name":231,"layout":{"shapes":[{"x0":21.4,"type":"rect","y0":0,"y1":1,"x1":23.0},{"x0":23.0,"type":"line","y0":0,"y1":1,"yref":"paper","xref":"x","x1":23.0}]},"traces":[1,2],"data":[{"y":[3.74],"x":[23.0]},{"marker":{"opacity":[1,1,1,1]}}]}]); }) } }); -
Note

In this package/documentation, "peak" is often used when referring to the index (i.e. location) of a peak, which is most broadly relevant when speaking of a specific peak

Plateau

A "flat" peak, where the value of the extrema occurs multiple times consecutively, but surrounding elements are less than the extremum. The first occurence of the extrema is considered the peak location. Uncommon for floating-point data.

Example block output
Peak height

Peak height is the value of the signal for a specific peak. Mouse over (or touch) each peak to see its height.

+
Note

In this package/documentation, "peak" is often used when referring to the index (i.e. location) of a peak, which is most broadly relevant when speaking of a specific peak

Plateau

A "flat" peak, where the value of the extrema occurs multiple times consecutively, but surrounding elements are less than the extremum. The first occurence of the extrema is considered the peak location. Uncommon for floating-point data.

Example block output
Peak height

Peak height is the value of the signal for a specific peak. Mouse over (or touch) each peak to see its height.

@@ -56,9 +56,9 @@ require(["plotly"], function(Plotly) { window.PLOTLYENV = window.PLOTLYENV || {} - if (document.getElementById('8a0aa8da-c445-4172-81c8-e8bc760f55bf')) { + if (document.getElementById('99792038-7f56-4d42-9095-473b111279f5')) { Plotly.newPlot( - '8a0aa8da-c445-4172-81c8-e8bc760f55bf', + '99792038-7f56-4d42-9095-473b111279f5', [{"x":[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4.0,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5.0,5.1,5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,6.0,6.1,6.2,6.3,6.4,6.5,6.6,6.7,6.8,6.9,7.0,7.1,7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,8.0,8.1,8.2,8.3,8.4,8.5,8.6,8.7,8.8,8.9,9.0,9.1,9.2,9.3,9.4,9.5,9.6,9.7,9.8,9.9,10.0,10.1,10.2,10.3,10.4,10.5,10.6,10.7,10.8,10.9,11.0,11.1,11.2,11.3,11.4,11.5,11.6,11.7,11.8,11.9,12.0,12.1,12.2,12.3,12.4,12.5,12.6,12.7,12.8,12.9,13.0,13.1,13.2,13.3,13.4,13.5,13.6,13.7,13.8,13.9,14.0,14.1,14.2,14.3,14.4,14.5,14.6,14.7,14.8,14.9,15.0,15.1,15.2,15.3,15.4,15.5,15.6,15.7,15.8,15.9,16.0,16.1,16.2,16.3,16.4,16.5,16.6,16.7,16.8,16.9,17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0],"y":[0.0,0.407,0.807,1.19,1.56,1.9,2.2,2.47,2.71,2.9,3.05,3.17,3.24,3.29,3.3,3.29,3.26,3.22,3.17,3.12,3.08,3.05,3.03,3.04,3.07,3.12,3.2,3.3,3.43,3.58,3.74,3.92,4.09,4.27,4.44,4.6,4.74,4.85,4.93,4.97,4.98,4.94,4.87,4.75,4.59,4.39,4.16,3.9,3.61,3.31,3.0,2.69,2.38,2.08,1.79,1.54,1.31,1.11,0.944,0.817,0.727,0.671,0.65,0.658,0.692,0.746,0.815,0.892,0.972,1.05,1.11,1.16,1.19,1.2,1.17,1.12,1.04,0.929,0.792,0.631,0.449,0.252,0.0465,-0.163,-0.369,-0.565,-0.745,-0.904,-1.04,-1.13,-1.2,-1.23,-1.22,-1.17,-1.08,-0.958,-0.806,-0.628,-0.43,-0.219,0.0,0.219,0.43,0.628,0.806,0.958,1.08,1.17,1.22,1.23,1.2,1.13,1.04,0.904,0.745,0.565,0.369,0.163,-0.0465,-0.252,-0.449,-0.631,-0.792,-0.929,-1.04,-1.12,-1.17,-1.2,-1.19,-1.16,-1.11,-1.05,-0.972,-0.892,-0.815,-0.746,-0.692,-0.658,-0.65,-0.671,-0.727,-0.817,-0.944,-1.11,-1.31,-1.54,-1.79,-2.08,-2.38,-2.69,-3.0,-3.31,-3.61,-3.9,-4.16,-4.39,-4.59,-4.75,-4.87,-4.94,-4.98,-4.97,-4.93,-4.85,-4.74,-4.6,-4.44,-4.27,-4.09,-3.92,-3.74,-3.58,-3.43,-3.3,-3.2,-3.12,-3.07,-3.04,-3.03,-3.05,-3.08,-3.12,-3.17,-3.22,-3.26,-3.29,-3.3,-3.29,-3.24,-3.17,-3.05,-2.9,-2.71,-2.47,-2.2,-1.9,-1.56,-1.19,-0.807,-0.407,0.0,0.407,0.807,1.19,1.56,1.9,2.2,2.47,2.71,2.9,3.05,3.17,3.24,3.29,3.3,3.29,3.26,3.22,3.17,3.12,3.08,3.05,3.03,3.04,3.07,3.12,3.2,3.3,3.43,3.58,3.74],"type":"scatter","name":"Signal","hoverinfo":"none","legendrank":1},{"marker":{"color":"#d62728"},"mode":"markers","zorder":10,"x":[4.0,7.3,10.9,13.8],"yhoverformat":".2g","y":[4.98,1.2,1.23,-0.65],"type":"scatter","name":"Maxima","legendrank":2}], {"xaxis":{"range":[0.0,23.0],"fixedrange":true},"hoverdistance":100,"font":{"size":14},"template":{"layout":{"coloraxis":{"colorbar":{"ticks":"","outlinewidth":0}},"xaxis":{"gridcolor":"white","zerolinewidth":2,"title":{"standoff":15},"ticks":"","zerolinecolor":"white","automargin":true,"linecolor":"white"},"hovermode":"closest","paper_bgcolor":"white","geo":{"showlakes":true,"showland":true,"landcolor":"#E5ECF6","bgcolor":"white","subunitcolor":"white","lakecolor":"white"},"hoverlabel":{"align":"left"},"yaxis":{"gridcolor":"white","zerolinewidth":2,"title":{"standoff":15},"ticks":"","zerolinecolor":"white","automargin":true,"linecolor":"white"},"shapedefaults":{"line":{"color":"#2a3f5f"}},"mapbox":{"style":"light"},"polar":{"angularaxis":{"gridcolor":"white","ticks":"","linecolor":"white"},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","ticks":"","linecolor":"white"}},"autotypenumbers":"strict","font":{"color":"#2a3f5f"},"ternary":{"aaxis":{"gridcolor":"white","ticks":"","linecolor":"white"},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","ticks":"","linecolor":"white"},"baxis":{"gridcolor":"white","ticks":"","linecolor":"white"}},"annotationdefaults":{"arrowhead":0,"arrowwidth":1,"arrowcolor":"#2a3f5f"},"plot_bgcolor":"#E5ECF6","title":{"x":0.05},"scene":{"xaxis":{"gridcolor":"white","gridwidth":2,"backgroundcolor":"#E5ECF6","ticks":"","showbackground":true,"zerolinecolor":"white","linecolor":"white"},"zaxis":{"gridcolor":"white","gridwidth":2,"backgroundcolor":"#E5ECF6","ticks":"","showbackground":true,"zerolinecolor":"white","linecolor":"white"},"yaxis":{"gridcolor":"white","gridwidth":2,"backgroundcolor":"#E5ECF6","ticks":"","showbackground":true,"zerolinecolor":"white","linecolor":"white"}},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"]},"data":{}},"legend":{"itemclick":false,"itemdoubleclick":false},"margin":{"l":10,"b":40,"autoexpand":0,"r":10,"t":10},"yaxis":{"fixedrange":true}}, {"editable":false,"responsive":true,"staticPlot":false,"displayModeBar":false,"scrollZoom":true,"showEditInChartStudio":false}, @@ -72,7 +72,7 @@
Peak promi
@@ -80,18 +80,18 @@
Peak promi require(["plotly"], function(Plotly) { window.PLOTLYENV = window.PLOTLYENV || {} - if (document.getElementById('b1fa9d34-34c9-49ab-a261-ddfa7ce639e6')) { + if (document.getElementById('e4afe28a-4a22-4923-a469-ac147e5af68c')) { Plotly.newPlot( - 'b1fa9d34-34c9-49ab-a261-ddfa7ce639e6', + 'e4afe28a-4a22-4923-a469-ac147e5af68c', [{"y":[0.0,0.219,0.43,0.628,0.806,0.958,1.08,1.17,1.22,1.23,1.2,1.13,1.04,0.904,0.745,0.565,0.369,0.163,-0.0465,-0.252,-0.449,-0.631,-0.792,-0.929,-1.04,-1.12,-1.17,-1.2,-1.19,-1.16,-1.11,-1.05,-0.972,-0.892,-0.815,-0.746,-0.692,-0.658,-0.65,-0.671,-0.727,-0.817,-0.944,-1.11,-1.31,-1.54,-1.79,-2.08,-2.38,-2.69,-3.0,-3.31,-3.61,-3.9,-4.16,-4.39,-4.59,-4.75,-4.87,-4.94,-4.98,-4.97,-4.93,-4.85,-4.74,-4.6,-4.44,-4.27,-4.09,-3.92,-3.74,-3.58,-3.43,-3.3,-3.2,-3.12,-3.07,-3.04,-3.03,-3.05,-3.08,-3.12,-3.17,-3.22,-3.26,-3.29,-3.3,-3.29,-3.24,-3.17,-3.05,-2.9,-2.71,-2.47,-2.2,-1.9,-1.56,-1.19,-0.807,-0.407,0.0,0.407,0.807,1.19,1.56,1.9,2.2,2.47,2.71,2.9,3.05,3.17,3.24,3.29,3.3,3.29,3.26,3.22,3.17,3.12,3.08,3.05,3.03,3.04,3.07,3.12,3.2,3.3,3.43,3.58,3.74,3.92,4.09,4.27,4.44,4.6],"type":"scatter","hoverinfo":"x+y","x":[10.0,10.1,10.2,10.3,10.4,10.5,10.6,10.7,10.8,10.9,11.0,11.1,11.2,11.3,11.4,11.5,11.6,11.7,11.8,11.9,12.0,12.1,12.2,12.3,12.4,12.5,12.6,12.7,12.8,12.9,13.0,13.1,13.2,13.3,13.4,13.5,13.6,13.7,13.8,13.9,14.0,14.1,14.2,14.3,14.4,14.5,14.6,14.7,14.8,14.9,15.0,15.1,15.2,15.3,15.4,15.5,15.6,15.7,15.8,15.9,16.0,16.1,16.2,16.3,16.4,16.5,16.6,16.7,16.8,16.9,17.0,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.8,17.9,18.0,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19.0,19.1,19.2,19.3,19.4,19.5,19.6,19.7,19.8,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.7,20.8,20.9,21.0,21.1,21.2,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.5,22.6,22.7,22.8,22.9,23.0,23.1,23.2,23.3,23.4,23.5]},{"x":[13.8,13.8,13.8],"mode":"markers","zorder":10,"y":[-0.65,-0.65,-0.65],"type":"scatter","hoverinfo":"x+y","marker":{"color":["rgba(214,39,40,0)","rgba(128,128,128,0)","rgba(214,39,40,0)"]}},{"x":[13.8,13.8],"mode":"markers","zorder":1,"y":[-0.65,-0.65],"type":"scatter","hoverinfo":"x+y","marker":{"color":["rgba(38,93,128,0)","rgba(38,93,128,0)"]}},{"x":[12.7,12.7],"zorder":1000,"y":[-1.2,-1.2],"type":"scatter","hoverinfo":"none","marker":{"color":"rgba(38,93,128,0)","size":1}},{"x":[13.8],"mode":"markers","zorder":100,"y":[-0.65],"type":"scatter","hoverinfo":"x+y","marker":{"color":"purple"}}], {"showlegend":false,"xaxis":{"fixedrange":true},"font":{"size":14},"template":{"layout":{"coloraxis":{"colorbar":{"ticks":"","outlinewidth":0}},"xaxis":{"gridcolor":"white","zerolinewidth":2,"title":{"standoff":15},"ticks":"","zerolinecolor":"white","automargin":true,"linecolor":"white"},"hovermode":"closest","paper_bgcolor":"white","geo":{"showlakes":true,"showland":true,"landcolor":"#E5ECF6","bgcolor":"white","subunitcolor":"white","lakecolor":"white"},"hoverlabel":{"align":"left"},"yaxis":{"gridcolor":"white","zerolinewidth":2,"title":{"standoff":15},"ticks":"","zerolinecolor":"white","automargin":true,"linecolor":"white"},"shapedefaults":{"line":{"color":"#2a3f5f"}},"mapbox":{"style":"light"},"polar":{"angularaxis":{"gridcolor":"white","ticks":"","linecolor":"white"},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","ticks":"","linecolor":"white"}},"autotypenumbers":"strict","font":{"color":"#2a3f5f"},"ternary":{"aaxis":{"gridcolor":"white","ticks":"","linecolor":"white"},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","ticks":"","linecolor":"white"},"baxis":{"gridcolor":"white","ticks":"","linecolor":"white"}},"annotationdefaults":{"arrowhead":0,"arrowwidth":1,"arrowcolor":"#2a3f5f"},"plot_bgcolor":"#E5ECF6","title":{"x":0.05},"scene":{"xaxis":{"gridcolor":"white","gridwidth":2,"backgroundcolor":"#E5ECF6","ticks":"","showbackground":true,"zerolinecolor":"white","linecolor":"white"},"zaxis":{"gridcolor":"white","gridwidth":2,"backgroundcolor":"#E5ECF6","ticks":"","showbackground":true,"zerolinecolor":"white","linecolor":"white"},"yaxis":{"gridcolor":"white","gridwidth":2,"backgroundcolor":"#E5ECF6","ticks":"","showbackground":true,"zerolinecolor":"white","linecolor":"white"}},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"]},"data":{}},"legend":{"itemclick":false,"itemdoubleclick":false},"margin":{"l":10,"b":10,"autoexpand":0,"r":10,"t":10},"yaxis":{"fixedrange":true},"updatemenus":[{"pad":{"l":6,"b":6},"yanchor":"bottom","xanchor":"left","y":0,"active":0,"type":"buttons","buttons":[{"method":"animate","label":"Play","args":[[0,1,2,3,4,5,6,7,8,9,10],{"mode":"immediate","transition":[{"easing":"linear","duration":0},{"easing":"linear","duration":100},{"easing":"linear","duration":100},{"ordering":"traces first","duration":800},{"ordering":"traces first","duration":800},{"ordering":"traces first","duration":800},{"ordering":"traces first","duration":800},{"ordering":"traces first","duration":800},{"ordering":"traces first","duration":200},{"easing":"linear","duration":400},{"duration":800}],"frame":[{"redraw":true,"duration":10},{"redraw":false,"duration":1500},{"redraw":false,"duration":1500},{"redraw":false,"duration":2000},{"redraw":false,"duration":2000},{"redraw":false,"duration":2000},{"redraw":false,"duration":2000},{"redraw":false,"duration":1000},{"redraw":false,"duration":200},{"redraw":false,"duration":800},{"redraw":false,"duration":800}]}]}],"direction":"left","x":0}]}, {"editable":false,"responsive":true,"staticPlot":false,"displayModeBar":false,"scrollZoom":true,"showEditInChartStudio":false}, ).then(function() { - Plotly.addFrames('b1fa9d34-34c9-49ab-a261-ddfa7ce639e6', [{"name":0,"layout":{"shapes":null,"annotations":null},"traces":[1,2,3],"data":[{"x":[13.8,13.8,13.8],"y":[-0.65,-0.65,-0.65],"visible":true,"marker":{"color":["rgba(214,39,40,0)","rgba(128,128,128,0)","rgba(214,39,40,0)"]}},{"x":[13.8,13.8],"y":[-0.65,-0.65],"visible":true,"marker":{"color":["rgba(38,93,128,0)","rgba(38,93,128,0)"]}},{"x":[12.7,12.7],"y":[-1.2,-1.2],"visible":true,"marker":{"color":"rgba(38,93,128,0)"}}]},{"name":1,"layout":{"shapes":[],"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8}]}},{"name":2,"layout":{"shapes":[{"x0":0,"line":{"color":"rgba(89,105,112,0.40)","dash":"dash","width":2.5},"type":"line","y0":-0.65,"y1":-0.65,"yref":"y","xref":"paper","x1":1}],"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8}]}},{"name":3,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9}]},"traces":[1],"data":[{"x":[10.9,13.8,13.8],"y":[1.23,-0.65,-0.65],"marker":{"color":["rgba(214,39,40,1)","rgba(128,128,128,0)","rgba(214,39,40,0)"]}}]},{"name":4,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8}]},"traces":[1],"data":[{"x":[10.9,17.8,17.8],"y":[1.23,-3.03,-3.03],"marker":{"color":["rgba(214,39,40,1)","rgba(128,128,128,1)","rgba(214,39,40,0)"]}}]},{"name":5,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8},{"arrowhead":2,"y":3.3,"ax":-15,"showarrow":true,"standoff":4,"text":"Next reference peak","arrowsize":1.3,"x":21.4}]},"traces":[1],"data":[{"x":[10.9,17.8,21.4],"y":[1.23,-3.03,3.3],"marker":{"color":["rgba(214,39,40,1)","rgba(128,128,128,1)","rgba(214,39,40,1)"]}}]},{"name":6,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8},{"arrowhead":2,"y":3.3,"ax":-15,"showarrow":true,"standoff":4,"text":"Next reference peak","arrowsize":1.3,"x":21.4},{"yanchor":"top","showarrow":true,"standoff":5,"text":"Reference minimums","arrowsize":1.3,"arrowhead":2,"axref":"x","y":-1.2,"ax":13.5,"ay":-3.4,"ayref":"y","x":12.7},{"yanchor":"bottom","showarrow":true,"standoff":12,"arrowsize":1.3,"arrowhead":2,"axref":"x","y":-4.98,"ax":13.7,"ay":-3.9,"ayref":"y","startstandoff":12,"x":16.0}]},"traces":[2],"data":[{"x":[12.7,16.0],"y":[-1.2,-4.98],"marker":{"color":["rgba(38,93,128,1)","rgba(38,93,128,1)"]}}]},{"name":7,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8},{"arrowhead":2,"y":3.3,"ax":-15,"showarrow":true,"standoff":4,"text":"Next reference peak","arrowsize":1.3,"x":21.4},{"yanchor":"top","showarrow":true,"standoff":5,"text":"Larger minimum","arrowsize":1.3,"arrowhead":2,"axref":"x","y":-1.2,"ax":13.5,"ay":-3.4,"ayref":"y","x":12.7},{"showarrow":false,"text":""}]},"traces":[2],"data":[{"x":[12.7,16.0],"y":[-1.2,-4.98],"marker":{"color":["rgba(38,93,128,1)","rgba(38,93,128,0)"]}}]},{"name":8,"traces":[3],"data":[{"marker":{"color":"rgba(38,93,128,1)"}}]},{"name":9,"traces":[3],"data":[{"x":[12.7,14.0]}]},{"name":10,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8},{"arrowhead":2,"y":3.3,"ax":-15,"showarrow":true,"standoff":4,"text":"Next reference peak","arrowsize":1.3,"x":21.4},{"yanchor":"top","showarrow":true,"standoff":5,"text":"Larger minimum","arrowsize":1.3,"arrowhead":2,"axref":"x","y":-1.2,"ax":13.5,"ay":-3.4,"ayref":"y","x":12.7},{"yanchor":"middle","xanchor":"left","y":-0.96,"showarrow":false,"text":"Prominence: 0.55","x":14.4},{"yanchor":"bottom","showarrow":true,"text":"","arrowsize":1.3,"arrowhead":2,"axref":"x","y":-1.2,"ax":13.8,"arrowside":"end+start","ay":-0.72,"ayref":"y","x":13.8}]}}]); + Plotly.addFrames('e4afe28a-4a22-4923-a469-ac147e5af68c', [{"name":0,"layout":{"shapes":null,"annotations":null},"traces":[1,2,3],"data":[{"x":[13.8,13.8,13.8],"y":[-0.65,-0.65,-0.65],"visible":true,"marker":{"color":["rgba(214,39,40,0)","rgba(128,128,128,0)","rgba(214,39,40,0)"]}},{"x":[13.8,13.8],"y":[-0.65,-0.65],"visible":true,"marker":{"color":["rgba(38,93,128,0)","rgba(38,93,128,0)"]}},{"x":[12.7,12.7],"y":[-1.2,-1.2],"visible":true,"marker":{"color":"rgba(38,93,128,0)"}}]},{"name":1,"layout":{"shapes":[],"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8}]}},{"name":2,"layout":{"shapes":[{"x0":0,"line":{"color":"rgba(89,105,112,0.40)","dash":"dash","width":2.5},"type":"line","y0":-0.65,"y1":-0.65,"yref":"y","xref":"paper","x1":1}],"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8}]}},{"name":3,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9}]},"traces":[1],"data":[{"x":[10.9,13.8,13.8],"y":[1.23,-0.65,-0.65],"marker":{"color":["rgba(214,39,40,1)","rgba(128,128,128,0)","rgba(214,39,40,0)"]}}]},{"name":4,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8}]},"traces":[1],"data":[{"x":[10.9,17.8,17.8],"y":[1.23,-3.03,-3.03],"marker":{"color":["rgba(214,39,40,1)","rgba(128,128,128,1)","rgba(214,39,40,0)"]}}]},{"name":5,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8},{"arrowhead":2,"y":3.3,"ax":-15,"showarrow":true,"standoff":4,"text":"Next reference peak","arrowsize":1.3,"x":21.4}]},"traces":[1],"data":[{"x":[10.9,17.8,21.4],"y":[1.23,-3.03,3.3],"marker":{"color":["rgba(214,39,40,1)","rgba(128,128,128,1)","rgba(214,39,40,1)"]}}]},{"name":6,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8},{"arrowhead":2,"y":3.3,"ax":-15,"showarrow":true,"standoff":4,"text":"Next reference peak","arrowsize":1.3,"x":21.4},{"yanchor":"top","showarrow":true,"standoff":5,"text":"Reference minimums","arrowsize":1.3,"arrowhead":2,"axref":"x","y":-1.2,"ax":13.5,"ay":-3.4,"ayref":"y","x":12.7},{"yanchor":"bottom","showarrow":true,"standoff":12,"arrowsize":1.3,"arrowhead":2,"axref":"x","y":-4.98,"ax":13.7,"ay":-3.9,"ayref":"y","startstandoff":12,"x":16.0}]},"traces":[2],"data":[{"x":[12.7,16.0],"y":[-1.2,-4.98],"marker":{"color":["rgba(38,93,128,1)","rgba(38,93,128,1)"]}}]},{"name":7,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8},{"arrowhead":2,"y":3.3,"ax":-15,"showarrow":true,"standoff":4,"text":"Next reference peak","arrowsize":1.3,"x":21.4},{"yanchor":"top","showarrow":true,"standoff":5,"text":"Larger minimum","arrowsize":1.3,"arrowhead":2,"axref":"x","y":-1.2,"ax":13.5,"ay":-3.4,"ayref":"y","x":12.7},{"showarrow":false,"text":""}]},"traces":[2],"data":[{"x":[12.7,16.0],"y":[-1.2,-4.98],"marker":{"color":["rgba(38,93,128,1)","rgba(38,93,128,0)"]}}]},{"name":8,"traces":[3],"data":[{"marker":{"color":"rgba(38,93,128,1)"}}]},{"name":9,"traces":[3],"data":[{"x":[12.7,14.0]}]},{"name":10,"layout":{"annotations":[{"arrowhead":2,"y":-0.65,"ax":15,"showarrow":true,"standoff":4,"text":"Current peak","arrowsize":1.3,"x":13.8},{"arrowcolor":"rgba(89,105,112,0.40)","yanchor":"top","showarrow":true,"yref":"y","text":"Minimum reference maxima","standoff":0,"arrowsize":0.7,"arrowhead":2,"y":-0.050000000000000044,"ax":0,"ay":-0.65,"ayref":"y","arrowwidth":2.5,"startstandoff":0,"x":21.8},{"axref":"x","arrowhead":2,"y":1.23,"ax":11.5,"showarrow":true,"standoff":4,"text":"Previous reference peak","arrowsize":1.3,"x":10.9},{"arrowhead":2,"hovertext":"Peak is smaller than the current peak","y":-3.03,"showarrow":true,"standoff":4,"text":"Ignored","arrowsize":1.3,"x":17.8},{"arrowhead":2,"y":3.3,"ax":-15,"showarrow":true,"standoff":4,"text":"Next reference peak","arrowsize":1.3,"x":21.4},{"yanchor":"top","showarrow":true,"standoff":5,"text":"Larger minimum","arrowsize":1.3,"arrowhead":2,"axref":"x","y":-1.2,"ax":13.5,"ay":-3.4,"ayref":"y","x":12.7},{"yanchor":"middle","xanchor":"left","y":-0.96,"showarrow":false,"text":"Prominence: 0.55","x":14.4},{"yanchor":"bottom","showarrow":true,"text":"","arrowsize":1.3,"arrowhead":2,"axref":"x","y":-1.2,"ax":13.8,"arrowside":"end+start","ay":-0.72,"ayref":"y","x":13.8}]}}]); }) } });
-
Peak width

Peak width is measured as the distance (in units of indices) between the intersection of a horizontal reference line with the signal on either side of a peak, where the height of the reference line is offset from the peak height by a proportion of the peak prominence (keyword argument relheight for the peakwidths functions).

Example block output
"Strict"-ness

The default behavior of peak finding and related functions (e.g. peakproms, etc.) is to only return results that are exactly correct, and to return nothing (i.e. ignore a potential peak), NaN, or missing, as appropriate for a given function. This behavior is controlled by the strict keyword argument (true by default). Setting the strict keyword to false allows these functions to relax some requirements. When strict == false, functions will make optimistic assumptions in an attempt to return useful information (e.g. something not NaN or missing) when data violates default requirements. This can produce results that are not correct according to the strictest definitions of peaks and their characteristics, however, sometimes relaxed behavior is desired/needed.

strict-ness should only affect new peaks/characteristics (i.e. only peaks detected with strict == false). Any observed behavior otherwise (i.e. characteristics of non-strict peaks are altered) is undesired[1] and an issue should be opened.

List of Peaks.jl function behavior/assumptions for `strict == false`
  • maxima/minima finding functions (e.g. findmaxima, etc.) assume that any unobserved (e.g. missing or due to the beginning/end of the array) or NaN data in a window is consistent with a peak. For example:
    • The maximal/minimal value in an incomplete window (e.g. an index i within w elements of the array beginning or end, i-w < firstindex(x) or i+w > lastindex(x)) is assumed to be a peak (i.e. if the array continued, the data would be less/more the current maximal/minimal value). This allows the first or last elements of an array to be considered peaks if the data in the window is ascending or descending.
    • The maximal/minimal value in a window containing missing or NaN elements is assumed to be a peak (i.e. the missing or NaN values would be less/more than the current value if they existed or were real numbers)
  • peakproms uses the larger present (i.e. not NaN or missing) value of the minimum values in each reference range (see prominence definition)
  • peakwidths linearly interpolates across a gap at the width reference level
+
Peak width

Peak width is measured as the distance (in units of indices) between the intersection of a horizontal reference line with the signal on either side of a peak, where the height of the reference line is offset from the peak height by a proportion of the peak prominence (keyword argument relheight for the peakwidths functions).

Example block output
"Strict"-ness

The default behavior of peak finding and related functions (e.g. peakproms, etc.) is to only return results that are exactly correct, and to return nothing (i.e. ignore a potential peak), NaN, or missing, as appropriate for a given function. This behavior is controlled by the strict keyword argument (true by default). Setting the strict keyword to false allows these functions to relax some requirements. When strict == false, functions will make optimistic assumptions in an attempt to return useful information (e.g. something not NaN or missing) when data violates default requirements. This can produce results that are not correct according to the strictest definitions of peaks and their characteristics, however, sometimes relaxed behavior is desired/needed.

strict-ness should only affect new peaks/characteristics (i.e. only peaks detected with strict == false). Any observed behavior otherwise (i.e. characteristics of non-strict peaks are altered) is undesired[1] and an issue should be opened.

List of Peaks.jl function behavior/assumptions for `strict == false`
diff --git a/dev/how-to/1f4a0ffd.svg b/dev/how-to/3d3f8c75.svg similarity index 84% rename from dev/how-to/1f4a0ffd.svg rename to dev/how-to/3d3f8c75.svg index e9c19bc..3603b24 100644 --- a/dev/how-to/1f4a0ffd.svg +++ b/dev/how-to/3d3f8c75.svg @@ -1,96 +1,96 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/how-to/a7737e97.svg b/dev/how-to/437a8748.svg similarity index 87% rename from dev/how-to/a7737e97.svg rename to dev/how-to/437a8748.svg index 01d1fc9..17be701 100644 --- a/dev/how-to/a7737e97.svg +++ b/dev/how-to/437a8748.svg @@ -1,54 +1,54 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/how-to/5d08046a.svg b/dev/how-to/7f6473bc.svg similarity index 86% rename from dev/how-to/5d08046a.svg rename to dev/how-to/7f6473bc.svg index 713c6e7..6370ecb 100644 --- a/dev/how-to/5d08046a.svg +++ b/dev/how-to/7f6473bc.svg @@ -1,59 +1,59 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/how-to/6aca014d.svg b/dev/how-to/acd02fce.svg similarity index 79% rename from dev/how-to/6aca014d.svg rename to dev/how-to/acd02fce.svg index 1255deb..78a9825 100644 --- a/dev/how-to/6aca014d.svg +++ b/dev/how-to/acd02fce.svg @@ -1,138 +1,138 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/how-to/index.html b/dev/how-to/index.html index 53812c7..9dfe014 100644 --- a/dev/how-to/index.html +++ b/dev/how-to/index.html @@ -7,5 +7,5 @@ y = multisin.(t) .+ 0.1rand(length(t)) pks = findmaxima(y) -plotpeaks(t, y; peaks=pks.indices)Example block output

The simplest way to remove those peaks (assuming the signal is already filtered) is by setting the window w argument in findmaxima and friends:

pks = findmaxima(y, 15)
-f = plotpeaks(t, y; peaks=pks.indices)
Example block output

If only the peaks circled in blue are wanted, then setting the window w too wide won't work, since there are larger peaks that would become dominant.

Example block output

How to filter peaks by peak characteristics

Every peak-characteristic finding function can optionally filter the newly calculated characteristics using the keyword arguments min and max.

Plotting all the peak characteristics and/or looking at the characteristic values can help show which characteristics should be filtered to remove all the unwanted peaks.

plotpeaks!(f, t, y; peaks=pks.indices, prominences=true, widths=true)
Example block output
DataFrame(pks[Not(:data)])
7×5 DataFrame
Rowindicesheightspromswidthsedges
Int64Float64Float64Float64Tuple…
1373.39830.34976819.0733(28.6219, 47.6952)
21025.068835.0532111.484(18.3513, 129.835)
31801.264540.6099224.5815(169.131, 193.712)
42731.32682.542344.1711(251.305, 295.477)
5347-0.5590510.62743623.1592(332.166, 355.326)
6446-2.941210.34075420.0388(436.069, 456.108)
75343.380410.33191616.6846(528.124, 544.809)

Looking at the figure and the characteristic values, we can list the usefulness of each characteristic for filtering:

  • Peak height?
    • There are other peaks around the same height as the peaks we want, so applying a min or max height filter would remove peaks we want, or allow peaks we don't want.
  • Peak prominence?
    • All the peaks we want have similarly small prominences (<1) and the other peaks have much larger prominences (>2). This would be a good filtering option, using peakproms(pks; max=1).
  • Peak width?
    • The peaks we want have fairly similar widths (~15-25 elements wide), and the other peaks have larger widths (>40 elements wide). This would be a good filter, using peakwidths(pks; max=30).

In this case, filtering by peak prominence would be the better choice, because calculating peak widths depends on prominences, so filtering by peak prominence would do the job while avoiding unnecessary work.

In many cases, the desired peaks aren't very different from many other peaks in any one peak characteristic. In these situations, it may be necessary to filter multiple times based on different peak characteristics or different min/max thresholds. There is also a filterpeaks! function which allows you to give a filter predicate and filter by multiple characteristics at once.

+plotpeaks(t, y; peaks=pks.indices)Example block output

The simplest way to remove those peaks (assuming the signal is already filtered) is by setting the window w argument in findmaxima and friends:

pks = findmaxima(y, 15)
+f = plotpeaks(t, y; peaks=pks.indices)
Example block output

If only the peaks circled in blue are wanted, then setting the window w too wide won't work, since there are larger peaks that would become dominant.

Example block output

How to filter peaks by peak characteristics

Every peak-characteristic finding function can optionally filter the newly calculated characteristics using the keyword arguments min and max.

Plotting all the peak characteristics and/or looking at the characteristic values can help show which characteristics should be filtered to remove all the unwanted peaks.

plotpeaks!(f, t, y; peaks=pks.indices, prominences=true, widths=true)
Example block output
DataFrame(pks[Not(:data)])
7×5 DataFrame
Rowindicesheightspromswidthsedges
Int64Float64Float64Float64Tuple…
1373.39830.34976819.0733(28.6219, 47.6952)
21025.068835.0532111.484(18.3513, 129.835)
31801.264540.6099224.5815(169.131, 193.712)
42731.32682.542344.1711(251.305, 295.477)
5347-0.5590510.62743623.1592(332.166, 355.326)
6446-2.941210.34075420.0388(436.069, 456.108)
75343.380410.33191616.6846(528.124, 544.809)

Looking at the figure and the characteristic values, we can list the usefulness of each characteristic for filtering:

  • Peak height?
    • There are other peaks around the same height as the peaks we want, so applying a min or max height filter would remove peaks we want, or allow peaks we don't want.
  • Peak prominence?
    • All the peaks we want have similarly small prominences (<1) and the other peaks have much larger prominences (>2). This would be a good filtering option, using peakproms(pks; max=1).
  • Peak width?
    • The peaks we want have fairly similar widths (~15-25 elements wide), and the other peaks have larger widths (>40 elements wide). This would be a good filter, using peakwidths(pks; max=30).

In this case, filtering by peak prominence would be the better choice, because calculating peak widths depends on prominences, so filtering by peak prominence would do the job while avoiding unnecessary work.

In many cases, the desired peaks aren't very different from many other peaks in any one peak characteristic. In these situations, it may be necessary to filter multiple times based on different peak characteristics or different min/max thresholds. There is also a filterpeaks! function which allows you to give a filter predicate and filter by multiple characteristics at once.

diff --git a/dev/index-8cf6468f.svg b/dev/index-6b563398.svg similarity index 84% rename from dev/index-8cf6468f.svg rename to dev/index-6b563398.svg index 87714a0..3022f5a 100644 --- a/dev/index-8cf6468f.svg +++ b/dev/index-6b563398.svg @@ -1,91 +1,91 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/index-7361848b.svg b/dev/index-cf5b86d7.svg similarity index 86% rename from dev/index-7361848b.svg rename to dev/index-cf5b86d7.svg index 51ca13f..af94b2c 100644 --- a/dev/index-7361848b.svg +++ b/dev/index-cf5b86d7.svg @@ -1,54 +1,54 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/index-57a1132b.svg b/dev/index-dbd055ca.svg similarity index 87% rename from dev/index-57a1132b.svg rename to dev/index-dbd055ca.svg index 78f4ca2..7ac47aa 100644 --- a/dev/index-57a1132b.svg +++ b/dev/index-dbd055ca.svg @@ -1,46 +1,46 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/index.html b/dev/index.html index 22d30b4..5bec0a7 100644 --- a/dev/index.html +++ b/dev/index.html @@ -2,19 +2,19 @@ Home · Peaks

Peaks.jl

Peaks.jl is a library for finding peaks (i.e. local maxima and minima) and peak characteristics (e.g. how prominent or wide are peaks, etc) in vector (1D) data signals.

Installation

Peaks.jl can be installed from the Julia REPL by running

] add Peaks
    Updating registry at `~/.julia/registries/General.toml`
    Resolving package versions...
    Installed Peaks ─ v0.5.3
-    Updating `~/.julia/environments/v1.10/Project.toml`
+    Updating `~/.julia/environments/v1.11/Project.toml`
   [18e31ff7] + Peaks v0.5.3
-    Updating `~/.julia/environments/v1.10/Manifest.toml`
+    Updating `~/.julia/environments/v1.11/Manifest.toml`
   [18e31ff7] + Peaks v0.5.3
   [aea7be01] + PrecompileTools v1.2.1
   [21216c6a] + Preferences v1.4.3
   [3cdcf5f2] + RecipesBase v1.3.4
-  [fdea26ae] + SIMD v3.5.0
-  [ade2ca70] + Dates
-  [de0858da] + Printf
+  [fdea26ae] + SIMD v3.6.0
+  [ade2ca70] + Dates v1.11.0
+  [de0858da] + Printf v1.11.0
   [fa267f1f] + TOML v1.0.3
-  [4ec0a83e] + Unicode
-Precompiling project...
-Peaks
-  1 dependency successfully precompiled in 2 seconds. 4 already precompiled.

Getting started

Finding peaks

Example block output

To find the peaks in your data you can use the findmaxima function, which returns a NamedTuple with fields for each calculated peak characteristic (indices, heights) and a reference to the data.

julia> indices, heights = findmaxima(y)(indices = [36, 100, 183, 273, 345, 445, 536], heights = [3.300118034348511, 4.982232717207901, 1.197072463435926, 1.2276270625137882, -0.6496226560177698, -3.0322485466891145, 3.300118034348519], data = [0.0, 0.1632851160646655, 0.32610451181030864, 0.4879949200150502, 0.6484979658187734, 0.8071625784012266, 0.9635473614762452, 1.1172229092385426, 1.2677740547092151, 1.4148020378099078  …  3.2394249315275934, 3.2820555214196987, 3.3284358209806952, 3.3784081950151283, 3.4317863042827303, 3.4883561669665792, 3.5478773815030995, 3.6100845038112075, 3.674688571077937, 3.7413787634226736])

When the peaks are plotted over the data, we see that all the local maxima have been identified.

Example block output

Peak characteristics

Peaks have various characteristics, including height, prominence, and width. Peaks.jl exports functions for finding each characteristic: peakheights, peakproms, peakwidths:

julia> indices, proms = peakproms(indices, y)([36, 100, 183, 273, 345, 445, 536], [0.2678694876593948, 4.982232717207901, 0.5474498074181589, 2.4552541250275763, 0.5474498074181591, 0.2678694876593921, 0.26786948765940455])
julia> indices, widths, edges... = peakwidths(indices, y, proms)([36, 100, 183, 273, 345, 445, 536], [17.62631562198532, 111.3881252794683, 24.143545188509734, 44.44393283928167, 23.091125504863612, 18.893643387694567, 17.626315621985214], [28.48833894440662, 18.671388334872134, 169.46890657137365, 251.0, 332.5310934286264, 436.9917020459134, 528.4883389444067], [46.11465456639194, 130.05951361434043, 193.61245175988338, 295.4439328392817, 355.62221893349, 455.885345433608, 546.1146545663919])

Mutating bang ('!') functions are available (i.e. peakproms!, etc.) when allocations are a concern.

Peaks NamedTuple & pipable API

There are Peaks.jl functions that bundle the peaks, peak characteristics, and signal into a convenient NamedTuple:

julia> pks = findmaxima(y);
julia> pks = peakproms(pks);
julia> pks = peakwidths(pks)(indices = [36, 100, 183, 273, 345, 445, 536], heights = [3.300118034348511, 4.982232717207901, 1.197072463435926, 1.2276270625137882, -0.6496226560177698, -3.0322485466891145, 3.300118034348519], data = [0.0, 0.1632851160646655, 0.32610451181030864, 0.4879949200150502, 0.6484979658187734, 0.8071625784012266, 0.9635473614762452, 1.1172229092385426, 1.2677740547092151, 1.4148020378099078 … 3.2394249315275934, 3.2820555214196987, 3.3284358209806952, 3.3784081950151283, 3.4317863042827303, 3.4883561669665792, 3.5478773815030995, 3.6100845038112075, 3.674688571077937, 3.7413787634226736], proms = [0.2678694876593948, 4.982232717207901, 0.5474498074181589, 2.4552541250275763, 0.5474498074181591, 0.2678694876593921, 0.26786948765940455], widths = [17.62631562198532, 111.3881252794683, 24.143545188509734, 44.44393283928167, 23.091125504863612, 18.893643387694567, 17.626315621985214], edges = [(28.48833894440662, 46.11465456639194), (18.671388334872134, 130.05951361434043), (169.46890657137365, 193.61245175988338), (251.0, 295.4439328392817), (332.5310934286264, 355.62221893349), (436.9917020459134, 455.885345433608), (528.4883389444067, 546.1146545663919)])

Mutating functions are also available for the NamedTuple functions; the vectors within the NamedTuple are mutated and re-used in the returned tuple. The NamedTuple functions can also be chained/piped:

julia> pks = findmaxima(y) |> peakproms!(;strict=false) |> peakwidths!(; max=100)(indices = [36, 183, 273, 345, 445, 536], heights = [3.300118034348511, 1.197072463435926, 1.2276270625137882, -0.6496226560177698, -3.0322485466891145, 3.300118034348519], data = [0.0, 0.1632851160646655, 0.32610451181030864, 0.4879949200150502, 0.6484979658187734, 0.8071625784012266, 0.9635473614762452, 1.1172229092385426, 1.2677740547092151, 1.4148020378099078  …  3.2394249315275934, 3.2820555214196987, 3.3284358209806952, 3.3784081950151283, 3.4317863042827303, 3.4883561669665792, 3.5478773815030995, 3.6100845038112075, 3.674688571077937, 3.7413787634226736], proms = [0.2678694876593948, 0.5474498074181589, 2.4552541250275763, 0.5474498074181591, 0.2678694876593921, 0.26786948765940455], widths = [17.62631562198532, 24.143545188509734, 44.44393283928167, 23.091125504863612, 18.893643387694567, 17.626315621985214], edges = [(28.48833894440662, 46.11465456639194), (169.46890657137365, 193.61245175988338), (251.0, 295.4439328392817), (332.5310934286264, 355.62221893349), (436.9917020459134, 455.885345433608), (528.4883389444067, 546.1146545663919)])
Performance tip

Be aware that the NamedTuple functions allocate more memory than the functions with direct/explicit arguments. If maximum performance is needed, mutating functions (e.g. peakproms!, etc) and/or the direct, non-NamedTuple methods are a better choice.

Plotting

The peaks, prominences, and widths can be visualized all together using a Plots.jl recipe plotpeaks:

using Plots
-plotpeaks(t, y; peaks=indices, prominences=true, widths=true)
Example block output
+ [4ec0a83e] + Unicode v1.11.0 +Precompiling project... + 1058.8 ms ✓ Peaks + 1 dependency successfully precompiled in 1 seconds. 8 already precompiled.

Getting started

Finding peaks

Example block output

To find the peaks in your data you can use the findmaxima function, which returns a NamedTuple with fields for each calculated peak characteristic (indices, heights) and a reference to the data.

julia> indices, heights = findmaxima(y)(indices = [36, 100, 183, 273, 345, 445, 536], heights = [3.300118034348511, 4.982232717207901, 1.197072463435926, 1.2276270625137882, -0.6496226560177698, -3.0322485466891145, 3.300118034348519], data = [0.0, 0.1632851160646655, 0.32610451181030864, 0.4879949200150502, 0.6484979658187734, 0.8071625784012266, 0.9635473614762452, 1.1172229092385426, 1.2677740547092151, 1.4148020378099078  …  3.2394249315275934, 3.2820555214196987, 3.3284358209806952, 3.3784081950151283, 3.4317863042827303, 3.4883561669665792, 3.5478773815030995, 3.6100845038112075, 3.674688571077937, 3.7413787634226736])

When the peaks are plotted over the data, we see that all the local maxima have been identified.

Example block output

Peak characteristics

Peaks have various characteristics, including height, prominence, and width. Peaks.jl exports functions for finding each characteristic: peakheights, peakproms, peakwidths:

julia> indices, proms = peakproms(indices, y)([36, 100, 183, 273, 345, 445, 536], [0.2678694876593948, 4.982232717207901, 0.5474498074181589, 2.4552541250275763, 0.5474498074181591, 0.2678694876593921, 0.26786948765940455])
julia> indices, widths, edges... = peakwidths(indices, y, proms)([36, 100, 183, 273, 345, 445, 536], [17.62631562198532, 111.3881252794683, 24.143545188509734, 44.44393283928167, 23.091125504863612, 18.893643387694567, 17.626315621985214], [28.48833894440662, 18.671388334872134, 169.46890657137365, 251.0, 332.5310934286264, 436.9917020459134, 528.4883389444067], [46.11465456639194, 130.05951361434043, 193.61245175988338, 295.4439328392817, 355.62221893349, 455.885345433608, 546.1146545663919])

Mutating bang ('!') functions are available (i.e. peakproms!, etc.) when allocations are a concern.

Peaks NamedTuple & pipable API

There are Peaks.jl functions that bundle the peaks, peak characteristics, and signal into a convenient NamedTuple:

julia> pks = findmaxima(y);
julia> pks = peakproms(pks);
julia> pks = peakwidths(pks)(indices = [36, 100, 183, 273, 345, 445, 536], heights = [3.300118034348511, 4.982232717207901, 1.197072463435926, 1.2276270625137882, -0.6496226560177698, -3.0322485466891145, 3.300118034348519], data = [0.0, 0.1632851160646655, 0.32610451181030864, 0.4879949200150502, 0.6484979658187734, 0.8071625784012266, 0.9635473614762452, 1.1172229092385426, 1.2677740547092151, 1.4148020378099078 … 3.2394249315275934, 3.2820555214196987, 3.3284358209806952, 3.3784081950151283, 3.4317863042827303, 3.4883561669665792, 3.5478773815030995, 3.6100845038112075, 3.674688571077937, 3.7413787634226736], proms = [0.2678694876593948, 4.982232717207901, 0.5474498074181589, 2.4552541250275763, 0.5474498074181591, 0.2678694876593921, 0.26786948765940455], widths = [17.62631562198532, 111.3881252794683, 24.143545188509734, 44.44393283928167, 23.091125504863612, 18.893643387694567, 17.626315621985214], edges = [(28.48833894440662, 46.11465456639194), (18.671388334872134, 130.05951361434043), (169.46890657137365, 193.61245175988338), (251.0, 295.4439328392817), (332.5310934286264, 355.62221893349), (436.9917020459134, 455.885345433608), (528.4883389444067, 546.1146545663919)])

Mutating functions are also available for the NamedTuple functions; the vectors within the NamedTuple are mutated and re-used in the returned tuple. The NamedTuple functions can also be chained/piped:

julia> pks = findmaxima(y) |> peakproms!(;strict=false) |> peakwidths!(; max=100)(indices = [36, 183, 273, 345, 445, 536], heights = [3.300118034348511, 1.197072463435926, 1.2276270625137882, -0.6496226560177698, -3.0322485466891145, 3.300118034348519], data = [0.0, 0.1632851160646655, 0.32610451181030864, 0.4879949200150502, 0.6484979658187734, 0.8071625784012266, 0.9635473614762452, 1.1172229092385426, 1.2677740547092151, 1.4148020378099078  …  3.2394249315275934, 3.2820555214196987, 3.3284358209806952, 3.3784081950151283, 3.4317863042827303, 3.4883561669665792, 3.5478773815030995, 3.6100845038112075, 3.674688571077937, 3.7413787634226736], proms = [0.2678694876593948, 0.5474498074181589, 2.4552541250275763, 0.5474498074181591, 0.2678694876593921, 0.26786948765940455], widths = [17.62631562198532, 24.143545188509734, 44.44393283928167, 23.091125504863612, 18.893643387694567, 17.626315621985214], edges = [(28.48833894440662, 46.11465456639194), (169.46890657137365, 193.61245175988338), (251.0, 295.4439328392817), (332.5310934286264, 355.62221893349), (436.9917020459134, 455.885345433608), (528.4883389444067, 546.1146545663919)])
Performance tip

Be aware that the NamedTuple functions allocate more memory than the functions with direct/explicit arguments. If maximum performance is needed, mutating functions (e.g. peakproms!, etc) and/or the direct, non-NamedTuple methods are a better choice.

Plotting

The peaks, prominences, and widths can be visualized all together using a Plots.jl recipe plotpeaks:

using Plots
+plotpeaks(t, y; peaks=indices, prominences=true, widths=true)
Example block output diff --git a/dev/reference/index.html b/dev/reference/index.html index fa96e77..32b519a 100644 --- a/dev/reference/index.html +++ b/dev/reference/index.html @@ -10,7 +10,7 @@ julia> argmaxima([2,0,1,1]; strict=false) 2-element Vector{Int64}: 1 - 3source
Peaks.argminimaFunction
argminima(x[, w=1; strict=false]) -> Vector{Int}

Find the indices of local minima in x, where each minima i is either the minimum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

When strict == true, no elements in x[i-w:i+w] may be missing or NaN, and the bounds of a plateau must exist. For strict == false, a minima is the minimum of all non-NaN or missing elements in x[i-w:i+w], and plateau bounds are assumed to exist (i.e. missing, NaN, or either end of the array, x[begin-1] or x[end+1], may be treated as the bounds of a plateau).

See also: findminima, findnextminima

Examples

julia> argminima([3,2,3,1,1,3])
+ 3
source
Peaks.argminimaFunction
argminima(x[, w=1; strict=false]) -> Vector{Int}

Find the indices of local minima in x, where each minima i is either the minimum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

When strict == true, no elements in x[i-w:i+w] may be missing or NaN, and the bounds of a plateau must exist. For strict == false, a minima is the minimum of all non-NaN or missing elements in x[i-w:i+w], and plateau bounds are assumed to exist (i.e. missing, NaN, or either end of the array, x[begin-1] or x[end+1], may be treated as the bounds of a plateau).

See also: findminima, findnextminima

Examples

julia> argminima([3,2,3,1,1,3])
 2-element Vector{Int64}:
  2
  4
@@ -21,13 +21,13 @@
 julia> argminima([2,3,1,1]; strict=false)
 2-element Vector{Int64}:
  1
- 3
source
Peaks.maximaFunction
maxima(x[, w=1; strict=true]) -> Vector{eltype(x)}

Find the values of local maxima in x, where each maxima i is either the maximum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the consecutive maximal values.

See also: argmaxima, findnextmaxima, minima

source
Peaks.minimaFunction
minima(x[, w=1; strict=true]) -> Vector{eltype(x)}

Find the values of local minima in x, where each minima i is either the minimum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

See also: argminima, findnextminima

source
Peaks.findmaximaFunction
findmaxima(x[, w=1; strict=true]) -> (;indices, heights, data)

Find the indices and values of local maxima in x, where each maxima i is either the maximum of x[i-w:i+w] or the first index of a plateau.

Returns a NamedTuple contains the fields indices, heights, data, which are equivalent to heights = data[indices]. The data field is a reference (not a copy) to the argument x.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the consecutive maximal values.

See also: argmaxima, findnextmaxima, findminima

Examples

julia> data = [1, 5, 1, 3, 2];
+ 3
source
Peaks.maximaFunction
maxima(x[, w=1; strict=true]) -> Vector{eltype(x)}

Find the values of local maxima in x, where each maxima i is either the maximum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the consecutive maximal values.

See also: argmaxima, findnextmaxima, minima

source
Peaks.minimaFunction
minima(x[, w=1; strict=true]) -> Vector{eltype(x)}

Find the values of local minima in x, where each minima i is either the minimum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

See also: argminima, findnextminima

source
Peaks.findmaximaFunction
findmaxima(x[, w=1; strict=true]) -> (;indices, heights, data)

Find the indices and values of local maxima in x, where each maxima i is either the maximum of x[i-w:i+w] or the first index of a plateau.

Returns a NamedTuple contains the fields indices, heights, data, which are equivalent to heights = data[indices]. The data field is a reference (not a copy) to the argument x.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the consecutive maximal values.

See also: argmaxima, findnextmaxima, findminima

Examples

julia> data = [1, 5, 1, 3, 2];
 
 julia> pks = findmaxima(data)
-(indices = [2, 4], heights = [5, 3], data = [1, 5, 1, 3, 2])
source
Peaks.findminimaFunction
findminima(x[, w=1; strict=true]) -> (;indices, heights, data)

Find the indices and values of local minima in x, where each minima i is either the minimum of x[i-w:i+w] or the first index of a plateau.

Returns a NamedTuple contains the fields indices, heights, data, which are equivalent to heights = data[indices]. The data field is a reference (not a copy) to the argument x.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

See also: argminima, findnextminima

Examples

julia> data = [1, 5, 1, 3, 2];
+(indices = [2, 4], heights = [5, 3], data = [1, 5, 1, 3, 2])
source
Peaks.findminimaFunction
findminima(x[, w=1; strict=true]) -> (;indices, heights, data)

Find the indices and values of local minima in x, where each minima i is either the minimum of x[i-w:i+w] or the first index of a plateau.

Returns a NamedTuple contains the fields indices, heights, data, which are equivalent to heights = data[indices]. The data field is a reference (not a copy) to the argument x.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

See also: argminima, findnextminima

Examples

julia> data = [1, 5, 1, 3, 2];
 
 julia> valleys = findminima(data)
-(indices = [3], heights = [1], data = [1, 5, 1, 3, 2])
source
Peaks.simplemaximaFunction
simplemaxima(x) -> Vector{Int}

Find the indices of local maxima in x, where each maxima i is greater than both adjacent elements or is the first index of a plateau.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the plateau.

This function is semantically equivalent to argmaxima(x, w=1; strict=true), but is faster because of its simplified set of features. (The difference in speed scales with length(x); for input arrays longer than 5k elements, argmaxima is roughly 7x slower.)

Vectors with missings are not supported by simplemaxima, use argmaxima if this is needed.

See also: argmaxima

Examples

julia> simplemaxima([0,2,0,1,1,0])
+(indices = [3], heights = [1], data = [1, 5, 1, 3, 2])
source
Peaks.simplemaximaFunction
simplemaxima(x) -> Vector{Int}

Find the indices of local maxima in x, where each maxima i is greater than both adjacent elements or is the first index of a plateau.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the plateau.

This function is semantically equivalent to argmaxima(x, w=1; strict=true), but is faster because of its simplified set of features. (The difference in speed scales with length(x); for input arrays longer than 5k elements, argmaxima is roughly 7x slower.)

Vectors with missings are not supported by simplemaxima, use argmaxima if this is needed.

See also: argmaxima

Examples

julia> simplemaxima([0,2,0,1,1,0])
 2-element Vector{Int64}:
  2
  4
@@ -44,7 +44,7 @@
   269.865 ns (3 allocations: 1.00 KiB)
 
 julia> @btime argmaxima(x) setup=(x = repeat([0,1]; outer=100));
-  748.780 ns (3 allocations: 1.00 KiB)
source
Peaks.simpleminimaFunction
simpleminima(x) -> Vector{Int}

Find the indices of local minima in x, where each minima i is less than both adjacent elements or is the first index of a plateau.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the plateau.

This function is semantically equivalent to argminima(x, w=1; strict=true), but is faster because of its simplified set of features. (The difference in speed scales with length(x); for input arrays longer than 5k elements, argmaxima is roughly 7x slower.)

Vectors with missings are not supported by simpleminima, use argminima if this is needed.

See also: argminima

Examples

julia> simpleminima([3,2,3,1,1,3])
+  748.780 ns (3 allocations: 1.00 KiB)
source
Peaks.simpleminimaFunction
simpleminima(x) -> Vector{Int}

Find the indices of local minima in x, where each minima i is less than both adjacent elements or is the first index of a plateau.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the plateau.

This function is semantically equivalent to argminima(x, w=1; strict=true), but is faster because of its simplified set of features. (The difference in speed scales with length(x); for input arrays longer than 5k elements, argmaxima is roughly 7x slower.)

Vectors with missings are not supported by simpleminima, use argminima if this is needed.

See also: argminima

Examples

julia> simpleminima([3,2,3,1,1,3])
 2-element Vector{Int64}:
  2
  4
@@ -61,23 +61,23 @@
   280.362 ns (3 allocations: 1.00 KiB)
 
 julia> @btime argminima(x) setup=(x = repeat([0,1]; outer=100));
-  823.634 ns (3 allocations: 1.00 KiB)
source

Peak characteristics & filtering

Peaks.peakpromsFunction
peakproms(indices, x; [strict=true, min, max]) -> (indices, proms)
+  823.634 ns (3 allocations: 1.00 KiB)
source

Peak characteristics & filtering

Peaks.peakpromsFunction
peakproms(indices, x; [strict=true, min, max]) -> (indices, proms)
 peakproms(pks::NamedTuple; [strict=true, min, max]) -> NamedTuple

Calculate the prominences of peak indices in x, and remove peaks with prominences less than min and/or greater than max.

Peak prominence is the absolute height (value) difference between the current peak and the larger of the two adjacent smallest magnitude points between the current peak and adjacent larger peaks or signal ends.

If a NamedTuple pks is given, a new NamedTuple is returned with filtered copies of fields from pks. pks must have :indices and :heights fields. If pks has a :proms field, prominences will only be filtered, and not be recalculated. The fields :widths and :edges will also be filtered if present, and any remaining fields will be copied unmodified.

If strict == true, the prominence for a peak with a NaN or missing between the current peak and either adjacent larger peaks will be NaN or missing, otherwise, it will be the larger of the smallest non-NaN or missing values between the current peak and adjacent larger peaks for strict == false.

See also: peakproms!, findmaxima

Examples

julia> pks = findmaxima([0,5,2,3,3,1,4,0]);
 
 julia> pks = peakproms(pks; min=2)
 (indices = [2, 7], heights = [5, 4], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[5, 3])
 
 julia> inds, proms = peakproms(pks.indices, pks.data; max=4)
-([7], Union{Missing, Int64}[3])
source
peakproms(; [strict, min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates and filters the peak prominences of a copy of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0,5,2,3,3,1,4,0]) |> peakproms(; min=2)
-(indices = [2, 7], heights = [5, 4], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[5, 3])
source
Peaks.peakproms!Function
peakproms!(indices, x; [strict=true, min, max]) -> (indices, proms)
+([7], Union{Missing, Int64}[3])
source
peakproms(; [strict, min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates and filters the peak prominences of a copy of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0,5,2,3,3,1,4,0]) |> peakproms(; min=2)
+(indices = [2, 7], heights = [5, 4], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[5, 3])
source
Peaks.peakproms!Function
peakproms!(indices, x; [strict=true, min, max]) -> (indices, proms)
 peakproms!(pks::NamedTuple; [strict=true, min, max]) -> NamedTuple

Calculate the prominences of peak indices in x, and remove peaks with prominences less than min and/or greater than max.

If a NamedTuple pks is given, a new NamedTuple is returned with the same fields (references) from pks. pks must have :indices and :heights fields. If pks has a :proms field, prominences will only be filtered, and not be recalculated. The fields :widths and :edges will also be filtered (mutated) if present, and any remaining fields will be copied unmodified.

See also: peakproms, findmaxima

Examples

julia> pks = findmaxima([0,5,2,3,3,1,4,0]);
 
 julia> pks = peakproms!(pks; min=2)
 (indices = [2, 7], heights = [5, 4], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[5, 3])
 
 julia> inds, proms = peakproms!(pks.indices, pks.data; max=4)
-([7], Union{Missing, Int64}[3])
source
peakproms!(; [strict, min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates and filters (mutates) the peak prominences and other fields of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0,5,2,3,3,1,4,0]) |> peakproms!(; min=2)
-(indices = [2, 7], heights = [5, 4], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[5, 3])
source
Peaks.peakwidthsFunction
peakwidths(indices, x, proms; [strict=true, relheight=0.5, min, max]) -> (indices, widths, ledge, redge)
+([7], Union{Missing, Int64}[3])
source
peakproms!(; [strict, min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates and filters (mutates) the peak prominences and other fields of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0,5,2,3,3,1,4,0]) |> peakproms!(; min=2)
+(indices = [2, 7], heights = [5, 4], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[5, 3])
source
Peaks.peakwidthsFunction
peakwidths(indices, x, proms; [strict=true, relheight=0.5, min, max]) -> (indices, widths, ledge, redge)
 peakwidths(pks::NamedTuple; [strict=true, relheight=0.5, min, max]) -> NamedTuple

Calculate the widths of peak indices in x at a reference level based on proms and relheight, and removing peaks with widths less than min and/or greater than max. Returns the peaks, widths, and the left and right edges at the reference level.

Peak width is the distance between the signal crossing a reference level before and after the peak. Signal crossings are linearly interpolated between indices. The reference level is the difference between the peak height and relheight times the peak prominence. Width cannot be calculated for a NaN or missing prominence.

If a NamedTuple pks is given, a new NamedTuple is returned with filtered copies of fields from pks. pks must have :indices, :heights, and :proms fields. If pks has :widths and :edges fields, they will not be recalculated, but filtered only. Any remaining fields will be copied unmodified.

If strict == true, the width for a peak with a gap in the signal (e.g. NaN, missing) at the reference level will match the gap (e.g. NaN for NaN, etc.). Otherwise, the signal crossing will be linearly interpolated between the edges of the gap.

See also: peakwidths!, peakproms, findmaxima

Examples

julia> x = Float64[0,5,2,2,3,3,1,4,0];
 
 julia> pks = findmaxima(x) |> peakproms!(;max=2);
@@ -91,8 +91,8 @@
 ([5], [NaN], [NaN], [6.25])
 
 julia> peakwidths(pks.indices, x, pks.proms; strict=false)
-([5], [2.25], [4.0], [6.25])
source
peakwidths(; [strict, relheight, min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates and filters the peak widths of a copy of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0,5,2,3,3,1,4,0]) |> peakproms() |> peakwidths(; min=1.5)
-(indices = [4], heights = [3], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[1], widths = Union{Missing, Float64}[1.75], edges = Tuple{Union{Missing, Float64}, Union{Missing, Float64}}[(3.5, 5.25)])
source
Peaks.peakwidths!Function
peakwidths!(indices, x; [strict=true, relheight=0.5, min, max]) -> (indices, widths, ledge, redge)
+([5], [2.25], [4.0], [6.25])
source
peakwidths(; [strict, relheight, min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates and filters the peak widths of a copy of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0,5,2,3,3,1,4,0]) |> peakproms() |> peakwidths(; min=1.5)
+(indices = [4], heights = [3], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[1], widths = Union{Missing, Float64}[1.75], edges = Tuple{Union{Missing, Float64}, Union{Missing, Float64}}[(3.5, 5.25)])
source
Peaks.peakwidths!Function
peakwidths!(indices, x; [strict=true, relheight=0.5, min, max]) -> (indices, widths, ledge, redge)
 peakwidths!(pks::NamedTuple; [strict=true, relheight=0.5, min, max]) -> NamedTuple

Calculate the widths of peak indices in x at a reference level based on proms and relheight, removing peaks with widths less than min and/or greater than max. Returns the modified peaks, widths, and the left and right edges at the reference level.

If a NamedTuple pks is given, a new NamedTuple is returned with the same fields (references) from pks. pks must have :indices, :heights, and :proms fields. If pks has :widths and :edges fields, they will not be recalculated, but filtered only. Any remaining fields will be copied unmodified.

See also: peakwidths, peakproms, findmaxima

Examples

julia> x = Float64[0,5,2,2,3,3,1,4,0];
 
 julia> pks = findmaxima(x) |> peakproms!();
@@ -101,8 +101,8 @@
 (indices = [2, 5], heights = [5.0, 3.0], data = [0.0, 5.0, 2.0, 2.0, 3.0, 3.0, 1.0, 4.0, 0.0], proms = [5.0, 1.0], widths = [1.333, 1.75], edges = [(1.5, 2.833), (4.5, 6.25)])
 
 julia> peakwidths!(pks.indices, pks.data, pks.proms; min=1)
-([2, 5], [1.333, 1.75], [1.5, 4.5], [2.833, 6.25])
source
peakwidths!(; [strict, relheight, min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates and filters (mutates) the peak widths and other fields of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0,5,2,3,3,1,4,0]) |> peakproms!() |> peakwidths!(; min=1.5)
-(indices = [4], heights = [3], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[1], widths = Union{Missing, Float64}[1.75], edges = Tuple{Union{Missing, Float64}, Union{Missing, Float64}}[(3.5, 5.25)])
source
Peaks.peakheightsFunction
peakheights(indices, heights; [min, max]) -> (indices, heights)
+([2, 5], [1.333, 1.75], [1.5, 4.5], [2.833, 6.25])
source
peakwidths!(; [strict, relheight, min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates and filters (mutates) the peak widths and other fields of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0,5,2,3,3,1,4,0]) |> peakproms!() |> peakwidths!(; min=1.5)
+(indices = [4], heights = [3], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[1], widths = Union{Missing, Float64}[1.75], edges = Tuple{Union{Missing, Float64}, Union{Missing, Float64}}[(3.5, 5.25)])
source
Peaks.peakheightsFunction
peakheights(indices, heights; [min, max]) -> (indices, heights)
 peakheights(pks::NamedTuple; [min, max]) -> NamedTuple

Return a copy of indices and heights where peaks are removed if their height is less than min and/or greater than max.

If a NamedTuple pks is given, a new NamedTuple is returned with filtered copies of fields from pks. pks must have :indices and :heights fields. The fields :proms, :widths, and :edges will be filtered if present, and any remaining fields will be copied unmodified.

See also: peakproms, peakwidths, findmaxima

Examples

julia> x = [0,5,2,3,3,1,4,0];
 
 julia> pks = findmaxima(x)
@@ -112,8 +112,8 @@
 (indices = [4, 7], heights = [3, 4], data = [0, 5, 2, 3, 3, 1, 4, 0])
 
 julia> inds, heights = peakheights(pks.indices, pks.heights; max=4)
-([4, 7], [3, 4])
source
peakheights(; [min, max]) -> Function

Create a function, f(pks::NamedTuple), that copies and filters the peak heights of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0, 5, 2, 3, 3, 1, 4, 0]) |> peakheights(; max=4)
-(indices = [4, 7], heights = [3, 4], data = [0, 5, 2, 3, 3, 1, 4, 0])
source
Peaks.peakheights!Function
peakheights!(indices, heights; [min, max]) -> (indices, heights)
+([4, 7], [3, 4])
source
peakheights(; [min, max]) -> Function

Create a function, f(pks::NamedTuple), that copies and filters the peak heights of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0, 5, 2, 3, 3, 1, 4, 0]) |> peakheights(; max=4)
+(indices = [4, 7], heights = [3, 4], data = [0, 5, 2, 3, 3, 1, 4, 0])
source
Peaks.peakheights!Function
peakheights!(indices, heights; [min, max]) -> (indices, heights)
 peakheights!(pks::NamedTuple; [min, max]) -> NamedTuple

Filter (mutate) and return indices and heights by removing peaks that are less than min and/or greater than max.

If a NamedTuple pks is given, a new NamedTuple is returned with the same fields (references) from pks. pks must have :indices and :heights fields. The fields :proms, :widths, and :edges will be filtered (mutated) if present, and any remaining fields will be referenced unmodified.

See also: peakproms, peakwidths, findmaxima filterpeaks!

Examples

julia> x = [0,5,2,3,3,1,4,0];
 
 julia> pks = findmaxima(x)
@@ -123,8 +123,8 @@
 (indices = [4, 7], heights = [3, 4], data = [0, 5, 2, 3, 3, 1, 4, 0])
 
 julia> inds, heights = peakheights!(pks.indices, pks.heights; min=3.5)
-([7], [4])
source
peakheights!(; [min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates peak heights and then filters (mutates) the fields of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0, 5, 2, 3, 3, 1, 4, 0]) |> peakheights!(; max=4)
-(indices = [4, 7], heights = [3, 4], data = [0, 5, 2, 3, 3, 1, 4, 0])
source
Peaks.filterpeaks!Function
filterpeaks!(pks::NT, feature; [min, max]) where {NT<:NamedTuple} -> pks::NT
+([7], [4])
source
peakheights!(; [min, max]) -> Function

Create a function, f(pks::NamedTuple), that calculates peak heights and then filters (mutates) the fields of its argument, pks, using any given keyword arguments.

Examples

julia> findmaxima([0, 5, 2, 3, 3, 1, 4, 0]) |> peakheights!(; max=4)
+(indices = [4, 7], heights = [3, 4], data = [0, 5, 2, 3, 3, 1, 4, 0])
source
Peaks.filterpeaks!Function
filterpeaks!(pks::NT, feature; [min, max]) where {NT<:NamedTuple} -> pks::NT
 filterpeaks!(pks::NT, mask) -> pks::NT

Filter the standard pks fields where peaks are removed if pks.$feature is less than min and/or greater than max. If a mask is given, a given peak i is filtered (removed) if mask[i] is false.

Standard Peaks.jl fields of pks are :indices, :proms, :heights, :widths, :edges.

Examples

julia> pks = findmaxima([0,5,2,3,3,1,4,0])
 (indices = [2, 4, 7], heights = [5, 3, 4], data = [0, 5, 2, 3, 3, 1, 4, 0])
 
@@ -140,20 +140,20 @@
  1
 
 julia> filterpeaks!(pks, mask)
-(indices = [7], heights = [4], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[3])
source
filterpeaks!(pred, pks) -> NamedTuple

Apply a predicate function pred to NamedTuple slices (the scalar values related to each peak, e.g. (indices=5, heights=3, proms=2)) to and remove a peak if pred returns false.

Examples

julia> pks = findmaxima([0,5,2,3,3,1,4,0])
+(indices = [7], heights = [4], data = [0, 5, 2, 3, 3, 1, 4, 0], proms = Union{Missing, Int64}[3])
source
filterpeaks!(pred, pks) -> NamedTuple

Apply a predicate function pred to NamedTuple slices (the scalar values related to each peak, e.g. (indices=5, heights=3, proms=2)) to and remove a peak if pred returns false.

Examples

julia> pks = findmaxima([0,5,2,3,3,1,4,0])
 (indices = [2, 4, 7], heights = [5, 3, 4], data = [0, 5, 2, 3, 3, 1, 4, 0])
 
 julia> filterpeaks!(pks) do nt
            return nt.heights ≥ 5 || nt.heights ≤ 3
        end
-(indices = [2, 4], heights = [5, 3], data = [0, 5, 2, 3, 3, 1, 4, 0])
source

Convenience functions

Peaks.findnextmaximaFunction
findnextmaxima(x, i[, w=1; strict=true]) -> Int

Find the index of the next maxima in x after or including i, where the maxima i is either the maximum of x[i-w:i+w] or the first index of a plateau. Returns lastindex(x) + 1 if no maxima occur after i.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the consecutive maximal values.

When strict == true, no elements in x[i-w:i+w] may be missing or NaN, and the bounds of a plateau must exist. For strict == false, a maxima is the maximum of all non-NaN or missing elements in x[i-w:i+w], and plateau bounds are assumed to exist (i.e. missing, NaN, or either end of the array, x[begin-1] or x[end+1], may be treated as the bounds of a plateau).

See also: argmaxima

Examples

julia> findnextmaxima([0,2,0,1,1,0], 2)
+(indices = [2, 4], heights = [5, 3], data = [0, 5, 2, 3, 3, 1, 4, 0])
source

Convenience functions

Peaks.findnextmaximaFunction
findnextmaxima(x, i[, w=1; strict=true]) -> Int

Find the index of the next maxima in x after or including i, where the maxima i is either the maximum of x[i-w:i+w] or the first index of a plateau. Returns lastindex(x) + 1 if no maxima occur after i.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the consecutive maximal values.

When strict == true, no elements in x[i-w:i+w] may be missing or NaN, and the bounds of a plateau must exist. For strict == false, a maxima is the maximum of all non-NaN or missing elements in x[i-w:i+w], and plateau bounds are assumed to exist (i.e. missing, NaN, or either end of the array, x[begin-1] or x[end+1], may be treated as the bounds of a plateau).

See also: argmaxima

Examples

julia> findnextmaxima([0,2,0,1,1,0], 2)
 2
 
 julia> findnextmaxima([0,2,0,1,1,0], 3)
 4
-
source
Peaks.findnextminimaFunction
findnextminima(x, i[, w=1, strict=true]) -> Int

Find the index of the next minima in x, after or including i, where the minima i is either the minimum of x[i-w:i+w] or the first index of a plateau. Returns lastindex(x) + 1 if no minima occur after i.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

When strict == true, no elements in x[i-w:i+w] may be missing or NaN, and the bounds of a plateau must exist. For strict == false, a minima is the minimum of all non-NaN or missing elements in x[i-w:i+w], and plateau bounds are assumed to exist (i.e. missing, NaN, or either end of the array, x[begin-1] or x[end+1], may be treated as the bounds of a plateau).

See also: argminima

Examples

julia> findnextminima([3,2,3,1,1,3], 2)
+
source
Peaks.findnextminimaFunction
findnextminima(x, i[, w=1, strict=true]) -> Int

Find the index of the next minima in x, after or including i, where the minima i is either the minimum of x[i-w:i+w] or the first index of a plateau. Returns lastindex(x) + 1 if no minima occur after i.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

When strict == true, no elements in x[i-w:i+w] may be missing or NaN, and the bounds of a plateau must exist. For strict == false, a minima is the minimum of all non-NaN or missing elements in x[i-w:i+w], and plateau bounds are assumed to exist (i.e. missing, NaN, or either end of the array, x[begin-1] or x[end+1], may be treated as the bounds of a plateau).

See also: argminima

Examples

julia> findnextminima([3,2,3,1,1,3], 2)
 2
 
 julia> findnextminima([3,2,3,1,1,3], 3)
 4
-
source
Peaks.ismaximaFunction
ismaxima(i, x[, w=1; strict=true]) -> Bool

Test if i is a maxima in x, where the maxima i is either the maximum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the consecutive maximal values.

See also: findnextmaxima

source
Peaks.isminimaFunction
isminima(i, x[, w=1; strict=true]) -> Bool

Test if i is a minima in x, where the minima i is either the minimum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

See also: findnextminima

source
Peaks.isplateauFunction
isplateau(i, x[, w=1; strict=true]) -> Union{Missing,Bool}

Test if i is a plateau in x, where a plateau is defined as a maxima or minima with consecutive equal (==) extreme values which are bounded by lesser values immediately before and after the consecutive values. Returns false if i is the last index in x.

See also: ismaxima, isminima

source
+source
Peaks.ismaximaFunction
ismaxima(i, x[, w=1; strict=true]) -> Bool

Test if i is a maxima in x, where the maxima i is either the maximum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a maxima with consecutive equal (==) maximal values which are bounded by lesser values immediately before and after the consecutive maximal values.

See also: findnextmaxima

source
Peaks.isminimaFunction
isminima(i, x[, w=1; strict=true]) -> Bool

Test if i is a minima in x, where the minima i is either the minimum of x[i-w:i+w] or the first index of a plateau.

A plateau is defined as a minima with consecutive equal (==) minimal values which are bounded by greater values immediately before and after the consecutive minimal values.

See also: findnextminima

source
Peaks.isplateauFunction
isplateau(i, x[, w=1; strict=true]) -> Union{Missing,Bool}

Test if i is a plateau in x, where a plateau is defined as a maxima or minima with consecutive equal (==) extreme values which are bounded by lesser values immediately before and after the consecutive values. Returns false if i is the last index in x.

See also: ismaxima, isminima

source