summaryrefslogtreecommitdiff
path: root/python-catsim.spec
blob: db9199c19322b4692ed34c98f64da4a53540f85c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
%global _empty_manifest_terminate_build 0
Name:		python-catsim
Version:	0.17.2
Release:	1
Summary:	Computerized Adaptive Testing Simulator
License:	GNU Lesser General Public License v3 (LGPLv3)
URL:		https://pypi.org/project/catsim/
Source0:	https://mirrors.aliyun.com/pypi/web/packages/9f/7f/575bce3050aa4d3c387a1bdfb0bfcaf3d4b8edbf5d37ef9b18abac9e7e22/catsim-0.17.2.tar.gz
BuildArch:	noarch

Requires:	python3-scipy
Requires:	python3-numexpr
Requires:	python3-matplotlib
Requires:	python3-scikit-learn
Requires:	python3-json-tricks
Requires:	python3-tqdm
Requires:	python3-numpy
Requires:	python3-mypy
Requires:	python3-pylama
Requires:	python3-yapf
Requires:	python3-black
Requires:	python3-isort
Requires:	python3-Sphinx
Requires:	python3-numpydoc
Requires:	python3-sphinx-autodoc-annotation
Requires:	python3-sphinx-rtd-theme
Requires:	python3-m2r2
Requires:	python3-bibtex-pygments-lexer
Requires:	python3-matplotlib
Requires:	python3-nose
Requires:	python3-nose-cov
Requires:	python3-sklearn
Requires:	python3-flake8
Requires:	python3-yapf
Requires:	python3-twine
Requires:	python3-build

%description
[![Unit tests](https://github.com/douglasrizzo/catsim/actions/workflows/test-on-push.yml/badge.svg)](https://github.com/douglasrizzo/catsim/actions/workflows/test-on-push.yml)
[![Test Coverage](https://coveralls.io/repos/github/douglasrizzo/catsim/badge.svg?branch=master)](https://coveralls.io/github/douglasrizzo/catsim?branch=master)
[![Latest Version](https://badge.fury.io/py/catsim.svg)](https://badge.fury.io/py/catsim)
[![Requirements Status](https://requires.io/github/douglasrizzo/catsim/requirements.svg?branch=master)](https://requires.io/github/douglasrizzo/catsim/requirements/?branch=master)
[![Digital Object Identifier](https://zenodo.org/badge/doi/10.5281/zenodo.46420.svg)](http://dx.doi.org/10.5281/zenodo.46420)
**catsim** is a Python package for computerized adaptive testing (CAT)
simulations. It provides multiple methods for:
- [test initialization](https://douglasrizzo.com.br/catsim/initialization.html) (selecting the initial ability of the examinees)
- [item selection](https://douglasrizzo.com.br/catsim/selection.html)
- [ability estimation](https://douglasrizzo.com.br/catsim/estimation.html)
- [test stopping](https://douglasrizzo.com.br/catsim/stopping.html)
These methods can either be used in a standalone fashion
[\[1\]](https://douglasrizzo.com.br/catsim/introduction.html#autonomous-usage)
to power other software or be used with *catsim* to simulate the
application of computerized adaptive tests
[\[2\]](https://douglasrizzo.com.br/catsim/introduction.html#running-simulations),
given a sample of examinees, represented by their ability levels,
and an item bank, represented by their parameters according to some
[logistic Item Response Theory
model](https://douglasrizzo.com.br/catsim/introduction.html#item-response-theory-models).
## What's a CAT
Computerized adaptive tests are educational evaluations, usually taken
by examinees in a computer or some other digital means, in which the
examinee\'s ability is evaluated after the response of each item.
The new ability is then used to select a new item, closer to the
examinee\'s real ability. This method of test application has
several advantages compared to the traditional paper-and-pencil method
or even linear tests applied electronically, since high-ability
examinees are not required to answer all the easy items in a test,
answering only the items that actually give some information regarding
his or hers true knowledge of the subject at matter. A similar, but
inverse effect happens for those examinees of low ability level.
More information is available [in the
docs](https://douglasrizzo.com.br/catsim/introduction.html) and over
at
[Wikipedia](https://en.wikipedia.org/wiki/Computerized_adaptive_testing).
## Installation
Install it using `pip install catsim`.
## Basic Usage
**NEW:** there is now [a Colab Notebook](https://colab.research.google.com/drive/1dBcpXxHuc9YXv9yGllxlahx585hEmdbn?usp=sharing) teaching the basics of catsim!
1.  Have an [item matrix](https://douglasrizzo.com.br/catsim/item_matrix.html);
2.  Have a sample of examinee proficiencies, or a number of examinees to be generated;
3.  Create an [initializer](https://douglasrizzo.com.br/catsim/initialization.html),
    an item [selector](https://douglasrizzo.com.br/catsim/selection.html), a
    ability [estimator](https://douglasrizzo.com.br/catsim/estimation.html)
    and a [stopping criterion](https://douglasrizzo.com.br/catsim/stopping.html);
4.  Pass them to a [simulator](https://douglasrizzo.com.br/catsim/simulation.html)
    and start the simulation.
5.  Access the simulator\'s properties to get specifics of the results;
6.  [Plot](https://douglasrizzo.com.br/catsim/plot.html) your results.
```python
from catsim.initialization import RandomInitializer
from catsim.selection import MaxInfoSelector
from catsim.estimation import NumericalSearchEstimator
from catsim.stopping import MaxItemStopper
from catsim.simulation import Simulator
from catsim.cat import generate_item_bank
initializer = RandomInitializer()
selector = MaxInfoSelector()
estimator = NumericalSearchEstimator()
stopper = MaxItemStopper(20)
Simulator(generate_item_bank(100), 10).simulate(initializer, selector, estimator, stopper)
```
## Dependencies
All dependencies are listed on `setup.py` and should be installed
automatically.
To run the tests, you\'ll need to install the testing requirements
`pip install catsim[testing]`.
To generate the documentation, install the necessary dependencies with `pip install catsim[docs]`.
To ensure code is valid and formatted before submission, install the necessary development dependencies with `pip install catsim[dev]`.
## Compatibility
*catsim* is compatible and tested against Python 3.5, 3.6, 3.7, 3.8 and 3.9.
## Important links
-   Official source code repo: <https://github.com/douglasrizzo/catsim>
-   HTML documentation (stable release):
    <https://douglasrizzo.com.br/catsim>
-   Issue tracker: <https://github.com/douglasrizzo/catsim/issues>
## Citing catsim
You can cite the package using the following bibtex entry:
```bibtex
@article{catsim,
  author = {Meneghetti, Douglas De Rizzo and Aquino Junior, Plinio Thomaz},
  title = {Application and simulation of computerized adaptive tests through the package catsim},
  year = 2018,
  month = jul,
  archiveprefix = {arXiv},
  eprint = {1707.03012},
  eprinttype = {arxiv},
  journal = {arXiv:1707.03012 [stat]},
  primaryclass = {stat}
}
```
## If you are looking for IRT item parameter estimation...
_catsim_ does not implement item parameter estimation. I have had great joy outsourcing that functionality to the [mirt](https://cran.r-project.org/web//packages/mirt/) R package along the years. However, since many users request packages with item parameter estimation capabilities in the Python ecosystem, here are a few links. While I have not used them personally, specialized packages like these are hard to come by, so I hope these are helpful.
- [eribean/girth](https://github.com/eribean/girth)
- [eribean/girth_mcmc](https://github.com/eribean/girth_mcmc)
- [nd-ball/py-irt](https://github.com/nd-ball/py-irt)

%package -n python3-catsim
Summary:	Computerized Adaptive Testing Simulator
Provides:	python-catsim
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-catsim
[![Unit tests](https://github.com/douglasrizzo/catsim/actions/workflows/test-on-push.yml/badge.svg)](https://github.com/douglasrizzo/catsim/actions/workflows/test-on-push.yml)
[![Test Coverage](https://coveralls.io/repos/github/douglasrizzo/catsim/badge.svg?branch=master)](https://coveralls.io/github/douglasrizzo/catsim?branch=master)
[![Latest Version](https://badge.fury.io/py/catsim.svg)](https://badge.fury.io/py/catsim)
[![Requirements Status](https://requires.io/github/douglasrizzo/catsim/requirements.svg?branch=master)](https://requires.io/github/douglasrizzo/catsim/requirements/?branch=master)
[![Digital Object Identifier](https://zenodo.org/badge/doi/10.5281/zenodo.46420.svg)](http://dx.doi.org/10.5281/zenodo.46420)
**catsim** is a Python package for computerized adaptive testing (CAT)
simulations. It provides multiple methods for:
- [test initialization](https://douglasrizzo.com.br/catsim/initialization.html) (selecting the initial ability of the examinees)
- [item selection](https://douglasrizzo.com.br/catsim/selection.html)
- [ability estimation](https://douglasrizzo.com.br/catsim/estimation.html)
- [test stopping](https://douglasrizzo.com.br/catsim/stopping.html)
These methods can either be used in a standalone fashion
[\[1\]](https://douglasrizzo.com.br/catsim/introduction.html#autonomous-usage)
to power other software or be used with *catsim* to simulate the
application of computerized adaptive tests
[\[2\]](https://douglasrizzo.com.br/catsim/introduction.html#running-simulations),
given a sample of examinees, represented by their ability levels,
and an item bank, represented by their parameters according to some
[logistic Item Response Theory
model](https://douglasrizzo.com.br/catsim/introduction.html#item-response-theory-models).
## What's a CAT
Computerized adaptive tests are educational evaluations, usually taken
by examinees in a computer or some other digital means, in which the
examinee\'s ability is evaluated after the response of each item.
The new ability is then used to select a new item, closer to the
examinee\'s real ability. This method of test application has
several advantages compared to the traditional paper-and-pencil method
or even linear tests applied electronically, since high-ability
examinees are not required to answer all the easy items in a test,
answering only the items that actually give some information regarding
his or hers true knowledge of the subject at matter. A similar, but
inverse effect happens for those examinees of low ability level.
More information is available [in the
docs](https://douglasrizzo.com.br/catsim/introduction.html) and over
at
[Wikipedia](https://en.wikipedia.org/wiki/Computerized_adaptive_testing).
## Installation
Install it using `pip install catsim`.
## Basic Usage
**NEW:** there is now [a Colab Notebook](https://colab.research.google.com/drive/1dBcpXxHuc9YXv9yGllxlahx585hEmdbn?usp=sharing) teaching the basics of catsim!
1.  Have an [item matrix](https://douglasrizzo.com.br/catsim/item_matrix.html);
2.  Have a sample of examinee proficiencies, or a number of examinees to be generated;
3.  Create an [initializer](https://douglasrizzo.com.br/catsim/initialization.html),
    an item [selector](https://douglasrizzo.com.br/catsim/selection.html), a
    ability [estimator](https://douglasrizzo.com.br/catsim/estimation.html)
    and a [stopping criterion](https://douglasrizzo.com.br/catsim/stopping.html);
4.  Pass them to a [simulator](https://douglasrizzo.com.br/catsim/simulation.html)
    and start the simulation.
5.  Access the simulator\'s properties to get specifics of the results;
6.  [Plot](https://douglasrizzo.com.br/catsim/plot.html) your results.
```python
from catsim.initialization import RandomInitializer
from catsim.selection import MaxInfoSelector
from catsim.estimation import NumericalSearchEstimator
from catsim.stopping import MaxItemStopper
from catsim.simulation import Simulator
from catsim.cat import generate_item_bank
initializer = RandomInitializer()
selector = MaxInfoSelector()
estimator = NumericalSearchEstimator()
stopper = MaxItemStopper(20)
Simulator(generate_item_bank(100), 10).simulate(initializer, selector, estimator, stopper)
```
## Dependencies
All dependencies are listed on `setup.py` and should be installed
automatically.
To run the tests, you\'ll need to install the testing requirements
`pip install catsim[testing]`.
To generate the documentation, install the necessary dependencies with `pip install catsim[docs]`.
To ensure code is valid and formatted before submission, install the necessary development dependencies with `pip install catsim[dev]`.
## Compatibility
*catsim* is compatible and tested against Python 3.5, 3.6, 3.7, 3.8 and 3.9.
## Important links
-   Official source code repo: <https://github.com/douglasrizzo/catsim>
-   HTML documentation (stable release):
    <https://douglasrizzo.com.br/catsim>
-   Issue tracker: <https://github.com/douglasrizzo/catsim/issues>
## Citing catsim
You can cite the package using the following bibtex entry:
```bibtex
@article{catsim,
  author = {Meneghetti, Douglas De Rizzo and Aquino Junior, Plinio Thomaz},
  title = {Application and simulation of computerized adaptive tests through the package catsim},
  year = 2018,
  month = jul,
  archiveprefix = {arXiv},
  eprint = {1707.03012},
  eprinttype = {arxiv},
  journal = {arXiv:1707.03012 [stat]},
  primaryclass = {stat}
}
```
## If you are looking for IRT item parameter estimation...
_catsim_ does not implement item parameter estimation. I have had great joy outsourcing that functionality to the [mirt](https://cran.r-project.org/web//packages/mirt/) R package along the years. However, since many users request packages with item parameter estimation capabilities in the Python ecosystem, here are a few links. While I have not used them personally, specialized packages like these are hard to come by, so I hope these are helpful.
- [eribean/girth](https://github.com/eribean/girth)
- [eribean/girth_mcmc](https://github.com/eribean/girth_mcmc)
- [nd-ball/py-irt](https://github.com/nd-ball/py-irt)

%package help
Summary:	Development documents and examples for catsim
Provides:	python3-catsim-doc
%description help
[![Unit tests](https://github.com/douglasrizzo/catsim/actions/workflows/test-on-push.yml/badge.svg)](https://github.com/douglasrizzo/catsim/actions/workflows/test-on-push.yml)
[![Test Coverage](https://coveralls.io/repos/github/douglasrizzo/catsim/badge.svg?branch=master)](https://coveralls.io/github/douglasrizzo/catsim?branch=master)
[![Latest Version](https://badge.fury.io/py/catsim.svg)](https://badge.fury.io/py/catsim)
[![Requirements Status](https://requires.io/github/douglasrizzo/catsim/requirements.svg?branch=master)](https://requires.io/github/douglasrizzo/catsim/requirements/?branch=master)
[![Digital Object Identifier](https://zenodo.org/badge/doi/10.5281/zenodo.46420.svg)](http://dx.doi.org/10.5281/zenodo.46420)
**catsim** is a Python package for computerized adaptive testing (CAT)
simulations. It provides multiple methods for:
- [test initialization](https://douglasrizzo.com.br/catsim/initialization.html) (selecting the initial ability of the examinees)
- [item selection](https://douglasrizzo.com.br/catsim/selection.html)
- [ability estimation](https://douglasrizzo.com.br/catsim/estimation.html)
- [test stopping](https://douglasrizzo.com.br/catsim/stopping.html)
These methods can either be used in a standalone fashion
[\[1\]](https://douglasrizzo.com.br/catsim/introduction.html#autonomous-usage)
to power other software or be used with *catsim* to simulate the
application of computerized adaptive tests
[\[2\]](https://douglasrizzo.com.br/catsim/introduction.html#running-simulations),
given a sample of examinees, represented by their ability levels,
and an item bank, represented by their parameters according to some
[logistic Item Response Theory
model](https://douglasrizzo.com.br/catsim/introduction.html#item-response-theory-models).
## What's a CAT
Computerized adaptive tests are educational evaluations, usually taken
by examinees in a computer or some other digital means, in which the
examinee\'s ability is evaluated after the response of each item.
The new ability is then used to select a new item, closer to the
examinee\'s real ability. This method of test application has
several advantages compared to the traditional paper-and-pencil method
or even linear tests applied electronically, since high-ability
examinees are not required to answer all the easy items in a test,
answering only the items that actually give some information regarding
his or hers true knowledge of the subject at matter. A similar, but
inverse effect happens for those examinees of low ability level.
More information is available [in the
docs](https://douglasrizzo.com.br/catsim/introduction.html) and over
at
[Wikipedia](https://en.wikipedia.org/wiki/Computerized_adaptive_testing).
## Installation
Install it using `pip install catsim`.
## Basic Usage
**NEW:** there is now [a Colab Notebook](https://colab.research.google.com/drive/1dBcpXxHuc9YXv9yGllxlahx585hEmdbn?usp=sharing) teaching the basics of catsim!
1.  Have an [item matrix](https://douglasrizzo.com.br/catsim/item_matrix.html);
2.  Have a sample of examinee proficiencies, or a number of examinees to be generated;
3.  Create an [initializer](https://douglasrizzo.com.br/catsim/initialization.html),
    an item [selector](https://douglasrizzo.com.br/catsim/selection.html), a
    ability [estimator](https://douglasrizzo.com.br/catsim/estimation.html)
    and a [stopping criterion](https://douglasrizzo.com.br/catsim/stopping.html);
4.  Pass them to a [simulator](https://douglasrizzo.com.br/catsim/simulation.html)
    and start the simulation.
5.  Access the simulator\'s properties to get specifics of the results;
6.  [Plot](https://douglasrizzo.com.br/catsim/plot.html) your results.
```python
from catsim.initialization import RandomInitializer
from catsim.selection import MaxInfoSelector
from catsim.estimation import NumericalSearchEstimator
from catsim.stopping import MaxItemStopper
from catsim.simulation import Simulator
from catsim.cat import generate_item_bank
initializer = RandomInitializer()
selector = MaxInfoSelector()
estimator = NumericalSearchEstimator()
stopper = MaxItemStopper(20)
Simulator(generate_item_bank(100), 10).simulate(initializer, selector, estimator, stopper)
```
## Dependencies
All dependencies are listed on `setup.py` and should be installed
automatically.
To run the tests, you\'ll need to install the testing requirements
`pip install catsim[testing]`.
To generate the documentation, install the necessary dependencies with `pip install catsim[docs]`.
To ensure code is valid and formatted before submission, install the necessary development dependencies with `pip install catsim[dev]`.
## Compatibility
*catsim* is compatible and tested against Python 3.5, 3.6, 3.7, 3.8 and 3.9.
## Important links
-   Official source code repo: <https://github.com/douglasrizzo/catsim>
-   HTML documentation (stable release):
    <https://douglasrizzo.com.br/catsim>
-   Issue tracker: <https://github.com/douglasrizzo/catsim/issues>
## Citing catsim
You can cite the package using the following bibtex entry:
```bibtex
@article{catsim,
  author = {Meneghetti, Douglas De Rizzo and Aquino Junior, Plinio Thomaz},
  title = {Application and simulation of computerized adaptive tests through the package catsim},
  year = 2018,
  month = jul,
  archiveprefix = {arXiv},
  eprint = {1707.03012},
  eprinttype = {arxiv},
  journal = {arXiv:1707.03012 [stat]},
  primaryclass = {stat}
}
```
## If you are looking for IRT item parameter estimation...
_catsim_ does not implement item parameter estimation. I have had great joy outsourcing that functionality to the [mirt](https://cran.r-project.org/web//packages/mirt/) R package along the years. However, since many users request packages with item parameter estimation capabilities in the Python ecosystem, here are a few links. While I have not used them personally, specialized packages like these are hard to come by, so I hope these are helpful.
- [eribean/girth](https://github.com/eribean/girth)
- [eribean/girth_mcmc](https://github.com/eribean/girth_mcmc)
- [nd-ball/py-irt](https://github.com/nd-ball/py-irt)

%prep
%autosetup -n catsim-0.17.2

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-catsim -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.17.2-1
- Package Spec generated