feat: 新增科研软件 benchmark 任务数据
- 新增 avogadro/imagej/jade/origin/ovito/pymol/vesta 等科研软件任务 JSON - 修改 vllm_eval.py,修改图片文件名称为第x步 - desktop_env.py 添加额外数据参数 config 和 metadata
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "building-metal-complexes_task1",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 2 中,使用 Template Tool 创建 [Co(NH3)6]3+ 配位化合物,设置为八面体配位几何。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 Template Tool(快捷键 Ctrl+3 或点击工具栏图标)。\n2. 切换到 Centers 选项卡。\n3. 输入 'Co' 或从弹出菜单中选择钴元素。\n4. 点击三次 '+' 符号,将正电荷设置为 +3。\n5. 按键 '6' 或选择八面体几何形状。\n6. 点击空白区域,放置钴中心,六个氢原子会显示在配位位置。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "building-metal-complexes_task3",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 2 中,使用 Template Tool 创建 [Ni(en)(NH3)2]2+ 配位化合物,设置为平面四方配位几何。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 Template Tool。\n2. 切换到 Centers 选项卡。\n3. 输入 'Ni' 或从弹出菜单中选择镍元素。\n4. 点击两次 '+' 符号,将正电荷设置为 +2。\n5. 按键 '44' 或选择平面四方几何形状。\n6. 点击空白区域,放置镍中心,四个氢原子会显示在配位位置。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "building-metal-complexes_task7",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 2 中,创建具有两个环戊二烯基 (Cp) 和两个氯配体的 ZrCp2Cl2 配合物。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 Template Tool,点击 Centers 选项卡。\n2. 输入 'Zr' 或选择锆元素。\n3. 点击四次 '+',将正电荷设置为 +4。\n4. 按键 '4',选择四面体几何形状。\n5. 在空白区域放置锆中心。\n6. 切换到 Ligands 选项卡,输入 'cp' 或选择环戊二烯基。\n7. 点击一个氢原子,添加第一个 Cp 配体。\n8. 点击相邻氢,添加第二个 Cp 配体。\n9. 切换到 Draw Tool(快捷键 Ctrl+2)。\n10. 选择 Cl 元素。\n11. 点击两个剩余氢原子,每次点击替换为氯配体。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "building-organic-molecules_task1",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 2 中,使用软件的 Build 工具插入一个苯环。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击 Build → Insert → Molecule。\n2. 搜索 'benzene' 并确定插入该分子。\n3. 确保苯环显示在工作界面中。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "building-organic-molecules_task3",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 2 中,在甲苯分子的对位添加一硝基(-NO2),生成 4-硝基甲苯。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 按 'N' 键选择硝基。\n2. 点击甲基对位(苯环上的一个氢原子),将其替换为 -NO2。\n3. 确保分子结构正确。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "building-organic-molecules_task4",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 2 中,为甲苯分子执行几何优化。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 按 Ctrl+Alt+O 或点击 Auto Optimize 工具执行几何优化。\n2. 检查分子是否获得合乎逻辑的几何结构。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "building-organic-molecules_task5",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 2 中,使用 Draw Tool 创建一个单碳结构,然后添加一个羧基(-COOH)。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 使用 Draw Tool 在界面中绘制一个单碳。\n2. 激活 Template Tool,通过按 Ctrl+3 或点击工具栏上的图标进入 Groups。\n3. 按 'C' 或 'co' 选择羧基。\n4. 点击单碳结构上的一个氢原子,将其替换为羧基。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "building-organic-molecules_task9",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 2 中,创建一个 4-甲氧基-3-硝基苯甲酸分子,包含苯环、羧基、硝基和甲氧基。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 插入苯环。\n2. 按 'C' 键选择羧基,并添加到苯环的第 1 个位置。\n3. 按 'N' 键选择硝基,并添加到苯环的第 3 个位置。\n4. 按 'om' 键选择甲氧基,并添加到苯环的第 4 个位置。\n5. 使用优化工具进行几何优化并检查分子是否正确。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "naming-a-molecule_task1",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 中通过 Analysis → Properties → Molecular... 查看当前分子的 IUPAC 名称及相关性质。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 Avogadro 软件。\n2. 点击菜单栏中的 Analysis。\n3. 从下拉菜单选择 Properties。\n4. 点击 Molecular...。\n5. 在弹出的 'Molecular Properties' 窗口中查看分子的名字和相关信息,例如分子质量、化学式、原子数和键数。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "viewing-electrostatic-potential_task1",
|
||||
"snapshot": "avogadro",
|
||||
"instruction": "在 Avogadro 中通过 Analyze → Create Surfaces 菜单创建 Van der Waals 表面并设置电荷分布可视化。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\Avogadro2\\bin\\avogadro2.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"avogadro"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 Avogadro 软件并加载目标分子的模型。\n2. 通过菜单栏选择 Analyze → Create Surfaces。\n3. 在弹出的 Create Surfaces 对话框中,将 Surface 设置为 'Van der Waals'。\n4. 将 Color By 设置为 'Electrostatic Potential'。\n5. 选择一个电荷模型(例如 'EEM')。\n6. 选择色阶为 'Balance'。\n7. 点击 'Calculate' 按钮开始计算表面。\n8. 等待软件完成计算,点击 'Close' 关闭对话框。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/imagej/user-guide_task1.json
Normal file
44
evaluation_examples/examples/imagej/user-guide_task1.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "user-guide_task1",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 File → New → Image 创建一个名为 'Text Image' 的新图像,设置图像类型为 8-bit,背景填充为 White,并设置宽度为 40 像素,高度为 40 像素。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在菜单栏点击 File → New → Image。\n2. 在弹出的对话框中输入名称 'Text Image'。\n3. 从 Type 下拉菜单中选择 '8-bit'。\n4. 从 Fill With 下拉菜单中选择 'White'。\n5. 在宽度(Width)框中输入 40。\n6. 在高度(Height)框中输入 40。\n7. 点击 OK 按钮完成操作。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/imagej/user-guide_task10.json
Normal file
44
evaluation_examples/examples/imagej/user-guide_task10.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "user-guide_task10",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 Edit → Selection → Restore Selection 恢复之前存储的选区。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在菜单栏点击 Edit → Selection → Restore Selection。\n2. 在图像上确保选区可见。\n3. 查看并确认选区正确恢复。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/imagej/user-guide_task2.json
Normal file
57
evaluation_examples/examples/imagej/user-guide_task2.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "user-guide_task2",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 Process → Find Maxima 对 blobs.gif 图像执行 Maxima 寻找,设置噪声容忍值为 50,并选择 Output Type 为 'Single Points'。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/imagej/blobs.gif",
|
||||
"path": "C:\\Users\\user\\Desktop\\blobs.gif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"blobs.gif"
|
||||
],
|
||||
"steps": "1. 打开 blobs.gif 文件。\n2. 在菜单栏点击 Process → Find Maxima。\n3. 在弹出的对话框中,将 Noise Tolerance 设置为 50。\n4. 从 Output Type 下拉菜单中选择 'Single Points'。\n5. 点击 OK 按钮完成操作。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/imagej/user-guide_task3.json
Normal file
44
evaluation_examples/examples/imagej/user-guide_task3.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "user-guide_task3",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 Plugins → Utilities → Find Commands 查找关键字 'threshold' 的相关命令,显示完整信息并运行 'Adaptive3DThreshold'。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在菜单栏点击 Plugins → Utilities → Find Commands。\n2. 在弹出的 Command Finder 窗口中输入 'threshold'。\n3. 勾选 'Show full information'。\n4. 在列表中选择 'Adaptive3DThreshold' 并双击运行命令。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/imagej/user-guide_task4.json
Normal file
44
evaluation_examples/examples/imagej/user-guide_task4.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "user-guide_task4",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 Image → Adjust → Threshold 使用 'Default' 自动阈值法对当前图像进行阈值分割,并设置显示模式为 Over/Under。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在菜单栏点击 Image → Adjust → Threshold。\n2. 在弹出的对话框中,从 Method 下拉菜单选择 'Default'。\n3. 确保 Display 模式设置为 'Over/Under'。\n4. 点击 Apply 按钮完成操作。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/imagej/user-guide_task5.json
Normal file
44
evaluation_examples/examples/imagej/user-guide_task5.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "user-guide_task5",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 Analyze → Tools → Curve Fitting 对数据拟合二次多项式,并将最大迭代次数设为 100。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在菜单栏点击 Analyze → Tools → Curve Fitting。\n2. 在弹出的对话框中,从 Function 下拉菜单选择 '2nd Degree Polynomial'。\n3. 点击 Fit 按钮。\n4. 在 Simplex Fitting Options 中,将 Maximum number of iterations 设置为 100。\n5. 点击 OK 按钮完成拟合。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/imagej/user-guide_task6.json
Normal file
57
evaluation_examples/examples/imagej/user-guide_task6.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "user-guide_task6",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 Image → Transform → Rotate 90 Degrees Right 旋转 mri-stack.tif 图像 90°。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/imagej/mri-stack.tif",
|
||||
"path": "C:\\Users\\user\\Desktop\\mri-stack.tif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"mri-stack.tif"
|
||||
],
|
||||
"steps": "1. 打开 mri-stack.tif 文件。\n2. 在菜单栏点击 Image → Transform → Rotate 90 Degrees Right。\n3. 确保图像正确旋转后保存或查看结果。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/imagej/user-guide_task7.json
Normal file
44
evaluation_examples/examples/imagej/user-guide_task7.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "user-guide_task7",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 Process → Binary → Options 设置黑色背景选项为开启状态并进行预览。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在菜单栏点击 Process → Binary → Options。\n2. 在弹出的对话框中勾选 'Black Background'。\n3. 点击 Preview 查看效果。\n4. 点击 OK 按钮保存选项。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/imagej/user-guide_task8.json
Normal file
44
evaluation_examples/examples/imagej/user-guide_task8.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "user-guide_task8",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 File → Save As → PNG 保存当前图像为 PNG 格式,设置透明索引为 255。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在菜单栏点击 File → Save As → PNG。\n2. 在弹出的对话框中,将透明索引设置为 255。\n3. 输入文件名并指定保存路径。\n4. 点击 OK 按钮完成保存。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/imagej/user-guide_task9.json
Normal file
44
evaluation_examples/examples/imagej/user-guide_task9.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "user-guide_task9",
|
||||
"snapshot": "imagej",
|
||||
"instruction": "在 ImageJ 中,通过 Analyze → Measure 测量当前选区的面积和灰度值。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\ImageJ\\ImageJ.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"imagej"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 创建或选择一个区域选区。\n2. 在菜单栏点击 Analyze → Measure。\n3. 在弹出的 Results 窗口中查看面积和灰度值等测量结果。"
|
||||
}
|
||||
}
|
||||
46
evaluation_examples/examples/jade/MDIJade6.5使用手册_task1.json
Normal file
46
evaluation_examples/examples/jade/MDIJade6.5使用手册_task1.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"id": "MDIJade6.5使用手册_task1",
|
||||
"snapshot": "jade",
|
||||
"instruction": "在 MDI Jade 中通过菜单 File → Patterns 加载衍射数据文件 DEMO001.MDI。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\JADE\\jade 6.5\\MDI Jade 6.5\\jade6.5.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"DEMO001.MDI"
|
||||
],
|
||||
"steps": "1. 在桌面找到 MDI Jade 图标,双击打开软件。\n2. 点击菜单 File → Patterns。\n3. 在弹出的对话框中选择 DEMO001.MDI 并点击 Open。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task10.json
Normal file
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task10.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MDIJade6.5使用手册_task10",
|
||||
"snapshot": "jade",
|
||||
"instruction": "从菜单 Options → Cell Refinement 打开晶胞点阵参数对话框并精修点阵常数。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\JADE\\jade 6.5\\MDI Jade 6.5\\jade6.5.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单 Options → Cell Refinement。\n2. 在弹出的对话框中检查点阵参数。\n3. 点击 Refine 按钮进行精修。\n4. 检查精修结果并保存。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task2.json
Normal file
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task2.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MDIJade6.5使用手册_task2",
|
||||
"snapshot": "jade",
|
||||
"instruction": "在 JADE 中将当前打开的衍射图谱通过 File → Save-Primary Pattern as *.txt 导出为 ASCII 格式,保存为 DEMO001.txt。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\JADE\\jade 6.5\\MDI Jade 6.5\\jade6.5.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单 File → Save-Primary Pattern as *.txt。\n2. 在弹出的保存对话框中,设置文件名为 DEMO001.txt。\n3. 点击 Save 按钮保存文件。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task3.json
Normal file
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task3.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MDIJade6.5使用手册_task3",
|
||||
"snapshot": "jade",
|
||||
"instruction": "使用 Search/Match 功能进行物相检索,并限制元素范围为 Al, Sn, O。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\JADE\\jade 6.5\\MDI Jade 6.5\\jade6.5.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单 S/M 按钮。\n2. 在 Search/Match 对话框中勾选 Use Chemistry Filter。\n3. 输入限定元素 Al, Sn, O,点击 OK。\n4. 等待物相检索完成,检查结果列表。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task4.json
Normal file
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task4.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MDIJade6.5使用手册_task4",
|
||||
"snapshot": "jade",
|
||||
"instruction": "在 JADE 中通过 Options → Report-Peak ID Extended 计算 RIR 方法的物相质量分数,并保存结果为 PDF 格式。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\JADE\\jade 6.5\\MDI Jade 6.5\\jade6.5.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开菜单 Options → Report-Peak ID Extended。\n2. 确认结果数据,确保内容显示完整。\n3. 点击 Save,选择文件类型为 PDF。\n4. 输入文件名并点击保存。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task5.json
Normal file
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task5.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MDIJade6.5使用手册_task5",
|
||||
"snapshot": "jade",
|
||||
"instruction": "通过 Report → Peak Search Report 菜单计算晶粒大小及微观应变,设置 D 值为 1。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\JADE\\jade 6.5\\MDI Jade 6.5\\jade6.5.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单 Report → Peak Search Report。\n2. 在弹出的对话框中选择 Size/strain 选项。\n3. 设置反卷积参数 D 值为 1。\n4. 点击 Save 按钮保存计算结果。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task6.json
Normal file
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task6.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MDIJade6.5使用手册_task6",
|
||||
"snapshot": "jade",
|
||||
"instruction": "通过 File → Save 菜单保存当前仪器半高宽校正曲线到 Si_hw_curve.fwhm。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\JADE\\jade 6.5\\MDI Jade 6.5\\jade6.5.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单 File。\n2. 选择 Save → FWHM Curve of Peaks。\n3. 在保存对话框中输入文件名 Si_hw_curve.fwhm。\n4. 点击 Save 按钮完成保存。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task7.json
Normal file
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task7.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MDIJade6.5使用手册_task7",
|
||||
"snapshot": "jade",
|
||||
"instruction": "调用 Options → D-Spacing 菜单计算已知结构的衍射谱,加权强度公式为 Z = 12。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\JADE\\jade 6.5\\MDI Jade 6.5\\jade6.5.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开菜单 Options → D-Spacing。\n2. 在计算衍射谱对话框中,设置加权强度公式参数 Z 值为 12。\n3. 点击 Calculate 按钮以生成计算结果。\n4. 检查结果并关闭窗口。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task8.json
Normal file
44
evaluation_examples/examples/jade/MDIJade6.5使用手册_task8.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MDIJade6.5使用手册_task8",
|
||||
"snapshot": "jade",
|
||||
"instruction": "通过 Options → Calculate Stress 菜单计算残余应力,使用 Fit All 功能拟合曲线。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\JADE\\jade 6.5\\MDI Jade 6.5\\jade6.5.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单 Options → Calculate Stress。\n2. 在弹出的对话框中,选择以 Fit All 功能拟合所有数据。\n3. 检查拟合结果图。\n4. 点击 Save 按钮以保存拟合结果文件。"
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"id": "jade_test",
|
||||
"snapshot": "snapshot",
|
||||
"instruction": "请打开桌面上的 JADE 6.5 软件",
|
||||
"source": "custom",
|
||||
"config": [],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"jade"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval",
|
||||
"result": {
|
||||
"type": "vm_command_line",
|
||||
"command": "tasklist | findstr /i jade"
|
||||
}
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low"
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "Origin_User_Guide_2025b_E_task1",
|
||||
"snapshot": "origin",
|
||||
"instruction": "在 Origin 中通过 Data → Connect to File 导入一个本地 Excel 文件 example.xlsx",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/origin/example.xlsx",
|
||||
"path": "C:\\Users\\user\\Desktop\\example.xlsx"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OriginLab\\Origin2025b\\Origin64.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"origin"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"example.xlsx"
|
||||
],
|
||||
"steps": "1. 在 Origin 的主菜单中选择 Data → Connect to File。\n2. 点击 Connect to File 菜单中的按钮。\n3. 选择文件 example.xlsx 并点击 Open。\n4. 数据将被加载到当前的工作表中。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Origin_User_Guide_2025b_E_task11",
|
||||
"snapshot": "origin",
|
||||
"instruction": "在 Origin 中通过 Graph → Adding Error Bars 添加误差条到现有图表",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OriginLab\\Origin2025b\\Origin64.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"origin"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开一个现有图表并右键点击图表元素。\n2. 选择 Graph → Adding Error Bars。\n3. 选择误差数据列并点击 OK 应用。\n4. 查看图表是否正确添加了误差条。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Origin_User_Guide_2025b_E_task12",
|
||||
"snapshot": "origin",
|
||||
"instruction": "在 Origin 中通过 Tools → Pick Data Points 工具拾取数据点并保存到新的工作表中",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OriginLab\\Origin2025b\\Origin64.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"origin"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开一个包含数据点的图表。\n2. 在主菜单中选择 Tools → Pick Data Points。\n3. 使用交叉标记在图中选择数据点。\n4. 点击 Done 按钮以保存选择的数据点到新的工作表。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Origin_User_Guide_2025b_E_task2",
|
||||
"snapshot": "origin",
|
||||
"instruction": "在 Origin 中通过 View → Formula Bar 打开公式栏,并在公式栏输入 =stdev(B1:B10)",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OriginLab\\Origin2025b\\Origin64.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"origin"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在主菜单中选择 View → Formula Bar。\n2. 在出现的公式栏中,点击当前单元格内并输入 =stdev(B1:B10)。\n3. 按 Enter 键以应用公式并计算结果。\n4. 检查公式栏输出的结果是否正确。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Origin_User_Guide_2025b_E_task3",
|
||||
"snapshot": "origin",
|
||||
"instruction": "在 Origin 中通过 Axis Dialog 修改 X 轴的范围为 20 到 180",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OriginLab\\Origin2025b\\Origin64.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"origin"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在图层的 X 轴区域右键点击并选择 Axis Dialog。\n2. 在左侧选择 Scale 标签。\n3. 将 From 值修改为 20,将 To 值修改为 180。\n4. 点击 Apply To 按钮以应用更改,然后点击 OK 完成。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Origin_User_Guide_2025b_E_task4",
|
||||
"snapshot": "origin",
|
||||
"instruction": "在 Origin 中通过 Graph → Rescale to Show All 重设比例以显示所有数据",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OriginLab\\Origin2025b\\Origin64.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"origin"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开一个包含数据的图表。\n2. 在主菜单选择 Graph → Rescale to Show All。\n3. 图表比例重设以显示所有数据点。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Origin_User_Guide_2025b_E_task5",
|
||||
"snapshot": "origin",
|
||||
"instruction": "在 Origin 中通过 Tools → Data Slicer 激活数据切片器并设置切片条件为 X=50",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OriginLab\\Origin2025b\\Origin64.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"origin"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在主菜单中选择 Tools → Data Slicer。\n2. 数据切片器面板将被激活。\n3. 在切片器的条件中选择 X=50 并应用切片。\n4. 图表中将显示切片后的数据点。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Origin_User_Guide_2025b_E_task8",
|
||||
"snapshot": "origin",
|
||||
"instruction": "在 Origin 中通过 Worksheet → Convert to Matrix 将活动表格转换成矩阵",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OriginLab\\Origin2025b\\Origin64.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"origin"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开一个包含数据的活动表格。\n2. 在主菜单中选择 Worksheet → Convert to Matrix。\n3. 根据对话框选择矩阵转换选项(例如 X Across Columns)。\n4. 点击 OK 完成转换,生成矩阵数据。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Origin_User_Guide_2025b_E_task9",
|
||||
"snapshot": "origin",
|
||||
"instruction": "在 Origin 中通过 Object Edit Toolbar 对齐选中的图表对象",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OriginLab\\Origin2025b\\Origin64.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"origin"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 使用鼠标选择需要对齐的对象。\n2. 打开 Object Edit Toolbar。\n3. 点击对齐按钮,例如 Align Left 或 Align Center。\n4. 所选对象将以统一对齐样式排列。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/ovito/animation_task3.json
Normal file
44
evaluation_examples/examples/ovito/animation_task3.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "animation_task3",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中将动画帧数从默认设置改为 10 帧每秒。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在 OVITO 的顶部菜单栏中选择 'Animation settings'。\n2. 在弹出的 'Animation settings' 窗口中,找到 'Frames per second' 输入框。\n3. 将帧速率设置为 10。\n4. 点击 'OK' 以保存更改。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "aspherical_particles_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中,为粒子指定球形形状。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 OVITO 软件。\n2. 选择 File → New 或打开一个现有的粒子数据文件。\n3. 在 'Pipeline' 界面选择 'Particles' 可视化元素。\n4. 转到 'Particle types' 面板,将粒子形状调整为 Sphere(球形)。\n5. 确认并应用更改,确保形状为球形并更新可视化。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/ovito/clone_pipeline_task1.json
Normal file
44
evaluation_examples/examples/ovito/clone_pipeline_task1.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "clone_pipeline_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中,通过主工具栏中的 Pipeline 下拉菜单,选择 'Clone current pipeline...' 选项来克隆当前数据通道。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在 OVITO 的主工具栏中找到 'Pipelines' 下拉菜单。\n2. 点击下拉菜单并选择 'Clone current pipeline...'。\n3. 在打开的 'Clone pipeline' 对话框中,选择克隆模式(如 Copy 或 Share)。\n4. 点击 'OK' 按钮完成克隆操作。\n5. 确认在可视化场景中同时显示原始通道和克隆通道的输出。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "code_generation_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中,通过 File → Generate Python Script 打开代码生成器窗口。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 启动 OVITO 软件。\n2. 点击顶部菜单栏中的 File。\n3. 在下拉菜单中选择 Generate Python Script。\n4. 确保代码生成器窗口正常打开(可见 Python 代码编辑界面)。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "customize_init_state_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中创建一个名为 defaults.ovito 的文件,以保存空的初始会话状态。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 OVITO。\n2. 点击菜单栏中的 File → Save Session State As。\n3. 在弹出的文件保存对话框中,将文件命名为 defaults.ovito。\n4. 确保会话为空(即不包含数据集和管道)。\n5. 点击保存按钮。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/ovito/data_model_task1.json
Normal file
44
evaluation_examples/examples/ovito/data_model_task1.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "data_model_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中,通过 Data Inspector 检查导入的粒子属性表,包括 Position 和 Potential Energy 列。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 OVITO 软件。\n2. 导入一个包含粒子属性的模拟文件(如 .xyz 格式)。\n3. 点击顶部工具栏中的 Data Inspector 按钮。\n4. 在 Data Inspector 面板查看粒子属性表,包括 Position 和 Potential Energy 列。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/ovito/export_task1.json
Normal file
44
evaluation_examples/examples/ovito/export_task1.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "export_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中,将当前数据管道导出为粒子及其属性的数据表,保存为文件 particle_data.csv。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在菜单栏中,点击 File → Export File。\n2. 在弹出的对话框中,选择导出格式为 'Table of Particles'.\n3. 指定文件名为 particle_data.csv,并选择保存位置。\n4. 点击 'Save' 按钮以完成导出。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "marker_particles_task2",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中,调整动画播放速度为每秒 15 帧。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在 OVITO 界面上,点击 Animation Settings 按钮(小钟图标)。\n2. 在 Animation Settings 窗口中,找到 'Frames per second'(帧率)选项。\n3. 将 Frames per second 的值设置为 15。\n4. 点击 'OK' 确认设置。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/ovito/miscellaneous_task1.json
Normal file
44
evaluation_examples/examples/ovito/miscellaneous_task1.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "miscellaneous_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中,通过 File → Save Session State 保存当前会话为 'session.ovitostate'。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单栏中的 File。\n2. 选择 Save Session State。\n3. 在弹出的保存对话框中选择目标路径并输入文件名 'session.ovitostate'。\n4. 点击 Save 保存文件。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "python_extensions_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO Pro 中,通过 Edit → Python Extensions 打开扩展目录。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 OVITO Pro 软件。\n2. 点击顶部菜单栏中的 Edit 菜单。\n3. 从下拉菜单中选择 Python Extensions。\n4. 查看扩展目录窗口,确认已打开。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "remote_file_access_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中,通过 File → Load Remote File 打开远程 SSH 文件 sftp://user@hostname/path/file",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 OVITO 软件。\n2. 点击菜单 File → Load Remote File。\n3. 在弹出的对话框中填写 Remote URL 字段,例如:sftp://user@hostname/path/file。\n4. 在 File type 下选择 Auto-detect file format。\n5. 在 SSH connection method 下选择 Integrated client (default)。\n6. 点击 Open 完成连接并加载文件。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "remote_rendering_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO Pro 中设置远程渲染任务的导出目录并配置 CPU 核心数。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 OVITO Pro 软件。\n2. 点击顶部菜单中的 Utilities 标签。\n3. 选择 Render On Remote Computer 工具。\n4. 在弹出的对话框中,点击 'Choose' 按钮为 Bundle Export Directory 设置一个本地导出目录。\n5. 在 CPU cores per task 选项框中输入渲染任务所需的 CPU 核心数量(可为空,默认使用所有核心)。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/ovito/rendering_task1.json
Normal file
44
evaluation_examples/examples/ovito/rendering_task1.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "rendering_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在 OVITO 中,通过 Render Settings 面板渲染主动观察窗口为分辨率 1024x768 的图像,背景为透明色。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 OVITO 软件。\n2. 确保观察窗口激活(黄色边框)。\n3. 点击右侧命令面板上的 Render 图标。\n4. 在弹出的 Render Settings 面板中,选择 'Single frame'。\n5. 设置输出图像大小为 Width: 1024 和 Height: 768。\n6. 选择背景为 'Transparent'。\n7. 点击 'Render active viewport' 按钮完成渲染。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "transparent_particles_task1",
|
||||
"snapshot": "ovito",
|
||||
"instruction": "在软件中,将所有粒子的 Transparency 属性设置为 0.5,使粒子半透明。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\OVITO Basic\\ovito.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"ovito"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开软件并加载需要的粒子数据。\n2. 插入 Compute 属性修正器到数据管道。\n3. 在 Compute 属性修正器中找到 Transparency 属性。\n4. 在表达式字段中输入透明度值 0.5。\n5. 应用设置,确保 Transparency 属性被分配给所有粒子。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_1_task1.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_1_task1.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_1_task1",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中,通过命令行制作一个简单动画,播放 NMR ensemble。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在 PyMOL 命令行中输入 `fetch 1nmr` 来加载 NMR ensemble。\n2. 输入 `mplay` 命令开始播放动画。\n3. 如果需要停止播放动画,输入 `mstop` 。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_1_task2.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_1_task2.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_1_task2",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中制作一个场景绕 Y 轴 360 度旋转的动画。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 从菜单中选择适当选项,用于创建场景绕 Y 轴旋转的动画。\n2. 按下“Pressplay”开始播放动画。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_1_task3.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_1_task3.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_1_task3",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中制作场景摇摆动画,可选择 30, 60, 90, 120 或 180 度摇摆角度。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 从菜单中选择用于设置场景摇摆动画的选项。\n2. 选择摇摆角度(例如 30、60、90、120 或 180 度)。\n3. 按下“Pressplay”启动动画。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_1_task4.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_1_task4.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_1_task4",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中制作一个简单的场景“摇摆(Nutate)”动画。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 从菜单中选择制作摇摆动画的选项。\n2. 设置摇摆效果参数。\n3. 按下“Pressplay”启动摇摆动画。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_1_task5.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_1_task5.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_1_task5",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中使用 Scene Loop 制作一个从原子缩放并返回的动画。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 创建一个场景并设置为缩放到特定原子。\n2. 保存该场景。\n3. 使用 PyMOL 中的 Scene Loop 功能连接多个保存的场景。\n4. 播放动画以观察缩放效果。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_3_task1.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_3_task1.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_3_task1",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中,通过 Movie 菜单添加 2 秒到当前视频的尾部。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单栏中的 Movie。\n2. 从下拉菜单中选择 Append。\n3. 在 Append 子菜单中选择 2 seconds。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_3_task10.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_3_task10.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_3_task10",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中,通过 ALA Motions 菜单查看 ALA fragment 的运动选项。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在 PyMOL 的底部工具栏上点击 All。\n2. 从下拉菜单中选择 ALA。\n3. 在 ALA 菜单中选择 Motions。\n4. 浏览显示的运动/位置选项。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_3_task2.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_3_task2.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_3_task2",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中,通过 Movie 菜单设置视频帧率为 15 FPS。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单栏中的 Movie。\n2. 从下拉菜单中选择 Frame Rate。\n3. 在 Frame Rate 子菜单中选择 15 FPS。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_3_task3.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_3_task3.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_3_task3",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中,通过 Scene 菜单将当前场景存储为名称 'my_scene'。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单栏中的 Scene。\n2. 从下拉菜单中选择 Store。\n3. 在弹出的窗口中输入 'my_scene' 作为场景名称。\n4. 点击确认按钮存储场景。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_3_task4.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_3_task4.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_3_task4",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中,通过 Scene 菜单清除所有存储的场景。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单栏中的 Scene。\n2. 从下拉菜单中选择 Clear。\n3. 在确认对话框中点击是以清除所有场景。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/MovieSchool_3_task5.json
Normal file
44
evaluation_examples/examples/pymol/MovieSchool_3_task5.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "MovieSchool_3_task5",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中,通过 Mouse 菜单将鼠标模式设置为 3 Button Motions。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 点击菜单栏中的 Mouse。\n2. 从下拉菜单中选择 Edit。\n3. 在 Edit 菜单中选择 Motions。\n4. 在弹出的子菜单中选择 3 Button Motions。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/pymol/Mutagenesis_task4.json
Normal file
44
evaluation_examples/examples/pymol/Mutagenesis_task4.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Mutagenesis_task4",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "解释 PyMOL Mutagenesis 工具中的颜色代码,以理解范德瓦尔斯半径重叠情况。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 打开 PyMOL 软件并加载任意结构。\n2. 通过 Wizard → Mutagenesis 打开 Mutagenesis 工具。\n3. 查看 Mutagenesis 工具中指定区域的颜色提示。\n4. 确认颜色解释:绿色表示轻微重叠,红色表示显著重叠。\n5. 使用颜色信息选择适当的操作来优化结构。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "Practical_Pymol_for_Beginners_task6",
|
||||
"snapshot": "pymol",
|
||||
"instruction": "在 PyMOL 中,通过 File → Save Session 保存当前会话为 .pse 文件。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\PYMOL\\PyMOLWin.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"pymol"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 确保所有需要的对象和场景已设置好。\n2. 点击菜单栏 File → Save Session。\n3. 在弹出的窗口中命名文件并保存为 .pse 格式。\n4. 确认会话被成功保存。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task1.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task1.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task1",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中启动软件并加载结构文件 example_structure.cif。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/example_structure.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\example_structure.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"example_structure.cif"
|
||||
],
|
||||
"steps": "1. 启动 VESTA 软件。\n2. 点击 File → Open。\n3. 在文件浏览窗口中选择 example_structure.cif 文件。\n4. 点击 Open 按钮加载文件。\n5. 确认结构已显示在视图窗口中。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task10.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task10.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task10",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中导入 Crystallographic Information File (CIF) 并查看其对称性。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/sample.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\sample.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"sample.cif"
|
||||
],
|
||||
"steps": "1. 启动 VESTA 软件。\n2. 点击 File → Open,打开文件浏览器。\n3. 选择 sample.cif 文件并点击 Open。\n4. 加载文件后,点击 Edit → Data。\n5. 选择 Unit Cell 标签。\n6. 查看 Symmetry 选项卡中显示的对称性信息。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task11.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task11.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task11",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中生成 polyhedra 并调整其透明度。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/example_structure.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\example_structure.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"example_structure.cif"
|
||||
],
|
||||
"steps": "1. 打开 VESTA 软件并加载 example_structure.vesta 文件。\n2. 点击 Edit → Properties。\n3. 在 Properties 对话框中选择 Polyhedra 标签。\n4. 勾选 Enable Polyhedra 绘图。\n5. 调整 Transparency 滑块到所需透明度值,例如 50%。\n6. 点击 OK 按钮保存设置。\n7. 验证主视图窗口中 Polyhedra 的更新显示。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task2.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task2.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task2",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中设置显示模式为 Ball-and-Stick,用于 example_structure.cif 文件。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/example_structure.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\example_structure.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"example_structure.cif"
|
||||
],
|
||||
"steps": "1. 打开 VESTA 软件并加载文件 loaded_structure.vesta。\n2. 在顶部菜单中选择 View → Display Style。\n3. 在弹出的对话框中选择 Ball-and-Stick 模式。\n4. 点击 OK 按钮应用设置。\n5. 查看主视图窗口以确认显示模式已改变。"
|
||||
}
|
||||
}
|
||||
44
evaluation_examples/examples/vesta/VESTA_Manual_task3.json
Normal file
44
evaluation_examples/examples/vesta/VESTA_Manual_task3.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task3",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中测量当前晶体中两个原子之间的距离。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [],
|
||||
"steps": "1. 在 VESTA 软件中打开任何结构文件。\n2. 点击垂直工具栏中的 Measure Distance 工具。\n3. 在主视图窗口中选择两个要测量距离的原子。\n4. 在 Measure Distance 工具下确认显示两个原子之间的距离。\n5. 验证输出的距离值是否正确显示。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task4.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task4.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task4",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中定义自定义绘图边界。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/MgB2.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\MgB2.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"MgB2.cif"
|
||||
],
|
||||
"steps": "1. 打开 VESTA 软件并加载文件 MgB2.cif。\n2. 点击左侧侧边栏的 Objects → Boundary 按钮,打开 Boundary 对话框。\n3. 在对话框中调整范围 (x[min], x[max], y[min], y[max], z[min], z[max]) 为自定义值,例如 0 到 1。\n4. 点击 OK 或 Apply 按钮。\n5. 查看修改后的晶体绘图边界显示在主视图中。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task5.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task5.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task5",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "通过 VESTA 的 Properties 对话框调整晶体键的颜色和半径。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/xTiO2.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\xTiO2.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"xTiO2.cif"
|
||||
],
|
||||
"steps": "1. 打开 VESTA 软件并加载 xTiO2.vesta 文件。\n2. 点击 Edit → Properties。\n3. 在对话框中导航到 Bonds 页面。\n4. 调整 Radius (cylinder) 输入框值,例如更改为 0.3。\n5. 修改颜色设置为 RGB 值 (100, 150, 200)。\n6. 点击 OK 按钮保存更改并关闭对话框。\n7. 确保更改在主视图中可见。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task6.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task6.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task6",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中切换晶体投影为 [110] 方向。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/Si.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\Si.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"Si.cif"
|
||||
],
|
||||
"steps": "1. 打开 VESTA 软件并加载文件 Si.cif。\n2. 在顶部菜单中选择 View → Lattice Planes。\n3. 在对话框中选择 [110] 方向作为投影。\n4. 点击 OK 按钮应用更改。\n5. 确认主视图窗口中显示的是 [110] 方向的晶体投影。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task7.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task7.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task7",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中生成晶体的二维 (2D) 投影视图。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/rutile_TiO2.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\rutile_TiO2.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"rutile_TiO2.cif"
|
||||
],
|
||||
"steps": "1. 打开 VESTA 软件并加载 rutile_TiO2.cif 文件。\n2. 在顶部菜单中选择 File → Export → 2D Image。\n3. 在弹出的对话框中设置输出格式为 PNG,并选择合适的分辨率 (例如 300 dpi)。\n4. 设置保存路径为桌面并命名文件为 projection.png。\n5. 点击 Save 以导出图像。\n6. 验证桌面的 PNG 文件是否正确生成。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task8.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task8.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task8",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中查看倒易晶格的详细几何参数。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/YBa2Cu3O7.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\YBa2Cu3O7.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"YBa2Cu3O7.cif"
|
||||
],
|
||||
"steps": "1. 打开 VESTA 软件并加载文件 YBa2Cu3O7.vesta。\n2. 在顶部菜单中选择 Edit → Data → Reciprocal Lattice Parameters。\n3. 查看弹出的对话框中的倒易晶格详细数据。\n4. 点击 OK 关闭对话框。\n5. 验证数据是否已在 Text Area 中正确显示。"
|
||||
}
|
||||
}
|
||||
57
evaluation_examples/examples/vesta/VESTA_Manual_task9.json
Normal file
57
evaluation_examples/examples/vesta/VESTA_Manual_task9.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"id": "VESTA_Manual_task9",
|
||||
"snapshot": "vesta",
|
||||
"instruction": "在 VESTA 中使用 Fourier Synthesis 生成电子密度图。",
|
||||
"source": "custom",
|
||||
"config": [
|
||||
{
|
||||
"type": "upload_file",
|
||||
"parameters": {
|
||||
"files": [
|
||||
{
|
||||
"local_path": "evaluation_examples/data/vesta/monazite.cif",
|
||||
"path": "C:\\Users\\user\\Desktop\\monazite.cif"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "launch",
|
||||
"parameters": {
|
||||
"command": [
|
||||
"C:\\VESTA-win64\\VESTA.exe"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [
|
||||
"vesta"
|
||||
],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
},
|
||||
"proxy": false,
|
||||
"fixed_ip": false,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": [
|
||||
"monazite.cif"
|
||||
],
|
||||
"steps": "1. 打开 VESTA 软件并加载文件 monazite.vesta。\n2. 在顶部菜单中选择 Utilities → Fourier Synthesis。\n3. 在弹出的对话框中设置分辨率值为 0.05。\n4. 点击 Calculate 按钮开始生成电子密度图。\n5. 验证生成的图形是否出现在主视图中。"
|
||||
}
|
||||
}
|
||||
565
evaluation_examples/extract_instructions_v2.py
Normal file
565
evaluation_examples/extract_instructions_v2.py
Normal file
@@ -0,0 +1,565 @@
|
||||
import os
|
||||
import sys
|
||||
import asyncio
|
||||
import aiohttp
|
||||
import base64
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from typing import List, Optional
|
||||
import tempfile
|
||||
import shutil
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
import json
|
||||
import re
|
||||
|
||||
# Configuration
|
||||
SCRIPT_DIR = Path(__file__).parent
|
||||
PROJECT_ROOT = SCRIPT_DIR.parent
|
||||
|
||||
API_BASE_URL = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")
|
||||
API_URL = f"{API_BASE_URL}/chat/completions"
|
||||
API_KEY = os.getenv("OPENAI_API_KEY")
|
||||
MODEL_NAME = os.getenv("EXTRACT_MODEL", "gpt-4o") # Configurable via env var
|
||||
MAX_CONCURRENT_REQUESTS = 5
|
||||
|
||||
# Input folder where PDFs/Docs are stored, organized by software name
|
||||
# e.g. evaluation_examples/inputs/vesta/tutorial.pdf
|
||||
INPUT_FOLDER = PROJECT_ROOT / "evaluation_examples" / "inputs"
|
||||
EXAMPLES_FOLDER = PROJECT_ROOT / "evaluation_examples" / "examples"
|
||||
TEST_ALL_JSON = PROJECT_ROOT / "evaluation_examples" / "test_all.json"
|
||||
|
||||
# Retry configuration
|
||||
MAX_RETRY_ATTEMPTS = 3
|
||||
RETRY_DELAY = 5
|
||||
RETRY_BACKOFF = 2
|
||||
|
||||
# Image limit - keep low to avoid 413 payload too large errors
|
||||
MAX_IMAGES_PER_REQUEST = 20
|
||||
|
||||
# Supported file extensions
|
||||
SUPPORTED_EXTENSIONS = {'.docx', '.doc', '.ppt', '.pptx', '.pdf', '.mp4', '.avi', '.mov', '.mkv'}
|
||||
|
||||
# Software-specific launch config and snapshot mapping
|
||||
# Maps software folder name -> {"snapshot": ..., "config": [...]}
|
||||
SOFTWARE_CONFIG = {
|
||||
"avogadro": {
|
||||
"snapshot": "avogadro",
|
||||
"config": [
|
||||
{"type": "launch", "parameters": {"command": ["C:\\Avogadro2\\bin\\avogadro2.exe"]}},
|
||||
{"type": "sleep", "parameters": {"seconds": 5}}
|
||||
]
|
||||
},
|
||||
"imagej": {
|
||||
"snapshot": "imagej",
|
||||
"config": [
|
||||
{"type": "launch", "parameters": {"command": ["C:\\ImageJ\\ImageJ.exe"]}},
|
||||
{"type": "sleep", "parameters": {"seconds": 5}}
|
||||
]
|
||||
},
|
||||
"origin": {
|
||||
"snapshot": "origin",
|
||||
"config": [
|
||||
{"type": "launch", "parameters": {"command": ["C:\\OriginLab\\Origin2025b\\Origin64.exe"]}},
|
||||
{"type": "sleep", "parameters": {"seconds": 5}}
|
||||
]
|
||||
},
|
||||
"ovito": {
|
||||
"snapshot": "ovito",
|
||||
"config": [
|
||||
{"type": "launch", "parameters": {"command": ["C:\\OVITO Basic\\ovito.exe"]}},
|
||||
{"type": "sleep", "parameters": {"seconds": 5}}
|
||||
]
|
||||
},
|
||||
"pymol": {
|
||||
"snapshot": "pymol",
|
||||
"config": [
|
||||
{"type": "launch", "parameters": {"command": ["C:\\PYMOL\\PyMOLWin.exe"]}},
|
||||
{"type": "sleep", "parameters": {"seconds": 5}}
|
||||
]
|
||||
},
|
||||
"vesta": {
|
||||
"snapshot": "vesta",
|
||||
"config": [
|
||||
{"type": "launch", "parameters": {"command": ["C:\\VESTA-win64\\VESTA.exe"]}},
|
||||
{"type": "sleep", "parameters": {"seconds": 5}}
|
||||
]
|
||||
},
|
||||
}
|
||||
|
||||
# Default config for unknown software
|
||||
DEFAULT_SOFTWARE_CONFIG = {
|
||||
"snapshot": "snapshot",
|
||||
"config": []
|
||||
}
|
||||
|
||||
SYSTEM_PROMPT = """你是一个科研软件 GUI 自动化测试专家。你的任务是从教程文档中提取出多个**具体的、可执行的、可验证的** GUI 操作任务。
|
||||
|
||||
## 核心要求
|
||||
这些任务将被用于测试 AI Agent 操控桌面软件的能力。每个任务必须足够具体,让 Agent 明确知道要做什么,做完后能通过截图判断是否成功。
|
||||
|
||||
## 任务粒度要求(非常重要)
|
||||
- **每个任务应该是 3-8 步 GUI 操作就能完成的小任务**
|
||||
- **task_goal 必须包含具体的参数值、文件名、菜单路径等细节**
|
||||
- **绝对不要写模糊的指令**
|
||||
|
||||
### ❌ 错误示例(太模糊):
|
||||
- "Perform phase identification" — Agent 不知道用哪个文件、选什么参数
|
||||
- "Export data" — 导出什么格式?保存到哪里?
|
||||
- "Calculate crystallite size" — 选哪个峰?什么参数?
|
||||
|
||||
### ✅ 正确示例(具体可执行):
|
||||
- "在 ImageJ 中,通过 File → Open 打开桌面上的 cell_image.tif 文件"
|
||||
- "在 ImageJ 中,使用 Image → Adjust → Threshold 对当前图像进行阈值分割,选择 Default 方法并点击 Apply"
|
||||
- "在 ImageJ 中,通过 Analyze → Measure 测量当前选区的面积和平均灰度值"
|
||||
- "在 ImageJ 中,使用 Process → Filters → Gaussian Blur 对图像施加半径为 2.0 像素的高斯模糊"
|
||||
- "在 Avogadro 2 中,通过 Build → Insert → Molecule 搜索并插入一个 benzene 分子"
|
||||
- "在 VESTA 中通过 File → Open 打开桌面上的 Si.cif 文件,然后将视角旋转到 [110] 方向"
|
||||
|
||||
## 输出格式
|
||||
返回严格的 JSON 对象:
|
||||
{
|
||||
"tasks": [
|
||||
{
|
||||
"task_goal": "一句话具体描述要做什么(包含软件名、菜单路径、文件名、参数值等具体信息)。用中文。",
|
||||
"input_files": ["涉及的文件名列表,如 'sample.raw'。如果不需要输入文件则为空列表 []"],
|
||||
"steps": "详细的 GUI 操作步骤,带编号,用换行分隔"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
## 任务提取规则
|
||||
1. **独立性**:每个任务都能独立完成(假设软件已打开或从头启动)
|
||||
2. **具体性**:task_goal 中必须包含教程中提到的具体文件名、参数值、菜单名称
|
||||
3. **可验证性**:完成后应该能从屏幕截图看出任务是否成功(例如:文件已打开、图表已显示、对话框已出现等)
|
||||
4. **忠实性**:只描述教程中实际出现的操作,不要编造功能
|
||||
5. **数量**:从一份教程中提取 10-15 个不同的任务,覆盖教程的各个章节。优先选择最常用、最有代表性的操作
|
||||
6. **软件名称**:task_goal 必须以「在 XXX 中,」开头,明确指出软件名称
|
||||
7. **难度分布**:包含简单(2-3步)、中等(4-5步)、较难(6-8步)的任务各占三分之一
|
||||
|
||||
"""
|
||||
|
||||
# Logging configuration
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(levelname)s - %(message)s',
|
||||
handlers=[
|
||||
logging.StreamHandler(sys.stdout)
|
||||
]
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
stats = None # Will be initialized in main
|
||||
|
||||
@dataclass
|
||||
class ProcessingStats:
|
||||
"""Processing statistics tracker"""
|
||||
total_files: int = 0
|
||||
completed_files: int = 0
|
||||
failed_files: int = 0
|
||||
retried_files: int = 0
|
||||
generated_tasks: int = 0
|
||||
start_time: datetime = None
|
||||
failed_list: List[tuple] = None
|
||||
|
||||
def __post_init__(self):
|
||||
if self.start_time is None:
|
||||
self.start_time = datetime.now()
|
||||
if self.failed_list is None:
|
||||
self.failed_list = []
|
||||
|
||||
def add_completed(self, num_tasks=1):
|
||||
self.completed_files += 1
|
||||
self.generated_tasks += num_tasks
|
||||
self._log_progress()
|
||||
|
||||
def add_failed(self, file_path: str, error: str):
|
||||
self.failed_files += 1
|
||||
self.failed_list.append((file_path, error))
|
||||
self._log_progress()
|
||||
|
||||
def add_retry(self):
|
||||
self.retried_files += 1
|
||||
|
||||
def _log_progress(self):
|
||||
processed = self.completed_files + self.failed_files
|
||||
percentage = (processed / self.total_files * 100) if self.total_files > 0 else 0
|
||||
elapsed = (datetime.now() - self.start_time).total_seconds()
|
||||
|
||||
logger.info(f"Progress: {processed}/{self.total_files} ({percentage:.1f}%) | "
|
||||
f"Tasks Gen: {self.generated_tasks} | Failed: {self.failed_files}")
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Dependency Checks & File Conversion (Copied & Adapted from original script)
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
def check_dependencies():
|
||||
"""Check and prompt for missing dependencies"""
|
||||
missing = []
|
||||
try: import pdf2image
|
||||
except ImportError: missing.append("pdf2image")
|
||||
try: import PIL
|
||||
except ImportError: missing.append("Pillow")
|
||||
try: import cv2
|
||||
except ImportError: missing.append("opencv-python")
|
||||
|
||||
if not shutil.which("soffice") and not shutil.which("libreoffice"):
|
||||
logger.warning("LibreOffice not detected (needed for .doc/.ppt)")
|
||||
|
||||
if missing:
|
||||
logger.error(f"Missing dependencies: {', '.join(missing)}")
|
||||
return False
|
||||
return True
|
||||
|
||||
def convert_pdf_to_images(pdf_path: str) -> List[str]:
|
||||
try:
|
||||
from pdf2image import convert_from_path
|
||||
import io
|
||||
|
||||
# First, get total page count at very low DPI
|
||||
quick_check = convert_from_path(pdf_path, dpi=36, fmt='jpeg')
|
||||
total_pages = len(quick_check)
|
||||
del quick_check
|
||||
|
||||
# For large PDFs: lower DPI + sample pages evenly
|
||||
if total_pages > MAX_IMAGES_PER_REQUEST:
|
||||
dpi = 100 # lower DPI for large docs
|
||||
quality = 80
|
||||
# Sample pages evenly across the document
|
||||
step = total_pages / MAX_IMAGES_PER_REQUEST
|
||||
selected_pages = [int(step * i) + 1 for i in range(MAX_IMAGES_PER_REQUEST)]
|
||||
logger.info(f"Large PDF ({total_pages} pages): sampling {len(selected_pages)} pages at {dpi} DPI")
|
||||
base64_images = []
|
||||
for page_num in selected_pages:
|
||||
imgs = convert_from_path(pdf_path, dpi=dpi, fmt='jpeg',
|
||||
first_page=page_num, last_page=page_num)
|
||||
if imgs:
|
||||
buffer = io.BytesIO()
|
||||
imgs[0].save(buffer, format='JPEG', quality=quality)
|
||||
base64_images.append(base64.b64encode(buffer.getvalue()).decode('utf-8'))
|
||||
return base64_images
|
||||
else:
|
||||
# Small PDF: convert all pages at normal quality
|
||||
dpi = 150
|
||||
quality = 90
|
||||
logger.info(f"PDF ({total_pages} pages) at {dpi} DPI")
|
||||
images = convert_from_path(pdf_path, dpi=dpi, fmt='jpeg')
|
||||
base64_images = []
|
||||
for img in images:
|
||||
buffer = io.BytesIO()
|
||||
img.save(buffer, format='JPEG', quality=quality)
|
||||
base64_images.append(base64.b64encode(buffer.getvalue()).decode('utf-8'))
|
||||
return base64_images
|
||||
except Exception as e:
|
||||
logger.error(f"PDF conversion failed: {e}")
|
||||
return []
|
||||
|
||||
def convert_office_to_pdf(input_path: str) -> Optional[str]:
|
||||
try:
|
||||
import subprocess
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
soffice_cmd = "soffice" if shutil.which("soffice") else "libreoffice"
|
||||
if not soffice_cmd: return None
|
||||
|
||||
cmd = [soffice_cmd, "--headless", "--convert-to", "pdf", "--outdir", temp_dir, input_path]
|
||||
subprocess.run(cmd, capture_output=True, timeout=60)
|
||||
|
||||
pdf_name = Path(input_path).stem + ".pdf"
|
||||
pdf_path = os.path.join(temp_dir, pdf_name)
|
||||
return pdf_path if os.path.exists(pdf_path) else None
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
def extract_video_frames(video_path: str, num_frames=10) -> List[str]:
|
||||
try:
|
||||
import cv2
|
||||
cap = cv2.VideoCapture(video_path)
|
||||
total = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
|
||||
if total == 0: return []
|
||||
indices = [int(total * i / (num_frames + 1)) for i in range(1, num_frames + 1)]
|
||||
frames = []
|
||||
for idx in indices:
|
||||
cap.set(cv2.CAP_PROP_POS_FRAMES, idx)
|
||||
ret, frame = cap.read()
|
||||
if ret:
|
||||
h, w = frame.shape[:2]
|
||||
if w > 1280:
|
||||
scale = 1280/w
|
||||
frame = cv2.resize(frame, (1280, int(h*scale)))
|
||||
_, buf = cv2.imencode('.jpg', frame)
|
||||
frames.append(base64.b64encode(buf).decode('utf-8'))
|
||||
cap.release()
|
||||
return frames
|
||||
except Exception:
|
||||
return []
|
||||
|
||||
def convert_document_to_images(file_path: str) -> List[str]:
|
||||
path = Path(file_path)
|
||||
ext = path.suffix.lower()
|
||||
if ext == '.pdf':
|
||||
return convert_pdf_to_images(file_path)
|
||||
elif ext in ['.docx', '.doc', '.ppt', '.pptx']:
|
||||
pdf = convert_office_to_pdf(file_path)
|
||||
if pdf:
|
||||
imgs = convert_pdf_to_images(pdf)
|
||||
shutil.rmtree(os.path.dirname(pdf), ignore_errors=True)
|
||||
return imgs
|
||||
elif ext in ['.mp4', '.avi', '.mov', '.mkv']:
|
||||
return extract_video_frames(file_path)
|
||||
return []
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# API Interaction
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
async def call_multimodal_api(images_b64: List[str], session: aiohttp.ClientSession) -> tuple[str, bool]:
|
||||
messages = [{"role": "system", "content": SYSTEM_PROMPT}]
|
||||
|
||||
content = [{"type": "text", "text": "Analyze these tutorial pages and extract benchmark tasks as JSON."}]
|
||||
|
||||
# Cap images to avoid huge payloads
|
||||
subset_images = images_b64[:MAX_IMAGES_PER_REQUEST]
|
||||
for img in subset_images:
|
||||
content.append({
|
||||
"type": "image_url",
|
||||
"image_url": {"url": f"data:image/jpeg;base64,{img}"}
|
||||
})
|
||||
|
||||
messages.append({"role": "user", "content": content})
|
||||
|
||||
for attempt in range(1, MAX_RETRY_ATTEMPTS + 1):
|
||||
try:
|
||||
headers = {
|
||||
"Authorization": f"Bearer {API_KEY}",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
# Add site specific headers if using openrouter or others if needed
|
||||
|
||||
payload = {
|
||||
"model": MODEL_NAME,
|
||||
"messages": messages,
|
||||
"max_tokens": 4096,
|
||||
}
|
||||
|
||||
async with session.post(API_URL, headers=headers, json=payload, timeout=180) as response:
|
||||
if response.status == 200:
|
||||
res_json = await response.json()
|
||||
return res_json['choices'][0]['message']['content'], True
|
||||
else:
|
||||
err = await response.text()
|
||||
logger.warning(f"API Error ({response.status}): {err}")
|
||||
if attempt < MAX_RETRY_ATTEMPTS:
|
||||
await asyncio.sleep(RETRY_DELAY)
|
||||
else:
|
||||
return f"API Error: {err}", False
|
||||
except Exception as e:
|
||||
logger.warning(f"Exception: {e}")
|
||||
if attempt < MAX_RETRY_ATTEMPTS:
|
||||
await asyncio.sleep(RETRY_DELAY)
|
||||
else:
|
||||
return str(e), False
|
||||
return "Max retries", False
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Main Logic
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
software_tests = {} # Global dict to track software -> [test_ids]
|
||||
FORCE_REGENERATE = False # Set via --force flag
|
||||
|
||||
async def process_file(file_path: str, session: aiohttp.ClientSession, semaphore: asyncio.Semaphore):
|
||||
async with semaphore:
|
||||
file_path_obj = Path(file_path)
|
||||
file_stem = file_path_obj.stem
|
||||
|
||||
# Infer software name from folder structure
|
||||
try:
|
||||
rel_path = file_path_obj.relative_to(INPUT_FOLDER)
|
||||
software_name = rel_path.parts[0] if len(rel_path.parts) > 1 else "unknown"
|
||||
except ValueError:
|
||||
software_name = "unknown"
|
||||
|
||||
# Skip if already processed (check if task1 json exists)
|
||||
existing_task1 = EXAMPLES_FOLDER / software_name / f"{file_stem}_task1.json"
|
||||
if existing_task1.exists() and not FORCE_REGENERATE:
|
||||
logger.info(f"Skipping (already processed): {file_path_obj.name} → use --force to regenerate")
|
||||
# Still register existing tasks in software_tests for test_all.json
|
||||
import glob as g
|
||||
existing_tasks = g.glob(str(EXAMPLES_FOLDER / software_name / f"{file_stem}_task*.json"))
|
||||
for t in existing_tasks:
|
||||
tid = Path(t).stem
|
||||
if software_name not in software_tests:
|
||||
software_tests[software_name] = []
|
||||
software_tests[software_name].append(tid)
|
||||
stats.add_completed(num_tasks=len(existing_tasks))
|
||||
return
|
||||
|
||||
logger.info(f"Processing: {file_path_obj.name}")
|
||||
|
||||
# 1. Convert to images
|
||||
images = convert_document_to_images(file_path)
|
||||
if not images:
|
||||
stats.add_failed(file_path, "No images extracted")
|
||||
return
|
||||
|
||||
# 2. Call API
|
||||
content, success = await call_multimodal_api(images, session)
|
||||
if not success:
|
||||
stats.add_failed(file_path, content)
|
||||
return
|
||||
|
||||
# 3. Parse JSON
|
||||
try:
|
||||
# Try to find JSON block if mixed with text
|
||||
json_match = re.search(r'\{.*\}', content, re.DOTALL)
|
||||
if json_match:
|
||||
json_str = json_match.group(0)
|
||||
else:
|
||||
json_str = content
|
||||
|
||||
api_result = json.loads(json_str)
|
||||
tasks = api_result.get("tasks", [])
|
||||
if not tasks:
|
||||
logger.warning(f"No tasks found in JSON for {file_path}")
|
||||
return
|
||||
|
||||
except json.JSONDecodeError as e:
|
||||
stats.add_failed(file_path, f"JSON Parse Error: {e}")
|
||||
logger.error(f"Raw content: {content[:200]}...")
|
||||
return
|
||||
|
||||
# 4. Generate Output Files
|
||||
for i, task in enumerate(tasks, 1):
|
||||
test_id = f"{file_stem}_task{i}"
|
||||
output_file = EXAMPLES_FOLDER / software_name / f"{test_id}.json"
|
||||
output_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# Get software-specific config
|
||||
sw_cfg = SOFTWARE_CONFIG.get(software_name, DEFAULT_SOFTWARE_CONFIG)
|
||||
|
||||
# Construct the OSWorld/Jade Benchmark Standard JSON
|
||||
task_json = {
|
||||
"id": test_id,
|
||||
"snapshot": sw_cfg["snapshot"],
|
||||
"instruction": task.get("task_goal", ""),
|
||||
"source": "custom",
|
||||
"config": sw_cfg["config"],
|
||||
"trajectory": "trajectories/",
|
||||
"related_apps": [software_name],
|
||||
"evaluator": {
|
||||
"postconfig": [
|
||||
{
|
||||
"type": "sleep",
|
||||
"parameters": {
|
||||
"seconds": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"func": "vllm_eval"
|
||||
# "result" field is NOT needed for vllm_eval
|
||||
},
|
||||
"proxy": False,
|
||||
"fixed_ip": False,
|
||||
"possibility_of_env_change": "low",
|
||||
"metadata": {
|
||||
"input_files": task.get("input_files", []),
|
||||
"steps": task.get("steps", "")
|
||||
}
|
||||
}
|
||||
|
||||
with open(output_file, 'w', encoding='utf-8') as f:
|
||||
json.dump(task_json, f, ensure_ascii=False, indent=2)
|
||||
|
||||
# Register to global index
|
||||
if software_name not in software_tests:
|
||||
software_tests[software_name] = []
|
||||
software_tests[software_name].append(test_id)
|
||||
|
||||
stats.add_completed(num_tasks=len(tasks))
|
||||
logger.info(f"Generated {len(tasks)} tasks for {file_path_obj.name}")
|
||||
|
||||
def save_test_all_json():
|
||||
"""Update test_all.json with new tests"""
|
||||
test_all_meta_path = Path(TEST_ALL_JSON)
|
||||
existing_data = {}
|
||||
if test_all_meta_path.exists():
|
||||
try:
|
||||
with open(test_all_meta_path, 'r', encoding='utf-8') as f:
|
||||
existing_data = json.load(f)
|
||||
except: pass
|
||||
|
||||
# Merge new tests
|
||||
for software, test_ids in software_tests.items():
|
||||
current_list = existing_data.get(software, [])
|
||||
# Append unique
|
||||
updated_list = sorted(list(set(current_list + test_ids)))
|
||||
existing_data[software] = updated_list
|
||||
|
||||
with open(test_all_meta_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(existing_data, f, ensure_ascii=False, indent=2)
|
||||
|
||||
# Also save a 'test_custom.json' that ONLY contains the softwares we just processed/have in our inputs
|
||||
# This is useful for running ONLY your custom benchmarks without OSWorld defaults
|
||||
custom_data = {}
|
||||
|
||||
# We scan the INPUT_FOLDER to see which softwares are "ours"
|
||||
custom_softwares = set()
|
||||
if INPUT_FOLDER.exists():
|
||||
for item in os.listdir(INPUT_FOLDER):
|
||||
if (INPUT_FOLDER / item).is_dir():
|
||||
custom_softwares.add(item)
|
||||
|
||||
for software in custom_softwares:
|
||||
if software in existing_data:
|
||||
custom_data[software] = existing_data[software]
|
||||
|
||||
test_custom_path = PROJECT_ROOT / "evaluation_examples" / "test_custom.json"
|
||||
with open(test_custom_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(custom_data, f, ensure_ascii=False, indent=2)
|
||||
logger.info(f"Custom test index saved to: {test_custom_path}")
|
||||
|
||||
async def main():
|
||||
global stats, FORCE_REGENERATE
|
||||
stats = ProcessingStats()
|
||||
|
||||
# Parse --force flag
|
||||
FORCE_REGENERATE = "--force" in sys.argv
|
||||
|
||||
if not API_KEY:
|
||||
logger.error("OPENAI_API_KEY environment variable not set.")
|
||||
return
|
||||
|
||||
# Check/Create Input Folder
|
||||
if not INPUT_FOLDER.exists():
|
||||
logger.warning(f"Input folder {INPUT_FOLDER} does not exist. Creating it.")
|
||||
INPUT_FOLDER.mkdir(parents=True, exist_ok=True)
|
||||
logger.info(f"Please put software PDF tutorials into subfolders in: {INPUT_FOLDER}")
|
||||
return
|
||||
|
||||
# Find files
|
||||
files = []
|
||||
for root, _, filenames in os.walk(INPUT_FOLDER):
|
||||
for f in filenames:
|
||||
if Path(f).suffix.lower() in SUPPORTED_EXTENSIONS:
|
||||
files.append(os.path.join(root, f))
|
||||
|
||||
stats.total_files = len(files)
|
||||
logger.info(f"Found {len(files)} files in {INPUT_FOLDER}")
|
||||
|
||||
if not files:
|
||||
logger.info("No files to process.")
|
||||
return
|
||||
|
||||
# Process
|
||||
semaphore = asyncio.Semaphore(MAX_CONCURRENT_REQUESTS)
|
||||
async with aiohttp.ClientSession() as session:
|
||||
tasks = [process_file(f, session, semaphore) for f in files]
|
||||
await asyncio.gather(*tasks)
|
||||
|
||||
# Save Index
|
||||
save_test_all_json()
|
||||
|
||||
logger.info("Done.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
@@ -389,6 +389,314 @@
|
||||
"971cbb5b-3cbf-4ff7-9e24-b5c84fcebfa6"
|
||||
],
|
||||
"jade": [
|
||||
"MDIJade6.5使用手册_task1",
|
||||
"MDIJade6.5使用手册_task10",
|
||||
"MDIJade6.5使用手册_task2",
|
||||
"MDIJade6.5使用手册_task3",
|
||||
"MDIJade6.5使用手册_task4",
|
||||
"MDIJade6.5使用手册_task5",
|
||||
"MDIJade6.5使用手册_task6",
|
||||
"MDIJade6.5使用手册_task7",
|
||||
"MDIJade6.5使用手册_task8",
|
||||
"MDIJade6.5使用手册_task9",
|
||||
"jade_test"
|
||||
],
|
||||
"avogadro": [
|
||||
"building-metal-complexes_task1",
|
||||
"building-metal-complexes_task2",
|
||||
"building-metal-complexes_task3",
|
||||
"building-metal-complexes_task4",
|
||||
"building-metal-complexes_task5",
|
||||
"building-metal-complexes_task6",
|
||||
"building-metal-complexes_task7",
|
||||
"building-organic-molecules_task1",
|
||||
"building-organic-molecules_task10",
|
||||
"building-organic-molecules_task2",
|
||||
"building-organic-molecules_task3",
|
||||
"building-organic-molecules_task4",
|
||||
"building-organic-molecules_task5",
|
||||
"building-organic-molecules_task6",
|
||||
"building-organic-molecules_task7",
|
||||
"building-organic-molecules_task8",
|
||||
"building-organic-molecules_task9",
|
||||
"learning-avogadro_task1",
|
||||
"learning-avogadro_task2",
|
||||
"learning-avogadro_task3",
|
||||
"learning-avogadro_task4",
|
||||
"learning-avogadro_task5",
|
||||
"learning-avogadro_task6",
|
||||
"learning-avogadro_task7",
|
||||
"learning-avogadro_task8",
|
||||
"learning-avogadro_task9",
|
||||
"naming-a-molecule_task1",
|
||||
"naming-a-molecule_task2",
|
||||
"using-qtaim-and-wfn_task1",
|
||||
"using-qtaim-and-wfn_task2",
|
||||
"using-qtaim-and-wfn_task3",
|
||||
"viewing-electrostatic-potential_task1",
|
||||
"viewing-electrostatic-potential_task2",
|
||||
"viewing-molecular-orbitals_task1",
|
||||
"viewing-molecular-orbitals_task2",
|
||||
"viewing-molecular-orbitals_task3",
|
||||
"viewing-vibrations_task1",
|
||||
"viewing-vibrations_task2",
|
||||
"viewing-vibrations_task3",
|
||||
"viewing-vibrations_task4",
|
||||
"viewing-vibrations_task5"
|
||||
],
|
||||
"imagej": [
|
||||
"user-guide_task1",
|
||||
"user-guide_task10",
|
||||
"user-guide_task2",
|
||||
"user-guide_task3",
|
||||
"user-guide_task4",
|
||||
"user-guide_task5",
|
||||
"user-guide_task6",
|
||||
"user-guide_task7",
|
||||
"user-guide_task8",
|
||||
"user-guide_task9"
|
||||
],
|
||||
"origin": [
|
||||
"Origin_User_Guide_2025b_E_task1",
|
||||
"Origin_User_Guide_2025b_E_task10",
|
||||
"Origin_User_Guide_2025b_E_task11",
|
||||
"Origin_User_Guide_2025b_E_task12",
|
||||
"Origin_User_Guide_2025b_E_task2",
|
||||
"Origin_User_Guide_2025b_E_task3",
|
||||
"Origin_User_Guide_2025b_E_task4",
|
||||
"Origin_User_Guide_2025b_E_task5",
|
||||
"Origin_User_Guide_2025b_E_task6",
|
||||
"Origin_User_Guide_2025b_E_task7",
|
||||
"Origin_User_Guide_2025b_E_task8",
|
||||
"Origin_User_Guide_2025b_E_task9"
|
||||
],
|
||||
"ovito": [
|
||||
"animation_task1",
|
||||
"animation_task10",
|
||||
"animation_task2",
|
||||
"animation_task3",
|
||||
"animation_task4",
|
||||
"animation_task5",
|
||||
"animation_task6",
|
||||
"animation_task7",
|
||||
"animation_task8",
|
||||
"animation_task9",
|
||||
"aspherical_particles_task1",
|
||||
"aspherical_particles_task10",
|
||||
"aspherical_particles_task2",
|
||||
"aspherical_particles_task3",
|
||||
"aspherical_particles_task4",
|
||||
"aspherical_particles_task5",
|
||||
"aspherical_particles_task6",
|
||||
"aspherical_particles_task7",
|
||||
"aspherical_particles_task8",
|
||||
"aspherical_particles_task9",
|
||||
"clone_pipeline_task1",
|
||||
"clone_pipeline_task2",
|
||||
"clone_pipeline_task3",
|
||||
"clone_pipeline_task4",
|
||||
"clone_pipeline_task5",
|
||||
"clone_pipeline_task6",
|
||||
"clone_pipeline_task7",
|
||||
"clone_pipeline_task8",
|
||||
"code_generation_task1",
|
||||
"code_generation_task2",
|
||||
"code_generation_task3",
|
||||
"code_generation_task4",
|
||||
"code_generation_task5",
|
||||
"code_generation_task6",
|
||||
"code_generation_task7",
|
||||
"code_generation_task8",
|
||||
"customize_init_state_task1",
|
||||
"customize_init_state_task2",
|
||||
"customize_init_state_task3",
|
||||
"customize_init_state_task4",
|
||||
"customize_init_state_task5",
|
||||
"data_model_task1",
|
||||
"data_model_task10",
|
||||
"data_model_task2",
|
||||
"data_model_task3",
|
||||
"data_model_task4",
|
||||
"data_model_task5",
|
||||
"data_model_task6",
|
||||
"data_model_task7",
|
||||
"data_model_task8",
|
||||
"data_model_task9",
|
||||
"export_task1",
|
||||
"export_task2",
|
||||
"export_task3",
|
||||
"export_task4",
|
||||
"export_task5",
|
||||
"import_task1",
|
||||
"import_task10",
|
||||
"import_task2",
|
||||
"import_task3",
|
||||
"import_task4",
|
||||
"import_task5",
|
||||
"import_task6",
|
||||
"import_task7",
|
||||
"import_task8",
|
||||
"import_task9",
|
||||
"marker_particles_task1",
|
||||
"marker_particles_task2",
|
||||
"marker_particles_task3",
|
||||
"marker_particles_task4",
|
||||
"marker_particles_task5",
|
||||
"marker_particles_task6",
|
||||
"marker_particles_task7",
|
||||
"marker_particles_task8",
|
||||
"marker_particles_task9",
|
||||
"miscellaneous_task1",
|
||||
"miscellaneous_task10",
|
||||
"miscellaneous_task2",
|
||||
"miscellaneous_task3",
|
||||
"miscellaneous_task4",
|
||||
"miscellaneous_task5",
|
||||
"miscellaneous_task6",
|
||||
"miscellaneous_task7",
|
||||
"miscellaneous_task8",
|
||||
"miscellaneous_task9",
|
||||
"pipeline_task1",
|
||||
"pipeline_task2",
|
||||
"pipeline_task3",
|
||||
"pipeline_task4",
|
||||
"pipeline_task5",
|
||||
"pipeline_task6",
|
||||
"pipeline_task7",
|
||||
"pipeline_task8",
|
||||
"pipeline_task9",
|
||||
"python_extensions_task1",
|
||||
"python_extensions_task10",
|
||||
"python_extensions_task2",
|
||||
"python_extensions_task3",
|
||||
"python_extensions_task4",
|
||||
"python_extensions_task5",
|
||||
"python_extensions_task6",
|
||||
"python_extensions_task7",
|
||||
"python_extensions_task8",
|
||||
"python_extensions_task9",
|
||||
"remote_file_access_task1",
|
||||
"remote_file_access_task10",
|
||||
"remote_file_access_task2",
|
||||
"remote_file_access_task3",
|
||||
"remote_file_access_task4",
|
||||
"remote_file_access_task5",
|
||||
"remote_file_access_task6",
|
||||
"remote_file_access_task7",
|
||||
"remote_file_access_task8",
|
||||
"remote_file_access_task9",
|
||||
"remote_rendering_task1",
|
||||
"remote_rendering_task2",
|
||||
"remote_rendering_task3",
|
||||
"remote_rendering_task4",
|
||||
"remote_rendering_task5",
|
||||
"remote_rendering_task6",
|
||||
"remote_rendering_task7",
|
||||
"remote_rendering_task8",
|
||||
"remote_rendering_task9",
|
||||
"rendering_task1",
|
||||
"rendering_task2",
|
||||
"rendering_task3",
|
||||
"rendering_task4",
|
||||
"rendering_task5",
|
||||
"rendering_task6",
|
||||
"rendering_task7",
|
||||
"rendering_task8",
|
||||
"rendering_task9",
|
||||
"transparent_particles_task1",
|
||||
"transparent_particles_task2",
|
||||
"turntable_animation_task1",
|
||||
"turntable_animation_task2",
|
||||
"turntable_animation_task3",
|
||||
"turntable_animation_task4",
|
||||
"turntable_animation_task5",
|
||||
"turntable_animation_task6",
|
||||
"viewport_layouts_task1",
|
||||
"viewport_layouts_task10",
|
||||
"viewport_layouts_task2",
|
||||
"viewport_layouts_task3",
|
||||
"viewport_layouts_task4",
|
||||
"viewport_layouts_task5",
|
||||
"viewport_layouts_task6",
|
||||
"viewport_layouts_task7",
|
||||
"viewport_layouts_task8",
|
||||
"viewport_layouts_task9",
|
||||
"viewports_task1",
|
||||
"viewports_task10",
|
||||
"viewports_task11",
|
||||
"viewports_task2",
|
||||
"viewports_task3",
|
||||
"viewports_task4",
|
||||
"viewports_task5",
|
||||
"viewports_task6",
|
||||
"viewports_task7",
|
||||
"viewports_task8",
|
||||
"viewports_task9"
|
||||
],
|
||||
"pymol": [
|
||||
"Biochemistry_student_intro_task1",
|
||||
"Biochemistry_student_intro_task10",
|
||||
"Biochemistry_student_intro_task2",
|
||||
"Biochemistry_student_intro_task3",
|
||||
"Biochemistry_student_intro_task4",
|
||||
"Biochemistry_student_intro_task5",
|
||||
"Biochemistry_student_intro_task6",
|
||||
"Biochemistry_student_intro_task7",
|
||||
"Biochemistry_student_intro_task8",
|
||||
"Biochemistry_student_intro_task9",
|
||||
"MovieSchool_1_task1",
|
||||
"MovieSchool_1_task2",
|
||||
"MovieSchool_1_task3",
|
||||
"MovieSchool_1_task4",
|
||||
"MovieSchool_1_task5",
|
||||
"MovieSchool_1_task6",
|
||||
"MovieSchool_1_task7",
|
||||
"MovieSchool_3_task1",
|
||||
"MovieSchool_3_task10",
|
||||
"MovieSchool_3_task2",
|
||||
"MovieSchool_3_task3",
|
||||
"MovieSchool_3_task4",
|
||||
"MovieSchool_3_task5",
|
||||
"MovieSchool_3_task6",
|
||||
"MovieSchool_3_task7",
|
||||
"MovieSchool_3_task8",
|
||||
"MovieSchool_3_task9",
|
||||
"Mutagenesis_task1",
|
||||
"Mutagenesis_task2",
|
||||
"Mutagenesis_task3",
|
||||
"Mutagenesis_task4",
|
||||
"Mutagenesis_task5",
|
||||
"Mutagenesis_task6",
|
||||
"Mutagenesis_task7",
|
||||
"Practical_Pymol_for_Beginners_task1",
|
||||
"Practical_Pymol_for_Beginners_task10",
|
||||
"Practical_Pymol_for_Beginners_task11",
|
||||
"Practical_Pymol_for_Beginners_task12",
|
||||
"Practical_Pymol_for_Beginners_task13",
|
||||
"Practical_Pymol_for_Beginners_task2",
|
||||
"Practical_Pymol_for_Beginners_task3",
|
||||
"Practical_Pymol_for_Beginners_task4",
|
||||
"Practical_Pymol_for_Beginners_task5",
|
||||
"Practical_Pymol_for_Beginners_task6",
|
||||
"Practical_Pymol_for_Beginners_task7",
|
||||
"Practical_Pymol_for_Beginners_task8",
|
||||
"Practical_Pymol_for_Beginners_task9",
|
||||
"Visualizing_a_computed_structure_-_a_commented_example_task1",
|
||||
"Visualizing_a_computed_structure_-_a_commented_example_task2",
|
||||
"Visualizing_a_computed_structure_-_a_commented_example_task3",
|
||||
"Visualizing_a_computed_structure_-_a_commented_example_task4"
|
||||
],
|
||||
"vesta": [
|
||||
"VESTA_Manual_task1",
|
||||
"VESTA_Manual_task10",
|
||||
"VESTA_Manual_task11",
|
||||
"VESTA_Manual_task2",
|
||||
"VESTA_Manual_task3",
|
||||
"VESTA_Manual_task4",
|
||||
"VESTA_Manual_task5",
|
||||
"VESTA_Manual_task6",
|
||||
"VESTA_Manual_task7",
|
||||
"VESTA_Manual_task8",
|
||||
"VESTA_Manual_task9"
|
||||
]
|
||||
}
|
||||
93
evaluation_examples/test_curated.json
Normal file
93
evaluation_examples/test_curated.json
Normal file
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"avogadro": [
|
||||
"building-metal-complexes_task1",
|
||||
"building-metal-complexes_task3",
|
||||
"building-metal-complexes_task7",
|
||||
"building-organic-molecules_task1",
|
||||
"building-organic-molecules_task3",
|
||||
"building-organic-molecules_task4",
|
||||
"building-organic-molecules_task5",
|
||||
"building-organic-molecules_task9",
|
||||
"naming-a-molecule_task1",
|
||||
"viewing-electrostatic-potential_task1"
|
||||
],
|
||||
"imagej": [
|
||||
"user-guide_task1",
|
||||
"user-guide_task10",
|
||||
"user-guide_task2",
|
||||
"user-guide_task3",
|
||||
"user-guide_task4",
|
||||
"user-guide_task5",
|
||||
"user-guide_task6",
|
||||
"user-guide_task7",
|
||||
"user-guide_task8",
|
||||
"user-guide_task9"
|
||||
],
|
||||
"jade": [
|
||||
"MDIJade6.5使用手册_task1",
|
||||
"MDIJade6.5使用手册_task10",
|
||||
"MDIJade6.5使用手册_task2",
|
||||
"MDIJade6.5使用手册_task3",
|
||||
"MDIJade6.5使用手册_task4",
|
||||
"MDIJade6.5使用手册_task5",
|
||||
"MDIJade6.5使用手册_task6",
|
||||
"MDIJade6.5使用手册_task7",
|
||||
"MDIJade6.5使用手册_task8"
|
||||
|
||||
],
|
||||
"origin": [
|
||||
"Origin_User_Guide_2025b_E_task1",
|
||||
"Origin_User_Guide_2025b_E_task11",
|
||||
"Origin_User_Guide_2025b_E_task12",
|
||||
"Origin_User_Guide_2025b_E_task2",
|
||||
"Origin_User_Guide_2025b_E_task3",
|
||||
"Origin_User_Guide_2025b_E_task4",
|
||||
"Origin_User_Guide_2025b_E_task5",
|
||||
"Origin_User_Guide_2025b_E_task8",
|
||||
"Origin_User_Guide_2025b_E_task9"
|
||||
],
|
||||
"ovito": [
|
||||
"animation_task3",
|
||||
"aspherical_particles_task1",
|
||||
"clone_pipeline_task1",
|
||||
"code_generation_task1",
|
||||
"customize_init_state_task1",
|
||||
"data_model_task1",
|
||||
"export_task1",
|
||||
"marker_particles_task2",
|
||||
"miscellaneous_task1",
|
||||
"python_extensions_task1",
|
||||
"remote_file_access_task1",
|
||||
"remote_rendering_task1",
|
||||
"rendering_task1",
|
||||
"transparent_particles_task1"
|
||||
],
|
||||
"pymol": [
|
||||
"MovieSchool_1_task1",
|
||||
"MovieSchool_1_task2",
|
||||
"MovieSchool_1_task3",
|
||||
"MovieSchool_1_task4",
|
||||
"MovieSchool_1_task5",
|
||||
"MovieSchool_3_task1",
|
||||
"MovieSchool_3_task10",
|
||||
"MovieSchool_3_task2",
|
||||
"MovieSchool_3_task3",
|
||||
"MovieSchool_3_task4",
|
||||
"MovieSchool_3_task5",
|
||||
"Mutagenesis_task4",
|
||||
"Practical_Pymol_for_Beginners_task6"
|
||||
],
|
||||
"vesta": [
|
||||
"VESTA_Manual_task1",
|
||||
"VESTA_Manual_task10",
|
||||
"VESTA_Manual_task11",
|
||||
"VESTA_Manual_task2",
|
||||
"VESTA_Manual_task3",
|
||||
"VESTA_Manual_task4",
|
||||
"VESTA_Manual_task5",
|
||||
"VESTA_Manual_task6",
|
||||
"VESTA_Manual_task7",
|
||||
"VESTA_Manual_task8",
|
||||
"VESTA_Manual_task9"
|
||||
]
|
||||
}
|
||||
93
evaluation_examples/test_custom.json
Normal file
93
evaluation_examples/test_custom.json
Normal file
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"avogadro": [
|
||||
"building-metal-complexes_task1",
|
||||
"building-metal-complexes_task3",
|
||||
"building-metal-complexes_task7",
|
||||
"building-organic-molecules_task1",
|
||||
"building-organic-molecules_task3",
|
||||
"building-organic-molecules_task4",
|
||||
"building-organic-molecules_task5",
|
||||
"building-organic-molecules_task9",
|
||||
"naming-a-molecule_task1",
|
||||
"viewing-electrostatic-potential_task1"
|
||||
],
|
||||
"imagej": [
|
||||
"user-guide_task1",
|
||||
"user-guide_task10",
|
||||
"user-guide_task2",
|
||||
"user-guide_task3",
|
||||
"user-guide_task4",
|
||||
"user-guide_task5",
|
||||
"user-guide_task6",
|
||||
"user-guide_task7",
|
||||
"user-guide_task8",
|
||||
"user-guide_task9"
|
||||
],
|
||||
"jade": [
|
||||
"MDIJade6.5使用手册_task1",
|
||||
"MDIJade6.5使用手册_task10",
|
||||
"MDIJade6.5使用手册_task2",
|
||||
"MDIJade6.5使用手册_task3",
|
||||
"MDIJade6.5使用手册_task4",
|
||||
"MDIJade6.5使用手册_task5",
|
||||
"MDIJade6.5使用手册_task6",
|
||||
"MDIJade6.5使用手册_task7",
|
||||
"MDIJade6.5使用手册_task8",
|
||||
"jade_test"
|
||||
],
|
||||
"origin": [
|
||||
"Origin_User_Guide_2025b_E_task1",
|
||||
"Origin_User_Guide_2025b_E_task11",
|
||||
"Origin_User_Guide_2025b_E_task12",
|
||||
"Origin_User_Guide_2025b_E_task2",
|
||||
"Origin_User_Guide_2025b_E_task3",
|
||||
"Origin_User_Guide_2025b_E_task4",
|
||||
"Origin_User_Guide_2025b_E_task5",
|
||||
"Origin_User_Guide_2025b_E_task8",
|
||||
"Origin_User_Guide_2025b_E_task9"
|
||||
],
|
||||
"ovito": [
|
||||
"animation_task3",
|
||||
"aspherical_particles_task1",
|
||||
"clone_pipeline_task1",
|
||||
"code_generation_task1",
|
||||
"customize_init_state_task1",
|
||||
"data_model_task1",
|
||||
"export_task1",
|
||||
"marker_particles_task2",
|
||||
"miscellaneous_task1",
|
||||
"python_extensions_task1",
|
||||
"remote_file_access_task1",
|
||||
"remote_rendering_task1",
|
||||
"rendering_task1",
|
||||
"transparent_particles_task1"
|
||||
],
|
||||
"pymol": [
|
||||
"MovieSchool_1_task1",
|
||||
"MovieSchool_1_task2",
|
||||
"MovieSchool_1_task3",
|
||||
"MovieSchool_1_task4",
|
||||
"MovieSchool_1_task5",
|
||||
"MovieSchool_3_task1",
|
||||
"MovieSchool_3_task10",
|
||||
"MovieSchool_3_task2",
|
||||
"MovieSchool_3_task3",
|
||||
"MovieSchool_3_task4",
|
||||
"MovieSchool_3_task5",
|
||||
"Mutagenesis_task4",
|
||||
"Practical_Pymol_for_Beginners_task6"
|
||||
],
|
||||
"vesta": [
|
||||
"VESTA_Manual_task1",
|
||||
"VESTA_Manual_task10",
|
||||
"VESTA_Manual_task11",
|
||||
"VESTA_Manual_task2",
|
||||
"VESTA_Manual_task3",
|
||||
"VESTA_Manual_task4",
|
||||
"VESTA_Manual_task5",
|
||||
"VESTA_Manual_task6",
|
||||
"VESTA_Manual_task7",
|
||||
"VESTA_Manual_task8",
|
||||
"VESTA_Manual_task9"
|
||||
]
|
||||
}
|
||||
1
evaluation_examples/test_single.json
Normal file
1
evaluation_examples/test_single.json
Normal file
@@ -0,0 +1 @@
|
||||
{"avogadro": ["building-organic-molecules_task1"]}
|
||||
Reference in New Issue
Block a user