Skip to content

Commit be8bcbf

Browse files
author
Frankie Robertson
committed
Improve show methods
1 parent 7158dd6 commit be8bcbf

File tree

9 files changed

+52
-32
lines changed

9 files changed

+52
-32
lines changed

src/Rules.jl

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,14 @@ function CatRules(bits...)
8282
end
8383

8484
function show(io::IO, ::MIME"text/plain", rules::CatRules)
85-
indent_io = indent(io, 2)
86-
println(io, "Next item rule:")
87-
show(indent_io, MIME"text/plain"(), rules.next_item)
88-
println(io, "Termination condition:")
89-
show(indent_io, MIME"text/plain"(), rules.termination_condition)
90-
println(io, "Ability estimator:")
91-
show(indent_io, MIME"text/plain"(), rules.ability_estimator)
85+
print(io, "Next item rule: ")
86+
show(io, MIME("text/plain"), rules.next_item)
87+
println(io)
88+
print(io, "Termination condition: ")
89+
show(io, MIME("text/plain"), rules.termination_condition)
90+
println(io)
91+
print(io, "Ability estimator: ")
92+
show(io, MIME("text/plain"), rules.ability_estimator)
9293
end
9394

9495
function _find_ability_estimator_and_tracker(bits...)

src/TerminationConditions.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ using ..Aggregators: TrackedResponses
66
using ..ConfigBase
77
using PsychometricsBazaarBase.ConfigTools: @returnsome, find1_instance
88
using FittedItemBanks
9+
import Base: show
910

1011
export TerminationCondition,
1112
LengthTerminationCondition, SimpleFunctionTerminationCondition
@@ -32,6 +33,10 @@ function (condition::LengthTerminationCondition)(responses::TrackedResponses,
3233
length(responses) >= condition.num_items
3334
end
3435

36+
function show(io::IO, ::MIME"text/plain", condition::LengthTerminationCondition)
37+
println(io, "Terminate test after administering $(condition.num_items) items")
38+
end
39+
3540
# Alias for old name
3641
const FixedItemsTerminationCondition = LengthTerminationCondition
3742

src/aggregators/Aggregators.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ using PsychometricsBazaarBase.Integrators: Integrators,
3030
IntValue, Integrator,
3131
PreallocatedFixedGridIntegrator,
3232
normdenom
33-
using PsychometricsBazaarBase.Optimizers: OneDimOptimOptimizer, Optimizer
33+
using PsychometricsBazaarBase.Optimizers: OneDimOptimOptimizer, Optimizer, Optimizers
3434
using PsychometricsBazaarBase.ConstDistributions: std_normal, std_mv_normal
35+
using PsychometricsBazaarBase.IndentWrappers: indent
3536
import Distributions: pdf
3637
import Base: show
3738

@@ -209,6 +210,10 @@ function (integrator::FunctionIntegrator{IntegratorT})(f::F,
209210
integrator.integrator(FunctionProduct(f, lh_function), ncomp)
210211
end
211212

213+
function show(io::IO, ::MIME"text/plain", responses::FunctionIntegrator)
214+
show(io, MIME("text/plain"), responses.integrator)
215+
end
216+
212217
# Defaults
213218
const optim_tol = 1e-12
214219
const int_tol = 1e-8

src/aggregators/ability_estimator.jl

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

29+
function show(io::IO, ::MIME"text/plain", ability_estimator::LikelihoodAbilityEstimator)
30+
println(io, "Ability likelihood distribution")
31+
end
32+
2933
struct PosteriorAbilityEstimator{PriorT <: Distribution} <: DistributionAbilityEstimator
3034
prior::PriorT
3135
end
@@ -57,6 +61,14 @@ function multiple_response_types_guard(tracked_responses)
5761
return false
5862
end
5963

64+
function show(io::IO, ::MIME"text/plain", ability_estimator::PosteriorAbilityEstimator)
65+
println(io, "Ability posterior distribution")
66+
indent_io = indent(io, 2)
67+
print(indent_io, "Prior: ")
68+
show(indent_io, MIME("text/plain"), ability_estimator.prior)
69+
println(io)
70+
end
71+
6072
struct GuardedAbilityEstimator{T <: DistributionAbilityEstimator, U <: DistributionAbilityEstimator, F} <: DistributionAbilityEstimator
6173
est::T
6274
fallback::U
@@ -214,11 +226,9 @@ end
214226

215227
function show(io::IO, ::MIME"text/plain", ability_estimator::ModeAbilityEstimator)
216228
println(io, "Estimate ability using its mode")
217-
indent_io = indent(io, 2; skip_first=true)
218-
print(indent_io, "Distribution estimator ")
219-
show(indent_io, ability_estimator.dist_est)
220-
print(indent_io, "Optimizer: ")
221-
show(indent_io, ability_estimator.optim)
229+
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)
222232
end
223233

224234
struct MeanAbilityEstimator{
@@ -236,6 +246,14 @@ function MeanAbilityEstimator(bits...)
236246
MeanAbilityEstimator(dist_est, integrator)
237247
end
238248

249+
function show(io::IO, ::MIME"text/plain", ability_estimator::MeanAbilityEstimator)
250+
println(io, "Estimate ability using its mean")
251+
indent_io = indent(io, 2)
252+
show(indent_io, MIME("text/plain"), ability_estimator.dist_est)
253+
print(indent_io, "Integrator: ")
254+
show(indent_io, MIME("text/plain"), ability_estimator.integrator)
255+
end
256+
239257
function distribution_estimator(dist_est::DistributionAbilityEstimator)::DistributionAbilityEstimator
240258
dist_est
241259
end

src/aggregators/optimizers.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ end
1212

1313
function show(io::IO, ::MIME"text/plain", optim::FunctionOptimizer)
1414
indent_io = indent(io, 2)
15-
if optim.optim isa OneDimOptimOptimizer || optim.optim isa MultiDimOptimOptimizer || optim.optim isa NativeOneDimOptimOptimizer
15+
if optim.optim isa Optimizers.OneDimOptimOptimizer || optim.optim isa Optimizers.MultiDimOptimOptimizer || optim.optim isa Optimizers.NativeOneDimOptimOptimizer
1616
inner = optim.optim
1717
println(io, "Optimizer:")
18-
if optim.optim isa NativeOneDimOptimOptimizer
18+
if optim.optim isa Optimizers.NativeOneDimOptimOptimizer
1919
name = typeof(inner.method).name.name
2020
else
2121
name = typeof(inner.optim).name.name
2222
end
23-
print(indent_io, "Method: ", name)
24-
print(indent_io, "Lo: ", inner.lo)
25-
print(indent_io, "Hi: ", inner.hi)
23+
println(indent_io, "Method: ", name)
24+
println(indent_io, "Lo: ", inner.lo)
25+
println(indent_io, "Hi: ", inner.hi)
2626
end
2727
end
2828

src/next_item_rules/combinators/expectation.jl

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ end
4242
function show(io::IO, ::MIME"text/plain", point_response_expectation::PointResponseExpectation)
4343
println(io, "Expected response at point ability estimate")
4444
indent_io = indent(io, 2)
45-
print(indent_io, "Ability estimator: ")
46-
summary(indent_io, point_response_expectation.ability_estimator)
47-
println(io)
45+
show(indent_io, MIME("text/plain"), point_response_expectation.ability_estimator)
4846
end
4947

5048
struct DistributionResponseExpectation{
@@ -136,8 +134,6 @@ end
136134
function show(io::IO, ::MIME"text/plain", item_criterion::ExpectationBasedItemCriterion)
137135
println(io, "Optimize an state/item/item-category criterion based on an expected response")
138136
indent_io = indent(io, 2)
139-
print(indent_io, "Expected response obtained by: ")
140137
show(indent_io, MIME"text/plain"(), item_criterion.response_expectation)
141-
print(indent_io, "Criterion: ")
142138
show(indent_io, MIME"text/plain"(), item_criterion.criterion)
143-
end
139+
end

src/next_item_rules/criteria/state/ability_variance.jl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,8 @@ end
7171
function show(io::IO, ::MIME"text/plain", criterion::AbilityVarianceStateCriterion)
7272
println(io, "Minimise variance of ability estimate")
7373
indent_io = indent(io, 2)
74-
print(indent_io, "Distribution estimator: ")
75-
show(indent_io, MIME"text/plain"(), criterion.dist_est)
76-
print(indent_io, "Integrator: ")
77-
show(indent_io, MIME"text/plain"(), criterion.integrator)
74+
show(indent_io, MIME("text/plain"), criterion.dist_est)
75+
show(indent_io, MIME("text/plain"), criterion.integrator)
7876
end
7977

8078
struct AbilityCovarianceStateMultiCriterion{

src/next_item_rules/prelude/next_item_rule.jl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,11 @@ end
5656
function Base.show(io::IO, ::MIME"text/plain", rule::ItemStrategyNextItemRule)
5757
println(io, "Pick optimal item criterion according to strategy")
5858
indent_io = indent(io, 2)
59-
print(indent_io, "Strategy: ")
6059
show(indent_io, MIME"text/plain"(), rule.strategy)
61-
print(indent_io, "Item criterion: ")
6260
show(indent_io, MIME"text/plain"(), rule.criterion)
6361
end
6462

6563
# Default implementation
6664
function compute_criteria(::NextItemRule, ::TrackedResponses)
6765
nothing
68-
end
66+
end

src/next_item_rules/strategies/pointwise.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ function show(io::IO, ::MIME"text/plain", rule::PointwiseNextItemRule)
2121
indent_io = indent(io, 2)
2222
points_desc = join(rule.points, ", ")
2323
println(indent_io, "Points: $points_desc")
24-
print(indent_io, "Criterion: ")
2524
show(indent_io, MIME("text/plain"), rule.criterion)
2625
end
2726

0 commit comments

Comments
 (0)