mirror of
https://gitlab.cern.ch/wotsubo/PSBoardDataBase.git
synced 2025-06-07 21:45:43 +09:00
update(examples): skew_stats (change bin width, add skew time dependency analysis)
This commit is contained in:
parent
ece30043c9
commit
9ca974405e
3 changed files with 497 additions and 62 deletions
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue