{"id":15636621,"url":"https://github.com/douglasrizzo/catsim","last_synced_at":"2025-04-05T22:05:14.453Z","repository":{"id":32258499,"uuid":"35832910","full_name":"douglasrizzo/catsim","owner":"douglasrizzo","description":"Computerized Adaptive Testing Simulator","archived":false,"fork":false,"pushed_at":"2024-05-05T23:12:56.000Z","size":43682,"stargazers_count":124,"open_issues_count":2,"forks_count":35,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-10-29T09:50:16.955Z","etag":null,"topics":["assessment","cat","computerized-adaptive-testing","irt","item-response-theory","simulations"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/douglasrizzo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-18T17:44:31.000Z","updated_at":"2024-09-02T05:55:00.000Z","dependencies_parsed_at":"2023-02-10T06:16:01.188Z","dependency_job_id":"887850aa-4294-4d79-bd17-c735f7e41bb9","html_url":"https://github.com/douglasrizzo/catsim","commit_stats":{"total_commits":658,"total_committers":5,"mean_commits":131.6,"dds":0.00911854103343468,"last_synced_commit":"27400a919697e337e5ddc93f571a41ae892a00f5"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasrizzo%2Fcatsim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasrizzo%2Fcatsim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasrizzo%2Fcatsim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasrizzo%2Fcatsim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/douglasrizzo","download_url":"https://codeload.github.com/douglasrizzo/catsim/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247406085,"owners_count":20933803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assessment","cat","computerized-adaptive-testing","irt","item-response-theory","simulations"],"created_at":"2024-10-03T11:05:30.578Z","updated_at":"2025-04-05T22:05:14.395Z","avatar_url":"https://github.com/douglasrizzo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"sphinx/logo_text.svg?sanitize=true\" alt=\"Logo\" /\u003e\n\u003c/p\u003e\n\n------------------------------------------------------------------------\n\n[![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)\n[![Test Coverage](https://coveralls.io/repos/github/douglasrizzo/catsim/badge.svg?branch=master)](https://coveralls.io/github/douglasrizzo/catsim?branch=master)\n[![Latest Version](https://badge.fury.io/py/catsim.svg)](https://badge.fury.io/py/catsim)\n[![Digital Object Identifier](https://zenodo.org/badge/doi/10.5281/zenodo.46420.svg)](http://dx.doi.org/10.5281/zenodo.46420)\n\n**catsim** is a Python package for computerized adaptive testing (CAT)\nsimulations. It provides multiple methods for:\n\n- [test initialization](https://douglasrizzo.com.br/catsim/initialization.html) (selecting the initial ability of the examinees)\n- [item selection](https://douglasrizzo.com.br/catsim/selection.html)\n- [ability estimation](https://douglasrizzo.com.br/catsim/estimation.html)\n- [test stopping](https://douglasrizzo.com.br/catsim/stopping.html)\n\nThese methods can either be used in a standalone fashion\n[\\[1\\]](https://douglasrizzo.com.br/catsim/introduction.html#autonomous-usage)\nto power other software or be used with *catsim* to simulate the\napplication of computerized adaptive tests\n[\\[2\\]](https://douglasrizzo.com.br/catsim/introduction.html#running-simulations),\ngiven a sample of examinees, represented by their ability levels,\nand an item bank, represented by their parameters according to some\n[logistic Item Response Theory\nmodel](https://douglasrizzo.com.br/catsim/introduction.html#item-response-theory-models).\n\n## What's a CAT\n\nComputerized adaptive tests are educational evaluations, usually taken\nby examinees in a computer or some other digital means, in which the\nexaminee\\'s ability is evaluated after the response of each item.\nThe new ability is then used to select a new item, closer to the\nexaminee\\'s real ability. This method of test application has\nseveral advantages compared to the traditional paper-and-pencil method\nor even linear tests applied electronically, since high-ability\nexaminees are not required to answer all the easy items in a test,\nanswering only the items that actually give some information regarding\nhis or hers true knowledge of the subject at matter. A similar, but\ninverse effect happens for those examinees of low ability level.\n\nMore information is available [in the\ndocs](https://douglasrizzo.com.br/catsim/introduction.html) and over\nat\n[Wikipedia](https://en.wikipedia.org/wiki/Computerized_adaptive_testing).\n\n## Installation\n\nInstall it using `pip install catsim`.\n\n## Basic Usage\n\n**NEW:** there is now [a Colab Notebook](https://colab.research.google.com/drive/1dBcpXxHuc9YXv9yGllxlahx585hEmdbn?usp=sharing) teaching the basics of catsim!\n\n1.  Have an [item matrix](https://douglasrizzo.com.br/catsim/item_matrix.html);\n2.  Have a sample of examinee proficiencies, or a number of examinees to be generated;\n3.  Create an [initializer](https://douglasrizzo.com.br/catsim/initialization.html),\n    an item [selector](https://douglasrizzo.com.br/catsim/selection.html), a\n    ability [estimator](https://douglasrizzo.com.br/catsim/estimation.html)\n    and a [stopping criterion](https://douglasrizzo.com.br/catsim/stopping.html);\n4.  Pass them to a [simulator](https://douglasrizzo.com.br/catsim/simulation.html)\n    and start the simulation.\n5.  Access the simulator\\'s properties to get specifics of the results;\n6.  [Plot](https://douglasrizzo.com.br/catsim/plot.html) your results.\n\n```python\nfrom catsim.initialization import RandomInitializer\nfrom catsim.selection import MaxInfoSelector\nfrom catsim.estimation import NumericalSearchEstimator\nfrom catsim.stopping import MaxItemStopper\nfrom catsim.simulation import Simulator\nfrom catsim.cat import generate_item_bank\ninitializer = RandomInitializer()\nselector = MaxInfoSelector()\nestimator = NumericalSearchEstimator()\nstopper = MaxItemStopper(20)\nSimulator(generate_item_bank(100), 10).simulate(initializer, selector, estimator, stopper)\n```\n\n## Dependencies\n\nAll dependencies are listed on `setup.py` and should be installed\nautomatically.\n\nTo run the tests, you\\'ll need to install the testing requirements\n`pip install catsim[testing]`.\n\nTo generate the documentation, install the necessary dependencies with `pip install catsim[docs]`.\n\nTo ensure code is valid and formatted before submission, install the necessary development dependencies with `pip install catsim[dev]`.\n\n## Compatibility\n\n*catsim* is compatible and tested against Python 3.5, 3.6, 3.7, 3.8 and 3.9.\n\n## Important links\n\n-   Official source code repo: \u003chttps://github.com/douglasrizzo/catsim\u003e\n-   HTML documentation (stable release):\n    \u003chttps://douglasrizzo.com.br/catsim\u003e\n-   Issue tracker: \u003chttps://github.com/douglasrizzo/catsim/issues\u003e\n\n## Citing catsim\n\nYou can cite the package using the following bibtex entry:\n\n```bibtex\n@article{catsim,\n  author = {Meneghetti, Douglas De Rizzo and Aquino Junior, Plinio Thomaz},\n  title = {Application and simulation of computerized adaptive tests through the package catsim},\n  year = 2018,\n  month = jul,\n  archiveprefix = {arXiv},\n  eprint = {1707.03012},\n  eprinttype = {arxiv},\n  journal = {arXiv:1707.03012 [stat]},\n  primaryclass = {stat}\n}\n```\n\n## If you are looking for IRT item parameter estimation...\n\n_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.\n\n- [eribean/girth](https://github.com/eribean/girth)\n- [eribean/girth_mcmc](https://github.com/eribean/girth_mcmc)\n- [nd-ball/py-irt](https://github.com/nd-ball/py-irt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdouglasrizzo%2Fcatsim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdouglasrizzo%2Fcatsim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdouglasrizzo%2Fcatsim/lists"}