From 9ca974405e5aa7ab12bd685b57d1234f5eac8cae Mon Sep 17 00:00:00 2001 From: Wataru Otsubo Date: Fri, 13 Dec 2024 19:28:59 +0900 Subject: [PATCH] update(examples): skew_stats (change bin width, add skew time dependency analysis) --- examples/Manifest.toml | 45 +++- examples/Project.toml | 8 + examples/skew_stats.jl | 506 ++++++++++++++++++++++++++++++++++++----- 3 files changed, 497 insertions(+), 62 deletions(-) diff --git a/examples/Manifest.toml b/examples/Manifest.toml index 3690e90..2f92e2f 100644 --- a/examples/Manifest.toml +++ b/examples/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.11.2" manifest_format = "2.0" -project_hash = "5459dda24740eb0fbddbd283ef8d6654eb96910e" +project_hash = "9bfd3227044b739391f5fee603ddc4de538f1c94" [[deps.ANSIColoredPrinters]] git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c" @@ -20,6 +20,12 @@ weakdeps = ["ChainRulesCore", "Test"] AbstractFFTsChainRulesCoreExt = "ChainRulesCore" AbstractFFTsTestExt = "Test" +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "6e1d2a35f2f90a4bc7c2ed98079b2ba09c35b83a" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.3.2" + [[deps.AbstractTrees]] git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" @@ -541,6 +547,18 @@ git-tree-sha1 = "b1c2585431c382e3fe5805874bda6aea90a95de9" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" version = "0.3.25" +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "179267cfa5e712760cd43dcae385d7ea90cc25a4" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.5" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + [[deps.IOCapture]] deps = ["Logging", "Random"] git-tree-sha1 = "b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770" @@ -868,6 +886,11 @@ version = "0.3.28" uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" version = "1.11.0" +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" @@ -1058,10 +1081,10 @@ uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" version = "0.4.3" [[deps.PSBoardDataBase]] -deps = ["AutoHashEquals", "CSV", "DBInterface", "DataFrames", "Dates", "Documenter", "Downloads", "FHist", "Printf", "SQLite", "StaticArrays", "Tables"] +deps = ["AutoHashEquals", "CSV", "DBInterface", "DataFrames", "Dates", "Documenter", "Downloads", "Printf", "SQLite", "StaticArrays", "Tables"] path = ".." uuid = "779f6a9c-59fa-41f1-8ed1-e9a91eccb2f5" -version = "0.3.1" +version = "0.4.0" weakdeps = ["InteractiveUtils"] [deps.PSBoardDataBase.extensions] @@ -1118,6 +1141,12 @@ git-tree-sha1 = "3ca9a356cd2e113c420f2c13bea19f8d3fb1cb18" uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" version = "1.4.3" +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "eba4810d5e6a01f612b948c9fa94f905b49087b0" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.60" + [[deps.PolygonOps]] git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6" uuid = "647866c9-e3ac-4575-94e7-e3d426903924" @@ -1495,11 +1524,21 @@ git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" version = "0.11.3" +[[deps.Tricks]] +git-tree-sha1 = "7822b97e99a1672bfb1b49b668a6d46d58d8cbcb" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.9" + [[deps.TriplotBase]] git-tree-sha1 = "4d4ed7f294cda19382ff7de4c137d24d16adc89b" uuid = "981d1d27-644d-49a2-9326-4793e63143c3" version = "0.1.0" +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" diff --git a/examples/Project.toml b/examples/Project.toml index 430afee..034ccf5 100644 --- a/examples/Project.toml +++ b/examples/Project.toml @@ -1,7 +1,15 @@ [deps] CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" +DBInterface = "a10d1c49-ce27-4219-8d33-6db1a4562965" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" FHist = "68837c9b-b678-4cd5-9925-8a54edc8f695" PSBoardDataBase = "779f6a9c-59fa-41f1-8ed1-e9a91eccb2f5" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +SQLite = "0aa819cd-b072-5ff4-a722-6bc24af294d9" +Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" diff --git a/examples/skew_stats.jl b/examples/skew_stats.jl index 53621e5..7d1f9a2 100644 --- a/examples/skew_stats.jl +++ b/examples/skew_stats.jl @@ -17,11 +17,13 @@ begin using PSBoardDataBase using SQLite using DataFrames + using FHist using DBInterface using Tables using CairoMakie using Statistics using PlutoUI + using Dates using Random using Printf end @@ -70,7 +72,11 @@ md""" """ # ╔═╡ f379d43c-9300-41f4-b0fc-3c9d749e3105 -qaqc_runs = DBInterface.execute(db, sql"select * from qaqc_runs") |> DataFrame +qaqc_runs = let df + df = DBInterface.execute(db, sql"select * from qaqc_runs") |> DataFrame + transform!(df, :run_datetime => ByRow(passmissing(s -> DateTime(s))) => :run_datetime) + df +end # ╔═╡ 33e099bc-ac4b-4b5f-88e7-20f4463c98ef md""" @@ -103,7 +109,7 @@ clk_files = filter(endswith("_clk.txt")) |> filter(!contains("nagoya")) |> filter(!contains("630_190")) |> - filter(!contains("627_344")) + filter(!contains("627_344")) # ╔═╡ 3e5607fd-2a8a-4a1a-9e7b-3f23ef216fad """ @@ -180,7 +186,7 @@ let title = "skews of all measurements (n_meas = $(length(skews)), n_psb = $(npsbid))", xlabel = "skew / ns", ) - stephist!(ax, skews, bins = range(minimum(skews), maximum(skews), step = 1 / 57)) + stephist!(ax, skews, bins = range(minimum(skews), maximum(skews), step = 1 / 56)) fig end @@ -192,7 +198,7 @@ md""" # ╔═╡ 420dce0e-4757-48d9-84ec-7ddfac2fdff6 let skew_widths = df_skews.width |> skipmissing |> collect - bins = range(0, maximum(skew_widths) + 1 / 57, step = 1 / 57)# .- 0.01 + bins = range(0, maximum(skew_widths) + 1 / 56, step = 1 / 56)# .- 0.01 hist( skew_widths, bins = bins, @@ -211,13 +217,61 @@ let end # ╔═╡ 99902640-fee3-4502-9c7e-cb08834bad0b -maximum(skipmissing(df_skews.width)) / (1 / 57) +maximum(skipmissing(df_skews.width)) / (1 / 56) # ╔═╡ c79c6684-1b03-41b5-aa90-ef8c7a8eb69c md""" -この結果を元に、クロック試験のしきい値は$(round(9 * 1 / 57; digits = 2))ns以上に設定 +この結果を元に、クロック試験のしきい値は$(round(9 * 1 / 56; digits = 2))ns以上に設定 """ +# ╔═╡ a1056aba-e484-4594-908b-4709896d0da0 +let + fig = Figure() + ax = Axis( + fig[1, 1], + limits = ((-0.5, 1), nothing), + title = "turn on curves for PSBID 1166", + xlabel = "delay / ns (position dependency is removed)", + ylabel = "counts", + ) + + clk_files_1166 = filter(clk_files) do filename + psbid, runid = parse_filename(filename) + psbid == 1166 + end + for clk_file in clk_files_1166 + psbid, runid = parse_filename(clk_file) + single_runs = filter( + [:psboard_id, :runid] => ( + (ref_psbid, ref_runid) -> begin + psbid == ref_psbid && runid == ref_runid + end + ), + qaqc_single_results, + ) + offset_pos = let + qaqc_positions.rising_ns[single_runs.position[1]] + end + + points = + eachline(clk_file) .|> + PSBoardDataBase.ClockParser._parse_line .|> + (x -> (x[1] - offset_pos, x[2])) + + @info "" single_runs points + + stds = map(points) do ((time, count)) + sqrt(count * (1000 - count) / 1000) + end + + scatterlines!(ax, points, label = "psbid $(psbid), runid $(runid)") + errorbars!(ax, points, stds) + end + axislegend(ax, position = :rb) + + fig +end + # ╔═╡ 875bec26-e576-4f48-ba14-464bce503d75 filter(:width => (x -> ismissing(x) || x < 0.06), df_skews) @@ -239,11 +293,15 @@ md""" combine(filter(groupby(qaqc_single_results, [:psboard_id, :position])) do sdf nrow(dropmissing(sdf, [:lvds_tx_skew])) > 1 end) do sdf - sdf = dropmissing(sdf, [:lvds_tx_skew]) - # @info "" select(sdf, [:psboard_id, :position, :lvds_tx_skew]) - (skew_mean = mean(sdf.lvds_tx_skew), skew_std = std(sdf.lvds_tx_skew), nrow = nrow(sdf)) -end |> (df -> begin - filter(:skew_std => >(0.5), df) + sdf = dropmissing(sdf, [:lvds_tx_skew]) + # @info "" select(sdf, [:psboard_id, :position, :lvds_tx_skew]) + ( + skew_mean = mean(sdf.lvds_tx_skew), + skew_std = std(sdf.lvds_tx_skew), + nrow = nrow(sdf), + ) +end |> (df -> begin + filter(:skew_std => >(0.5), df) end) # ╔═╡ 25688d24-5aee-43d3-aff9-b9efa0556070 @@ -418,57 +476,70 @@ md""" """ # ╔═╡ 38d472ca-6347-4096-828d-fd1256130a59 -df_skews_selected = combine( - gdf_skews_on_psbid, - sdf -> begin - all(ismissing, sdf.skew) && @info "" sdf - if nrow(sdf) == 1 - @assert sdf.skew |> first |> !ismissing - ( - skew = sdf.skew |> first, - width = sdf.width |> first, - riseup = sdf.riseup |> first, - ) - else - if sdf.psbid[1] == 291 - df = filter(:runid => ==(94), sdf) - @assert nrow(df) == 1 +df_skews_selected = let df + df = combine( + gdf_skews_on_psbid, + sdf -> begin + all(ismissing, sdf.skew) && @info "" sdf + if nrow(sdf) == 1 + @assert sdf.skew |> first |> !ismissing ( - skew = df.skew |> first, - width = sdf.width |> first, - riseup = sdf.riseup |> first, - ) - elseif sdf.psbid[1] == 460 - df = filter(:runid => ==(132), sdf) - @assert nrow(df) == 1 - ( - skew = df.skew |> first, - width = sdf.width |> first, - riseup = sdf.riseup |> first, - ) - elseif sdf.psbid[1] == 545 - df = filter(:runid => ==(132), sdf) - @assert nrow(df) == 1 - ( - skew = df.skew |> first, + skew = sdf.skew |> first, width = sdf.width |> first, riseup = sdf.riseup |> first, + runid = sdf.runid |> first, ) else - # assume that runid is chronological - i = argmax(sdf.runid .|> (id -> ismissing(id) ? -1 : id)) - (skew = sdf.skew[i], width = sdf.width[i], riseup = sdf.riseup[i]) + if sdf.psbid[1] == 291 + df = filter(:runid => ==(94), sdf) + @assert nrow(df) == 1 + ( + skew = df.skew |> first, + width = sdf.width |> first, + riseup = sdf.riseup |> first, + runid = sdf.runid |> first, + ) + elseif sdf.psbid[1] == 460 + df = filter(:runid => ==(132), sdf) + @assert nrow(df) == 1 + ( + skew = df.skew |> first, + width = sdf.width |> first, + riseup = sdf.riseup |> first, + runid = sdf.runid |> first, + ) + elseif sdf.psbid[1] == 545 + df = filter(:runid => ==(132), sdf) + @assert nrow(df) == 1 + ( + skew = df.skew |> first, + width = sdf.width |> first, + riseup = sdf.riseup |> first, + runid = sdf.runid |> first, + ) + else + # assume that runid is chronological + i = argmax(sdf.runid .|> (id -> ismissing(id) ? -1 : id)) + ( + skew = sdf.skew[i], + width = sdf.width[i], + riseup = sdf.riseup[i], + runid = sdf.runid[1], + ) + end end - end - end, -) + end, + ) + leftjoin!(df, select(qaqc_runs, [:id, :campaign_id]), on = :runid => :id) + df +end # ╔═╡ 310710da-ebb2-4f54-b238-38d493a6a533 let skews = df_skews_selected.skew |> skipmissing |> collect fig = Figure() ax = Axis(fig[1, 1], title = "skews (n = $(length(skews)))", xlabel = "skew / ns") - stephist!(ax, skews, bins = range(minimum(skews), maximum(skews), step = 1 / 57)) + stephist!(ax, skews, bins = range(minimum(skews), maximum(skews), step = 1 / 56)) fig end @@ -530,7 +601,7 @@ md""" # ╔═╡ 939aba6b-b03c-42b6-83b3-9cea5f4eb858 let skew_widths = df_skews_selected.width |> skipmissing |> collect - bins = range(0, maximum(skew_widths), step = 1 / 57)# .- 0.01 + bins = range(0, maximum(skew_widths), step = 1 / 56)# .- 0.01 hist( skew_widths, bins = bins, @@ -551,6 +622,221 @@ end # ╔═╡ aa9b78bc-8d66-4df2-bd06-1cbf21190488 filter(:width => (x -> ismissing(x) || x < 0.06), df_skews_selected) +# ╔═╡ 76f44129-34c6-451d-af3f-4593dd1dda5c +md""" +## skewの時間依存性 +以下のrun +- 382: ファームウェア最新 +""" + +# ╔═╡ 446a1b05-b24a-46d8-94a1-bd449245075d +df_extra_measurements = let + df_configs = DataFrame( + position_name = ["B-$(i)-$(j)" for j in 1:9 for i in 0:1], + psbid = [ + 001142, + 000973, + 000990, + 000992, + 001113, + 001030, + 001121, + 001141, + 001050, + 001053, + 001110, + 001248, + 001242, + 001276, + 000872, + 000861, + 000525, + 000862, + ], + position = [1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 17, 9, 18], + ) + transform!( + df_configs, + [:psbid, :position] => + ByRow( + (psbid, position) -> begin + runid = 382 + clkfile = "../test/input/slavelogs/main/$(psbid)_$(runid)_clk.txt" + skew, width = + PSBoardDataBase.ClockParser.get_skew_and_riseup(clkfile) + offset = qaqc_positions.rising_ns[findfirst( + ==(position), + qaqc_positions.id, + )] + [skew - offset, width] + end, + ) => [:skew, :width], + ) +end + +# ╔═╡ 148e42fc-d168-4e07-b4f8-f9c3f8c18efc +df_compare = let + df_old_measurements = + filter(:psbid => in(df_extra_measurements.psbid), df_skews_selected) + df_combined = leftjoin!( + df_old_measurements, + df_extra_measurements, + on = :psbid, + makeunique = true, + ) + rename!( + df_combined, + :skew => :skew_old, + :width => :width_old, + :runid => :runid_old, + :campaign_id => :campaign_id_old, + :skew_1 => :skew_new, + :width_1 => :width_new, + ) + select!( + df_combined, + [ + :psbid, + :runid_old, + :campaign_id_old, + :skew_old, + :width_old, + :skew_new, + :width_new, + ], + ) + dropmissing!(df_combined) +end + +# ╔═╡ 3266d1fd-b8f0-4eb0-9a8e-2050bc9a626f +let + fig = Figure(size = (600, 500)) + grd1 = fig[1, 1] = GridLayout() + Label(grd1[0, 1:2], "skew firmware dependency", tellwidth = false) + ax1 = Axis( + grd1[1, 1], + limits = ((-0.15, 1.15), nothing), + xticks = (0:1, ["old", "new(382)"]), + ylabel = "skew / ns", + ) + ax2 = Axis( + grd1[1:2, 2], + limits = ((2.9, 6.7), nothing), + ylabel = "Δskew / ns", + # xgridvisible = false, + # xticksvisible = false, + # xticklabelsvisible = false, + xticks = (3:6, string.(3:6)), + xlabel = "campaign", + yminorticksvisible = true, + yminorgridvisible = true, + ) + colsize!(grd1, 2, Relative(0.4)) + for row in eachrow(df_compare) + scatterlines!( + ax1, + 0:1, + [row.skew_old, row.skew_new], + color = Makie.wong_colors()[row.campaign_id_old], + ) + scatter!( + ax2, + row.campaign_id_old, + row.skew_new - row.skew_old, + marker = :x, + color = Makie.wong_colors()[row.campaign_id_old], + alpha = 0.7, + ) + end + text!( + ax1, + fill(1, nrow(df_compare)), + df_compare.skew_new, + text = string.(df_compare.psbid), + color = (:black, 0.5), + align = (:left, :center), + ) + text!( + ax2, + df_compare.campaign_id_old, + df_compare.skew_new .- df_compare.skew_old, + text = string.(df_compare.psbid), + color = (:black, 0.5), + align = (:left, :center), + # fontsize = 17, + ) + campaigns = df_compare.campaign_id_old |> unique |> sort! + Legend( + grd1[2, 1], + [ + [LineElement(color = color), MarkerElement(color = color, marker = :circle)] for + color in Makie.wong_colors()[campaigns] + ], + string.(campaigns), + "campaign id for old measurements", + orientation = :horizontal, + ) + + fig +end + +# ╔═╡ 660f2bd1-d4bc-45a8-9cf6-4e875aa9f7a2 +let + df = filter(:campaign_id => ==(6), df_skews_selected) + leftjoin!(df, select(qaqc_runs, [:id, :run_datetime]), on = :runid => :id) + # from UTC to JST(+9h) + transform!(df, :run_datetime => ByRow(dt -> dt + Hour(9)) => :run_datetime) + + @assert all(!ismissing, df.run_datetime) + dropmissing!(df, :run_datetime) + + transform!(df, :run_datetime => ByRow(Date) => :run_date) + + fig = Figure() + gdf = groupby(df, :run_date) + for (i, sdf) in enumerate(gdf) + unit_converter = Makie.DateTimeConversion(Time) + ax = Axis( + fig[i, 1], + title = string(keys(gdf)[i]), + dim1_conversion = unit_converter, + limits = ( + ( + Makie.convert_dim_value(unit_converter, Time(9)), + Makie.convert_dim_value(unit_converter, Time(20)), + ), + (-2, 1), + ), + ) + scatter!(ax, sdf.run_datetime .|> Time, sdf.skew, markersize = 7, alpha = 0.7) + mean_runs = Union{Float64, Missing}[] + std_runs = Union{Float64, Missing}[] + datetime_runs = Time[] + for sdf_samerun in groupby(sdf, :runid) + push!(mean_runs, mean(sdf_samerun.skew |> skipmissing)) + push!(std_runs, std(sdf_samerun.skew |> skipmissing)) + push!(datetime_runs, sdf_samerun.run_datetime |> first) + end + @info "" mean_runs std_runs datetime_runs + scatterlines!( + ax, + datetime_runs, + mean_runs, + marker = :hline, + markersize = 10, + color = Makie.wong_colors()[2], + ) + errorbars!( + ax, + datetime_runs, + mean_runs, + std_runs, + color = Makie.wong_colors()[2], + ) + end + fig +end + # ╔═╡ 86437ee6-ccea-43fa-bd93-d86fe055f28d md""" # プロットまとめ @@ -569,6 +855,12 @@ df_skews_selected_valids = let df end +# ╔═╡ 2dde2b39-8f8c-473b-8fed-393a9e3286d8 +sort(df_skews_selected_valids, :skew) + +# ╔═╡ 2a579bc2-79f8-4773-8588-a413acb8a6d6 +sort(df_skews_selected_valids, :skew, rev = true) + # ╔═╡ cf658de8-a4c5-413e-b5e3-56b77a80336f sort(df_skews_selected, :width) @@ -582,12 +874,17 @@ begin @assert all(==(1), df_skews_selected_valids.riseup) end +# ╔═╡ 92d701aa-ab90-4c91-977d-2ce92823d130 +md""" +## skew分布 +""" + # ╔═╡ 4a4ef945-b312-44ed-ab62-ce01fc33f926 let bins = range( - minimum(df_skews_selected_valids.skew) - 5 / 57, - maximum(df_skews_selected_valids.skew) + 5 / 57, - step = 2 / 57, + minimum(df_skews_selected_valids.skew) - 5 / 56, + maximum(df_skews_selected_valids.skew) + 5 / 56, + step = 2 / 56, ) fig = Figure() ax = Axis( @@ -615,15 +912,92 @@ let fig end +# ╔═╡ 82063c4b-c0cf-4524-83fe-5207bb8363d8 +md""" +### skew分布のcampaign依存性 +""" + +# ╔═╡ dff359b1-4827-40c6-86e4-0915974ef27d +let + bins = range( + minimum(df_skews_selected_valids.skew) - 5 / 56, + maximum(df_skews_selected_valids.skew) + 5 / 56, + step = 8 / 56, + ) + fig = Figure() + ax = Axis( + fig[1, 1], + title = "skews", + limits = (nothing, (nothing, nothing)), + xlabel = "skew / ns", + ) + hists = Hist1D[] + for gdf in groupby(df_skews_selected_valids, :campaign_id) + push!(hists, Hist1D(gdf.skew, binedges = bins)) + end + sh1 = stackedhist!(ax, hists, error_color = Pattern('/')) + labels = ["campaign $i" for i in 1:6] + elements = + [PolyElement(polycolor = sh1.attributes.color[][i]) for i in 1:length(labels)] + Legend( + fig[1, 1], + elements, + labels, + [""" + n = $(nrow(df_skews_selected_valids)) + μ = $(@sprintf "%.2g" mean(df_skews_selected_valids.skew)) + σ = $(@sprintf "%.2g" std(df_skews_selected_valids.skew)) + """], + tellwidth = false, + tellheight = false, + halign = :left, + valign = :top, + margin = (10, 10, 10, 10), + ) + fig +end + +# ╔═╡ 7920b03b-1d1a-4b51-bfc0-86d1361f2ff1 +let + fig = Figure() + ax = Axis( + fig[1, 1], + xlabel = "psbid", + ylabel = "skew / ns", + title = "clock skew time dependency", + ) + scatter!(ax, df_skews_selected_valids.psbid, df_skews_selected_valids.skew) + fig +end + +# ╔═╡ e640424b-7f7b-4cca-a634-92749ceee170 +let + fig = Figure() + ax = Axis( + fig[1, 1], + xlabel = "runid", + ylabel = "skew / ns", + title = "clock skew time dependency", + ) + @info "" qaqc_runs + scatter!(ax, df_skews_selected_valids.runid, df_skews_selected_valids.skew) + fig +end + # ╔═╡ 46b2a3cd-d2e6-4277-8b65-9c61f25f69e8 -3 / 57 +3 / 56 + +# ╔═╡ 55bad662-cfdd-45c8-81bf-4e65e5c8434e +md""" +## 立ち上がり時間分布 +""" # ╔═╡ 13bb4978-b98d-44a3-a4b6-4241cadc609b let bins = range( - minimum(df_skews_selected_valids.width) - 1 / 57, - maximum(df_skews_selected_valids.width) + 2 / 57, - step = 1 / 57, + minimum(df_skews_selected_valids.width) - 1 / 56, + maximum(df_skews_selected_valids.width) + 2 / 56, + step = 1 / 56, ) fig = Figure() ax = Axis( @@ -632,7 +1006,7 @@ let xlabel = "time / ns", xticks = ( bins, - string.(round.(bins, digits = 3)),# .* "," .* string.(round.(Int64, bins * 57)), + string.(round.(bins, digits = 3)),# .* "," .* string.(round.(Int64, bins * 56)), ), xticklabelrotation = π / 3, ) @@ -779,6 +1153,7 @@ end # ╠═420dce0e-4757-48d9-84ec-7ddfac2fdff6 # ╠═99902640-fee3-4502-9c7e-cb08834bad0b # ╠═c79c6684-1b03-41b5-aa90-ef8c7a8eb69c +# ╠═a1056aba-e484-4594-908b-4709896d0da0 # ╠═875bec26-e576-4f48-ba14-464bce503d75 # ╟─ec774495-c0be-47a4-9d2c-b48159c07013 # ╠═d082e07c-3b42-4362-bebf-63356979a49b @@ -812,14 +1187,27 @@ end # ╠═07342d98-3889-4a19-8419-6d113fffb42e # ╠═939aba6b-b03c-42b6-83b3-9cea5f4eb858 # ╠═aa9b78bc-8d66-4df2-bd06-1cbf21190488 +# ╠═76f44129-34c6-451d-af3f-4593dd1dda5c +# ╠═446a1b05-b24a-46d8-94a1-bd449245075d +# ╠═148e42fc-d168-4e07-b4f8-f9c3f8c18efc +# ╠═3266d1fd-b8f0-4eb0-9a8e-2050bc9a626f +# ╠═660f2bd1-d4bc-45a8-9cf6-4e875aa9f7a2 # ╠═86437ee6-ccea-43fa-bd93-d86fe055f28d # ╠═2a24c277-6679-49f3-b387-6937b7661a25 # ╠═13b4112f-96ab-41a1-8ef1-d940771f6ece +# ╠═2dde2b39-8f8c-473b-8fed-393a9e3286d8 +# ╠═2a579bc2-79f8-4773-8588-a413acb8a6d6 # ╠═cf658de8-a4c5-413e-b5e3-56b77a80336f # ╠═7efd380b-a976-4a86-8dff-8afd551f03fb # ╠═6a856a55-2611-41d0-a2c7-3645c066fc3c +# ╟─92d701aa-ab90-4c91-977d-2ce92823d130 # ╠═4a4ef945-b312-44ed-ab62-ce01fc33f926 +# ╟─82063c4b-c0cf-4524-83fe-5207bb8363d8 +# ╠═dff359b1-4827-40c6-86e4-0915974ef27d +# ╠═7920b03b-1d1a-4b51-bfc0-86d1361f2ff1 +# ╠═e640424b-7f7b-4cca-a634-92749ceee170 # ╠═46b2a3cd-d2e6-4277-8b65-9c61f25f69e8 +# ╟─55bad662-cfdd-45c8-81bf-4e65e5c8434e # ╠═13bb4978-b98d-44a3-a4b6-4241cadc609b # ╠═6c3c7669-d594-425d-bf05-9aa217c7656e # ╠═e9b3f541-d87d-4424-8b82-be1b7b3273d8