Skip to content

Commit 7a62509

Browse files
author
Frankie Robertson
committed
More succinct naming
1 parent c21b14c commit 7a62509

25 files changed

+101
-102
lines changed

benchmark/benchmarks.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ function prepare_4pls(group)
3838
response_idxs = sample(rng, 1:20, 10)
3939

4040
for (est_nick, ability_estimator) in ability_estimators
41-
next_item_rule = ItemStrategyNextItemRule(
41+
next_item_rule = ItemCriterionRule(
4242
ExhaustiveSearch(),
4343
ExpectationBasedItemCriterion(PointResponseExpectation(ability_estimator),
44-
AbilityVarianceStateCriterion(
44+
AbilityVariance(
4545
integrator, distribution_estimator(ability_estimator)))
4646
)
4747
next_item_rule = preallocate(next_item_rule)

docs/examples/examples/ability_convergence_3pl.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ using Distributions: Normal, cdf
2020
using AlgebraOfGraphics
2121
using ComputerAdaptiveTesting
2222
using ComputerAdaptiveTesting.Sim: auto_responder
23-
using ComputerAdaptiveTesting.NextItemRules: AbilityVarianceStateCriterion
24-
using ComputerAdaptiveTesting.TerminationConditions: FixedItemsTerminationCondition
23+
using ComputerAdaptiveTesting.NextItemRules: AbilityVariance
24+
using ComputerAdaptiveTesting.TerminationConditions: FixedLength
2525
using ComputerAdaptiveTesting.Aggregators: PosteriorAbilityEstimator,
2626
MeanAbilityEstimator, LikelihoodAbilityEstimator
2727
using FittedItemBanks
@@ -49,8 +49,8 @@ integrator = FixedGKIntegrator(-6, 6, 80)
4949
dist_ability_est = PosteriorAbilityEstimator(std_normal)
5050
ability_estimator = MeanAbilityEstimator(dist_ability_est, integrator)
5151
rules = CatRules(ability_estimator,
52-
AbilityVarianceStateCriterion(dist_ability_est, integrator),
53-
FixedItemsTerminationCondition(max_questions))
52+
AbilityVariance(dist_ability_est, integrator),
53+
FixedLength(max_questions))
5454

5555
points = 500
5656
xs = range(-2.5, 2.5, length = points)

docs/examples/examples/ability_convergence_mirt.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ using AlgebraOfGraphics
2121
using ComputerAdaptiveTesting
2222
using ComputerAdaptiveTesting.Sim: auto_responder
2323
using ComputerAdaptiveTesting.NextItemRules: DRuleItemCriterion
24-
using ComputerAdaptiveTesting.TerminationConditions: FixedItemsTerminationCondition
24+
using ComputerAdaptiveTesting.TerminationConditions: FixedLength
2525
using ComputerAdaptiveTesting.Aggregators: PosteriorAbilityEstimator,
2626
MeanAbilityEstimator, LikelihoodAbilityEstimator
2727
using FittedItemBanks
@@ -53,7 +53,7 @@ ability_estimator = MeanAbilityEstimator(PosteriorAbilityEstimator(std_mv_normal
5353
integrator)
5454
rules = CatRules(ability_estimator,
5555
DRuleItemCriterion(ability_estimator),
56-
FixedItemsTerminationCondition(max_questions))
56+
FixedLength(max_questions))
5757

5858
# XXX: We shouldn't need to specify xs here since the distributions are not used -- rework
5959
points = 3

docs/examples/examples/vocab_iq.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ function run_vocab_iq_cat()
4242
ability_estimator = ModeAbilityEstimator(dist_ability_est, optimizer)
4343
@info "run_cat" ability_estimator
4444
rules = CatRules(ability_estimator,
45-
AbilityVarianceStateCriterion(dist_ability_est, ability_integrator),
46-
FixedItemsTerminationCondition(45))
45+
AbilityVariance(dist_ability_est, ability_integrator),
46+
FixedLength(45))
4747
function get_response(response_idx, response_name)
4848
params = item_params(item_bank, response_idx)
4949
println("Parameters for next question: $params")

docs/src/creating_a_cat.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,13 @@ ComputerAdaptiveTesting.NextItemRules.RandomNextItemRule
7979

8080
Other rules are created by combining a `ItemCriterion` -- which somehow rates
8181
items according to how good they are -- with a `NextItemStrategy` using an
82-
`ItemStrategyNextItemRule`, which acts as an adapter. The default
82+
`ItemCriterionRule`, which acts as an adapter. The default
8383
`NextItemStrategy` (and currently only) is `ExhaustiveSearch`. When using
8484
the implicit constructors, `ItemCriterion` can therefore be used directly
8585
without wrapping in any place an NextItemRule is expected.
8686

8787
```@docs; canonical=false
88-
ComputerAdaptiveTesting.NextItemRules.ItemStrategyNextItemRule
88+
ComputerAdaptiveTesting.NextItemRules.ItemCriterionRule
8989
```
9090

9191
```@docs; canonical=false
@@ -114,17 +114,17 @@ takes a `ResponseExpectation`: either `PointResponseExpectation` or
114114
good a particular state is in terms getting a good estimate of the test takers
115115
ability. They look one ply ahead to get the expected value of the
116116
``StateCriterion`` after selecting the given item. The
117-
`AbilityVarianceStateCriterion` looks at the variance of the ability ``\theta``
117+
`AbilityVariance` looks at the variance of the ability ``\theta``
118118
estimate at that state.
119119

120120
### Stopping rules with `TerminationCondition`
121121

122-
Currently the only `TerminationCondition` is `FixedItemsTerminationCondition`, which ends the test after a fixed number of items.
122+
Currently the only `TerminationCondition` is `FixedLength`, which ends the test after a fixed number of items.
123123

124124
```@docs; canonical=false
125125
ComputerAdaptiveTesting.TerminationConditions.TerminationCondition
126126
```
127127

128128
```@docs; canonical=false
129-
ComputerAdaptiveTesting.TerminationConditions.FixedItemsTerminationCondition
129+
ComputerAdaptiveTesting.TerminationConditions.FixedLength
130130
```

docs/src/stateful.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Stateful.get_ability
2828
There is an implementation in terms of [CatRules](@ref):
2929

3030
```@docs
31-
Stateful.StatefulCatConfig
31+
Stateful.StatefulCatRules
3232
```
3333

3434
## Usage

src/Compat/CatR.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ using ComputerAdaptiveTesting.Aggregators: AbilityIntegrator,
66
ModeAbilityEstimator,
77
MeanAbilityEstimator,
88
PosteriorAbilityEstimator
9-
using ComputerAdaptiveTesting.TerminationConditions: RunForeverTerminationCondition
9+
using ComputerAdaptiveTesting.TerminationConditions: RunForever
1010
using ComputerAdaptiveTesting.Rules: CatRules
1111
using ComputerAdaptiveTesting.NextItemRules
1212
using PsychometricsBazaarBase: Integrators, Optimizers
@@ -19,15 +19,15 @@ function _next_item_aliases()
1919
"MFI" => InformationItemCriterion,
2020
"bOpt" => UrryItemCriterion,
2121
)
22-
res[nick] = (bits...; kwargs...) -> ItemStrategyNextItemRule(
22+
res[nick] = (bits...; kwargs...) -> ItemCriterionRule(
2323
ExhaustiveSearch(),
2424
mk_item_criterion(bits...))
2525
end
26-
res["MEPV"] = (bits...; posterior_ability_estimator, kwargs...) -> ItemStrategyNextItemRule(
26+
res["MEPV"] = (bits...; posterior_ability_estimator, kwargs...) -> ItemCriterionRule(
2727
ExhaustiveSearch(),
2828
ExpectationBasedItemCriterion(bits...,
29-
AbilityVarianceStateCriterion(posterior_ability_estimator, AbilityIntegrator(bits...))))
30-
res["MEI"] = (bits...; kwargs...) -> ItemStrategyNextItemRule(
29+
AbilityVariance(posterior_ability_estimator, AbilityIntegrator(bits...))))
30+
res["MEI"] = (bits...; kwargs...) -> ItemCriterionRule(
3131
ExhaustiveSearch(),
3232
ExpectationBasedItemCriterion(bits...,
3333
InformationItemCriterion(bits...)))
@@ -64,7 +64,7 @@ const ability_estimator_aliases = _ability_estimator_aliases()
6464
#=
6565
for (resp_exp, resp_exp_nick) in resp_exp_nick_pairs
6666
next_item_rule = NextItemRule(
67-
ExpectationBasedItemCriterion(resp_exp, AbilityVarianceStateCriterion(numtools.integrator, distribution_estimator(abil_est)))
67+
ExpectationBasedItemCriterion(resp_exp, AbilityVariance(numtools.integrator, distribution_estimator(abil_est)))
6868
)
6969
next_item_rule = preallocate(next_item_rule)
7070
est_next_item_rule_pairs[Symbol("$(abil_est_str)_mepv_$(resp_exp_nick)")] = (abil_est, next_item_rule)
@@ -99,10 +99,10 @@ function assemble_rules(;
9999
ability_estimator = ability_estimator_aliases[method](; integrator, optimizer)
100100
posterior_ability_estimator = PosteriorAbilityEstimator()
101101
raw_next_item = next_item_aliases[criterion](ability_estimator, integrator, optimizer; posterior_ability_estimator=posterior_ability_estimator)
102-
next_item = FixedFirstItemNextItemRule(start_item, raw_next_item)
102+
next_item = FixedFirstItem(start_item, raw_next_item)
103103
CatRules(;
104104
next_item,
105-
termination_condition = RunForeverTerminationCondition(),
105+
termination_condition = RunForever(),
106106
ability_estimator,
107107
#ability_tracker::AbilityTrackerT = NullAbilityTracker()
108108
)

src/Compat/MirtCAT.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ using ComputerAdaptiveTesting.Aggregators: SafeLikelihoodAbilityEstimator,
88
PosteriorAbilityEstimator,
99
AbilityEstimator,
1010
distribution_estimator
11-
using ComputerAdaptiveTesting.TerminationConditions: RunForeverTerminationCondition
11+
using ComputerAdaptiveTesting.TerminationConditions: RunForever
1212
using ComputerAdaptiveTesting.NextItemRules
1313
using ComputerAdaptiveTesting.Rules: CatRules
1414
using PsychometricsBazaarBase: Integrators, Optimizers
@@ -23,7 +23,7 @@ function _next_item_helper(item_criterion_callback)
2323
optimizer,
2424
]
2525
item_criterion = item_criterion_callback(; bits, ability_estimator, posterior_ability_estimator, integrator, optimizer)
26-
return ItemStrategyNextItemRule(ExhaustiveSearch(), item_criterion)
26+
return ItemCriterionRule(ExhaustiveSearch(), item_criterion)
2727
end
2828
return _helper
2929
end
@@ -34,7 +34,7 @@ const next_item_aliases = Dict(
3434
# 'MEPV' for minimum expected posterior variance
3535
"MEPV" => _next_item_helper((; bits, ability_estimator, posterior_ability_estimator, integrator, rest...) -> ExpectationBasedItemCriterion(
3636
ability_estimator,
37-
AbilityVarianceStateCriterion(posterior_ability_estimator, integrator))),
37+
AbilityVariance(posterior_ability_estimator, integrator))),
3838
"MEI" => _next_item_helper((; bits, ability_estimator, rest...) -> ExpectationBasedItemCriterion(
3939
ability_estimator,
4040
PointItemCategoryCriterion(EmpiricalInformationPointwiseItemCategoryCriterion(), ability_estimator)
@@ -145,11 +145,11 @@ function assemble_rules(;
145145
ability_estimator = ability_estimator_aliases[method](; integrator, optimizer, ncomp)
146146
posterior_ability_estimator = PosteriorAbilityEstimator(; ncomp)
147147
raw_next_item = next_item_aliases[criteria](ability_estimator, posterior_ability_estimator, integrator, optimizer)
148-
next_item = FixedFirstItemNextItemRule(start_item, raw_next_item)
148+
next_item = FixedFirstItem(start_item, raw_next_item)
149149
CatRules(;
150150
next_item,
151151
ability_estimator,
152-
termination_condition = RunForeverTerminationCondition(),
152+
termination_condition = RunForever(),
153153
)
154154
end
155155

src/Stateful.jl

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ using ..Responses: BareResponses, Response, Responses
1414
using ..NextItemRules: compute_criteria, best_item
1515
using ..Sim: CatLoop, Sim, item_label
1616

17-
export StatefulCat, StatefulCatConfig
17+
export StatefulCat, StatefulCatRules
1818
public next_item, ranked_items, item_criteria
1919
public add_response!, rollback!, reset!, get_responses, get_ability
2020

@@ -190,26 +190,28 @@ $(TYPEDSIGNATURES)
190190
This is a the `StatefulCat` implementation in terms of `CatRules`.
191191
It is also the de-facto standard for the behavior of the interface.
192192
"""
193-
struct StatefulCatConfig{TrackedResponsesT <: TrackedResponses} <: StatefulCat
193+
struct StatefulCatRules{TrackedResponsesT <: TrackedResponses} <: StatefulCat
194194
rules::CatRules
195195
tracked_responses::Ref{TrackedResponsesT}
196196
end
197197

198-
function StatefulCatConfig(rules::CatRules, item_bank::AbstractItemBank)
198+
function StatefulCatRules(rules::CatRules, item_bank::AbstractItemBank)
199199
bare_responses = BareResponses(ResponseType(item_bank))
200200
tracked_responses = TrackedResponses(
201201
bare_responses,
202202
item_bank,
203203
rules.ability_tracker
204204
)
205-
return StatefulCatConfig(rules, Ref(tracked_responses))
205+
return StatefulCatRules(rules, Ref(tracked_responses))
206206
end
207207

208-
function next_item(config::StatefulCatConfig)
208+
StatefulCat(rules::CatRules, item_bank::AbstractItemBank) = StatefulCatRules(rules, item_bank)
209+
210+
function next_item(config::StatefulCatRules)
209211
return best_item(config.rules.next_item, config.tracked_responses[])
210212
end
211213

212-
function ranked_items(config::StatefulCatConfig)
214+
function ranked_items(config::StatefulCatRules)
213215
criteria = compute_criteria(
214216
config.rules.next_item, config.tracked_responses[])
215217
if criteria === nothing
@@ -218,27 +220,27 @@ function ranked_items(config::StatefulCatConfig)
218220
return sortperm(criteria)
219221
end
220222

221-
function item_criteria(config::StatefulCatConfig)
223+
function item_criteria(config::StatefulCatRules)
222224
return compute_criteria(
223225
config.rules.next_item, config.tracked_responses[])
224226
end
225227

226-
function add_response!(config::StatefulCatConfig, index, response)
228+
function add_response!(config::StatefulCatRules, index, response)
227229
tracked_responses = config.tracked_responses[]
228230
Responses.add_response!(
229231
tracked_responses, Response(
230232
ResponseType(tracked_responses.item_bank), index, response))
231233
end
232234

233-
function rollback!(config::StatefulCatConfig)
235+
function rollback!(config::StatefulCatRules)
234236
Responses.pop_response!(config.tracked_responses[])
235237
end
236238

237-
function reset!(config::StatefulCatConfig)
239+
function reset!(config::StatefulCatRules)
238240
empty!(config.tracked_responses[])
239241
end
240242

241-
function set_item_bank!(config::StatefulCatConfig, item_bank)
243+
function set_item_bank!(config::StatefulCatRules, item_bank)
242244
bare_responses = BareResponses(ResponseType(item_bank))
243245
config.tracked_responses[] = TrackedResponses(
244246
bare_responses,
@@ -247,23 +249,23 @@ function set_item_bank!(config::StatefulCatConfig, item_bank)
247249
)
248250
end
249251

250-
function get_responses(config::StatefulCatConfig)
252+
function get_responses(config::StatefulCatRules)
251253
return config.tracked_responses[].responses
252254
end
253255

254-
function get_ability(config::StatefulCatConfig)
256+
function get_ability(config::StatefulCatRules)
255257
return (config.rules.ability_estimator(config.tracked_responses[]), nothing)
256258
end
257259

258-
function likelihood(config::StatefulCatConfig, ability)
260+
function likelihood(config::StatefulCatRules, ability)
259261
pdf(distribution_estimator(config.rules.ability_estimator), config.tracked_responses[], ability)
260262
end
261263

262-
function item_bank_size(config::StatefulCatConfig)
264+
function item_bank_size(config::StatefulCatRules)
263265
return length(config.tracked_responses[].item_bank)
264266
end
265267

266-
function item_response_functions(config::StatefulCatConfig, index, ability)
268+
function item_response_functions(config::StatefulCatRules, index, ability)
267269
item_bank = config.tracked_responses[].item_bank
268270
item_response = ItemResponse(item_bank, index)
269271
return resp_vec(item_response, ability)

src/TerminationConditions.jl

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ using FittedItemBanks
99
import Base: show
1010

1111
export TerminationCondition,
12-
LengthTerminationCondition, SimpleFunctionTerminationCondition
13-
export RunForeverTerminationCondition
12+
FixedLength, SimpleFunctionTerminationCondition
13+
export RunForever
1414

1515
"""
1616
$(TYPEDEF)
@@ -25,21 +25,18 @@ end
2525
$(TYPEDEF)
2626
$(TYPEDFIELDS)
2727
"""
28-
struct LengthTerminationCondition{} <: TerminationCondition
28+
struct FixedLength{} <: TerminationCondition
2929
num_items::Int64
3030
end
31-
function (condition::LengthTerminationCondition)(responses::TrackedResponses,
31+
function (condition::FixedLength)(responses::TrackedResponses,
3232
items::AbstractItemBank)
3333
length(responses) >= condition.num_items
3434
end
3535

36-
function show(io::IO, ::MIME"text/plain", condition::LengthTerminationCondition)
36+
function show(io::IO, ::MIME"text/plain", condition::FixedLength)
3737
println(io, "Terminate test after administering $(condition.num_items) items")
3838
end
3939

40-
# Alias for old name
41-
const FixedItemsTerminationCondition = LengthTerminationCondition
42-
4340
struct SimpleFunctionTerminationCondition{F} <: TerminationCondition
4441
func::F
4542
end
@@ -48,8 +45,8 @@ function (condition::SimpleFunctionTerminationCondition)(responses::TrackedRespo
4845
condition.func(responses, items)
4946
end
5047

51-
struct RunForeverTerminationCondition <: TerminationCondition end
52-
function (condition::RunForeverTerminationCondition)(::TrackedResponses, ::AbstractItemBank)
48+
struct RunForever <: TerminationCondition end
49+
function (condition::RunForever)(::TrackedResponses, ::AbstractItemBank)
5350
return false
5451
end
5552

0 commit comments

Comments
 (0)