跳转到主要内容

用于评估多个笔记本组件练习的工具。

项目描述

(多个)组件评分

我在使用单个或多个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-envconda 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 查看哈希值)

上传时间 Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页