stats/summarise.jl

Wed, 07 Oct 2026 08:25:46 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Wed, 07 Oct 2026 08:25:46 -0500
changeset 18
ddd24b5c2715
parent 16
841a0d255db3
permissions
-rw-r--r--

Disable differential test

13
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
1 #!/usr/bin/env julia
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
2
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
3 using CSV
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
4 using DataFrames
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
5 using Statistics
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
6 using Distributions
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
7
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
8 # --------------------------------------------------------------------------
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
9 # CONFIGURATION
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
10 #
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
11 # Map from CSV file name (as it appears inside each parameter directory) to
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
12 # the list of data columns in that file that should be summarized. Files may
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
13 # have different columns from one another; the `iter` column is assumed to
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
14 # be present in all of them and is NOT listed here.
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
15 # --------------------------------------------------------------------------
16
841a0d255db3 Add n_spikes to summary
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
16 const LOG_COLS = ["value", "relative_value", "discrepancy", "aux_discrepancy", "joint_discrepancy", "n_spikes"];
13
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
17 const AUX_COLS = ["k", "c1", "c2", "k_dist", "c_dist"]
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
18
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
19 const FILES_COLUMNS = Dict(
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
20 "aux_radon_fb_log.txt" => LOG_COLS,
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
21 "aux_radon_sliding_fb_log.txt" => LOG_COLS,
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
22 "aux2_radon_fb_log.txt" => LOG_COLS,
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
23 "aux2_radon_sliding_fb_log.txt" => LOG_COLS,
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
24 "aux_radon_fb_aux.csv" => AUX_COLS,
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
25 "aux_radon_sliding_fb_aux.csv" => AUX_COLS,
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
26 "aux2_radon_fb_aux.csv" => AUX_COLS,
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
27 "aux2_radon_sliding_fb_aux.csv" => AUX_COLS,
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
28 )
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
29
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
30 const ITER_COL = :iter
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
31 const CONF_LEVEL = 0.95
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
32
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
33 # --------------------------------------------------------------------------
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
34 # Compute the half-width of a 95% (or CONF_LEVEL) confidence interval for
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
35 # the mean of `values`, using the t-distribution. Falls back gracefully for
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
36 # degenerate sample sizes.
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
37 # --------------------------------------------------------------------------
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
38 function conf_margin(values::AbstractVector{<:Real})
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
39 n = length(values)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
40 if n < 2
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
41 return 0.0
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
42 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
43 s = std(values)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
44 if s == 0
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
45 return 0.0
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
46 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
47 tdist = TDist(n - 1)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
48 tcrit = quantile(tdist, 1 - (1 - CONF_LEVEL) / 2)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
49 return tcrit * s / sqrt(n)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
50 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
51
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
52 # --------------------------------------------------------------------------
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
53 # Read one configured file from one parameter directory, if it exists.
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
54 # Returns a DataFrame with at least `iter` and the configured columns, or
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
55 # `nothing` if the file is missing or unreadable.
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
56 # --------------------------------------------------------------------------
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
57 function read_dir_file(dir::AbstractString, filename::AbstractString, cols::Vector{String})
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
58 path = joinpath(dir, filename)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
59 if !isfile(path)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
60 @warn "Missing file, skipping" path
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
61 return nothing
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
62 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
63
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
64 local df
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
65 try
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
66 df = CSV.read(path, DataFrame)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
67 catch e
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
68 @warn "Could not read CSV, skipping" path exception = e
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
69 return nothing
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
70 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
71
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
72 if !hasproperty(df, ITER_COL)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
73 @warn "File has no '$(ITER_COL)' column, skipping" path
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
74 return nothing
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
75 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
76
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
77 present_cols = String[]
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
78 for c in cols
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
79 if hasproperty(df, Symbol(c))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
80 push!(present_cols, c)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
81 else
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
82 @warn "Column '$c' not found in file, skipping that column for this directory" path
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
83 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
84 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
85 if isempty(present_cols)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
86 return nothing
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
87 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
88
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
89 keep = vcat([ITER_COL], Symbol.(present_cols))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
90 return df[:, keep]
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
91 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
92
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
93 # --------------------------------------------------------------------------
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
94 # Build the summary DataFrame for one configured file, across all `dirs`.
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
95 # --------------------------------------------------------------------------
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
96 function summarize_file(dirs::Vector{String}, filename::AbstractString, cols::Vector{String})
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
97 parts = DataFrame[]
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
98 for dir in dirs
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
99 d = read_dir_file(dir, filename, cols)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
100 d === nothing || push!(parts, d)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
101 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
102
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
103 if isempty(parts)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
104 @warn "No data found for file across any directory, skipping summary" filename
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
105 return nothing
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
106 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
107
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
108 combined = vcat(parts...; cols=:union)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
109 grouped = groupby(combined, ITER_COL)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
110
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
111 iters = sort(collect(keys(grouped)))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
112 summary = DataFrame(iter=[k[ITER_COL] for k in iters])
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
113
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
114 for col in cols
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
115 colsym = Symbol(col)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
116 mins = Vector{Union{Missing,Float64}}(undef, length(iters))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
117 maxs = Vector{Union{Missing,Float64}}(undef, length(iters))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
118 means = Vector{Union{Missing,Float64}}(undef, length(iters))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
119 confmin = Vector{Union{Missing,Float64}}(undef, length(iters))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
120 confmax = Vector{Union{Missing,Float64}}(undef, length(iters))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
121
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
122 for (i, key) in enumerate(iters)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
123 sub = grouped[key]
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
124 if !hasproperty(sub, colsym)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
125 mins[i] = maxs[i] = means[i] = confmin[i] = confmax[i] = missing
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
126 continue
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
127 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
128 vals = collect(skipmissing(sub[!, colsym]))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
129 if isempty(vals)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
130 mins[i] = maxs[i] = means[i] = confmin[i] = confmax[i] = missing
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
131 continue
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
132 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
133 m = mean(vals)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
134 margin = conf_margin(vals)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
135 mins[i] = minimum(vals)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
136 maxs[i] = maximum(vals)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
137 means[i] = m
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
138 confmin[i] = m - margin
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
139 confmax[i] = m + margin
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
140 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
141
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
142 summary[!, Symbol(col, "_min")] = mins
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
143 summary[!, Symbol(col, "_max")] = maxs
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
144 summary[!, Symbol(col, "_confmax")] = confmax
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
145 summary[!, Symbol(col, "_confmin")] = confmin
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
146 summary[!, Symbol(col, "_mean")] = means
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
147 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
148
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
149 return summary
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
150 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
151
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
152 # --------------------------------------------------------------------------
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
153 # Main
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
154 # --------------------------------------------------------------------------
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
155 function main()
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
156 if isempty(ARGS)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
157 println(stderr, "Usage: julia summarize.jl DIR1 [DIR2 DIR3 ...]")
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
158 exit(1)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
159 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
160
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
161 dirs = String[]
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
162 for d in ARGS
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
163 if isdir(d)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
164 push!(dirs, d)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
165 else
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
166 @warn "Not a directory, skipping" d
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
167 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
168 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
169
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
170 if isempty(dirs)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
171 println(stderr, "No valid directories given.")
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
172 exit(1)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
173 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
174
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
175 for (filename, cols) in FILES_COLUMNS
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
176 summary = summarize_file(dirs, filename, cols)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
177 summary === nothing && continue
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
178
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
179 stem = first(splitext(filename))
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
180 outpath = joinpath(pwd(), "$(stem)_summary.csv")
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
181 CSV.write(outpath, summary)
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
182 println("Wrote $outpath ($(nrow(summary)) rows)")
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
183 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
184 end
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
185
2cb7f20654e6 Add perturbation statistics experiment generation and processing scripts
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
186 main()

mercurial