用于评估多个笔记本组件练习的工具。
项目描述
(多个)组件评分
我在使用单个或多个Jupyter笔记本组件批改作业时使用的一些工具。
笔记本可能有手动评分的问题,以及用于评分的图表。
它们假设一些Canvas](https://www.instructure.com/canvas) 文件命名约定和成绩输出CSV格式。
这些工具主要由命令行工具组成,其中包含一些在实用程序库中的支持代码。
快速入门
对于单个组件提交
COMPONENTS_DIR=components
mcp-check-unpack
mcp-prepare-components
mcp-find-duplicates $COMPONENTS_DIR/*/*.Rmd
mcp-cp-models
mcp-extract-manual
rnbg-allow-raise $COMPONENTS_DIR/*/*.Rmd --show-error
mcp-extract-plots
mcp-grade-nbs
# Review `<component>/marking/autograde.md`.
# Rerun after any edits.
mcp-grade-nbs
mcp-grade-component
mcp-scale-combine
对于多个组件提交
COMPONENTS_DIR=components
mcp-check-unpack
mcp-prepare-components
mcp-find-duplicates $COMPONENTS_DIR/*/*.Rmd
mcp-cp-models
# For each component
COMPONENT=my_component
rnbg-allow-raise $COMPONENTS_DIR/$COMPONENT/*.Rmd --show-error
mcp-grade-nbs $COMPONENT
# Review `$COMPONENT/marking/autograde.md`.
# Rerun after any edits.
mcp-grade-nbs $COMPONENT
mcp-extract-manual $COMPONENT
mcp-extract-plots $COMPONENT
mcp-grade-component $COMPONENT
# Finally
mcp-scale-combine
设置环境
为运行评分代码创建一个虚拟环境/Conda环境,并在该环境中设置自己
python -m virtualenv ~/envs/marking-env
source ~/envs/marking-env/bin/activate
或者
conda create --name marking-env
conda activate marking-env
conda install pip
要从存储库本地安装,您需要flit
pip install flit
然后安装MCPMark及其依赖项
cd mcpmark # Directory containing this README
flit install -s
使用以下命令测试一切是否按预期工作
pip install -r test-requirements.txt
pytest mcpmark
典型的评分运行
- 确保您已经使用例如
source ~/envs/marking-env
或conda activate marking-env
激活了上面的环境 - 为评分创建一个目录,称为
homework1
或类似。 cd homework1
- 下载提交(多笔记本提交的
.zip
文件,单笔记本提交的.ipynb
文件)。在当前目录中下载一些目录,例如submissions
。在多笔记本提交的情况下,每个学生应该有一个.zip
文件,在单笔记本提交的情况下,每个学生应该有一个.ipynb
文件。 - 将Canvas成绩CSV文件下载到这个(
homework1
)目录。 - 编辑
assign_config.yaml
—— 请参阅doc/
目录中的示例。使用components
字段命名和定义组件。每个组件对应一个笔记本,因此单个笔记本提交将有单个组件,多个笔记本提交将有多个组件。 - 以下内容中,“组件名称”是指在
assign_config.yaml
文件中为单个笔记本分配的名称。 - 开发用于通过内容识别笔记本的脚本——请参阅
doc
目录中的示例,以及mcpmark/cli/prepare_components.py
中的代码。这允许 Mcpmark 检查学生是否为每个所需组件都有一个匹配的笔记本。 - 运行
mcp-check-unpack
。如果出现任何错误,请检查并可能更改提交文件名。 - 运行
mcp-prepare-components
。这将检查相关学生文件中的所有学生是否为所有必需组件提交了匹配的笔记本。错误消息应告诉您缺少什么。如果您发现警告是误报,并且您尚未期望此学生提交(尚无),则在assign_config.yaml
文件的known_missing
列表中填写他们的 ID,以告知 Mcpmark 不要检查他们的提交。然后重新运行mcp-prepare-components
,直到不再出现错误。 - 以下内容中,如果您只有一个组件,通常可以省略
<component_name>
参数。 - 对于以下项目,假设脚本
rerun
在路径上,其内容为while true; do $@; done
- 按笔记本/组件
- 在
model/<component_name>/tests
目录中开发测试。 - 使用
grade_oknb.py
测试测试。 - 使用
mcp-cp-models
将测试等复制到组件目录。 - 例如,使用
mcp-find-duplicates components/my_component/*.Rmd
来分析重复项,将摘要写入某个文件,例如report.md
。 - 使用
mcp-run-notebooks <path_to_notebooks>
检查笔记本执行情况。考虑使用例如rerun mcp-run-notebooks components/pandering
来持续测试笔记本。 - 将任何无法修复的笔记本移动到
broken
目录,并在marking/broken.csv
文件中标记。 - 运行
mcp-extract-manual <component_name>
(对于单个组件提交,组件名称是可选的)。编辑找不到手动组件的笔记本。也许例如rerun mcp-extract-manual pandering
。 - 在
<component>/marking/*_report.md
中标记生成的手动文件。 - 使用类似
mcp-manual-scores components/lymphoma/dunleavy_plausible_report.md
的方式检查手动评分。或者您可以在使用mcp-grade-component
对整个组件进行评分时再进行。 - 运行
mcp-extract-plots <component_name>
(对于单个组件提交,组件名称是可选的)。编辑marked/plot_nbs.ipynb
以添加评分。 - 使用
mcp-grade-nbs <component_name>
运行自动评分(如果只有一个组件,<component_name>
是可选的)。 - 审查
<component>/marking/autograde.md
。 - 使用
#M:
符号更新任何手动修复,以添加/减分。这些是代码单元格/块中的行,形式为#M: <score_increment>
—— 例如#M: -2.5
。它们通过mcp-grade-components
达到最终分数。 - 最后运行
mcp-grade-nbs
。 - 运行
mcp-grade-component <component_name>
;(如果只有一个组件,<component_name>
是可选的)。
- 在
完成后
- 运行
mcp-scale-combine
以将组件评分重新缩放为其在assign_config.yaml
中给出的出图值,并生成汇总.csv
文件。即使只有一个组件,也请执行此操作(以便进行缩放)。 - 运行
mcp-export-marks
以将ncp-rescale-combines
的输出转换为导入到 Canvas 的格式。
实用工具
mcputils
—— 支持脚本的多种实用工具。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包的信息。
源代码分发
mcpmark-0.1.tar.gz (31.8 kB 查看哈希值)
构建分发
mcpmark-0.1-py3-none-any.whl (39.1 kB 查看哈希值)
关闭
mcpmark-0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8b32be012a8852b4ec3c48f04b638d1597c0a1cf64f5202b21b6201c1cb6c814 |
|
MD5 | b609391d83d675883e7fffb39f42ac05 |
|
BLAKE2b-256 | 46275c5d2538a643db75c5654bb74455620fcd3f6439fa29a2af5101fa082dbb |
关闭
mcpmark-0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d725caa5ba290db02f0b0ccca8bd8407906dd19f8356f29179fedfde0a96b0e |
|
MD5 | 715fbe38d32a85cafe70aad1fea8ba41 |
|
BLAKE2b-256 | dcb781871707006a829206f825eadd4dfed9fdacebc5916169216aa395c3c27f |