Skip to content

Commit 22823d9

Browse files
author
Frankie Robertson
committed
Improve printing of RecordedCatLoop
* Use power_summary(...) as main method for all printing * Add StdDevEstimator as a std dev measure * Add way to make recording entry before any items are administered * Add all kinds printing for Recorder and Recording * Format numbers to 3dp in Recording
1 parent 5663460 commit 22823d9

File tree

22 files changed

+267
-103
lines changed

22 files changed

+267
-103
lines changed

Project.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ version = "0.4.0"
77
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
88
AutoHashEquals = "15f4f7f2-30c1-5605-9d31-71845cf9641f"
99
ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
10+
DataAPI = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
1011
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
1112
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
1213
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
@@ -23,8 +24,11 @@ LogarithmicNumbers = "aa2f6b4e-9042-5d33-9679-40d3a6b85899"
2324
MacroTools = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
2425
Mmap = "a63ad114-7e13-5084-954f-fe012c677804"
2526
PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
27+
PrettyPrinting = "54e16d92-306c-5ea0-a30b-337be88ac337"
28+
PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
2629
PsychometricsBazaarBase = "b0d9cada-d963-45e9-a4c6-4746243987f1"
2730
QuickHeaps = "30b38841-0f52-47f8-a5f8-18d5d4064379"
31+
RDataGet = "a115732e-4334-4ecb-8ea3-f683e7f66d4d"
2832
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
2933
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
3034
Setfield = "efcf1570-3423-57d1-acb7-fd33fddbac46"
@@ -44,6 +48,7 @@ Accessors = "^0.1.12"
4448
Aqua = "0.8"
4549
AutoHashEquals = "2"
4650
ConstructionBase = "^1.2"
51+
DataAPI = "1.16.0"
4752
DataFrames = "1.6.1"
4853
Distributions = "^0.25.88"
4954
DocStringExtensions = " ^0.9"
@@ -62,8 +67,11 @@ MacroTools = "^0.5.6"
6267
Mmap = "^1.11"
6368
Optim = "1.7.3"
6469
PrecompileTools = "1.2.1"
70+
PrettyPrinting = "0.4.2"
71+
PrettyTables = "3"
6572
PsychometricsBazaarBase = "^0.8.6"
6673
QuickHeaps = "0.2.2"
74+
RDataGet = "0.1.0"
6775
Random = "^1.11"
6876
Reexport = "1"
6977
Setfield = "^1"

src/Aggregators/Aggregators.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ using FittedItemBanks: AbstractItemBank, ContinuousDomain,
2020
using ..Responses
2121
using ..Responses: concrete_response_type, function_xs, function_ys, Responses
2222
using ..ConfigBase
23-
using PsychometricsBazaarBase: power_summary
23+
import PsychometricsBazaarBase: power_summary
2424
using PsychometricsBazaarBase.ConfigTools: @requiresome, @returnsome,
2525
find1_instance, find1_type,
2626
find1_type_sloppy
@@ -216,8 +216,8 @@ function (integrator::FunctionIntegrator{IntegratorT})(f::F,
216216
integrator.integrator(FunctionProduct(f, lh_function), ncomp)
217217
end
218218

219-
function show(io::IO, ::MIME"text/plain", responses::FunctionIntegrator)
220-
show(io, MIME("text/plain"), responses.integrator)
219+
function power_summary(io::IO, responses::FunctionIntegrator)
220+
power_summary(io, responses.integrator)
221221
end
222222

223223
# Defaults

src/Aggregators/ability_estimator.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ function pdf(::LikelihoodAbilityEstimator,
2626
AbilityLikelihood(tracked_responses)
2727
end
2828

29-
function show(io::IO, ::MIME"text/plain", ability_estimator::LikelihoodAbilityEstimator)
29+
function power_summary(io::IO, ability_estimator::LikelihoodAbilityEstimator)
3030
println(io, "Ability likelihood distribution")
3131
end
3232

@@ -61,7 +61,7 @@ function multiple_response_types_guard(tracked_responses)
6161
return false
6262
end
6363

64-
function show(io::IO, ::MIME"text/plain", ability_estimator::PosteriorAbilityEstimator)
64+
function power_summary(io::IO, ability_estimator::PosteriorAbilityEstimator)
6565
println(io, "Ability posterior distribution")
6666
indent_io = indent(io, 2)
6767
print(indent_io, "Prior: ")
@@ -224,11 +224,11 @@ function ModeAbilityEstimator(bits...)
224224
ModeAbilityEstimator(dist_est, optimizer)
225225
end
226226

227-
function show(io::IO, ::MIME"text/plain", ability_estimator::ModeAbilityEstimator)
227+
function power_summary(io::IO, ability_estimator::ModeAbilityEstimator)
228228
println(io, "Estimate ability using its mode")
229229
indent_io = indent(io, 2)
230-
show(indent_io, MIME("text/plain"), ability_estimator.dist_est)
231-
show(indent_io, MIME("text/plain"), ability_estimator.optim)
230+
power_summary(indent_io, ability_estimator.dist_est)
231+
power_summary(indent_io, ability_estimator.optim)
232232
end
233233

234234
struct MeanAbilityEstimator{
@@ -246,12 +246,12 @@ function MeanAbilityEstimator(bits...)
246246
MeanAbilityEstimator(dist_est, integrator)
247247
end
248248

249-
function show(io::IO, ::MIME"text/plain", ability_estimator::MeanAbilityEstimator)
249+
function power_summary(io::IO, ability_estimator::MeanAbilityEstimator)
250250
println(io, "Estimate ability using its mean")
251251
indent_io = indent(io, 2)
252-
show(indent_io, MIME("text/plain"), ability_estimator.dist_est)
252+
power_summary(indent_io, ability_estimator.dist_est)
253253
print(indent_io, "Integrator: ")
254-
show(indent_io, MIME("text/plain"), ability_estimator.integrator)
254+
power_summary(indent_io, ability_estimator.integrator)
255255
end
256256

257257
function distribution_estimator(dist_est::DistributionAbilityEstimator)::DistributionAbilityEstimator

src/Aggregators/optimizers.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function (optim::FunctionOptimizer)(f::F,
1010
optim.optim(comp_f)
1111
end
1212

13-
function show(io::IO, ::MIME"text/plain", optim::FunctionOptimizer)
13+
function power_summary(io::IO, optim::FunctionOptimizer)
1414
indent_io = indent(io, 2)
1515
if optim.optim isa Optimizers.OneDimOptimOptimizer || optim.optim isa Optimizers.MultiDimOptimOptimizer || optim.optim isa Optimizers.NativeOneDimOptimOptimizer
1616
inner = optim.optim

src/ConfigBase.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ $(TYPEDEF)
1010
"""
1111
abstract type CatConfigBase end
1212

13+
show(io::IO, ::MIME"text/plain", obj::CatConfigBase) = power_summary(io, obj)
14+
1315
function walk(f, x::CatConfigBase, lens = identity)
1416
f(x, lens)
1517
for fieldname in fieldnames(typeof(x))

src/NextItemRules/NextItemRules.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ using Random: AbstractRNG, Xoshiro
1717

1818
using ..Responses: BareResponses
1919
using ..ConfigBase
20+
import PsychometricsBazaarBase: power_summary
2021
using PsychometricsBazaarBase.ConfigTools: @requiresome, @returnsome,
2122
find1_instance, find1_type
2223
using PsychometricsBazaarBase.Integrators: Integrator, intval

src/NextItemRules/combinators/expectation.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ function Aggregators.response_expectation(
3939
item_idx)
4040
end
4141

42-
function show(io::IO, ::MIME"text/plain", point_response_expectation::PointResponseExpectation)
42+
function power_summary(io::IO, point_response_expectation::PointResponseExpectation)
4343
println(io, "Expected response at point ability estimate")
4444
indent_io = indent(io, 2)
45-
show(indent_io, MIME("text/plain"), point_response_expectation.ability_estimator)
45+
power_summary(indent_io, point_response_expectation.ability_estimator)
4646
end
4747

4848
struct DistributionResponseExpectation{
@@ -131,9 +131,9 @@ function compute_criterion(
131131
res
132132
end
133133

134-
function show(io::IO, ::MIME"text/plain", item_criterion::ExpectationBasedItemCriterion)
134+
function power_summary(io::IO, item_criterion::ExpectationBasedItemCriterion)
135135
println(io, "Optimize an state/item/item-category criterion based on an expected response")
136136
indent_io = indent(io, 2)
137-
show(indent_io, MIME"text/plain"(), item_criterion.response_expectation)
138-
show(indent_io, MIME"text/plain"(), item_criterion.criterion)
137+
power_summary(indent_io, item_criterion.response_expectation)
138+
power_summary(indent_io, item_criterion.criterion)
139139
end

src/NextItemRules/criteria/pointwise/information.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ function compute_criterion_vec(
2222
-actual
2323
end
2424

25-
function show(io::IO, ::MIME"text/plain", ::ObservedInformationPointwiseItemCategoryCriterion)
25+
function power_summary(io::IO, ::ObservedInformationPointwiseItemCategoryCriterion)
2626
println(io, "Observed pointwise item-category information")
2727
end
2828

@@ -51,7 +51,7 @@ function compute_criterion_vec(
5151
end
5252

5353

54-
function show(io::IO, ::MIME"text/plain", ::RawEmpiricalInformationPointwiseItemCategoryCriterion)
54+
function power_summary(io::IO, ::RawEmpiricalInformationPointwiseItemCategoryCriterion)
5555
println(io, "Raw empirical pointwise item-category information")
5656
end
5757

@@ -104,7 +104,7 @@ function compute_criterion_vec(
104104
-actual
105105
end
106106

107-
function show(io::IO, ::MIME"text/plain", ::EmpiricalInformationPointwiseItemCategoryCriterion)
107+
function power_summary(io::IO, ::EmpiricalInformationPointwiseItemCategoryCriterion)
108108
println(io, "Empirical pointwise item-category information")
109109
end
110110

@@ -131,7 +131,7 @@ function compute_criterion(
131131
sum(compute_criterion_vec(tii.pcic, ir, ability))
132132
end
133133

134-
function show(io::IO, ::MIME"text/plain", rule::TotalItemInformation)
134+
function power_summary(io::IO, rule::TotalItemInformation)
135135
if rule.pcic isa ObservedInformationPointwiseItemCategoryCriterion
136136
println(io, "Observed pointwise item information")
137137
elseif rule.pcic isa RawEmpiricalInformationPointwiseItemCategoryCriterion
@@ -140,6 +140,6 @@ function show(io::IO, ::MIME"text/plain", rule::TotalItemInformation)
140140
println(io, "Empirical pointwise item information")
141141
else
142142
print(io, "Total ")
143-
show(io, MIME("text/plain"), rule.pcic)
143+
power_summary(io, rule.pcic)
144144
end
145-
end
145+
end

src/NextItemRules/criteria/state/ability_variance.jl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,13 @@ function compute_criterion(
6868
denom)
6969
end
7070

71-
function show(io::IO, ::MIME"text/plain", criterion::AbilityVariance)
72-
println(io, "Minimise variance of ability estimate")
71+
function power_summary(io::IO, criterion::AbilityVariance; skip_first_line=false)
72+
if !skip_first_line
73+
println(io, "Minimise variance of ability estimate")
74+
end
7375
indent_io = indent(io, 2)
74-
show(indent_io, MIME("text/plain"), criterion.dist_est)
75-
show(indent_io, MIME("text/plain"), criterion.integrator)
76+
power_summary(indent_io, criterion.dist_est)
77+
power_summary(indent_io, criterion.integrator)
7678
end
7779

7880
struct AbilityCovarianceStateMultiCriterion{

src/NextItemRules/prelude/next_item_rule.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ function best_item(rule::NextItemRule, tracked_responses::TrackedResponses)
5353
best_item(rule, tracked_responses, tracked_responses.item_bank)
5454
end
5555

56-
function Base.show(io::IO, ::MIME"text/plain", rule::ItemCriterionRule)
56+
function power_summary(io::IO, rule::ItemCriterionRule)
5757
println(io, "Pick optimal item criterion according to strategy")
5858
indent_io = indent(io, 2)
59-
show(indent_io, MIME"text/plain"(), rule.strategy)
60-
show(indent_io, MIME"text/plain"(), rule.criterion)
59+
power_summary(indent_io, rule.strategy)
60+
power_summary(indent_io, rule.criterion)
6161
end
6262

6363
# Default implementation

0 commit comments

Comments
 (0)