Skip to content

Commit 933d17b

Browse files
authored
Merge pull request #566 from EducationalTestingService/release/v9.0
Release/v9.0
2 parents 9db3291 + dd12783 commit 933d17b

File tree

11 files changed

+41
-56
lines changed

11 files changed

+41
-56
lines changed

MANIFEST.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ recursive-exclude tests *
66
recursive-exclude examples *
77
recursive-include rsmtool/notebooks *
88
prune test_outputs
9+
prune rsmtool/__pycache__
10+
prune rsmtool/utils/__pycache__
911
prune rsmtool/rsmtool.egg-info
1012
prune rsmtool/notebooks/.ipynb_checkpoints
1113
prune rsmtool/notebooks/comparison/.ipynb_checkpoints
14+
prune rsmtool/notebooks/summary/.ipynb_checkpoints

README.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Rater Scoring Modeling Tool
1111

1212
.. image:: https://codecov.io/gh/EducationalTestingService/rsmtool/branch/main/graph/badge.svg?token=wMCnQrB49J
1313
:target: https://codecov.io/gh/EducationalTestingService/rsmtool
14-
:alt: Coverage status
14+
:alt: Coverage status
1515

1616
.. image:: https://img.shields.io/conda/v/ets/rsmtool.svg
1717
:target: https://anaconda.org/ets/rsmtool
@@ -39,11 +39,11 @@ Rater Scoring Modeling Tool
3939
Introduction
4040
------------
4141

42-
Automated scoring of written and spoken test responses is a growing field in educational natural language processing. Automated scoring engines employ machine learning models to predict scores for such responses based on features extracted from the text/audio of these responses. Examples of automated scoring engines include `Project Essay Grade <http://pegwriting.com/about>`_ for written responses and `SpeechRater <https://www.ets.org/research/topics/as_nlp/speech/>`_ for spoken responses.
42+
Automated scoring of written and spoken test responses is a growing field in educational natural language processing. Automated scoring engines employ machine learning models to predict scores for such responses based on features extracted from the text/audio of these responses. Examples of automated scoring engines include `Project Essay Grade <http://pegwriting.com/about>`_ for written responses and `SpeechRater <https://www.ets.org/research/policy_research_reports/publications/report/2008/hukv>`_ for spoken responses.
4343

4444
Rater Scoring Modeling Tool (RSMTool) is a python package which automates and combines in a single pipeline multiple analyses that are commonly conducted when building and evaluating such scoring models. The output of RSMTool is a comprehensive, customizable HTML statistical report that contains the output of these multiple analyses. While RSMTool does make it really simple to run a set of standard analyses using a single command, it is also fully customizable and allows users to easily exclude unneeded analyses, modify the default analyses, and even include custom analyses in the report.
4545

46-
We expect the primary users of RSMTool to be researchers working on developing new automated scoring engines or on improving existing ones. Note that RSMTool is not a scoring engine by itself but rather a tool for building and evaluating machine learning models that may be used in such engines.
46+
We expect the primary users of RSMTool to be researchers working on developing new automated scoring engines or on improving existing ones. Note that RSMTool is not a scoring engine by itself but rather a tool for building and evaluating machine learning models that may be used in such engines.
4747

4848
RSMTool is driven by a configuration file that users have to supply. Given the large number of available options, this can get complicated especially for new users. That's why RSMTool can help users generate configuration files interactively via guided prompts! The video below demonstrates this feature.
4949

@@ -59,7 +59,7 @@ To get started with RSMTool, please see the extensive `official documentation <h
5959
Requirements
6060
------------
6161

62-
- Python >=3.7, <3.10
62+
- Python >=3.8, <3.11
6363
- ``numpy``
6464
- ``scipy``
6565
- ``scikit-learn``

azure-pipelines.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
pip install -e .
3737
displayName: 'Install dependencies & code'
3838
39-
- powershell: ./DistributeTests.ps1
39+
- powershell: ./DistributeTests.ps1
4040
displayName: 'PowerShell Script to distribute tests'
4141

4242
- script: |

conda-recipe/rsmtool/conda_build_config.yaml

Lines changed: 0 additions & 9 deletions
This file was deleted.

conda-recipe/rsmtool/meta.yaml

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
{% set data = load_setup_py_data() %}
2-
31
package:
42
name: rsmtool
5-
version: {{data.get('version')}}
3+
version: 9.0
64

75
source:
86
path: ../../../rsmtool
97

108
build:
119
number: 0
10+
noarch: python
1211
script:
1312
- cd $SRC_DIR
1413
- "{{ PYTHON }} -m pip install . --no-deps -vv"
@@ -18,36 +17,28 @@ build:
1817
- rsmeval = rsmtool.rsmeval:main
1918
- rsmpredict = rsmtool.rsmpredict:main
2019
- rsmsummarize = rsmtool.rsmsummarize:main
20+
- rsmxval = rsmtool.rsmxval:main
2121
- render_notebook = rsmtool.reporter:main
2222
- convert_feature_json = rsmtool.convert_feature_json:main
2323

2424
requirements:
2525
build:
26-
- python
27-
- jupyter
28-
- ipython
29-
- notebook
30-
- numpy {{ numpy }}
31-
- pandas
32-
- seaborn
33-
- skll==2.5.0
34-
- statsmodels
35-
- openpyxl
36-
- xlrd
37-
- xlwt
38-
26+
- python >=3.8
27+
- pip
28+
- setuptools
3929
run:
4030
- python
4131
- jupyter
4232
- ipython
4333
- nose
4434
- notebook
4535
- numpy
36+
- openpyxl
4637
- pandas
4738
- seaborn
48-
- skll==2.5.0
39+
- skll==3.0.0
4940
- statsmodels
50-
- openpyxl
41+
- tqdm
5142
- xlrd
5243
- xlwt
5344

@@ -60,6 +51,7 @@ test:
6051
- rsmtool.configuration_parser
6152
- rsmtool.container
6253
- rsmtool.convert_feature_json
54+
- rsmtool.fairness_utils
6355
- rsmtool.modeler
6456
- rsmtool.preprocessor
6557
- rsmtool.reader
@@ -75,6 +67,7 @@ test:
7567
- rsmcompare --help
7668
- rsmpredict --help
7769
- rsmsummarize --help
70+
- rsmxval --help
7871
- render_notebook --help
7972
- convert_feature_json --help
8073

doc/automated_configuration.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Auto-generating configuration files
44
-----------------------------------
5-
Configuration files for :ref:`rsmtool <config_file_rsmtool>`, :ref:`rsmeval <config_file_rsmeval>`, :ref:`rsmcompare <config_file_rsmcompare>`, :ref:`rsmpredict <config_file_rsmpredict>`, :ref:`rsmsummarize <config_file_rsmsummarize>`, :ref:`rsmxval <config_file_rsmxval>` can be difficult to create manually due to the large number of configuration options supported by these tools. To make this easier for users, all of these tools support *automatic* creation of configuration files, both interactively and non-interactively.
5+
Configuration files for :ref:`rsmtool <config_file_rsmtool>`, :ref:`rsmeval <config_file_rsmeval>`, :ref:`rsmcompare <config_file_rsmcompare>`, :ref:`rsmpredict <config_file_rsmpredict>`, :ref:`rsmsummarize <config_file_rsmsummarize>`, and :ref:`rsmxval <config_file_rsmxval>` can be difficult to create manually due to the large number of configuration options supported by these tools. To make this easier for users, all of these tools support *automatic* creation of configuration files, both interactively and non-interactively.
66

77
Interactive generation
88
~~~~~~~~~~~~~~~~~~~~~~
@@ -16,7 +16,7 @@ For example, to generate an ``rsmtool`` configuration file interactively, run th
1616
The following screencast shows an example interactive session after the above command is run (click to play):
1717

1818
.. raw:: html
19-
19+
2020
<script id="asciicast-313107" src="https://asciinema.org/a/313107.js" data-autoplay="false" async></script>
2121

2222

@@ -36,15 +36,15 @@ There are some configuration options that can accept multiple inputs. For exampl
3636
The following screencast shows the interactive session (click to play):
3737

3838
.. raw:: html
39-
39+
4040
<script id="asciicast-313149" src="https://asciinema.org/a/313149.js" data-autoplay="false" async></script>
4141

4242
And here is the generated configuration file for ``rsmsummarize``:
4343

4444
.. literalinclude:: assets/example_rsmsummarize.json
4545
:language: javascript
4646

47-
.. important::
47+
.. important::
4848

4949
If you want to include subgroup information in the reports for ``rsmtool``, ``rsmeval``, ``rsmcompare``, and ``rsmxval``, you should add ``--subgroups`` to the command. For example, when you run ``rsmeval generate --interactive --subgroups`` you would be prompted to enter the subgroup column names and the ``general_sections`` list (if shown [#f1]_) will also include subgroup-based sections. Since the ``subgroups`` option can accept multiple inputs, it is handled in the same way as the ``experiment_dirs`` option for ``rsmsummarize`` above.
5050

@@ -58,7 +58,7 @@ We end with a list of important things to note about interactive generation:
5858

5959
- Required fields will *not* accept a blank input (just pressing enter) and will show an error message in the bottom left until a valid input is provided.
6060

61-
- Optional fields will accept blank inputs since they have default values that will be used if no user input is provided. In some cases, default values are shown underlined in parentheses.
61+
- Optional fields will accept blank inputs since they have default values that will be used if no user input is provided. In some cases, default values are shown underlined in parentheses.
6262

6363
- You can also use ``-i`` as an alias for ``--interactive`` and ``-g`` as an alias for ``--subgroups``. So, for example, if you want to interactively generate a configuration file with subgroups for ``rsmtool``, just run ``rsmtool generate -ig`` instead of ``rsmtool generate --interactive --subgroups``.
6464

doc/getting_started.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22

33
Installation
44
============
5-
Note that RSMTool currently works with Python 3.7, 3.8, and 3.9.
5+
Note that RSMTool currently works with Python 3.8, 3.9, and 3.10.
66

77
Installing with conda
88
----------------------
99

1010
Currently, the recommended way to install RSMTool is by using the ``conda`` package manager. If you have already installed ``conda``, you can skip straight to Step 2.
1111

12-
1. To install ``conda``, follow the instructions on `this page <https://conda.io/projects/conda/en/latest/user-guide/install/index.html>`_.
12+
1. To install ``conda``, follow the instructions on `this page <https://conda.io/projects/conda/en/latest/user-guide/install/index.html>`_.
1313

14-
2. Create a new conda environment (say, ``rsmtool``) and install the RSMTool conda package for your preferred Python version. For example, for Python 3.7, run::
14+
2. Create a new conda environment (say, ``rsmtool``) and install the RSMTool conda package for your preferred Python version. For example, for Python 3.8, run::
1515

16-
conda create -n rsmtool -c conda-forge -c ets python=3.7 rsmtool
16+
conda create -n rsmtool -c conda-forge -c ets python=3.8 rsmtool
1717

1818
3. Activate this conda environment by running ``conda activate rsmtool``. You should now have all of the RSMTool command-line utilities in your path. [#]_
1919

doc/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Rater Scoring Modeling Tool (RSMTool)
1515

1616
.. image:: assets/spacer.png
1717

18-
Automated scoring of written and spoken responses is a growing field in educational natural language processing. Automated scoring engines employ machine learning models to predict scores for such responses based on features extracted from the text/audio of these responses. Examples of automated scoring engines include `MI Write <https://measurementinc.com/miwrite>`_ for written responses and `SpeechRater <https://www.ets.org/research/topics/as_nlp/speech/>`_ for spoken responses.
18+
Automated scoring of written and spoken responses is a growing field in educational natural language processing. Automated scoring engines employ machine learning models to predict scores for such responses based on features extracted from the text/audio of these responses. Examples of automated scoring engines include `MI Write <https://measurementinc.com/miwrite>`_ for written responses and `SpeechRater <https://www.ets.org/research/policy_research_reports/publications/report/2008/hukv>`_ for spoken responses.
1919

2020
RSMTool is a python package which automates and combines in a *single* :doc:`pipeline <pipeline>` multiple analyses that are commonly conducted when building and evaluating automated scoring models. The output of RSMTool is a comprehensive, customizable HTML statistical report that contains the outputs of these multiple analyses. While RSMTool does make it really simple to run this set of standard analyses using a single command, it is also fully customizable and allows users to easily exclude unneeded analyses, modify the standard analyses, and even include custom analyses in the report.
2121

@@ -27,7 +27,7 @@ The primary means of using RSMTool is via the :doc:`command-line <usage_rsmtool>
2727
Documentation
2828
=============
2929

30-
.. note::
30+
.. note::
3131

3232
If you use the `Dash <https://kapeli.com/dash>`_ app on macOS, you can also download the complete RSMTool documentation for offline use. Go to the Dash preferences, click on "Downloads", then "User Contributed", and search for "RSMTool".
3333

doc/internal/release_process.rst

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ This process is only meant for the project administrators, not users and develop
99

1010
#. Run the ``tests/update_files.py`` script with the appropriate arguments to make sure that all test data in the new release have correct experiment ids and filenames. If any (non-model) files need to be changed this should be investigated before the branch is released. Please see more details about running this `here <https://rsmtool.readthedocs.io/en/stable/contributing.html#writing-new-functional-tests>`__.
1111

12-
.. note::
12+
.. note::
1313

1414
Several files have been excluded from the repository due to their non-deterministic nature so please do not add them back to the repository. The following files are currently excluded:
1515

1616
* Fairness test files for `lr-eval-system-score-constant` test
17-
* Predictions and all evaluation files for `linearsvr` test.
18-
19-
Note that the full set of outputs from these test files are also used as input for `rsmcompare` and `rsmsummarize` tests. These *input* files need to be updated following the process under **Example 2** in `Writing new functional tests <https://rsmtool.readthedocs.io/en/stable/contributing.html#writing-new-functional-tests>`_. You can also see `this pull request <https://github.com/EducationalTestingService/rsmtool/pull/525>`_ for more information.
17+
* Predictions and all evaluation files for `linearsvr` test.
18+
19+
Note that the full set of outputs from these test files are also used as input for `rsmcompare` and `rsmsummarize` tests. These *input* files need to be updated following the process under **Example 2** in `Writing new functional tests <https://rsmtool.readthedocs.io/en/stable/contributing.html#writing-new-functional-tests>`_. You can also see `this pull request <https://github.com/EducationalTestingService/rsmtool/pull/525>`_ for more information.
2020

2121
#. Create a release branch ``release/XX`` on GitHub.
2222

@@ -34,23 +34,21 @@ This process is only meant for the project administrators, not users and develop
3434

3535
#. Build the PyPI source and wheel distributions using ``python setup.py sdist build`` and ``python setup.py bdist_wheel build`` respectively.
3636

37-
#. Upload the source and wheel distributions to TestPyPI using ``twine upload --repository testpypi dist/*``. You will need to have the ``twine`` package installed and set up your ``$HOME/.pypirc`` correctly. See details `here <https://packaging.python.org/guides/using-testpypi/>`__. You will need to have the appropriate permissions for the ``ets`` organization
37+
#. Upload the source and wheel distributions to TestPyPI using ``twine upload --repository testpypi dist/*``. You will need to have the ``twine`` package installed and set up your ``$HOME/.pypirc`` correctly. See details `here <https://packaging.python.org/guides/using-testpypi/>`__. You will need to have the appropriate permissions for the ``ets`` organization on TestPyPI.
3838

3939
#. Install the TestPyPI package as follows::
4040

4141
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple rsmtool
4242

4343
#. Then run some tests from a RSMTool working copy. If the TestPyPI package works, then move on to the next step. If it doesn't, figure out why and rebuild and re-upload the package.
4444

45-
#. Build the new conda package by running the following command in the ``conda-recipe`` directory (note that this assumes that you have cloned RSMTool in a directory named ``rsmtool``)::
45+
#. Build the new conda package by running the following command in the ``conda-recipe`` directory (note that this assumes that you have cloned RSMTool in a directory named ``rsmtool``). Note that you may need to comment out lines in your `$HOME/.condarc` file if you are using ETS Artifactory and you get conflicts::
4646

4747
conda build -c conda-forge -c ets .
4848

49-
#. This will create python 3.7, 3.8, and 3.9 packages for your native platform, e.g., ``osx-64``.
50-
51-
#. Convert these built packages for the other two platforms. For example, if you ran the above command on macOS, run ``conda convert -p linux-64 -p win-64 <packages files>``, where `<packages_files>` are the package files that were created in step 10.
49+
#. This will create a noarch package with the path to the package printed out to the screen.
5250

53-
#. Upload all 9 package files (3 Python versions x 3 platforms) to anaconda.org using ``anaconda upload --user ets <path_to_files>``. You will need to have the appropriate permissions for the ``ets`` organization.
51+
#. Upload the package file to anaconda.org using ``anaconda upload --user ets <path_to_file>``. You will need to have the appropriate permissions for the ``ets`` organization.
5452

5553
#. Create pull requests on the `rsmtool-conda-tester <https://github.com/EducationalTestingService/rsmtool-conda-tester/>`_ and `rsmtool-pip-tester <https://github.com/EducationalTestingService/rsmtool-pip-tester/>`_ repositories to test the conda and TestPyPI packages on Linux and Windows.
5654

@@ -60,7 +58,7 @@ This process is only meant for the project administrators, not users and develop
6058

6159
#. Once the build for the PR passes and the reviewers approve, merge the release branch into ``main``.
6260

63-
#. Upload source and wheel packages to PyPI using ``python setup.py sdist upload`` and ``python setup.py bdist_wheel upload``
61+
#. Upload the already-built source and wheel packages to PyPI using ``twine upload dist/*``. You will need to have the ``twine`` package installed and set up your ``$HOME/.pypirc`` correctly. You will need to have the appropriate permissions for the ``ets`` organization on PyPI.
6462

6563
#. Make sure that the ReadTheDocs build for ``main`` passes by examining the badge at this `URL <https://img.shields.io/readthedocs/rsmtool/main.svg>`__ - this should say "passing" in green.
6664

rsmtool/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
in one place. Based on the suggestion `here. <http://bit.ly/16LbuJF>`_
44
"""
55

6-
__version__ = '8.1.2'
6+
__version__ = '9.0.0'
77
VERSION = tuple(int(x) for x in __version__.split('.'))

0 commit comments

Comments
 (0)