update(examples): skew_stats (change bin width, add skew time dependency analysis)

This commit is contained in:
Wataru Otsubo 2024-12-13 19:28:59 +09:00
parent ece30043c9
commit 9ca974405e
3 changed files with 497 additions and 62 deletions

View file

@ -2,7 +2,7 @@
julia_version = "1.11.2" julia_version = "1.11.2"
manifest_format = "2.0" manifest_format = "2.0"
project_hash = "5459dda24740eb0fbddbd283ef8d6654eb96910e" project_hash = "9bfd3227044b739391f5fee603ddc4de538f1c94"
[[deps.ANSIColoredPrinters]] [[deps.ANSIColoredPrinters]]
git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c" git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c"
@ -20,6 +20,12 @@ weakdeps = ["ChainRulesCore", "Test"]
AbstractFFTsChainRulesCoreExt = "ChainRulesCore" AbstractFFTsChainRulesCoreExt = "ChainRulesCore"
AbstractFFTsTestExt = "Test" AbstractFFTsTestExt = "Test"
[[deps.AbstractPlutoDingetjes]]
deps = ["Pkg"]
git-tree-sha1 = "6e1d2a35f2f90a4bc7c2ed98079b2ba09c35b83a"
uuid = "6e696c72-6542-2067-7265-42206c756150"
version = "1.3.2"
[[deps.AbstractTrees]] [[deps.AbstractTrees]]
git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177"
uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
@ -541,6 +547,18 @@ git-tree-sha1 = "b1c2585431c382e3fe5805874bda6aea90a95de9"
uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a"
version = "0.3.25" 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.IOCapture]]
deps = ["Logging", "Random"] deps = ["Logging", "Random"]
git-tree-sha1 = "b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770" git-tree-sha1 = "b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770"
@ -868,6 +886,11 @@ version = "0.3.28"
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
version = "1.11.0" version = "1.11.0"
[[deps.MIMEs]]
git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb"
uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65"
version = "0.1.4"
[[deps.MKL_jll]] [[deps.MKL_jll]]
deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"]
git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f"
@ -1058,10 +1081,10 @@ uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883"
version = "0.4.3" version = "0.4.3"
[[deps.PSBoardDataBase]] [[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 = ".." path = ".."
uuid = "779f6a9c-59fa-41f1-8ed1-e9a91eccb2f5" uuid = "779f6a9c-59fa-41f1-8ed1-e9a91eccb2f5"
version = "0.3.1" version = "0.4.0"
weakdeps = ["InteractiveUtils"] weakdeps = ["InteractiveUtils"]
[deps.PSBoardDataBase.extensions] [deps.PSBoardDataBase.extensions]
@ -1118,6 +1141,12 @@ git-tree-sha1 = "3ca9a356cd2e113c420f2c13bea19f8d3fb1cb18"
uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043"
version = "1.4.3" 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]] [[deps.PolygonOps]]
git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6" git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6"
uuid = "647866c9-e3ac-4575-94e7-e3d426903924" uuid = "647866c9-e3ac-4575-94e7-e3d426903924"
@ -1495,11 +1524,21 @@ git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742"
uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
version = "0.11.3" version = "0.11.3"
[[deps.Tricks]]
git-tree-sha1 = "7822b97e99a1672bfb1b49b668a6d46d58d8cbcb"
uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775"
version = "0.1.9"
[[deps.TriplotBase]] [[deps.TriplotBase]]
git-tree-sha1 = "4d4ed7f294cda19382ff7de4c137d24d16adc89b" git-tree-sha1 = "4d4ed7f294cda19382ff7de4c137d24d16adc89b"
uuid = "981d1d27-644d-49a2-9326-4793e63143c3" uuid = "981d1d27-644d-49a2-9326-4793e63143c3"
version = "0.1.0" version = "0.1.0"
[[deps.URIs]]
git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b"
uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
version = "1.5.1"
[[deps.UUIDs]] [[deps.UUIDs]]
deps = ["Random", "SHA"] deps = ["Random", "SHA"]
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"

View file

@ -1,7 +1,15 @@
[deps] [deps]
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
DBInterface = "a10d1c49-ce27-4219-8d33-6db1a4562965"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
FHist = "68837c9b-b678-4cd5-9925-8a54edc8f695" FHist = "68837c9b-b678-4cd5-9925-8a54edc8f695"
PSBoardDataBase = "779f6a9c-59fa-41f1-8ed1-e9a91eccb2f5" 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" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"

View file

@ -17,11 +17,13 @@ begin
using PSBoardDataBase using PSBoardDataBase
using SQLite using SQLite
using DataFrames using DataFrames
using FHist
using DBInterface using DBInterface
using Tables using Tables
using CairoMakie using CairoMakie
using Statistics using Statistics
using PlutoUI using PlutoUI
using Dates
using Random using Random
using Printf using Printf
end end
@ -70,7 +72,11 @@ md"""
""" """
# ╔═╡ f379d43c-9300-41f4-b0fc-3c9d749e3105 # ╔═╡ 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 # ╔═╡ 33e099bc-ac4b-4b5f-88e7-20f4463c98ef
md""" md"""
@ -180,7 +186,7 @@ let
title = "skews of all measurements (n_meas = $(length(skews)), n_psb = $(npsbid))", title = "skews of all measurements (n_meas = $(length(skews)), n_psb = $(npsbid))",
xlabel = "skew / ns", 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 fig
end end
@ -192,7 +198,7 @@ md"""
# ╔═╡ 420dce0e-4757-48d9-84ec-7ddfac2fdff6 # ╔═╡ 420dce0e-4757-48d9-84ec-7ddfac2fdff6
let let
skew_widths = df_skews.width |> skipmissing |> collect 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( hist(
skew_widths, skew_widths,
bins = bins, bins = bins,
@ -211,13 +217,61 @@ let
end end
# ╔═╡ 99902640-fee3-4502-9c7e-cb08834bad0b # ╔═╡ 99902640-fee3-4502-9c7e-cb08834bad0b
maximum(skipmissing(df_skews.width)) / (1 / 57) maximum(skipmissing(df_skews.width)) / (1 / 56)
# ╔═╡ c79c6684-1b03-41b5-aa90-ef8c7a8eb69c # ╔═╡ c79c6684-1b03-41b5-aa90-ef8c7a8eb69c
md""" 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 # ╔═╡ 875bec26-e576-4f48-ba14-464bce503d75
filter(:width => (x -> ismissing(x) || x < 0.06), df_skews) filter(:width => (x -> ismissing(x) || x < 0.06), df_skews)
@ -241,8 +295,12 @@ combine(filter(groupby(qaqc_single_results, [:psboard_id, :position])) do sdf
end) do sdf end) do sdf
sdf = dropmissing(sdf, [:lvds_tx_skew]) sdf = dropmissing(sdf, [:lvds_tx_skew])
# @info "" select(sdf, [:psboard_id, :position, :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 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) filter(:skew_std => >(0.5), df)
end) end)
@ -418,7 +476,8 @@ md"""
""" """
# ╔═╡ 38d472ca-6347-4096-828d-fd1256130a59 # ╔═╡ 38d472ca-6347-4096-828d-fd1256130a59
df_skews_selected = combine( df_skews_selected = let df
df = combine(
gdf_skews_on_psbid, gdf_skews_on_psbid,
sdf -> begin sdf -> begin
all(ismissing, sdf.skew) && @info "" sdf all(ismissing, sdf.skew) && @info "" sdf
@ -428,6 +487,7 @@ df_skews_selected = combine(
skew = sdf.skew |> first, skew = sdf.skew |> first,
width = sdf.width |> first, width = sdf.width |> first,
riseup = sdf.riseup |> first, riseup = sdf.riseup |> first,
runid = sdf.runid |> first,
) )
else else
if sdf.psbid[1] == 291 if sdf.psbid[1] == 291
@ -437,6 +497,7 @@ df_skews_selected = combine(
skew = df.skew |> first, skew = df.skew |> first,
width = sdf.width |> first, width = sdf.width |> first,
riseup = sdf.riseup |> first, riseup = sdf.riseup |> first,
runid = sdf.runid |> first,
) )
elseif sdf.psbid[1] == 460 elseif sdf.psbid[1] == 460
df = filter(:runid => ==(132), sdf) df = filter(:runid => ==(132), sdf)
@ -445,6 +506,7 @@ df_skews_selected = combine(
skew = df.skew |> first, skew = df.skew |> first,
width = sdf.width |> first, width = sdf.width |> first,
riseup = sdf.riseup |> first, riseup = sdf.riseup |> first,
runid = sdf.runid |> first,
) )
elseif sdf.psbid[1] == 545 elseif sdf.psbid[1] == 545
df = filter(:runid => ==(132), sdf) df = filter(:runid => ==(132), sdf)
@ -453,22 +515,31 @@ df_skews_selected = combine(
skew = df.skew |> first, skew = df.skew |> first,
width = sdf.width |> first, width = sdf.width |> first,
riseup = sdf.riseup |> first, riseup = sdf.riseup |> first,
runid = sdf.runid |> first,
) )
else else
# assume that runid is chronological # assume that runid is chronological
i = argmax(sdf.runid .|> (id -> ismissing(id) ? -1 : id)) i = argmax(sdf.runid .|> (id -> ismissing(id) ? -1 : id))
(skew = sdf.skew[i], width = sdf.width[i], riseup = sdf.riseup[i]) (
skew = sdf.skew[i],
width = sdf.width[i],
riseup = sdf.riseup[i],
runid = sdf.runid[1],
)
end end
end end
end, end,
) )
leftjoin!(df, select(qaqc_runs, [:id, :campaign_id]), on = :runid => :id)
df
end
# ╔═╡ 310710da-ebb2-4f54-b238-38d493a6a533 # ╔═╡ 310710da-ebb2-4f54-b238-38d493a6a533
let let
skews = df_skews_selected.skew |> skipmissing |> collect skews = df_skews_selected.skew |> skipmissing |> collect
fig = Figure() fig = Figure()
ax = Axis(fig[1, 1], title = "skews (n = $(length(skews)))", xlabel = "skew / ns") 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 fig
end end
@ -530,7 +601,7 @@ md"""
# ╔═╡ 939aba6b-b03c-42b6-83b3-9cea5f4eb858 # ╔═╡ 939aba6b-b03c-42b6-83b3-9cea5f4eb858
let let
skew_widths = df_skews_selected.width |> skipmissing |> collect 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( hist(
skew_widths, skew_widths,
bins = bins, bins = bins,
@ -551,6 +622,221 @@ end
# ╔═╡ aa9b78bc-8d66-4df2-bd06-1cbf21190488 # ╔═╡ aa9b78bc-8d66-4df2-bd06-1cbf21190488
filter(:width => (x -> ismissing(x) || x < 0.06), df_skews_selected) 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 # ╔═╡ 86437ee6-ccea-43fa-bd93-d86fe055f28d
md""" md"""
# プロットまとめ # プロットまとめ
@ -569,6 +855,12 @@ df_skews_selected_valids = let
df df
end 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 # ╔═╡ cf658de8-a4c5-413e-b5e3-56b77a80336f
sort(df_skews_selected, :width) sort(df_skews_selected, :width)
@ -582,12 +874,17 @@ begin
@assert all(==(1), df_skews_selected_valids.riseup) @assert all(==(1), df_skews_selected_valids.riseup)
end end
# ╔═╡ 92d701aa-ab90-4c91-977d-2ce92823d130
md"""
## skew分布
"""
# ╔═╡ 4a4ef945-b312-44ed-ab62-ce01fc33f926 # ╔═╡ 4a4ef945-b312-44ed-ab62-ce01fc33f926
let let
bins = range( bins = range(
minimum(df_skews_selected_valids.skew) - 5 / 57, minimum(df_skews_selected_valids.skew) - 5 / 56,
maximum(df_skews_selected_valids.skew) + 5 / 57, maximum(df_skews_selected_valids.skew) + 5 / 56,
step = 2 / 57, step = 2 / 56,
) )
fig = Figure() fig = Figure()
ax = Axis( ax = Axis(
@ -615,15 +912,92 @@ let
fig fig
end 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 # ╔═╡ 46b2a3cd-d2e6-4277-8b65-9c61f25f69e8
3 / 57 3 / 56
# ╔═╡ 55bad662-cfdd-45c8-81bf-4e65e5c8434e
md"""
## 立ち上がり時間分布
"""
# ╔═╡ 13bb4978-b98d-44a3-a4b6-4241cadc609b # ╔═╡ 13bb4978-b98d-44a3-a4b6-4241cadc609b
let let
bins = range( bins = range(
minimum(df_skews_selected_valids.width) - 1 / 57, minimum(df_skews_selected_valids.width) - 1 / 56,
maximum(df_skews_selected_valids.width) + 2 / 57, maximum(df_skews_selected_valids.width) + 2 / 56,
step = 1 / 57, step = 1 / 56,
) )
fig = Figure() fig = Figure()
ax = Axis( ax = Axis(
@ -632,7 +1006,7 @@ let
xlabel = "time / ns", xlabel = "time / ns",
xticks = ( xticks = (
bins, bins,
string.(round.(bins, digits = 3)),# .* "," .* string.(round.(Int64, bins * 57)), string.(round.(bins, digits = 3)),# .* "," .* string.(round.(Int64, bins * 56)),
), ),
xticklabelrotation = π / 3, xticklabelrotation = π / 3,
) )
@ -779,6 +1153,7 @@ end
# ╠═420dce0e-4757-48d9-84ec-7ddfac2fdff6 # ╠═420dce0e-4757-48d9-84ec-7ddfac2fdff6
# ╠═99902640-fee3-4502-9c7e-cb08834bad0b # ╠═99902640-fee3-4502-9c7e-cb08834bad0b
# ╠═c79c6684-1b03-41b5-aa90-ef8c7a8eb69c # ╠═c79c6684-1b03-41b5-aa90-ef8c7a8eb69c
# ╠═a1056aba-e484-4594-908b-4709896d0da0
# ╠═875bec26-e576-4f48-ba14-464bce503d75 # ╠═875bec26-e576-4f48-ba14-464bce503d75
# ╟─ec774495-c0be-47a4-9d2c-b48159c07013 # ╟─ec774495-c0be-47a4-9d2c-b48159c07013
# ╠═d082e07c-3b42-4362-bebf-63356979a49b # ╠═d082e07c-3b42-4362-bebf-63356979a49b
@ -812,14 +1187,27 @@ end
# ╠═07342d98-3889-4a19-8419-6d113fffb42e # ╠═07342d98-3889-4a19-8419-6d113fffb42e
# ╠═939aba6b-b03c-42b6-83b3-9cea5f4eb858 # ╠═939aba6b-b03c-42b6-83b3-9cea5f4eb858
# ╠═aa9b78bc-8d66-4df2-bd06-1cbf21190488 # ╠═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 # ╠═86437ee6-ccea-43fa-bd93-d86fe055f28d
# ╠═2a24c277-6679-49f3-b387-6937b7661a25 # ╠═2a24c277-6679-49f3-b387-6937b7661a25
# ╠═13b4112f-96ab-41a1-8ef1-d940771f6ece # ╠═13b4112f-96ab-41a1-8ef1-d940771f6ece
# ╠═2dde2b39-8f8c-473b-8fed-393a9e3286d8
# ╠═2a579bc2-79f8-4773-8588-a413acb8a6d6
# ╠═cf658de8-a4c5-413e-b5e3-56b77a80336f # ╠═cf658de8-a4c5-413e-b5e3-56b77a80336f
# ╠═7efd380b-a976-4a86-8dff-8afd551f03fb # ╠═7efd380b-a976-4a86-8dff-8afd551f03fb
# ╠═6a856a55-2611-41d0-a2c7-3645c066fc3c # ╠═6a856a55-2611-41d0-a2c7-3645c066fc3c
# ╟─92d701aa-ab90-4c91-977d-2ce92823d130
# ╠═4a4ef945-b312-44ed-ab62-ce01fc33f926 # ╠═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 # ╠═46b2a3cd-d2e6-4277-8b65-9c61f25f69e8
# ╟─55bad662-cfdd-45c8-81bf-4e65e5c8434e
# ╠═13bb4978-b98d-44a3-a4b6-4241cadc609b # ╠═13bb4978-b98d-44a3-a4b6-4241cadc609b
# ╠═6c3c7669-d594-425d-bf05-9aa217c7656e # ╠═6c3c7669-d594-425d-bf05-9aa217c7656e
# ╠═e9b3f541-d87d-4424-8b82-be1b7b3273d8 # ╠═e9b3f541-d87d-4424-8b82-be1b7b3273d8