Wed, 22 Apr 2026 23:46:40 -0500
Add packaging script, remove alg_tools, measures, and pointsource_pde installation instruction from README.
|
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 | 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() |