PSBoardDataBase/examples/pllld_count.jl

184 lines
5.7 KiB
Julia

### A Pluto.jl notebook ###
# v0.20.3
using Markdown
using InteractiveUtils
# ╔═╡ 635dcf78-b6b3-11ef-3a04-f5b7c43ed12d
begin
using Pkg
Pkg.activate("..")
using PSBoardDataBase
using SQLite
using DataFrames
using CairoMakie
using FHist
using LinearAlgebra
using Printf
end
# ╔═╡ 3fccbdca-9856-4122-8597-9f267f90d390
md"""
# 説明
第6回 PS-Board QAQC キャンペーンの11_27のファームウェアを使った100回試験において、PLLLD fail countの数の分布の調査
"""
# ╔═╡ b9808518-95aa-464f-bb93-b4ee40ce2f57
PSBoardDataBase.SlaveLogParser.parse_slavelog_file
# ╔═╡ a36886af-ff32-4f4f-a20f-f83bc333b8fd
db = SQLite.DB("../psboard_qaqc.db")
# ╔═╡ df5087be-18de-4714-b6d8-4ab54271b1fb
SQLite.tables(db)
# ╔═╡ 56d8896a-40e3-46e3-aa28-82f89476743b
qaqc_runs = DBInterface.execute(db, "select * from qaqc_runs") |> DataFrame
# ╔═╡ 08032250-5893-445c-8662-459e5636ba81
qaqc_extra_run_results =
DBInterface.execute(db, "select * from qaqc_extra_run_results") |> DataFrame
# ╔═╡ 013948ff-ccde-4222-862b-7ecda62fd7f1
qaqc_extra_run_campaign_6 = let
runids_campaign_6 = filter(:campaign_id => x -> (!ismissing(x) && x == 6), qaqc_runs).id
filter(:runid => in(runids_campaign_6), qaqc_extra_run_results)
end
# ╔═╡ 41da581f-0cdf-40f3-a1f8-bf1bd7f8835b
map(eachrow(qaqc_extra_run_campaign_6)) do row
logfilename = "$(row.psboard_id)_$(row.runid)_longrun.txt"
logfile = joinpath("../test/input/slavelogs/main/", logfilename)
!ispath(logfile) && begin
@info "file $(logfile) not found"
return missing
end
slave_result = PSBoardDataBase.SlaveLogParser.parse_slavelog_file(logfile)
map(slave_result.asdtp) do asdtp_result
asdtp_result.pllld_fail_counter
end
end
# ╔═╡ 2d89b7dc-37b6-4309-a2e6-61b93fb94628
transform(
qaqc_extra_run_campaign_6,
[:psboard_id, :runid] =>
ByRow(
(psboard_id, runid) -> begin
logfilename = "$(psboard_id)_$(runid)_longrun.txt"
logfile = joinpath("../test/input/slavelogs/main/", logfilename)
!ispath(logfile) && return missing
slave_result =
PSBoardDataBase.SlaveLogParser.parse_slavelog_file(logfile)
map(slave_result.asdtp) do asdtp_result
asdtp_result.pllld_fail_counter
end
end,
) => :pllld_count,
)
# ╔═╡ 34ae2948-bb5a-4086-beb1-cfb77593d678
df_pllld_counts = combine(
groupby(qaqc_extra_run_campaign_6, :id),
AsTable([:psboard_id, :runid]) =>
(
sdf -> begin
@assert nrow(sdf) == 1
logfilename = "$(sdf.psboard_id[1])_$(sdf.runid[1])_longrun.txt"
logfile = joinpath("../test/input/slavelogs/main/", logfilename)
!ispath(logfile) && begin
@warn "logfile $(logfile) not found"
return []
end
slave_result =
PSBoardDataBase.SlaveLogParser.parse_slavelog_file(logfile)
return map(slave_result.asdtp) do asdtp_result
(
psboard_id = sdf.psboard_id[1],
runid = sdf.runid[1],
pllld_count = asdtp_result.pllld_fail_counter + 1,
)
end
end
) => [:psboard_id, :runid, :pllld_count],
)
# ╔═╡ c084b8f4-dbc2-497b-9132-7e4bd4fd3874
sort(df_pllld_counts, :pllld_count, rev = true)
# ╔═╡ 6d85cc29-0d02-43b4-8a50-57f003e4686b
let
df = combine(groupby(df_pllld_counts, :id), nrow)
sort!(df, :nrow)
end
# ╔═╡ e95447c1-a8e2-4a46-9320-e1a88d9e34da
unique(df_pllld_counts.psboard_id) |> sort
# ╔═╡ 0433bbe4-1f71-4cf7-96ec-ac9c70170feb
stephist(df_pllld_counts.pllld_count)
# ╔═╡ 4927e97b-0822-4f17-bae9-e43cad504c3b
stephist(
df_pllld_counts.pllld_count,
bins = 0:10,
normalization = :probability,
axis = (; yscale = log10, limits = ((1, 11), (1e-6, 2))),
)
# ╔═╡ f04d5c95-7308-4129-ba95-49da2e142d5d
let
h1 = Hist1D(df_pllld_counts.pllld_count; binedges = 1:1:10, overflow = false)
h1 = normalize(h1)
fig = Figure()
ax = Axis(
fig[1, 1],
yscale = log10,
xlabel = "Number of resets before PLL lock",
ylabel = "fraction",
title = "PLLLD count ratios of 6th QAQC 100 test results",
)
stephist!(ax, h1, label = "pllld fail count")
errorbars!(ax, h1)
text!(
ax,
bincenters(h1),
bincounts(h1),
text = [@sprintf "%.4g" r for r in bincounts(h1)],
)
axislegend(position = :rt)
Label(
fig[1, 1],
"""
n = $(nentries(h1))
$(length(unique(df_pllld_counts.psboard_id))) PS-Boards
""",
tellwidth = false,
tellheight = false,
halign = :right,
padding = (20, 20, 20, 20),
)
save("pllld_fail_counts.svg", fig)
fig
end
# ╔═╡ Cell order:
# ╠═3fccbdca-9856-4122-8597-9f267f90d390
# ╠═635dcf78-b6b3-11ef-3a04-f5b7c43ed12d
# ╠═b9808518-95aa-464f-bb93-b4ee40ce2f57
# ╠═a36886af-ff32-4f4f-a20f-f83bc333b8fd
# ╠═df5087be-18de-4714-b6d8-4ab54271b1fb
# ╠═56d8896a-40e3-46e3-aa28-82f89476743b
# ╠═08032250-5893-445c-8662-459e5636ba81
# ╠═013948ff-ccde-4222-862b-7ecda62fd7f1
# ╠═41da581f-0cdf-40f3-a1f8-bf1bd7f8835b
# ╠═2d89b7dc-37b6-4309-a2e6-61b93fb94628
# ╠═34ae2948-bb5a-4086-beb1-cfb77593d678
# ╠═c084b8f4-dbc2-497b-9132-7e4bd4fd3874
# ╠═6d85cc29-0d02-43b4-8a50-57f003e4686b
# ╠═e95447c1-a8e2-4a46-9320-e1a88d9e34da
# ╠═0433bbe4-1f71-4cf7-96ec-ac9c70170feb
# ╠═4927e97b-0822-4f17-bae9-e43cad504c3b
# ╠═f04d5c95-7308-4129-ba95-49da2e142d5d