38 Commits

Author SHA1 Message Date
c325c5bec6 增加origin训练项目 2026-04-13 15:45:54 +08:00
2836981670 data: 修订 Avogadro 任务数据并同步 test_final
- 删除无法稳定复现的 building-organic-molecules_task4 和 using-qtaim-and-wfn_task2
- naming-a-molecule_task1 / viewing-electrostatic-potential_task1 新增 upload_file 步骤,补全 input_files 并修正菜单路径
- building-metal-complexes_task7 修正 steps 重复步骤编号
- test_final.json 移除已删任务,新增 jade9 section
2026-04-04 19:24:41 +08:00
f2d40ed181 Update JADE benchmark task JSON files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 10:39:33 +08:00
7eb8c4000c data: 添加 Origin 输入数据文件并允许 data/origin 目录被追踪
新增 example_with_graph.opju 和 example_with_graph_scaled_from2_to_10.opju,同时在 .gitignore 中为 **/data/origin/ 添加例外规则。
2026-03-30 18:02:22 +08:00
581ccc4dfd data: 修订 Origin task2/3/4/5/8/9/11/12 的 instruction 与 steps
将部分任务从不可行路径(如 View→Formula Bar)改为实际可执行的操作路径(如 Window→Script Window),同步更新 steps 描述与 sleep 时长。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 17:58:52 +08:00
04dfd5a89a fix: traj.jsonl 写入统一使用 UTF-8 编码并保留非 ASCII 字符
所有 run_single_example 变体的 traj.jsonl 写入均加上 encoding="utf-8" 和 ensure_ascii=False,避免中文等字符被转义或写入失败。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 17:58:44 +08:00
b37e4d4372 feat: .exe启动自动最大化并强制前台(WaitForInputIdle+SetForegroundWindow) 2026-03-29 14:26:56 +08:00
d9986142b4 fix(origin): 修复任务配置缺少输入文件及task11设计错误
- task2/3/5/9/11: 补充upload_file+launch传入example.xlsx
- task11: 修正instruction菜单路径,steps补充建图前置步骤
2026-03-27 16:49:24 +08:00
6a5fe8e8ca config: 将评测域改为all以支持全软件批量评测 2026-03-27 14:35:35 +08:00
252d2f79ce fix(eval): 修复vllm_eval截图排序bug并对齐reeval逻辑
- 修复_load_screenshots_from_dir中截图按字符串排序导致step_9被误判为最终帧的bug,改为数字排序
- 对齐reeval.py的prompt逻辑:明确要求模型优先检查最终截图(STEP 1 EXAMINE FINAL SCREENSHOT FIRST)
- 评估temperature从0.7降至0.2提升一致性
- 新增batch_reeval.py:基于test_final.json批量重评测已有轨迹
- 新增reeval.py:单任务重评测脚本(final-frame-anchored evaluation)
- test_final.json新增avogadro(11题)和origin(8题)
2026-03-27 14:34:32 +08:00
4e192cf013 Save local changes before pulling 2026-03-26 10:52:22 +08:00
04089fa218 Save local changes before pulling 2026-03-26 10:50:07 +08:00
a38d2faec3 修改了origin启动地址 2026-03-26 10:46:29 +08:00
b1ed0a4785 add a11y_tree recording to trajectory output 2026-03-25 23:27:47 +08:00
c9912ad54c data: 删除 ovito remote_file_access/rendering 任务,更新 test_final.json 2026-03-25 23:27:47 +08:00
970d430dcf feat: 本地修改 agent.py / run_proxmox / chrome tasks 2026-03-25 23:27:47 +08:00
fe1bdae9a6 updata avogadro examples 2026-03-24 11:54:17 +08:00
adb66ef972 updata avogadro examples 2026-03-24 11:36:51 +08:00
3f0ef4849a Add origin data files 2026-03-19 18:05:13 +08:00
ae202be7b9 Update origin task 2026-03-19 17:58:11 +08:00
64e19ba17e Add ovito data examples 2026-03-19 10:08:25 +08:00
ae92e80a0b Update ovito evaluation examples 2026-03-19 10:00:27 +08:00
0e2702fb5b Merge branch 'lzy/data-processing' of https://git.matai.center/lzy/sci-gui-agent-benchmark into lzy/data-processing 2026-03-18 17:33:11 +08:00
16ea3641bd Add ovito example files 2026-03-18 16:49:11 +08:00
dc5fd173f1 data: update avogadro building-metal-complexes task1 & task3 2026-03-13 17:19:44 +08:00
19795a674b chore: gitignore 添加 demo_task3 录制产物 2026-03-11 11:13:23 +08:00
349f2142fb fix: vllm_eval 默认使用原始分辨率进行评估 2026-03-11 11:06:01 +08:00
a943c1e961 feat: 更新 Jade/VESTA 任务定义 + 最终评测清单
- Jade: 15个任务JSON更新 (instruction细化 + metadata.steps详细展开)
- VESTA: 10个任务JSON重构 (统一使用NaCl.cif/anatase_TiO2.cif + 步骤重写)
- VESTA: 删除task1, 新增2个CIF数据文件
- 新增 test_final.json (11 jade + 10 vesta = 21 tasks)
- run_proxmox.sh: MODEL→gpt-5.4, MAX_STEPS→35, TEST_META→test_final.json
2026-03-11 11:02:26 +08:00
d71f1f976d feat: vllm_eval 关键帧采样 + Gemini OpenAI 代理支持
- vllm_eval.py: 新增 _sample_key_frames 关键帧采样函数
- vllm_eval.py: 当截图超过 max_eval_images 时均匀采样
- vllm_eval.py: Gemini 模型支持通过 OpenAI 兼容代理调用
- test_single.json: 更新测试任务配置
2026-03-04 16:39:24 +08:00
4bde685bbd feat: 新增 Proxmox provider 支持及 inject_steps 参数
- 新增 desktop_env/providers/proxmox/ (manager + provider)
- desktop_env.py: 添加 proxmox 到 provider 名称列表
- providers/__init__.py: 工厂函数注册 proxmox provider
- run.py: 新增 --inject_steps/--no_inject_steps 参数
- run_proxmox.sh: Proxmox 运行脚本
2026-03-04 16:39:08 +08:00
e70f1335f0 config: 更新测试任务配置文件 2026-03-04 10:44:00 +08:00
9431bd5bfc data: 精炼已有 avogadro/imagej/origin/ovito/pymol/vesta 任务的 metadata steps 2026-03-04 10:43:49 +08:00
b1052c79cf data: 新增 jade/avogadro/ovito/pymol 评测任务数据 2026-03-04 10:43:29 +08:00
ac3f38ed58 feat: 新增 refine_metadata 脚本,更新 extract_instructions_v2 2026-03-04 10:43:14 +08:00
e4b039fc02 refine jade metadata steps: add shortcuts & merge menu operations to avoid timeout 2026-02-27 18:19:04 +08:00
b75f6bf341 feat: 增强任务步骤注入与a11y状态表达,提升树形交互稳定性
- 打通 metadata.steps 传递链路,将任务步骤注入 agent 预测上下文

- 优化 a11y tree 线性化输出:使用中心坐标并新增 states 列(expanded/collapsed/selected 等)

- 放宽可保留节点条件,保留无文本输入类控件(edit/textfield/searchbox 等)

- 强化输出约束:单轮仅允许动作代码或 WAIT/DONE/FAIL,禁止动作与 DONE 同轮返回

- 补充 avogadro 示例步骤:展开 aromatics 并选择 benzene.cjson
2026-02-26 18:56:53 +08:00
07e66490dd feat: 增强科研软件的 a11y tree 支持
- 扩展 heuristic_retrieve.py 白名单以覆盖科研软件 GUI 框架:
  - 新增 prefix 规则: sunawt (Java Swing), qt5q/qt6q (Qt), ovito, pymol,
    contentspanel, wx (wxWidgets), afx (MFC), thunderrt (VB6)
  - 新增 endswith 规则: edit, widget, box, dialog, view, frame, menuitem,
    menubar, toolbar, tabitem, treeitem, window
  - 新增 Qt 控件和 Win32 控件的精确匹配
- 在 agent.py 中添加原始 a11y tree 的调试日志
- 修复 run.py 中 agent 初始化缺少 platform='windows' 的问题
- 添加 NO_PROXY 绕过本地/VM IP (兼容 Clash 全局代理)
- lib_run_single.py 中应用启动等待时间增加到 15 秒
- 新增 test_each_domain_a11y_tree.json (每个域一个任务用于 a11y 验证)
2026-02-26 15:04:28 +08:00
9899d4a0c7 feat: 新增科研软件 benchmark 任务数据
- 新增 avogadro/imagej/jade/origin/ovito/pymol/vesta 等科研软件任务 JSON
- 修改 vllm_eval.py,修改图片文件名称为第x步
- desktop_env.py 添加额外数据参数 config 和 metadata
2026-02-25 15:19:36 +08:00
163 changed files with 10040 additions and 157 deletions

16
.gitignore vendored
View File

@@ -146,6 +146,8 @@ dmypy.json
# data
**/data/**/*
!**/utils/data/**/*
!**/data/origin/
!**/data/origin/**/*
# tmp files
**/tmp/**/*
@@ -208,7 +210,21 @@ quick_start.py
result_multi_apps_pengxiang_transformers12evaluation_examples/settings/proxy/dataimpulse.json
evaluation_examples/settings/proxy/dataimpulse.json
# Benchmark input data (large binary files - share via cloud storage or Git LFS)
evaluation_examples/inputs/
# Temporary data processing workspace (scraped docs, intermediate scripts)
evaluation_examples/sandbox/
# Image cache
evaluation_examples/inputs/.img_cache/
# Local test configurations (not for public repo)
evaluation_examples/spiderman.json
evaluation_examples/test_50_random_proportional.json
evaluation_examples/test_chrome.json
evaluation_examples/prepare_input_files.py
# Demo task3 录制产物
run_demo_task3.py
demo_task3_output/

87
batch_reeval.py Normal file
View File

@@ -0,0 +1,87 @@
"""
Batch re-evaluation based on test_final.json.
Usage:
python3 batch_reeval.py --results_dir /Volumes/Castor/课题/results_baseline_50steps/pyautogui/screenshot/gpt-5.4
python3 batch_reeval.py --results_dir /Volumes/Castor/课题/results_baseline_50steps/pyautogui/screenshot_a11y_tree/gpt-5.4
python3 batch_reeval.py --results_dir <path> --force # re-run even if already done
"""
import argparse
import json
import os
import subprocess
import sys
import glob
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
TEST_FINAL = os.path.join(SCRIPT_DIR, "evaluation_examples", "test_final.json")
TASK_CONFIG_DIR = os.path.join(SCRIPT_DIR, "evaluation_examples", "examples")
REEVAL = os.path.join(SCRIPT_DIR, "reeval.py")
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--results_dir", required=True,
help="e.g. /Volumes/.../screenshot/gpt-5.4")
parser.add_argument("--force", action="store_true",
help="Re-evaluate even if reeval_result.json already exists")
args = parser.parse_args()
with open(TEST_FINAL) as f:
test_final = json.load(f)
# Build task list
tasks = []
skipped = []
for sw, task_ids in test_final.items():
for task_id in task_ids:
result_dir = os.path.join(args.results_dir, sw, task_id)
task_json = os.path.join(TASK_CONFIG_DIR, sw, f"{task_id}.json")
reeval_out = os.path.join(result_dir, "reeval_result.json")
if not os.path.isdir(result_dir):
skipped.append(f" NO result_dir: {sw}/{task_id}")
continue
if not os.path.exists(task_json):
skipped.append(f" NO task JSON: {sw}/{task_id}")
continue
if not glob.glob(os.path.join(result_dir, "step_*.png")):
skipped.append(f" NO screenshots: {sw}/{task_id}")
continue
if os.path.exists(reeval_out) and not args.force:
skipped.append(f" already done: {sw}/{task_id}")
continue
tasks.append((task_json, result_dir, sw, task_id))
print(f"Tasks to evaluate: {len(tasks)}")
if skipped:
print(f"Skipped ({len(skipped)}):")
for s in skipped:
print(s)
print()
ok, failed = 0, []
for i, (task_json, result_dir, sw, task_id) in enumerate(tasks):
print(f"[{i+1}/{len(tasks)}] {sw}/{task_id}")
r = subprocess.run(
[sys.executable, REEVAL, "--task", task_json, "--result_dir", result_dir],
capture_output=True, text=True
)
if r.returncode != 0:
print(f" ERROR: {r.stderr[-300:]}")
failed.append(f"{sw}/{task_id}")
else:
for line in r.stdout.splitlines():
if "normalized" in line or "Task complete" in line or "Score" in line:
print(f" {line.strip()}")
ok += 1
print(f"\nDone: {ok} succeeded, {len(failed)} failed")
if failed:
print("Failed tasks:", failed)
if __name__ == "__main__":
main()

View File

@@ -309,6 +309,30 @@ class SetupController:
if command[0] == "google-chrome" and self.use_proxy:
command.append("--proxy-server=http://127.0.0.1:18888") # Use the proxy server set up by _proxy_setup
# Wrap Windows .exe launches with PowerShell to open maximized and focused
if isinstance(command, list) and command and str(command[0]).endswith(".exe"):
exe = command[0].replace("'", "\\'")
args = command[1:]
ps_args = ", ".join(f"'{a}'" for a in args) if args else ""
ps_cmd = f"$p = Start-Process '{exe}'"
if ps_args:
ps_cmd += f" -ArgumentList {ps_args}"
ps_cmd += (
" -WindowStyle Maximized -PassThru;"
" $p.WaitForInputIdle(15000) | Out-Null;"
" Add-Type -TypeDefinition '"
"using System;using System.Runtime.InteropServices;"
"public class Win32{"
"[DllImport(\"user32.dll\")]public static extern bool SetForegroundWindow(IntPtr h);"
"[DllImport(\"user32.dll\")]public static extern bool BringWindowToTop(IntPtr h);"
"}';"
" [Win32]::SetForegroundWindow($p.MainWindowHandle);"
" [Win32]::BringWindowToTop($p.MainWindowHandle)"
)
command = ["powershell", "-Command", ps_cmd]
shell = False
logger.info(f"Wrapped launch command with PowerShell maximized+focused: {ps_cmd}")
payload = json.dumps({"command": command, "shell": shell})
headers = {"Content-Type": "application/json"}

View File

@@ -20,42 +20,42 @@ Metric = Callable[[Any, Any], float]
Getter = Callable[[gym.Env, Dict[str, Any]], Any]
MAX_RETRIES = 5 # Maximum retries for environment setup
def _fix_pyautogui_less_than_bug(command: str) -> str:
"""
Fix PyAutoGUI '<' character bug by converting it to hotkey("shift", ',') calls.
This fixes the known PyAutoGUI issue where typing '<' produces '>' instead.
References:
- https://github.com/asweigart/pyautogui/issues/198
- https://github.com/xlang-ai/OSWorld/issues/257
Args:
command (str): The original pyautogui command
Returns:
str: The fixed command with '<' characters handled properly
"""
# Pattern to match press('<') or press('\u003c') calls
# Pattern to match press('<') or press('\u003c') calls
press_pattern = r'pyautogui\.press\(["\'](?:<|\\u003c)["\']\)'
# Handle press('<') calls
def replace_press_less_than(match):
return 'pyautogui.hotkey("shift", ",")'
# First handle press('<') calls
command = re.sub(press_pattern, replace_press_less_than, command)
# Pattern to match typewrite calls with quoted strings
typewrite_pattern = r'pyautogui\.typewrite\((["\'])(.*?)\1\)'
# Then handle typewrite calls
def process_typewrite_match(match):
quote_char = match.group(1)
content = match.group(2)
# Preprocess: Try to decode Unicode escapes like \u003c to actual '<'
# This handles cases where '<' is represented as escaped Unicode
try:
@@ -65,15 +65,15 @@ def _fix_pyautogui_less_than_bug(command: str) -> str:
except UnicodeDecodeError:
# If decoding fails, proceed with original content to avoid breaking existing logic
pass # English comment: Graceful degradation - fall back to original content if decoding fails
# Check if content contains '<'
if '<' not in content:
return match.group(0)
# Split by '<' and rebuild
parts = content.split('<')
result_parts = []
for i, part in enumerate(parts):
if i == 0:
# First part
@@ -84,11 +84,11 @@ def _fix_pyautogui_less_than_bug(command: str) -> str:
result_parts.append('pyautogui.hotkey("shift", ",")')
if part:
result_parts.append(f"pyautogui.typewrite({quote_char}{part}{quote_char})")
return '; '.join(result_parts)
command = re.sub(typewrite_pattern, process_typewrite_match, command)
return command
@@ -145,12 +145,12 @@ class DesktopEnv(gym.Env):
self.screen_width = screen_size[0]
self.screen_height = screen_size[1]
# Default
# Default
self.server_port = 5000
self.chromium_port = 9222
self.vnc_port = 8006
self.vlc_port = 8080
# Initialize with default (no proxy) provider
self.current_use_proxy = False
self.manager, self.provider = create_vm_manager_and_provider(provider_name, region, use_proxy=False)
@@ -162,7 +162,7 @@ class DesktopEnv(gym.Env):
# vmware, virtualbox are always used as the emulator starts from a dirty state
if self.provider_name in {"docker", "aws", "gcp", "azure", "aliyun", "volcengine"}:
self.is_environment_used = False
elif self.provider_name in {"vmware", "virtualbox"}:
elif self.provider_name in {"vmware", "virtualbox", "proxmox"}:
self.is_environment_used = True
else:
raise ValueError(f"Invalid provider name: {self.provider_name}")
@@ -173,7 +173,7 @@ class DesktopEnv(gym.Env):
if provider_name in {"vmware", "virtualbox"} else path_to_vm
else:
self.path_to_vm = self.manager.get_vm_path(os_type=self.os_type, region=region, screen_size=(self.screen_width, self.screen_height))
self.snapshot_name = snapshot_name
self.cache_dir_base: str = cache_dir
# todo: add the logic to get the screen size from the VM
@@ -229,8 +229,8 @@ class DesktopEnv(gym.Env):
# due to the fact it could be changed when implemented by cloud services
path_to_vm = self.provider.revert_to_snapshot(self.path_to_vm, self.snapshot_name)
if path_to_vm and not path_to_vm == self.path_to_vm:
# path_to_vm has to be a new path
# path_to_vm has to be a new path
self.manager.delete_vm(self.path_to_vm, self.region)
self.manager.add_vm(path_to_vm, self.region)
self.manager.occupy_vm(path_to_vm, os.getpid(), self.region)
@@ -245,7 +245,7 @@ class DesktopEnv(gym.Env):
self.provider.stop_emulator(self.path_to_vm)
def reset(self, task_config: Optional[Dict[str, Any]] = None, seed=None, options=None) -> Dict[str, Any]:
# Reset to certain task in OSWorld
logger.info("Resetting environment...")
logger.info("Switching task...")
@@ -258,17 +258,17 @@ class DesktopEnv(gym.Env):
# Only revert to snapshot if environment has been used (step/setup)
# This optimization is especially important for cloud providers like AWS
# where unnecessary snapshot operations are costly and time-consuming
if task_config is not None:
# Only consider task proxy requirement if proxy is enabled at system level
task_use_proxy = task_config.get("proxy", False) and self.enable_proxy
if not self.enable_proxy and task_config.get("proxy", False):
logger.info("Task requires proxy but proxy is disabled at system level, ignoring proxy requirement.")
if task_use_proxy != self.current_use_proxy:
# keep because get_info_from_website depend on this
self.current_use_proxy = task_use_proxy
if self.is_environment_used:
logger.info("Environment has been used, reverting to snapshot: {}...".format(self.snapshot_name))
self._revert_to_snapshot()
@@ -302,7 +302,7 @@ class DesktopEnv(gym.Env):
time.sleep(5)
else:
break
logger.info("Environment setup complete.")
observation = self._get_obs()
@@ -333,7 +333,8 @@ class DesktopEnv(gym.Env):
os.makedirs(self.cache_dir, exist_ok=True)
self.instruction = task_config["instruction"]
self.config = task_config["config"] if "config" in task_config else []
self.metadata = task_config.get("metadata", {})
self._set_evaluator_info(task_config)
def _set_evaluator_info(self, task_config: Dict[str, Any]):
@@ -386,7 +387,7 @@ class DesktopEnv(gym.Env):
def step(self, action, pause=2):
self._step_no += 1
self.action_history.append(action)
# Mark environment as used when step is called
self.is_environment_used = True
@@ -461,12 +462,16 @@ class DesktopEnv(gym.Env):
self.metric_options["instruction"] = self.instruction
self.metric_options["eval_model"] = self.eval_model
# Pass pre-configured environment info and expected steps
self.metric_options["config"] = self.config
self.metric_options["metadata"] = self.metadata
if result_dir:
self.metric_options["result_dir"] = result_dir
logger.info(f"Using result_dir for vllm_eval: {result_dir}")
logger.info(f"Evaluation options prepared: {self.metric_options.keys()}")
if type(self.metric) == list:
# Multiple metrics to evaluate whether the task is successfully completed
results = []

View File

@@ -73,7 +73,13 @@ class UnifiedLLM:
elif model.startswith("claude"):
self.provider = "anthropic"
elif model.startswith("gemini"):
self.provider = "gemini"
# If OPENAI_API_KEY is set but GOOGLE_API_KEY is not,
# use OpenAI-compatible proxy for Gemini models
if os.getenv("OPENAI_API_KEY") and not os.getenv("GOOGLE_API_KEY"):
self.provider = "openai"
logger.info(f"Using OpenAI-compatible proxy for Gemini model: {model}")
else:
self.provider = "gemini"
else:
self.provider = "unknown"
@@ -287,29 +293,83 @@ class UnifiedLLM:
raise ValueError(f"Unsupported provider: {self.provider}")
def _load_screenshots_from_dir(result_dir: str, compress: bool = True, max_size: int = 800, quality: int = 85) -> List[str]:
def _sample_key_frames(items: list, max_count: int) -> list:
"""
Load all step screenshots from result directory and convert to base64
Uniformly sample key frames while always keeping the first and last items.
Args:
items: List of items to sample from
max_count: Maximum number of items to keep (must be >= 2)
Returns:
List of sampled indices (sorted)
"""
n = len(items)
if n <= max_count:
return list(range(n))
# Always keep first and last
if max_count < 2:
max_count = 2
indices = [0] # first frame
# Uniformly sample (max_count - 2) frames from the middle
middle_count = max_count - 2
if middle_count > 0:
step = (n - 2) / (middle_count + 1)
for i in range(1, middle_count + 1):
idx = int(round(i * step))
indices.append(idx)
indices.append(n - 1) # last frame
# Deduplicate and sort
indices = sorted(set(indices))
return indices
def _load_screenshots_from_dir(result_dir: str, compress: bool = False, max_size: int = 800, quality: int = 85, max_images: int = 0) -> tuple:
"""
Load step screenshots from result directory and convert to base64.
When max_images > 0 and there are more screenshots than max_images,
uniformly sample key frames (always keeping first and last).
Args:
result_dir: Path to result directory containing step_*.png files
compress: Whether to compress images (default: True)
max_size: Maximum dimension for compression (default: 800)
quality: JPEG quality for compression (default: 85)
max_images: Maximum number of screenshots to load (0 = no limit)
Returns:
List of base64 encoded screenshot strings
Tuple of (list of base64 encoded screenshot strings, list of short filenames like 'step_1', 'step_2', ...)
"""
screenshots = []
filenames = []
# Find all step screenshot files (e.g., step_1_20240101@120000.png)
# Sort numerically by step number to avoid lexicographic issues (step_10 < step_2 in string sort)
import re as _re_sort
pattern = os.path.join(result_dir, "step_*.png")
screenshot_files = sorted(glob.glob(pattern))
screenshot_files = sorted(
glob.glob(pattern),
key=lambda p: int(_re_sort.search(r"step_(\d+)", os.path.basename(p)).group(1))
)
if not screenshot_files:
logger.warning(f"No screenshot files found in {result_dir}")
return screenshots
return screenshots, filenames
# Key frame sampling: if max_images > 0 and we have more files than allowed,
# keep first + last + uniformly sampled middle frames
total_files = len(screenshot_files)
if max_images > 0 and total_files > max_images:
sampled_indices = _sample_key_frames(screenshot_files, max_images)
screenshot_files_sampled = [screenshot_files[i] for i in sampled_indices]
logger.info(f"Key frame sampling: {total_files} screenshots -> {len(screenshot_files_sampled)} "
f"(max_images={max_images}, kept indices: {sampled_indices})")
screenshot_files = screenshot_files_sampled
import re as _re
for filepath in screenshot_files:
try:
with open(filepath, "rb") as f:
@@ -321,11 +381,16 @@ def _load_screenshots_from_dir(result_dir: str, compress: bool = True, max_size:
img_b64 = _compress_image(img_b64, max_size=max_size, quality=quality)
screenshots.append(img_b64)
# Extract short name like 'step_1' from 'step_1_20240101@120000.png'
basename = os.path.basename(filepath)
match = _re.match(r'(step_\d+)', basename)
short_name = match.group(1) if match else basename
filenames.append(short_name)
except Exception as e:
logger.error(f"Error loading screenshot {filepath}: {e}")
logger.info(f"Loaded {len(screenshots)} screenshots from {result_dir}")
return screenshots
logger.info(f"Loaded {len(screenshots)} screenshots from {result_dir}: {filenames}")
return screenshots, filenames
def vllm_eval(result_state, **options) -> float:
@@ -342,6 +407,8 @@ def vllm_eval(result_state, **options) -> float:
- compress_images: Whether to compress images (default: True)
- max_image_size: Maximum image dimension for compression (default: 800)
- image_quality: JPEG quality for compression (default: 85)
- max_eval_images: Max screenshots for evaluation (0 = no limit, default: 10).
When exceeded, keeps first + last + uniformly sampled middle frames.
- temperature: Temperature parameter
- max_tokens: Maximum tokens
- top_p: Top-p parameter
@@ -354,20 +421,25 @@ def vllm_eval(result_state, **options) -> float:
screenshots = options.get("screenshots", [])
# Image compression options
compress_images = options.get("compress_images", True)
compress_images = options.get("compress_images", False)
max_image_size = options.get("max_image_size", 800)
image_quality = options.get("image_quality", 85)
max_eval_images = options.get("max_eval_images", 10)
screenshot_filenames = [] # Short names like 'step_1', 'step_2', ...
if result_dir and not screenshots:
screenshots = _load_screenshots_from_dir(
screenshots, screenshot_filenames = _load_screenshots_from_dir(
result_dir,
compress=compress_images,
max_size=max_image_size,
quality=image_quality
quality=image_quality,
max_images=max_eval_images
)
logger.info(f"Loaded {len(screenshots)} screenshots from result_dir: {result_dir}")
elif screenshots:
logger.info(f"Using {len(screenshots)} screenshots from options")
screenshot_filenames = [f"step_{i+1}" for i in range(len(screenshots))]
# Compress screenshots if needed
if compress_images:
logger.info("Compressing provided screenshots...")
@@ -375,41 +447,100 @@ def vllm_eval(result_state, **options) -> float:
instruction = options.get("instruction", "")
eval_model = options.get("eval_model", "gpt-4-vision-preview")
config = options.get("config", [])
metadata = options.get("metadata", {})
params = {
"temperature": options.get("temperature", 0.7),
"temperature": options.get("temperature", 0.2),
"max_tokens": options.get("max_tokens", 16384),
"top_p": options.get("top_p", 1.0)
}
llm = UnifiedLLM(eval_model)
prompt = f"""You are an expert evaluator for desktop environment tasks.
# Build pre-configured environment description from config
preconfig_items = []
for cfg in config:
if cfg.get("type") == "launch":
cmds = cfg.get("parameters", {}).get("command", [])
if cmds:
app_name = os.path.basename(cmds[0]) if cmds else "unknown"
preconfig_items.append(f"Application '{app_name}' was automatically launched before the agent started.")
elif cfg.get("type") == "sleep":
pass # not relevant to scoring
elif cfg.get("type") == "open":
path = cfg.get("parameters", {}).get("path", "")
preconfig_items.append(f"File/URL '{path}' was automatically opened before the agent started.")
Task Instruction: {instruction}
preconfig_section = ""
if preconfig_items:
preconfig_desc = "\n".join(f" - {item}" for item in preconfig_items)
preconfig_section = f"""
PRE-CONFIGURED ENVIRONMENT (done BEFORE the agent started, NOT the agent's work):
{preconfig_desc}
IMPORTANT: The above actions were performed automatically as part of environment setup. The agent did NOT perform these actions. Do NOT give ANY credit for them. For example, if the application was pre-launched, the agent merely having the application open is worth 0 points - that was the starting state."""
I will provide you with screenshot(s) showing the current state of the desktop environment. Please analyze the task execution step by step and provide a detailed evaluation.
# Build expected steps section from metadata
expected_steps_section = ""
if metadata.get("steps"):
expected_steps_section = f"""
EXPECTED STEPS for this task (use as reference for what the agent should have done):
{metadata['steps']}
NOTE: Evaluate the screenshots against these expected steps. Only give credit for steps that show VISIBLE evidence of completion BEYOND the pre-configured starting state."""
IMPORTANT: You must respond with ONLY a valid JSON object (no additional text before or after). Use the following exact format:
# Build image list description for the prompt
if screenshot_filenames:
img_list_str = ", ".join(screenshot_filenames)
img_info = f"""\nYou are provided with exactly {len(screenshot_filenames)} screenshots in chronological order: {img_list_str}
The FIRST screenshot is: {screenshot_filenames[0]}
The LAST screenshot (final state): {screenshot_filenames[-1]}
IMPORTANT: Only reference screenshots from the list above. Do NOT reference any screenshot that is not listed."""
else:
img_info = "\nNo screenshots were provided."
final_name = screenshot_filenames[-1] if screenshot_filenames else "N/A"
prompt = f"""You are a STRICT evaluator for desktop GUI agent tasks.
Task: {instruction}
{preconfig_section}
{expected_steps_section}
{img_info}
════════════════════════════════════════════════════
STEP 1 — EXAMINE THE FINAL SCREENSHOT FIRST
The LAST image provided is "{final_name}" — this is the FINAL STATE of the agent's session.
Look at this image carefully NOW before anything else. Ask yourself:
"Does this final screenshot show the task is complete?"
Only after answering that, use earlier screenshots to understand HOW the agent got there.
════════════════════════════════════════════════════
SCORING RULES:
1. Base your final_completion and score PRIMARILY on "{final_name}" (the last image).
2. Credit ONLY actions performed BY THE AGENT (not pre-configured setup).
3. Require VISIBLE evidence in a specific screenshot for each step.
4. If the final screenshot shows the task is done, score high even if earlier steps were messy.
SCORE GUIDE (0-10):
- 0: No agent progress; only pre-configured state visible.
- 1-3: Minor actions taken, far from goal.
- 4-6: Meaningful progress, roughly half done.
- 7-8: Most steps done, minor issues.
- 9: Essentially complete, cosmetic differences only.
- 10: Fully and perfectly complete with clear visual proof in the final screenshot.
Respond with ONLY valid JSON (no extra text):
{{
"final_screenshot": "{final_name}",
"final_screenshot_description": "Describe exactly what you see in {final_name}",
"task_complete_in_final": true/false,
"steps_analysis": [
{{"step": "Step description", "status": "Success/Fail", "evidence_img": "step_X.png", "reason": "Brief explanation"}},
{{"step": "Another step", "status": "Success/Fail", "evidence_img": "step_Y.png", "reason": "Brief explanation"}}
{{"step": "...", "status": "Success/Fail", "evidence_img": "step_X", "reason": "..."}}
],
"final_completion": "True/False",
"score": 0-10
}}
Where:
- "steps_analysis": Array of steps you identified from the screenshots (reference screenshot filenames like step_1.png, step_2.png, etc.)
- "status": Either "Success" or "Fail" for each step
- "evidence_img": The screenshot filename that shows evidence for this step (e.g., "step_2.png")
- "reason": Brief explanation of why this step succeeded or failed
- "final_completion": "True" if the overall task is completed, "False" otherwise
- "score": Integer from 0 to 10, where 10 means perfectly completed and 0 means not completed at all
Remember: Return ONLY the JSON object, no additional text."""
}}"""
try:
result = llm.generate_with_images(

View File

@@ -4,7 +4,7 @@ from desktop_env.providers.base import VMManager, Provider
def create_vm_manager_and_provider(provider_name: str, region: str, use_proxy: bool = False):
"""
Factory function to get the Virtual Machine Manager and Provider instances based on the provided provider name.
Args:
provider_name (str): The name of the provider (e.g., "aws", "vmware", etc.)
region (str): The region for the provider
@@ -39,5 +39,9 @@ def create_vm_manager_and_provider(provider_name: str, region: str, use_proxy: b
from desktop_env.providers.volcengine.manager import VolcengineVMManager
from desktop_env.providers.volcengine.provider import VolcengineProvider
return VolcengineVMManager(), VolcengineProvider()
elif provider_name == "proxmox":
from desktop_env.providers.proxmox.manager import ProxmoxVMManager
from desktop_env.providers.proxmox.provider import ProxmoxProvider
return ProxmoxVMManager(), ProxmoxProvider(region)
else:
raise NotImplementedError(f"{provider_name} not implemented!")

View File

@@ -0,0 +1,49 @@
import logging
import os
from desktop_env.providers.base import VMManager
logger = logging.getLogger("desktopenv.providers.proxmox.ProxmoxVMManager")
logger.setLevel(logging.INFO)
class ProxmoxVMManager(VMManager):
"""
Simplified VM manager for Proxmox.
Unlike VMware/VirtualBox, Proxmox VMs are pre-created on the server.
This manager does not handle VM provisioning, downloading, or local
registry management. The VM ID is passed directly via --path_to_vm.
"""
def __init__(self, registry_path=""):
pass
def initialize_registry(self, **kwargs):
pass
def add_vm(self, vm_path, **kwargs):
pass
def delete_vm(self, vm_path, **kwargs):
pass
def occupy_vm(self, vm_path, pid, **kwargs):
pass
def list_free_vms(self, **kwargs):
return []
def check_and_clean(self, **kwargs):
pass
def get_vm_path(self, os_type="Windows", region=None, screen_size=(1920, 1080), **kwargs):
"""Return the VM ID from environment variable or default.
For Proxmox, the VM is pre-created. The VM ID should be passed
via --path_to_vm argument. This method is only called when
--path_to_vm is not provided.
"""
vmid = os.environ.get("PROXMOX_VM_ID", "102")
logger.info(f"Using Proxmox VM ID: {vmid}")
return vmid

View File

@@ -0,0 +1,235 @@
import logging
import os
import subprocess
import time
import requests
from desktop_env.providers.base import Provider
logger = logging.getLogger("desktopenv.providers.proxmox.ProxmoxProvider")
logger.setLevel(logging.INFO)
WAIT_TIME = 5
RETRY_INTERVAL = 3
MAX_WAIT_READY = 300 # seconds to wait for VM HTTP server to be ready
class ProxmoxProvider(Provider):
"""
Proxmox VE provider that manages VMs via SSH to the Proxmox host,
executing `qm` commands for VM lifecycle management.
Configuration via environment variables:
PROXMOX_SSH_HOST: SSH target (default: root@10.10.17.3)
PROXMOX_VM_IP: Fallback VM IP if guest agent is unavailable (default: 10.10.17.10)
"""
def __init__(self, region: str = None):
super().__init__(region)
self.ssh_host = os.environ.get("PROXMOX_SSH_HOST", "root@10.10.17.3")
self.vm_ip_fallback = os.environ.get("PROXMOX_VM_IP", "10.10.17.10")
self._vm_ip_cache = None
def _ssh_exec(self, command: str, timeout: int = 120, check: bool = True) -> str:
"""Execute a command on the Proxmox host via SSH.
Args:
command: The command to run on the remote host.
timeout: Timeout in seconds.
check: If True, raise on non-zero exit code.
Returns:
stdout output as a stripped string.
"""
ssh_cmd = [
"ssh",
"-o", "StrictHostKeyChecking=no",
"-o", "ConnectTimeout=10",
"-o", "BatchMode=yes",
self.ssh_host,
command,
]
logger.debug(f"SSH exec: {' '.join(ssh_cmd)}")
try:
result = subprocess.run(
ssh_cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
encoding="utf-8",
timeout=timeout,
)
if check and result.returncode != 0:
logger.error(f"SSH command failed (rc={result.returncode}): {result.stderr.strip()}")
return result.stdout.strip()
except subprocess.TimeoutExpired:
logger.error(f"SSH command timed out after {timeout}s: {command}")
return ""
except Exception as e:
logger.error(f"SSH execution error: {e}")
return ""
def _get_vm_status(self, vmid: str) -> str:
"""Get the current status of a VM (e.g. 'running', 'stopped')."""
output = self._ssh_exec(f"qm status {vmid}")
# output format: "status: running"
if ":" in output:
return output.split(":", 1)[1].strip()
return output.strip()
def _wait_for_status(self, vmid: str, target_status: str, timeout: int = 120):
"""Poll VM status until it matches target_status."""
start = time.time()
while time.time() - start < timeout:
status = self._get_vm_status(vmid)
logger.info(f"VM {vmid} status: {status} (waiting for {target_status})")
if status == target_status:
return True
time.sleep(RETRY_INTERVAL)
logger.error(f"VM {vmid} did not reach status '{target_status}' within {timeout}s")
return False
def _wait_for_vm_ready(self, vm_ip: str, server_port: int = 5000, timeout: int = MAX_WAIT_READY):
"""Poll the VM's HTTP server until it responds with a screenshot."""
start = time.time()
url = f"http://{vm_ip}:{server_port}/screenshot"
while time.time() - start < timeout:
try:
response = requests.get(url, timeout=(10, 10))
if response.status_code == 200:
logger.info(f"VM HTTP server is ready at {url}")
return True
except Exception:
pass
logger.info(f"Waiting for VM HTTP server at {url}...")
time.sleep(RETRY_INTERVAL)
logger.error(f"VM HTTP server at {url} not ready within {timeout}s")
return False
def start_emulator(self, path_to_vm: str, headless: bool, os_type: str = "Windows"):
"""Start the Proxmox VM.
Args:
path_to_vm: The VM ID as a string (e.g. "102").
headless: Ignored for Proxmox (VMs are always headless on server).
os_type: OS type of the VM.
"""
vmid = path_to_vm
logger.info(f"Starting Proxmox VM {vmid}...")
print(f"Starting Proxmox VM {vmid}...")
status = self._get_vm_status(vmid)
if status == "running":
logger.info(f"VM {vmid} is already running.")
else:
self._ssh_exec(f"qm start {vmid}")
if not self._wait_for_status(vmid, "running", timeout=120):
raise RuntimeError(f"Failed to start VM {vmid}")
# Wait for Flask HTTP server inside VM to be ready
vm_ip = self._resolve_vm_ip(vmid)
self._wait_for_vm_ready(vm_ip)
def _resolve_vm_ip(self, vmid: str) -> str:
"""Try to get VM IP via QEMU Guest Agent, fall back to env var."""
if self._vm_ip_cache:
return self._vm_ip_cache
# Try QEMU Guest Agent
try:
output = self._ssh_exec(
f"qm guest cmd {vmid} network-get-interfaces",
timeout=15,
check=False,
)
if output and "ip-address" in output:
import json
interfaces = json.loads(output)
for iface in interfaces:
for addr in iface.get("ip-addresses", []):
ip = addr.get("ip-address", "")
# Skip loopback and IPv6 link-local
if ip and not ip.startswith("127.") and not ip.startswith("fe80") and ":" not in ip:
logger.info(f"Got VM {vmid} IP from guest agent: {ip}")
self._vm_ip_cache = ip
return ip
except Exception as e:
logger.debug(f"Guest agent query failed: {e}")
# Fallback to env var / default
logger.info(f"Using fallback VM IP: {self.vm_ip_fallback}")
self._vm_ip_cache = self.vm_ip_fallback
return self.vm_ip_fallback
def get_ip_address(self, path_to_vm: str) -> str:
"""Return the VM's IP address.
Args:
path_to_vm: The VM ID as a string.
Returns:
IP address string (e.g. "10.10.17.10").
"""
vmid = path_to_vm
return self._resolve_vm_ip(vmid)
def save_state(self, path_to_vm: str, snapshot_name: str):
"""Create a snapshot of the VM.
Args:
path_to_vm: The VM ID.
snapshot_name: Name for the snapshot.
"""
vmid = path_to_vm
logger.info(f"Creating snapshot '{snapshot_name}' for VM {vmid}...")
self._ssh_exec(f"qm snapshot {vmid} {snapshot_name}", timeout=120)
time.sleep(WAIT_TIME)
logger.info(f"Snapshot '{snapshot_name}' created for VM {vmid}.")
def revert_to_snapshot(self, path_to_vm: str, snapshot_name: str):
"""Revert the VM to a snapshot and restart it.
Args:
path_to_vm: The VM ID.
snapshot_name: Name of the snapshot to revert to.
Returns:
The VM ID (path_to_vm).
"""
vmid = path_to_vm
logger.info(f"Reverting VM {vmid} to snapshot '{snapshot_name}'...")
# Stop VM first if running
status = self._get_vm_status(vmid)
if status == "running":
self._ssh_exec(f"qm stop {vmid}", timeout=60)
self._wait_for_status(vmid, "stopped", timeout=60)
# Rollback to snapshot
self._ssh_exec(f"qm rollback {vmid} {snapshot_name}", timeout=120)
time.sleep(WAIT_TIME)
# Clear IP cache since IP might change after rollback
self._vm_ip_cache = None
logger.info(f"VM {vmid} reverted to snapshot '{snapshot_name}'.")
return path_to_vm
def stop_emulator(self, path_to_vm: str, region=None, *args, **kwargs):
"""Stop the VM.
Args:
path_to_vm: The VM ID.
"""
vmid = path_to_vm
logger.info(f"Stopping Proxmox VM {vmid}...")
status = self._get_vm_status(vmid)
if status == "stopped":
logger.info(f"VM {vmid} is already stopped.")
return
self._ssh_exec(f"qm stop {vmid}", timeout=60)
self._wait_for_status(vmid, "stopped", timeout=60)
self._vm_ip_cache = None
logger.info(f"VM {vmid} stopped.")

Binary file not shown.

View File

@@ -0,0 +1,6 @@
Y\X,10,20,30,40,50
5,0.1,0.2,0.3,0.4,0.5
10,0.2,0.4,0.6,0.8,1.0
15,0.3,0.6,0.9,1.2,1.5
20,0.4,0.8,1.2,1.6,2.0
25,0.5,1.0,1.5,2.0,2.5
1 Y\X 10 20 30 40 50
2 5 0.1 0.2 0.3 0.4 0.5
3 10 0.2 0.4 0.6 0.8 1.0
4 15 0.3 0.6 0.9 1.2 1.5
5 20 0.4 0.8 1.2 1.6 2.0
6 25 0.5 1.0 1.5 2.0 2.5

View File

@@ -0,0 +1,14 @@
X,Y,Z
0,0,1.0
1,0,1.2
2,0,1.5
0,1,1.1
1,1,1.4
2,1,1.8
0,2,1.3
1,2,1.6
2,2,2.0
0.5,0.5,1.25
1.5,0.5,1.45
0.5,1.5,1.35
1.5,1.5,1.75
1 X Y Z
2 0 0 1.0
3 1 0 1.2
4 2 0 1.5
5 0 1 1.1
6 1 1 1.4
7 2 1 1.8
8 0 2 1.3
9 1 2 1.6
10 2 2 2.0
11 0.5 0.5 1.25
12 1.5 0.5 1.45
13 0.5 1.5 1.35
14 1.5 1.5 1.75

View File

@@ -0,0 +1,109 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
100
ITEM: BOX BOUNDS pp pp pp
0.0000000000000000e+00 2.0000000000000000e+01
0.0000000000000000e+00 2.0000000000000000e+01
0.0000000000000000e+00 2.0000000000000000e+01
ITEM: ATOMS id type x y z vx vy vz
1 1 1.234 2.345 3.456 0.001 0.002 -0.001
2 1 4.567 5.678 6.789 -0.002 0.001 0.003
3 1 7.890 8.901 9.012 0.003 -0.001 0.002
4 2 10.123 11.234 12.345 0.001 0.001 -0.002
5 2 13.456 14.567 15.678 -0.001 0.002 0.001
6 1 16.789 17.890 18.901 0.002 -0.002 0.001
7 2 19.012 1.123 2.234 -0.001 0.001 0.002
8 1 3.345 4.456 5.567 0.002 0.001 -0.001
9 2 6.678 7.789 8.890 -0.003 0.002 0.001
10 1 9.901 10.012 11.123 0.001 -0.001 0.003
11 1 0.500 1.500 2.500 0.001 0.002 -0.001
12 2 3.600 4.700 5.800 -0.002 0.001 0.003
13 1 6.700 7.800 8.900 0.003 -0.001 0.002
14 2 9.800 10.900 12.000 0.001 0.001 -0.002
15 1 13.100 14.200 15.300 -0.001 0.002 0.001
16 2 16.400 17.500 18.600 0.002 -0.002 0.001
17 1 19.700 0.800 1.900 -0.001 0.001 0.002
18 2 3.000 4.100 5.200 0.002 0.001 -0.001
19 1 6.300 7.400 8.500 -0.003 0.002 0.001
20 2 9.600 10.700 11.800 0.001 -0.001 0.003
21 1 2.100 3.200 4.300 0.001 0.002 -0.001
22 2 5.400 6.500 7.600 -0.002 0.001 0.003
23 1 8.700 9.800 10.900 0.003 -0.001 0.002
24 2 12.000 13.100 14.200 0.001 0.001 -0.002
25 1 15.300 16.400 17.500 -0.001 0.002 0.001
26 2 18.600 19.700 0.800 0.002 -0.002 0.001
27 1 1.900 3.000 4.100 -0.001 0.001 0.002
28 2 5.200 6.300 7.400 0.002 0.001 -0.001
29 1 8.500 9.600 10.700 -0.003 0.002 0.001
30 2 11.800 12.900 14.000 0.001 -0.001 0.003
31 1 0.750 1.850 2.950 0.001 0.002 -0.001
32 2 4.050 5.150 6.250 -0.002 0.001 0.003
33 1 7.350 8.450 9.550 0.003 -0.001 0.002
34 2 10.650 11.750 12.850 0.001 0.001 -0.002
35 1 13.950 15.050 16.150 -0.001 0.002 0.001
36 2 17.250 18.350 19.450 0.002 -0.002 0.001
37 1 0.550 1.650 2.750 -0.001 0.001 0.002
38 2 3.850 4.950 6.050 0.002 0.001 -0.001
39 1 7.150 8.250 9.350 -0.003 0.002 0.001
40 2 10.450 11.550 12.650 0.001 -0.001 0.003
41 1 13.750 14.850 15.950 0.001 0.002 -0.001
42 2 17.050 18.150 19.250 -0.002 0.001 0.003
43 1 0.350 1.450 2.550 0.003 -0.001 0.002
44 2 3.650 4.750 5.850 0.001 0.001 -0.002
45 1 6.950 8.050 9.150 -0.001 0.002 0.001
46 2 10.250 11.350 12.450 0.002 -0.002 0.001
47 1 13.550 14.650 15.750 -0.001 0.001 0.002
48 2 16.850 17.950 19.050 0.002 0.001 -0.001
49 1 0.150 1.250 2.350 -0.003 0.002 0.001
50 2 3.450 4.550 5.650 0.001 -0.001 0.003
51 1 6.750 7.850 8.950 0.001 0.002 -0.001
52 2 10.050 11.150 12.250 -0.002 0.001 0.003
53 1 13.350 14.450 15.550 0.003 -0.001 0.002
54 2 16.650 17.750 18.850 0.001 0.001 -0.002
55 1 19.950 1.050 2.150 -0.001 0.002 0.001
56 2 3.250 4.350 5.450 0.002 -0.002 0.001
57 1 6.550 7.650 8.750 -0.001 0.001 0.002
58 2 9.850 10.950 12.050 0.002 0.001 -0.001
59 1 13.150 14.250 15.350 -0.003 0.002 0.001
60 2 16.450 17.550 18.650 0.001 -0.001 0.003
61 1 1.100 2.200 3.300 0.001 0.002 -0.001
62 2 4.400 5.500 6.600 -0.002 0.001 0.003
63 1 7.700 8.800 9.900 0.003 -0.001 0.002
64 2 11.000 12.100 13.200 0.001 0.001 -0.002
65 1 14.300 15.400 16.500 -0.001 0.002 0.001
66 2 17.600 18.700 19.800 0.002 -0.002 0.001
67 1 0.900 2.000 3.100 -0.001 0.001 0.002
68 2 4.200 5.300 6.400 0.002 0.001 -0.001
69 1 7.500 8.600 9.700 -0.003 0.002 0.001
70 2 10.800 11.900 13.000 0.001 -0.001 0.003
71 1 14.100 15.200 16.300 0.001 0.002 -0.001
72 2 17.400 18.500 19.600 -0.002 0.001 0.003
73 1 0.700 1.800 2.900 0.003 -0.001 0.002
74 2 4.000 5.100 6.200 0.001 0.001 -0.002
75 1 7.300 8.400 9.500 -0.001 0.002 0.001
76 2 10.600 11.700 12.800 0.002 -0.002 0.001
77 1 13.900 15.000 16.100 -0.001 0.001 0.002
78 2 17.200 18.300 19.400 0.002 0.001 -0.001
79 1 0.300 1.400 2.500 -0.003 0.002 0.001
80 2 3.600 4.700 5.800 0.001 -0.001 0.003
81 1 6.900 8.000 9.100 0.001 0.002 -0.001
82 2 10.200 11.300 12.400 -0.002 0.001 0.003
83 1 13.500 14.600 15.700 0.003 -0.001 0.002
84 2 16.800 17.900 19.000 0.001 0.001 -0.002
85 1 0.100 1.200 2.300 -0.001 0.002 0.001
86 2 3.400 4.500 5.600 0.002 -0.002 0.001
87 1 6.700 7.800 8.900 -0.001 0.001 0.002
88 2 10.000 11.100 12.200 0.002 0.001 -0.001
89 1 13.300 14.400 15.500 -0.003 0.002 0.001
90 2 16.600 17.700 18.800 0.001 -0.001 0.003
91 1 2.000 3.100 4.200 0.001 0.002 -0.001
92 2 5.300 6.400 7.500 -0.002 0.001 0.003
93 1 8.600 9.700 10.800 0.003 -0.001 0.002
94 2 11.900 13.000 14.100 0.001 0.001 -0.002
95 1 15.200 16.300 17.400 -0.001 0.002 0.001
96 2 18.500 19.600 0.700 0.002 -0.002 0.001
97 1 1.800 2.900 4.000 -0.001 0.001 0.002
98 2 5.100 6.200 7.300 0.002 0.001 -0.001
99 1 8.400 9.500 10.600 -0.003 0.002 0.001
100 2 11.700 12.800 13.900 0.001 -0.001 0.003

View File

@@ -0,0 +1,5 @@
3
Properties=species:S:1:pos:R:3:Potential_Energy:R:1
O 0.000 0.000 0.000 -0.8520
H 0.957 0.000 -0.240 -0.2341
H -0.957 0.000 -0.240 -0.2341

View File

@@ -0,0 +1,34 @@
# generated using pymatgen
data_NaCl
_symmetry_space_group_name_H-M 'P 1'
_cell_length_a 5.69169400
_cell_length_b 5.69169400
_cell_length_c 5.69169400
_cell_angle_alpha 90.00000000
_cell_angle_beta 90.00000000
_cell_angle_gamma 90.00000000
_symmetry_Int_Tables_number 1
_chemical_formula_structural NaCl
_chemical_formula_sum 'Na4 Cl4'
_cell_volume 184.38459333
_cell_formula_units_Z 4
loop_
_symmetry_equiv_pos_site_id
_symmetry_equiv_pos_as_xyz
1 'x, y, z'
loop_
_atom_site_type_symbol
_atom_site_label
_atom_site_symmetry_multiplicity
_atom_site_fract_x
_atom_site_fract_y
_atom_site_fract_z
_atom_site_occupancy
Na Na0 1 0.00000000 0.00000000 0.00000000 1
Na Na1 1 0.00000000 0.50000000 0.50000000 1
Na Na2 1 0.50000000 0.00000000 0.50000000 1
Na Na3 1 0.50000000 0.50000000 0.00000000 1
Cl Cl4 1 0.50000000 0.00000000 0.00000000 1
Cl Cl5 1 0.50000000 0.50000000 0.50000000 1
Cl Cl6 1 0.00000000 0.00000000 0.50000000 1
Cl Cl7 1 0.00000000 0.50000000 0.00000000 1

View File

@@ -0,0 +1,113 @@
#------------------------------------------------------------------------------
#$Date: 2023-03-26 11:09:57 +0300 (Sun, 26 Mar 2023) $
#$Revision: 282068 $
#$URL: svn://localhost/cod/cif/5/00/02/5000223.cif $
#------------------------------------------------------------------------------
#
# This file is available in the Crystallography Open Database (COD),
# http://www.crystallography.net/
#
# All data on this site have been placed in the public domain by the
# contributors.
#
data_5000223
loop_
_publ_author_name
'Horn, M'
'Schwerdtfeger, C F'
'Meagher, E P'
_publ_section_title
;
Refinement of the structure of anatase at several temperatures
Sample: T = 300 C
;
_journal_name_full
;
Zeitschrift fuer Kristallographie, Kristallgeometrie, Kristallphysik,
Kristallchemie (-144,1977)
;
_journal_page_first 273
_journal_page_last 281
_journal_volume 136
_journal_year 1972
_chemical_compound_source 'Lengenbach quarry, Binnatal, Switzerland'
_chemical_formula_structural TiO2
_chemical_formula_sum 'O2 Ti'
_chemical_name_mineral Anatase
_chemical_name_systematic 'Titanium oxide'
_space_group_IT_number 141
_symmetry_cell_setting tetragonal
_symmetry_space_group_name_Hall 'I 4bw 2bw -1bw'
_symmetry_space_group_name_H-M 'I 41/a m d :1'
_cell_angle_alpha 90
_cell_angle_beta 90
_cell_angle_gamma 90
_cell_formula_units_Z 4
_cell_length_a 3.7892(4)
_cell_length_b 3.7892(4)
_cell_length_c 9.537(1)
_cell_volume 136.9
_database_code_amcsd 0010736
_diffrn_ambient_temperature 573.15
_exptl_crystal_density_diffrn 3.875
_refine_ls_R_factor_all 0.023
_cod_original_sg_symbol_H-M 'I 41/a m d S'
_cod_original_formula_sum 'Ti O2'
_cod_database_code 5000223
loop_
_space_group_symop_operation_xyz
x,y,z
-x,-y,z
x,1/2+y,1/4-z
-x,1/2-y,1/4-z
-x,y,z
x,-y,z
-x,1/2+y,1/4-z
x,1/2-y,1/4-z
y,x,-z
-y,-x,-z
y,1/2+x,1/4+z
-y,1/2-x,1/4+z
-y,x,-z
y,-x,-z
-y,1/2+x,1/4+z
y,1/2-x,1/4+z
1/2+x,1/2+y,1/2+z
1/2-x,1/2-y,1/2+z
1/2+x,y,3/4-z
1/2-x,-y,3/4-z
1/2-x,1/2+y,1/2+z
1/2+x,1/2-y,1/2+z
1/2-x,y,3/4-z
1/2+x,-y,3/4-z
1/2+y,1/2+x,1/2-z
1/2-y,1/2-x,1/2-z
1/2+y,x,3/4+z
1/2-y,-x,3/4+z
1/2-y,1/2+x,1/2-z
1/2+y,1/2-x,1/2-z
1/2-y,x,3/4+z
1/2+y,-x,3/4+z
loop_
_atom_site_label
_atom_site_type_symbol
_atom_site_symmetry_multiplicity
_atom_site_Wyckoff_symbol
_atom_site_fract_x
_atom_site_fract_y
_atom_site_fract_z
_atom_site_occupancy
_atom_site_attached_hydrogens
_atom_site_calc_flag
Ti1 Ti4+ 4 a 0. 0. 0. 1. 0 d
O1 O2- 8 e 0. 0. 0.2079(2) 1. 0 d
loop_
_atom_type_symbol
_atom_type_oxidation_number
Ti4+ 4.000
O2- -2.000
loop_
_cod_related_entry_id
_cod_related_entry_database
_cod_related_entry_code
1 AMCSD 0010736

View File

@@ -0,0 +1,45 @@
{
"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. 按下键盘快捷键 Ctrl+3或在顶部工具栏中单击 Template Tool 图标),激活模板工具。\n2. 在左侧(或右侧)的模板工具控制面板中,单击选中 Centers 选项卡。\n3. 在键盘上依次输入字母 C 和 o以选择 Cobalt (钴) 元素作为金属中心。\n4. 在形式电荷输入框旁,连续单击三次向上箭头(∧)按钮,将中心离子的形式电荷设置为 +3。\n5. 单击坐标下拉框,选择 6: Octahedral八面体选项设定配位几何形状为八面体。\n6. 将鼠标移动到主界面的 3D 视图空白区域,单击鼠标左键,放置带有六个配位氢原子的钴中心结构。\n7. 在模板工具控制面板中,单击选中 Ligands 选项卡。\n8. 单击 Ligand 下拉框,从列表中选择 ammine (NH3) 配体。\n9. 在 3D 视图中,将鼠标悬停并单击钴原子上的第 1 个氢原子,将其替换为氨配体。\n10. 若有氢原子被遮挡,按下 Ctrl+1 切换至导航视角,拖动鼠标旋转分子,使目标氢原子可见,再切换回 Ctrl+3 模板工具后单击钴原子上的第 2 个氢原子,将其替换为氨配体。\n11. 重复上述操作(必要时按 Ctrl+1 旋转视角后切回 Ctrl+3单击钴原子上的第 3 个氢原子,将其替换为氨配体。\n12. 重复上述操作(必要时按 Ctrl+1 旋转视角后切回 Ctrl+3单击钴原子上的第 4 个氢原子,将其替换为氨配体。\n13. 重复上述操作(必要时按 Ctrl+1 旋转视角后切回 Ctrl+3单击钴原子上的第 5 个氢原子,将其替换为氨配体。\n14. 重复上述操作(必要时按 Ctrl+1 旋转视角后切回 Ctrl+3单击钴原子上的第 6 个氢原子,将其替换为氨配体,完成 [Co(NH3)6]3+ 化合物的构建。",
"steps_original": "1. 打开 Template Tool快捷键 Ctrl+3 或点击工具栏图标)。\n2. 切换到 Centers 选项卡。\n3. 输入 'Co' 或从弹出菜单中选择钴元素。\n4. 点击三次 '+' 符号,将正电荷设置为 +3。\n5. 按键 '6' 或选择八面体几何形状。\n6. 点击空白区域,放置钴中心,六个氢原子会显示在配位位置。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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' 图标按钮(或在键盘上按 Ctrl+3 快捷键)以激活模板工具面板。\n2. 在弹出的模板工具面板中,单击顶部名为 'Centers' 的选项卡。\n3. 在键盘上依次输入字母键 'N' 和 'i',或单击元素下拉菜单并选择 'Nickel',以选中镍元素。\n4. 在形式电荷(形式电荷)数值框旁,连续单击向上箭头('^')按钮两次,将中心离子的形式电荷从 0 调整为 '+2'。\n5. 单击坐标(坐标)下拉菜单将其展开,在弹出的选项列表中选择 '4: Square Planar',以设置平面四方配位几何构型。\n6. 将鼠标移动到 3D 模型视图的空白区域,单击鼠标左键以放置带有四个占位氢原子的镍中心。\n7. 在模板工具面板中,单击顶部名为 'Ligands' 的选项卡切换到配体模式。\n8. 在键盘上依次输入字母键 'e' 和 'n',以在配体库中选中 'ethylenediamine' (乙二胺) 配体。\n9. 在 3D 视图中,单击选中中心镍原子周围的任意一个氢原子。\n10. 在 3D 视图中,单击与上一步选中的氢原子相邻(顺式位置)的另一个氢原子,完成双齿配体的桥接结合。\n11. 在模板工具面板中,单击 '类型Type' 下拉菜单,将配体类型从 'Bidentate'(双齿)切换为 'Monodentate'(单齿),然后单击 'Ligand' 下拉菜单并选择 'ammine'(氨)配体。\n12. 在 3D 视图中,单击剩余的第三个占位氢原子将其替换为氨配体。\n13. 在 3D 视图中,单击最后一个剩余的氢原子,将其替换为第二个氨配体,完成目标化合物构建。",
"steps_original": "1. 打开 Template Tool。\n2. 切换到 Centers 选项卡。\n3. 输入 'Ni' 或从弹出菜单中选择镍元素。\n4. 连续单击形式电荷数值框旁的向上箭头('^')按钮两次,将正电荷设置为 +2。\n5. 单击坐标下拉菜单将其展开,在列表中选择 '4: Square Planar' 平面四方几何形状。\n6. 点击空白区域,放置镍中心,四个氢原子会显示在配位位置。"
}
}

View File

@@ -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. 在键盘上按下快捷键 Ctrl+3或在在工具栏中单击 'Template Tool'(模板)图标按钮以激活模板工具。\n2. 在左侧界面的模板设置面板中,单击选中 '居中' 选项卡。\n3. 单击 '元素' 右侧的下拉菜单,在展开的列表中单击 '其他',在弹出的元素周期表中找到并单击选择锆元素 'Zr'。\n4. 在 '形式电荷' 右侧,单击向上箭头 4 次,将形式电荷设置为 +4。\n5. 单击 '坐标' 右侧的下拉菜单,选择 '4: Tetrahedral' 四面体配位几何构型。\n6. 将鼠标指针移动到中间主绘图视口的空白区域,单击鼠标左键,放置一个带有四个氢原子的锆中心骨架。\n7. 在左侧界面的模板设置面板中,单击选中 'Ligands' 选项卡。\n8. 单击 '类型' 下拉菜单,选择 'Haptic'。\n9. 在 'Ligand' 对话框列表中,单击选中 '其他'然后在弹出界面中选择eta5-Cp-cyclopentyl.cjson最后点击插入。\n10. 将鼠标指针移动到主绘图视口中锆中心上的任意一个氢原子球体上,单击鼠标左键,将其替换为第一个 Cp 配体环。\n11. 将鼠标指针移动到相邻的另一个氢原子球体上,单击鼠标左键,将其替换为第二个 Cp 配体环。\n12. 在工具栏中单击 'Draw Tool'(绘制)图标按钮切换到绘制工具。\n13. 在左侧 Draw Tool 设置面板中,单击 '元素' 右侧的下拉菜单,选择 'Chlorine (17)' 氯元素。\n14. 将鼠标指针移动到主绘图视口中剩余的第一个氢原子球体上,单击鼠标左键,将其替换为氯配体。\n15. 将鼠标指针移动到最后一个氢原子球体上,单击鼠标左键,将其替换为第二个氯配体。",
"steps_original": "1. 按下 Ctrl+3 或点击工具栏中的模板工具图标激活模板工具。\n2. 在左侧面板中点击 '居中' 选项卡,展开元素下拉菜单选择 '其他',在元素周期表中选择锆元素 Zr。\n3. 点击形式电荷右侧向上箭头 4 次,将电荷设置为 +4。\n4. 在坐标下拉菜单中选择 4: Tetrahedral 四面体构型。\n5. 在视口空白区域单击放置带有四个氢原子的锆中心骨架。\n6. 点击 'Ligands' 选项卡,在类型下拉菜单中选择 Haptic。\n7. 在 Ligand 列表中选择 '其他',在弹出界面中选择 eta5-Cp-cyclopentyl.cjson 并点击插入。\n8. 点击锆中心的一个氢原子替换为第一个 Cp 配体,再点击相邻氢原子替换为第二个 Cp 配体。\n9. 切换到 Draw Tool 绘制工具,在元素下拉菜单中选择 Chlorine (17)。\n10. 点击剩余两个氢原子,分别替换为两个氯配体。" }
}

View File

@@ -0,0 +1,45 @@
{
"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. 点击菜单栏构建(B) → 插入(I) → 分子…,打开\"插入片段\"对话框。\n2. 在\"筛选\"输入框中输入 benzene。\n3. 筛选结果会显示一个 aromatics 文件夹(树形结构),需要双击或点击展开该文件夹。\n4. 展开后选中列表中的 benzene.cjson 文件。\n5. 点击\"插入\"按钮将苯环插入到工作区。\n6. 点击关闭按钮关闭\"插入片段\"对话框,确认苯环已显示在主工作界面中。",
"steps_original": "1. 点击 Build → Insert → Molecule。\n2. 搜索 'benzene' 并确定插入该分子。\n3. 确保苯环显示在工作界面中。"
}
}

View File

@@ -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. 按下 Ctrl+N 新建文件。\n2. 单击菜单栏 '构建(B)' → '插入(I)' → 'SMILES...'。\n3. 输入甲苯 SMILES 字符串 'Cc1ccccc1',单击 'OK' 生成甲苯分子。\n4. 在工具栏中单击 'Draw Tool' 图标激活绘制工具。\n5. 在左侧 Draw Tool 面板中,取消勾选 '调整氢原子数目'。\n6. 单击 '元素' 下拉菜单,选择 '其他',在元素周期表中选择氮元素 'N'。\n7. 在主视口中找到甲苯苯环上与甲基相对的对位氢原子,单击将其替换为氮原子。\n8. 单击 '元素' 下拉菜单选择氧元素 'O',键级选择 '双键'。\n9. 单击氮原子,添加第一个双键氧原子。\n10. 将键级改为 '单键',再次单击氮原子,添加第二个单键氧原子,完成 -NO2 结构。\n11. 按下 'Ctrl+Alt+O' 运行几何优化确保分子结构正确。",
"steps_original": "1. 按 Ctrl+N 新建文件,通过 构建 → 插入 → SMILES 输入 'Cc1ccccc1' 生成甲苯分子。\n2. 激活 Draw Tool选择氮元素 N点击苯环对位氢原子替换为氮原子。\n3. 选择氧元素 O分别以双键和单键方式在氮原子上添加两个氧原子完成 -NO2 结构。\n4. 按 Ctrl+Alt+O 运行几何优化确保分子结构正确。" }
}

View File

@@ -0,0 +1,45 @@
{
"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. 在左侧 Draw Tool 面板中,单击 '元素' 下拉菜单,选择 '碳 (6)',键级勾选单键。\n3. 勾选 '调整氢原子数目' 复选框。\n4. 在主视口空白区域单击鼠标左键生成一个单碳结构甲烷CH₄。\n5. 按下快捷键 Ctrl+3 或单击工具栏上的 'Template Tool' 图标激活模板工具。\n6. 在左侧模板面板中,单击选中 '群组' 选项卡。\n7. 在群组列表中找到并单击选择羧基carboxylate/-COOH模板。\n8. 将鼠标移动到主视口中甲烷结构上的任意一个氢原子(白色球体)上。\n9. 单击该氢原子,将其替换为羧基(-COOH完成结构添加。",
"steps_original": "1. 使用 Draw Tool 在界面中绘制一个单碳。\n2. 激活 Template Tool通过按 Ctrl+3 或点击工具栏上的图标进入 Groups。\n3. 按 'C' 或 'co' 选择羧基。\n4. 点击单碳结构上的一个氢原子,将其替换为羧基。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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. 单击菜单栏 '构建(B)' → '插入(I)' → '分子...',在筛选框中输入 'benzene',选中 benzene 后单击 '插入',将苯环插入主绘图区。\n2. 按下快捷键 Ctrl+3 激活 Template Tool 模板工具。\n3. 在左侧模板面板中单击选中 '群组' 选项卡。\n4. 在群组列表中单击 '其他',在弹出的插入片段对话框筛选框中输入 'Carboxyl',展开 'oxygen' 文件夹,单击选中 'carboxylate.cjson',单击 '插入' 按钮。\n5. 在主绘图区单击苯环上任意一个氢原子位置1将其替换为羧基。\n6. 在群组列表中单击 '其他',在筛选框中输入 'Nitro',在列表中单击选中 'nitro.cjson',单击 '插入' 按钮。\n7. 在主绘图区单击苯环上与羧基相隔一个碳的氢原子位置3将其替换为硝基。\n8. 在群组列表中单击 '其他',在筛选框中输入 'Methoxy',展开 'alkoxy' 文件夹,单击选中 'methoxy.cjson',单击 '插入' 按钮。\n9. 在主绘图区单击苯环上与羧基正对的氢原子位置4将其替换为甲氧基。\n10. 按下 'Ctrl+Alt+O' 运行几何优化确保分子结构正确。",
"steps_original": "1. 通过 构建 → 插入 → 分子... 搜索 benzene 插入苯环。\n2. 按 Ctrl+3 激活模板工具,进入群组选项卡,点击其他,搜索 Carboxyl 选择 carboxylate.cjson 插入点击苯环位置1的氢原子替换为羧基。\n3. 点击其他,搜索 Nitro 选择 nitro.cjson 插入点击苯环位置3的氢原子替换为硝基。\n4. 点击其他,搜索 Methoxy 选择 methoxy.cjson 插入点击苯环位置4的氢原子替换为甲氧基。\n5. 按 Ctrl+Alt+O 运行几何优化确保分子结构正确。"
}
}

View File

@@ -0,0 +1,56 @@
{
"id": "naming-a-molecule_task1",
"snapshot": "avogadro",
"instruction": "在 Avogadro 中通过 Analysis → Properties → Molecular... 查看当前分子的 IUPAC 名称及相关性质。",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/avogadro/ethanol.sdf",
"path": "C:\\Users\\user\\Desktop\\ethanol.sdf"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Avogadro2\\bin\\avogadro2.exe",
"C:\\Users\\user\\Desktop\\ethanol.sdf"
]
}
},
{
"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": ["ethanol.sdf"],
"steps": "1. 打开 Avogadro 软件,确保已有分子载入。\n2. 在软件顶部菜单栏中,单击 'Analysis' 菜单。\n3. 在弹出的下拉菜单中,将鼠标悬停在 'Properties' 菜单项上以展开子菜单。\n4. 在弹出的子菜单中,单击 'Molecular...' 菜单项。\n5. 等待分子属性对话框窗口弹出。\n6. 在对话框中查看 'Molecule Name' 右侧显示的 IUPAC 名称及相关性质。",
"steps_original": "1. 打开 Avogadro 软件,确保已有分子载入。\n2. 单击菜单栏中的 'Analyze'。\n3. 将鼠标悬停在 '属性(P)' 上展开子菜单。\n4. 单击 '分子的(M)...'。\n5. 在弹出的 '分子属性' 窗口中查看分子的 IUPAC 名称、分子质量、单同位素质量、化学式、原子数、键数、净电荷和净自旋多重度等相关信息。" }
}

View File

@@ -0,0 +1,56 @@
{
"id": "viewing-electrostatic-potential_task1",
"snapshot": "avogadro",
"instruction": "在 Avogadro 中通过 Analyze → 创建表面...菜单创建 Van der Waals 表面并设置电荷分布可视化,计算完成后关闭对话框。",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/avogadro/ethanol.sdf",
"path": "C:\\Users\\user\\Desktop\\ethanol.sdf"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Avogadro2\\bin\\avogadro2.exe",
"C:\\Users\\user\\Desktop\\ethanol.sdf"
]
}
},
{
"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": ["ethanol.sdf"],
"steps_original": "1. 单击菜单栏 'Analyze' → '创建表面...'。\n2. 在弹出的对话框中确认表面设置为 'Van der Waals'。\n3. 将 '着色按' 设置为 '静电势'。\n4. 根据可用选项设置色阶。\n5. 单击 '计算' 按钮开始计算,完成后单击 '关闭'。"
}
}

View File

@@ -0,0 +1,45 @@
{
"id": "chrome_win_task01",
"snapshot": "snapshot",
"instruction": "Can you make a new folder for me on the bookmarks bar in Chrome? Let's call it 'Favorites.'",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开。\n2. 在书签栏空白处右键,选择'Add folder'(或'添加文件夹')。\n3. 在弹出的对话框中将文件夹名称设为'Favorites',点击保存。\n4. 确认书签栏上出现了名为'Favorites'的文件夹。"
}
}

View File

@@ -0,0 +1,46 @@
{
"id": "chrome_win_task02",
"snapshot": "snapshot",
"instruction": "Can you save this webpage I'm looking at to the bookmarks bar so I can come back to it later?",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"https://jalammar.github.io/illustrated-transformer/"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开并导航到目标页面。\n2. 按 Ctrl+D 打开书签保存对话框,或点击地址栏右侧的星形图标。\n3. 在'Folder'下拉菜单中选择'Bookmarks bar'(书签栏)。\n4. 点击'Done'保存。\n5. 确认书签栏上出现了该页面的书签。"
}
}

View File

@@ -0,0 +1,45 @@
{
"id": "chrome_win_task03",
"snapshot": "snapshot",
"instruction": "My grandmother has been using Chrome and told me the font size is way too small. Could you set the default font size to the largest?",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开。\n2. 点击右上角三点菜单 → Settings设置。\n3. 在左侧找到'Appearance'(外观),点击进入。\n4. 找到'Font size'(字体大小),将其设置为'Very large'(最大)。\n5. 确认字体大小选项显示为'Very large'。"
}
}

View File

@@ -0,0 +1,45 @@
{
"id": "chrome_win_task04",
"snapshot": "snapshot",
"instruction": "Can you make Bing the main search engine when I look stuff up in Chrome?",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开。\n2. 点击右上角三点菜单 → Settings设置。\n3. 在左侧点击'Search engine'(搜索引擎)。\n4. 在'Search engine used in the address bar'下拉菜单中选择'Bing'。\n5. 确认搜索引擎已改为Bing。"
}
}

View File

@@ -0,0 +1,45 @@
{
"id": "chrome_win_task05",
"snapshot": "snapshot",
"instruction": "I want Chrome to enable the 'Do Not Track' feature to enhance my online privacy. Can you turn that on?",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开。\n2. 点击右上角三点菜单 → Settings设置。\n3. 在左侧点击'Privacy and security'(隐私和安全)。\n4. 找到'Send a Do Not Track request with your browsing traffic',将其开关打开(变为蓝色)。\n5. 确认该开关处于开启状态。"
}
}

View File

@@ -0,0 +1,45 @@
{
"id": "chrome_win_task06",
"snapshot": "snapshot",
"instruction": "Please help me set Chrome to delete my browsing data automatically every time I close the browser.",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开。\n2. 点击右上角三点菜单 → Settings设置。\n3. 点击'Privacy and security' → 'Cookies and other site data'。\n4. 找到'Clear cookies and site data when you close all windows',将其开关打开。\n5. 确认该开关处于开启状态。"
}
}

View File

@@ -0,0 +1,45 @@
{
"id": "chrome_win_task07",
"snapshot": "snapshot",
"instruction": "I want to update my Chrome profile name to Thomas. Could you help me change the username in Chrome profiles?",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开。\n2. 点击右上角的个人头像图标Profile图标。\n3. 在弹出菜单中点击铅笔编辑图标或'Manage profiles'。\n4. 在名称输入框中将当前名称修改为'Thomas'。\n5. 点击完成/保存,确认界面上显示用户名为'Thomas'。"
}
}

View File

@@ -0,0 +1,68 @@
{
"id": "chrome_win_task08",
"snapshot": "snapshot",
"instruction": "Can you make my computer bring back the last tab I shut down in Chrome?",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"https://www.lonelyplanet.com"
],
"shell": false
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"--new-tab",
"https://www.airbnb.com"
],
"shell": false
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"--new-tab",
"https://www.tripadvisor.com"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开并加载了多个标签页。\n2. 关闭最右侧的标签页点击该标签页上的X或按Ctrl+W。\n3. 恢复刚刚关闭的标签页:按 Ctrl+Shift+T或右键标签栏选择'Reopen closed tab'。\n4. 确认被关闭的标签页重新出现在标签栏中。"
}
}

View File

@@ -0,0 +1,45 @@
{
"id": "chrome_win_task09",
"snapshot": "snapshot",
"instruction": "Computer, please navigate to the area in Chrome settings where my passwords are stored.",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开。\n2. 在地址栏输入 chrome://password-manager/passwords 并按回车,或通过 Settings → Autofill and passwords → Google Password Manager 找到密码管理页面。\n3. 确认页面显示的是Chrome密码管理器界面。"
}
}

View File

@@ -0,0 +1,46 @@
{
"id": "chrome_win_task10",
"snapshot": "snapshot",
"instruction": "Please help me find the score record for the 2019 Super Bowl on the NFL website.",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"https://www.nfl.com/"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开并导航到NFL官网。\n2. 在页面导航中找到Scores或Schedule入口。\n3. 找到2019赛季的Super Bowl比赛Super Bowl LIII2019年2月3日。\n4. 确认页面上显示了该场比赛的比分信息。"
}
}

View File

@@ -0,0 +1,46 @@
{
"id": "chrome_win_task11",
"snapshot": "snapshot",
"instruction": "Open the baggage fee calculator on the United Airlines website.",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"https://www.united.com/en/us"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开并导航到United Airlines官网。\n2. 在页面导航中找到Travel info或Baggage部分。\n3. 找到并打开行李费计算器Baggage Calculator页面。\n4. 确认页面显示的是行李费计算器界面。"
}
}

View File

@@ -0,0 +1,46 @@
{
"id": "chrome_win_task12",
"snapshot": "snapshot",
"instruction": "Show me the side effects of Tamiflu on the Drugs.com website.",
"source": "OSWorld-adapted",
"config": [
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
"https://www.drugs.com/tamiflu.html"
],
"shell": false
}
},
{
"type": "sleep",
"parameters": {
"seconds": 5
}
}
],
"trajectory": "trajectories/",
"related_apps": [
"chrome"
],
"evaluator": {
"postconfig": [
{
"type": "sleep",
"parameters": {
"seconds": 3
}
}
],
"func": "vllm_eval"
},
"proxy": false,
"fixed_ip": true,
"possibility_of_env_change": "low",
"metadata": {
"input_files": [],
"steps": "1. Chrome已自动打开并导航到Drugs.com的Tamiflu页面。\n2. 在页面上找到'Side Effects'(副作用)部分并点击查看。\n3. 确认页面上显示了Tamiflu的副作用信息列表。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单。\n2. 在展开的菜单中,单击展开 \"New\" 子菜单。\n3. 在 \"New\" 子菜单中,单击选择 \"Image...\" 选项,打开 \"New Image...\" 对话框。\n4. 在 \"New Image...\" 对话框中,单击 \"Name:\" 右侧的文本输入框以定位光标。\n5. 清空该输入框的已有内容,输入文本 \"Text Image\"。\n6. 单击 \"Type:\" 右侧的下拉菜单以展开选项列表。\n7. 在展开的选项列表中,单击选择 \"8-bit\"。\n8. 单击 \"Fill With:\" 右侧的下拉菜单以展开选项列表。\n9. 在展开的选项列表中,单击选择 \"White\"。\n10. 单击 \"Width:\" 右侧的文本输入框以定位光标。\n11. 清空该输入框的已有内容,输入数字 \"40\"。\n12. 单击 \"Height:\" 右侧的文本输入框以定位光标。\n13. 清空该输入框的已有内容,输入数字 \"40\"。\n14. 单击对话框底部的 \"OK\" 按钮完成创建。",
"steps_original": "1. 在菜单栏点击 File → New → Image。\n2. 在弹出的对话框中输入名称 'Text Image'。\n3. 从 Type 下拉菜单中选择 '8-bit'。\n4. 从 Fill With 下拉菜单中选择 'White'。\n5. 在宽度Width框中输入 40。\n6. 在高度Height框中输入 40。\n7. 点击 OK 按钮完成操作。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单。\n2. 在弹出的下拉菜单中,单击(或将鼠标悬停在) \"Selection\" 选项以展开子菜单。\n3. 在弹出的子菜单中,单击 \"Restore Selection\" 选项(或直接按下快捷键 \"E\")来恢复图像上的选区。",
"steps_original": "1. 在菜单栏点击 Edit → Selection → Restore Selection。\n2. 在图像上确保选区可见。\n3. 查看并确认选区正确恢复。"
}
}

View File

@@ -0,0 +1,58 @@
{
"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. 点击主界面菜单栏的 \"File\" 菜单。\n2. 在展开的下拉菜单中,单击选择 \"Open...\" 选项。\n3. 在弹出的文件选择对话框中,浏览并单击选中 \"blobs.gif\" 文件。\n4. 单击对话框底部的 \"打开\"(或 \"Open\")按钮以加载该图像。\n5. 点击主界面菜单栏的 \"Process\" 菜单。\n6. 在展开的下拉菜单中,单击选择 \"Find Maxima...\" 选项。\n7. 在弹出的 \"Find Maxima...\" 对话框中,单击将光标定位到 \"Noise Tolerance:\" 右侧的文本输入框。\n8. 清空该输入框中的现有内容。\n9. 在该输入框中输入数值 \"50\"。\n10. 单击 \"Output type:\" 右侧的下拉菜单控件以展开选项列表。\n11. 在展开的下拉列表中,单击选中 \"Single Points\" 选项。\n12. 单击对话框底部的 \"OK\" 按钮以执行操作并关闭对话框。",
"steps_original": "1. 打开 blobs.gif 文件。\n2. 在菜单栏点击 Process → Find Maxima。\n3. 在弹出的对话框中,将 Noise Tolerance 设置为 50。\n4. 从 Output Type 下拉菜单中选择 'Single Points'。\n5. 点击 OK 按钮完成操作。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单。\n2. 在展开的下拉菜单中,单击 \"Utilities\" 子菜单以展开次级菜单。\n3. 在次级菜单中,单击 \"Find Commands...\" 选项以打开 Command Finder 窗口。\n4. 在弹出的 \"Command Finder\" 窗口中,单击 \"Type part of a command:\" 标签右侧的文本输入框以定位光标。\n5. 在该文本输入框中,输入文字 \"threshold\"。\n6. 在窗口的选项区域中,单击勾选 \"Show full information\" 复选框。\n7. 在中间的搜索结果列表中,双击名为 \"Adaptive3DThreshold\" 的列表项以运行该命令。",
"steps_original": "1. 在菜单栏点击 Plugins → Utilities → Find Commands。\n2. 在弹出的 Command Finder 窗口中输入 'threshold'。\n3. 勾选 'Show full information'。\n4. 在列表中选择 'Adaptive3DThreshold' 并双击运行命令。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单项\n2. 在弹出的下拉菜单中,将鼠标移动并单击 \"Adjust\" 子菜单项\n3. 在弹出的级联菜单中,单击 \"Threshold...\" 选项,打开 \"Threshold\" 对话框\n4. 在弹出的 \"Threshold\" 对话框中,单击左侧中间的自动阈值方法下拉菜单(位于 \"Dark background\" 复选框上方)\n5. 在展开的下拉列表中,单击选中 \"Default\" 选项\n6. 在 \"Threshold\" 对话框中,单击右侧中间的显示模式下拉菜单(位于自动阈值方法下拉菜单的右侧)\n7. 在展开的下拉列表中,单击选中 \"Over/Under\" 选项\n8. 在 \"Threshold\" 对话框底部的按钮区,单击 \"Apply\" 按钮完成阈值分割操作",
"steps_original": "1. 在菜单栏点击 Image → Adjust → Threshold。\n2. 在弹出的对话框中,从 Method 下拉菜单选择 'Default'。\n3. 确保 Display 模式设置为 'Over/Under'。\n4. 点击 Apply 按钮完成操作。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单。\n2. 在展开的下拉菜单中,鼠标悬停或单击 \"Tools\" 子菜单以将其展开。\n3. 在 \"Tools\" 子菜单列表中,单击选择 \"Curve Fitting...\" 选项。\n4. 在弹出的 \"Curve Fitter\" 对话框中,单击左上角的函数类型下拉菜单(默认可能显示为 \"Straight Line\" 或其他选项)。\n5. 在展开的下拉列表中,单击选择 \"2nd Degree Polynomial\" 选项。\n6. 在 \"Curve Fitter\" 对话框的上方,单击勾选 \"Show settings\" 复选框(此为弹出高级设置的前提条件)。\n7. 单击对话框上方的 \"Fit\" 按钮。\n8. 在随之弹出的 \"Simplex Fitting Options\" 对话框中,找到 \"Maximum iterations:\" 标签右侧的数值输入框。\n9. 单击该输入框,将光标定位到输入框内部。\n10. 清空输入框中已有的默认数值(例如 4500。\n11. 在输入框中通过键盘输入数值 \"100\"。\n12. 单击 \"Simplex Fitting Options\" 对话框底部的 \"OK\" 按钮以应用设置并完成拟合。",
"steps_original": "1. 在菜单栏点击 Analyze → Tools → Curve Fitting。\n2. 在弹出的对话框中,从 Function 下拉菜单选择 '2nd Degree Polynomial'。\n3. 点击 Fit 按钮。\n4. 在 Simplex Fitting Options 中,将 Maximum number of iterations 设置为 100。\n5. 点击 OK 按钮完成拟合。"
}
}

View File

@@ -0,0 +1,58 @@
{
"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. 在顶部菜单栏中,单击 \"File\" 菜单项。\n2. 在展开的下拉菜单中,单击 \"Open...\" 选项。\n3. 在弹出的文件选择对话框中,找到并单击选中名为 \"mri-stack.tif\" 的文件。\n4. 单击文件选择对话框右下角的 \"打开\" 按钮加载图像。\n5. 确保新打开的 \"mri-stack.tif\" 图像窗口处于前台激活状态。\n6. 在顶部菜单栏中,单击 \"Image\" 菜单项。\n7. 在展开的下拉菜单中,将鼠标指针移动并悬停在 \"Transform\" 选项上,以展开级联子菜单。\n8. 在弹出的级联子菜单中,单击 \"Rotate 90 Degrees Right\" 选项。\n9. 观察处于激活状态的图像窗口,确认图像内容已顺时针旋转 90 度。\n10. 在顶部菜单栏中,单击 \"File\" 菜单项。\n11. 在展开的下拉菜单中,单击 \"Save\" 选项将旋转结果保存到原文件。",
"steps_original": "1. 打开 mri-stack.tif 文件。\n2. 在菜单栏点击 Image → Transform → Rotate 90 Degrees Right。\n3. 确保图像正确旋转后保存或查看结果。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单项。\n2. 在弹出的下拉菜单中,将鼠标悬停或单击 \"Binary\" 子菜单项以将其展开。\n3. 在展开的 \"Binary\" 子菜单中,单击 \"Options...\" 菜单项,打开选项对话框。\n4. 在弹出的选项对话框中,单击勾选 \"Black background\" 复选框。\n5. 在同一个对话框中,单击勾选 \"Preview\" 复选框以预览效果。\n6. 单击对话框底部的 \"OK\" 按钮以保存设置并关闭对话框。",
"steps_original": "1. 在菜单栏点击 Process → Binary → Options。\n2. 在弹出的对话框中勾选 'Black Background'。\n3. 点击 Preview 查看效果。\n4. 点击 OK 按钮保存选项。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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. 在顶部菜单栏中,单击 \"Edit\" 菜单项。\n2. 在弹出的下拉菜单中,将鼠标悬停或单击 \"Options\" 选项以展开子菜单。\n3. 在子菜单中,单击 \"Input/Output...\" 选项,打开 Input/Output Options 设置对话框。\n4. 在弹出的对话框中单击定位到用于设置透明索引Transparent index的文本输入框。\n5. 清空该输入框中的原有数值。\n6. 在输入框中输入数字 \"255\"。\n7. 单击对话框底部的 \"OK\" 按钮以保存设置并关闭对话框。\n8. 在顶部菜单栏中,单击 \"File\" 菜单项。\n9. 在弹出的下拉菜单中,将鼠标悬停或单击 \"Save As\" 选项以展开子菜单。\n10. 在子菜单中,单击 \"PNG...\" 选项,打开系统的文件保存对话框。\n11. 在弹出的文件保存对话框中,单击定位到用于输入文件名的文本输入框。\n12. 在输入框中输入目标文件名。\n13. 在对话框的目录树或路径地址栏中,浏览并单击选中指定的保存路径。\n14. 单击对话框右下角的 \"Save\"(或 \"保存\")按钮以确认并完成文件保存。",
"steps_original": "1. 在菜单栏点击 File → Save As → PNG。\n2. 在弹出的对话框中,将透明索引设置为 255。\n3. 输入文件名并指定保存路径。\n4. 点击 OK 按钮完成保存。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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. 在 ImageJ 主界面的工具栏中,单击选中一种区域选区工具图标(例如左侧第一个的“矩形选区工具” Rectangular Selection Tool\n2. 在当前活跃的图像窗口中,将鼠标光标定位到待测量区域的起始点\n3. 按下并按住鼠标左键,拖动鼠标以在图像上绘制出一个覆盖目标区域的选区框\n4. 松开鼠标左键,完成选区的创建\n5. 在 ImageJ 顶部的主菜单栏中单击“Analyze”菜单以展开下拉列表\n6. 在展开的“Analyze”下拉菜单中单击选择“Measure”选项或按下快捷键 'm'\n7. 在系统自动弹出的名为“Results”的表格窗口中定位到表格最后新增的一行测量数据\n8. 在该行数据中分别读取“Area”列对应的数值面积以及“Mean”列对应的数值平均灰度值",
"steps_original": "1. 创建或选择一个区域选区。\n2. 在菜单栏点击 Analyze → Measure。\n3. 在弹出的 Results 窗口中查看面积和灰度值等测量结果。"
}
}

View File

@@ -0,0 +1,30 @@
{
"id": "MDIJade6.5使用手册_task1",
"snapshot": "jade",
"instruction": "在 MDI Jade 中通过菜单 File → Patterns 加载衍射数据文件 DEMO01.MDI。",
"source": "custom",
"config": [
],
"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": {
"steps": "1. 在 Windows 桌面找到名为 MDI Jade 的快捷方式图标。\n2. 双击该快捷方式图标启动 MDI Jade 软件。\n3. 在软件主界面顶部的菜单栏中,单击 File 菜单。\n4. 在弹出的下拉菜单中,单击 Patterns... 选项,打开读入文件对话框。\n5. 在弹出的 Read Pattern Files 对话框中,在中间的 File Name 文件列表区域,寻找并单击选中名为 DEMO01.MDI 的文件。\n6. 单击该对话框左上方的 Read 按钮,将选定的衍射数据文件加载到软件中。",
"steps_original": "1. 在桌面找到 MDI Jade 图标,双击打开软件。\n2. 点击菜单 File → Patterns。\n3. 在弹出的对话框中选择 DEMO01.MDI 并点击 Open。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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. 使用键盘快捷键 Shift+Ctrl+F4 直接打开 Cell Refinement晶胞精细化对话框等价于菜单 Options → Cell Refinement但快捷键更可靠也可以在同一个代码块中先点击 Options 菜单再立即点击 Cell Refinement 菜单项,中间仅 sleep 0.5 秒,注意必须在同一步完成以防菜单自动关闭)。\n2. 等待晶胞点阵参数对话框弹出,查看当前显示的点阵参数列表。\n3. 单击该对话框中的 \"Refine\" 按钮,开始执行点阵参数精修计算。\n4. 等待精修计算完成,并查看对话框中更新后的精修结果数值。\n5. 单击对话框中的 \"Save\" 按钮,保存当前的精修结果。\n6. 单击对话框底部或右上角的 \"Close\"(或关闭)按钮,关闭晶胞点阵参数对话框。",
"steps_original": "1. 点击菜单 Options → Cell Refinement。\n2. 在弹出的对话框中检查点阵参数。\n3. 点击 Refine 按钮进行精修。\n4. 检查精修结果并保存。"
}
}

View File

@@ -0,0 +1,43 @@
{
"id": "MDIJade6.5使用手册_task2",
"snapshot": "jade",
"instruction": "在 JADE 中通过 File → Save-Primary Pattern as *.txt 将当前衍射图谱导出为 ASCII 格式,保存为 DEMO01.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": {
"steps": "1. 单击顶部菜单栏中的 \"File\" 菜单\n2. 在展开的下拉菜单中,单击选中 \"Save-Primary Pattern as *.txt\" 菜单项\n3. 在弹出的保存文件对话框中,单击将光标定位到 \"文件名\"(或 \"File name\")输入框\n4. 清空该输入框中的已有内容\n5. 在输入框中输入文字 \"DEMO01.txt\"\n6. 单击对话框右下方的 \"保存\"(或 \"Save\")按钮"
}
}

View File

@@ -0,0 +1,43 @@
{
"id": "MDIJade6.5使用手册_task3",
"snapshot": "jade",
"instruction": "在 Jade 中使用 Search/Match 功能进行物相检索,并限制元素范围为 Ca, Si, 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": {
"steps": "1. 按快捷键 Shift+F7等价于菜单 PDF → Chemistry...),打开 Current Chemistry [Retrieval] 元素周期表对话框。\n2. 点击对话框顶部的 Exclude All 按钮,清除所有已选元素。\n3. 在元素周期表中单击 Ca 按钮使其高亮选中。\n4. 在元素周期表中单击 Si 按钮使其高亮选中。\n5. 在元素周期表中单击 O 按钮使其高亮选中。\n6. 确认只有 Ca、Si、O 三个元素按钮都已被选中,然后单击对话框中的 OK 按钮关闭对话框。\n7. 按快捷键 Shift+F6等价于菜单 PDF → Retrieval...),启动物相检索。如果弹出任何提示框(如 Too Many Profiles单击 OK 关闭。\n8. 等待检索完成,确认出现检索结果窗口。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单。\n2. 在展开的下拉菜单中,单击选中 \"Report-Peak ID Extended\"。\n3. 在弹出的 \"Peak ID Extended Report\" 对话框中,查看列表区域确认结果数据完整。\n4. 点击该对话框顶部工具栏中的 \"Save\" 按钮。\n5. 在弹出的 \"Enter File Name to Save\" 对话框中,找到底部的 \"保存类型(T)\" 下拉菜单。\n6. 点击 \"保存类型(T)\" 下拉菜单,选择 \"PDF Overlay List File (*.pdf)\"(或相应的 PDF 格式)。\n7. 在 \"文件名(N)\" 输入框中,单击定位光标并输入需要的文件名。\n8. 单击对话框右下角的 \"保存(S)\" 按钮完成保存。",
"steps_original": "1. 打开菜单 Options → Report-Peak ID Extended。\n2. 确认结果数据,确保内容显示完整。\n3. 点击 Save选择文件类型为 PDF。\n4. 输入文件名并点击保存。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单。\n2. 在展开的下拉菜单中,单击选中 \"Size & Strain Plot\" 菜单项。\n3. 在弹出的 \"Estimate Crystallite Size & Strain from Peak Broadening\" 对话框中,单击选中顶部的 \"Size/Strain\" 单选框。\n4. 将鼠标光标定位到该单选框右侧的 D 值输入框(位于 \"Origin(0,0)\" 选项的右侧)。\n5. 选中或清空输入框内的当前数值(如 2.0),通过键盘输入数字 \"1\"。\n6. 单击对话框左上方的 \"Save\" 按钮以保存计算结果图片。",
"steps_original": "1. 点击菜单 Report → Peak Search Report。\n2. 在弹出的对话框中选择 Size/strain 选项。\n3. 设置反卷积参数 D 值为 1。\n4. 点击 Save 按钮保存计算结果。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单项以展开级联子菜单\n3. 在展开的子菜单中,单击选择 \"FWHM Curve of Peaks\" 菜单项,打开保存文件对话框\n4. 在弹出的保存对话框中,单击定位到 \"文件名\" (或 File name) 输入框\n5. 清空 \"文件名\" 输入框中的已有内容\n6. 在 \"文件名\" 输入框中输入文字 \"Si_hw_curve.fwhm\"\n7. 单击对话框底部的 \"保存\" (或 Save) 按钮完成保存操作",
"steps_original": "1. 点击菜单 File。\n2. 选择 Save → FWHM Curve of Peaks。\n3. 在保存对话框中输入文件名 Si_hw_curve.fwhm。\n4. 点击 Save 按钮完成保存。"
}
}

View 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": {
"steps": "1. 单击顶部菜单栏的 \"Options\" 菜单\n2. 在弹出的下拉菜单中,单击 \"D-Spacing & hkl...\" 菜单项,打开 \"Calculate d-Spacing & Miller Indices\" 对话框\n3. 在弹出的对话框左下区域,找到 Z 值输入框(位于化学公式输入框的下方,\"Density(c)=\" 文本的左侧,截图中显示为 \"6.0\" 的位置)\n4. 单击该 Z 值输入框将光标定位其中\n5. 清空该输入框中的原有数值\n6. 在该输入框中输入数值 \"12\"\n7. 单击对话框顶部按钮栏中的 \"Calc\" 按钮以生成计算结果\n8. 单击对话框顶部按钮栏最左侧的 \"Close\" 按钮以关闭当前窗口",
"steps_original": "1. 打开菜单 Options → D-Spacing。\n2. 在计算衍射谱对话框中,设置加权强度公式参数 Z 值为 12。\n3. 点击 Calculate 按钮以生成计算结果。\n4. 检查结果并关闭窗口。"
}
}

View File

@@ -0,0 +1,45 @@
{
"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\" 菜单。\n2. 在展开的下拉菜单中,单击 \"Calculate Stress\" 菜单项。\n3. 在弹出的计算残余应力相关对话框中,单击名为 \"Fit All\" 的按钮。\n4. 观察主窗口中显示的拟合曲线图,确认拟合已完成。\n5. 单击名为 \"Save\" 的按钮,以保存拟合结果文件。",
"steps_original": "1. 点击菜单 Options → Calculate Stress。\n2. 在弹出的对话框中,选择以 Fit All 功能拟合所有数据。\n3. 检查拟合结果图。\n4. 点击 Save 按钮以保存拟合结果文件。"
}
}

View File

@@ -0,0 +1,44 @@
{
"id": "jade-guide-example_task1",
"snapshot": "jade",
"instruction": "在 Jade 中,通过 Edit → Preferences 打开程序设置对话框,并切换到 Instrument 标签查看设置。",
"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": {
"steps": "1. 在软件顶部的主菜单栏中,单击鼠标左键选择 \"Edit\" 菜单。\n2. 在展开的下拉菜单中,单击鼠标左键选择 \"Preferences\" 菜单项,等待弹出程序设置对话框。\n3. 在弹出的程序设置对话框顶部,单击鼠标左键选中名为 \"Instrument\" 的选项卡(标签页)以查看相关设置。",
"steps_original": "1. 在主菜单中点击 Edit。\n2. 选择 Preferences打开程序设置对话框。\n3. 点击对话框上方的 Instrument 标签,查看相关设置。"
}
}

View File

@@ -0,0 +1,43 @@
{
"id": "jade-guide-example_task10",
"snapshot": "jade",
"instruction": "在 Jade 中,右键单击主工具栏打印按钮打开打印预览窗口,点击 Setup → Layout勾选 Generate Profile on d-I Lines、Show ID Labels on d-I Lines、Place X-Axis Scaling above Ribbons 三个选项,然后使用垂直放大工具对图谱局部进行放大。",
"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": {
"steps": "1. 在界面上方的主工具栏中,找到\"打印\"图标按钮。\n2. 右键单击该\"打印\"图标按钮,打开打印预览窗口。\n3. 在打印预览窗口中,单击左侧的\"命令\"按钮。\n4. 单击窗口中的\"Setup\"按钮,打开预览设置对话框。\n5. 在预览设置对话框的顶部,单击选择\"Layout\"选项卡标签。\n6. 在 Layout 页面中,找到\"Generate Profile on d-I Lines\"复选框并单击勾选。\n7. 找到\"Show ID Labels on d-I Lines\"复选框并单击勾选。\n8. 找到\"Place X-Axis Scaling above Ribbons\"复选框并单击勾选。\n9. 单击对话框的关闭或确认按钮,退出打印预览设置对话框。\n10. 在打印预览窗口顶部的图谱编辑按钮栏中,左键单击\"垂直放大\"命令按钮。\n11. 将鼠标移动到图谱区域中需要垂直放大的局部位置。\n12. 按住鼠标左键不放,向上拖拽鼠标进行区域拉伸,松开鼠标左键,完成局部垂直放大。"
}
}

View File

@@ -0,0 +1,43 @@
{
"id": "jade-guide-example_task11",
"snapshot": "jade",
"instruction": "在 Jade 中,使用主工具栏的图谱平滑按钮对衍射图谱执行平滑处理。",
"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": {
"steps": "1. 在主界面顶部的主工具栏中,找到 Smooth平滑按钮。该按钮的图标内部有一条黑色的锯齿状/脉冲状线条,中间贯穿一条醒目的蓝色垂直线。将鼠标悬停在工具栏按钮上可看到 tooltip 提示文字来确认。\n2. 左键单击 Smooth 按钮,对当前衍射图谱执行平滑处理。\n3. 观察图谱窗口中的衍射曲线,确认由于平滑处理曲线变得更加光滑、噪声减少。"
}
}

View File

@@ -0,0 +1,43 @@
{
"id": "jade-guide-example_task12",
"snapshot": "jade",
"instruction": "在 Jade 中,使用编辑工具栏的背景扣除功能对衍射图谱执行背景扣除操作。",
"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": {
"steps": "1. 在主界面下方的编辑工具栏中,定位到\"扣除背景\"Background通常标为 BG按钮。\n2. 鼠标左键单击 BG 按钮一次,此时图谱上会叠加显示一条黄色背景曲线,并在曲线上出现可拖动的红色控制点(即背景预览模式)。\n3. 再次单击 BG 按钮(或在预览模式下确认),完成背景扣除操作。完成后图谱底部基线应变得扁平(接近零强度),背景曲线和红色控制点消失,图谱仅显示扣除背景后的衍射峰。\n关键判据最终截图中衍射图谱的底部基线必须是扁平的黄线和红点必须消失否则视为未完成。"
}
}

View File

@@ -0,0 +1,44 @@
{
"id": "jade-guide-example_task2",
"snapshot": "jade",
"instruction": "在 Jade 中,设置 NBS Silicon 为XRD背底曲线并查看峰宽。",
"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": {
"steps": "1. 单击顶部菜单栏中的 \"Edit\" 菜单。\n2. 在弹出的下拉菜单中,单击选中 \"preferences\" 菜单项,打开程序设置对话框。\n3. 在程序设置对话框中,单击选中 \"Instrument\" 标签页。\n4. 单击对话框最下方的下拉菜单控件以将其展开。\n5. 在展开的下拉列表选项中,单击选中 \"NBS Silicon1\"。\n6. 单击对话框中的 \"VIEW FWHM Curve\" 按钮以查看峰宽曲线。",
"steps_original": "1. 在程序设置对话框中点击 Instrument 标签。\n2. 从下拉菜单中选择 NBS Silicon1 作为 XRD 背底曲线。\n3. 点击 'View FWHM Curve' 查看峰宽曲线。"
}
}

View File

@@ -0,0 +1,47 @@
{
"id": "jade-guide-example_task3",
"snapshot": "jade",
"instruction": "在 Jade 中,通过 File → Patterns 打开衍射数据文件 DEMO01.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": [
"DEMO01.MDI"
],
"steps": "1. 单击主界面顶部菜单栏中的 \"File\" 菜单项\n2. 在展开的下拉菜单中,单击 \"Patterns\" 菜单项,弹出数据文件读入窗口\n3. 在文件读入窗口中,单击磁盘选择下拉菜单将其展开\n4. 在弹出的驱动器列表中,单击选中目标文件所在的磁盘\n5. 在文件夹树形列表中,双击展开并选中包含目标文件的文件夹\n6. 单击文件类型下拉菜单将其展开\n7. 在弹出的文件类型列表中,单击选中 \"All\" 数据类型选项\n8. 在文件展示列表中,单击选中名为 \"DEMO01.MDI\" 的数据文件\n9. 单击窗口中的 \"Read\" 命令按钮,以读入该数据文件",
"steps_original": "1. 在主菜单中点击 File。\n2. 选择 Patterns打开文件选择对话框。\n3. 浏览并选择 DEMO01.MDI 文件,点击 Read。"
}
}

View File

@@ -0,0 +1,43 @@
{
"id": "jade-guide-example_task4",
"snapshot": "jade",
"instruction": "在 Jade 中,通过 File → Patterns 使用 Add 按钮叠加衍射数据文件 DEMO02.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": {
"steps": "1. 单击主菜单栏中的”File”菜单项。\n2. 在弹出的下拉菜单中单击”Patterns”菜单项打开数据文件读入窗口。\n3. 在文件列表框中,单击选中 DEMO02.MDI 数据文件。\n4. 单击窗口右侧区域的”Add”命令按钮将该数据文件叠加显示到当前窗口中。"
}
}

View File

@@ -0,0 +1,45 @@
{
"id": "jade-guide-example_task5",
"snapshot": "jade",
"instruction": "在 Jade 中,创建 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. 单击软件顶部主菜单栏中的 \"Tools\" 菜单。\n2. 在展开的下拉菜单中,单击对应创建索引的菜单项,打开 PDF 索引建立窗口。\n3. 在打开的 PDF 索引建立窗口中,单击选中 \"PDF2.DAT 文件\" 选项(或单击对应按钮选择该文件)作为数据来源。\n4. 观察窗口中“保存索引的位置”路径输入框,确认其保持为系统自动设置的默认路径,无需进行修改。\n5. 单击 PDF 索引建立窗口中的 \"Select All\" 按钮,以全选所需内容。\n6. 单击 PDF 索引建立窗口中的 \"Create\" 按钮开始建立索引。\n7. 等待程序运行(约需 10 分钟),直到索引生成过程完全结束。",
"steps_original": "1. 在主菜单中点击 Tools。\n2. 选择 'PDF2DAT 文件',打开 PDF 索引创建窗口。\n3. 点击 Select All 命令。\n4. 点击 Create 按钮,等待索引生成完成。"
}
}

View File

@@ -0,0 +1,43 @@
{
"id": "jade-guide-example_task6",
"snapshot": "jade",
"instruction": "在 Jade 中,执行背景扣除后,通过主工具栏的自动寻峰按钮对衍射图谱执行自动寻峰。",
"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": {
"steps": "1. 在主界面下方的编辑工具栏中,左键单击\"扣除背景\"BG按钮对衍射图谱执行背景扣除操作确认背景基线已被扣除。\n2. 在主界面的主工具栏中,左键单击\"自动寻峰\"按钮。\n3. 观察主工作窗口中的衍射曲线,确认各个衍射峰处已自动添加峰标记符号。"
}
}

View File

@@ -0,0 +1,46 @@
{
"id": "jade-guide-example_task7",
"snapshot": "jade_bg_peaked",
"instruction": "在 Jade 中,使用编辑工具栏的手动寻峰功能,在一个未标记的衍射峰位置左键单击添加峰标记,然后在一个已有的自动寻峰标记处右键单击删除该峰标记。",
"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": [
"DEMO01.MDI"
],
"steps": "1. 在主界面下方的编辑工具栏中,左键单击\"手动寻峰\"命令按钮。\n2. 在主界面的图谱显示窗口中,将鼠标光标移动到某一个未标记的衍射峰下方位置。\n3. 在该位置左键单击,添加一个新的峰标记。\n4. 在图谱显示窗口中,将鼠标光标移动到另一个已有峰标记的垂直中心线位置。\n5. 在该中心线处右键单击,删除该处的峰标记。"
}
}

View File

@@ -0,0 +1,43 @@
{
"id": "jade-guide-example_task8",
"snapshot": "jade_bg_peaked",
"instruction": "在 Jade 中,通过 >> → Report → Peak Search Report 查看寻峰报告。",
"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": {
"steps": "1. 单击工具栏中的\">>\"按钮展开更多选项菜单。\n2. 在展开的选项中单击\"Report\"菜单项。\n3. 在子菜单中选择并单击\"Peak Search Report\",打开寻峰报告对话框进行查看。"
}
}

View File

@@ -0,0 +1,43 @@
{
"id": "jade-guide-example_task9",
"snapshot": "jade",
"instruction": "在 Jade 中,执行背景扣除和自动寻峰后,对一个衍射峰区域进行单峰拟合:在全谱窗口中框选峰区域,右键点击自动拟合按钮打开参数对话框,勾选 Individual Profiles执行 Initialize 和 Refine 操作。",
"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": {
"steps": "1. 在主界面下方的编辑工具栏中,左键单击\"扣除背景\"BG按钮对衍射图谱执行背景扣除操作确认背景基线已被扣除。\n2. 将鼠标光标移动到主工具栏,左键单击\"自动寻峰\"按钮执行自动寻峰操作。\n3. 将鼠标光标移动到主界面的全谱窗口区域内。\n4. 在目标衍射峰的一侧按下鼠标左键,拖拽光标画出一个矩形框将该待拟合峰区域完全圈住。\n5. 松开鼠标左键,完成峰区域的选择并将其放大显示在工作窗口中。\n6. 将鼠标光标移动到主工具栏中的\"自动拟合\"命令按钮上。\n7. 单击鼠标右键,打开拟合参数设置对话框。\n8. 在拟合参数设置对话框中,找到并单击勾选\"Individual Profiles\"复选框。\n9. 将鼠标光标移动到界面的编辑工具栏中,左键单击\"手动拟合\"命令按钮。\n10. 将鼠标光标移动到放大的工作窗口中目标衍射峰下方的中心位置,单击鼠标左键,标记对该峰进行拟合。\n11. 返回拟合参数设置对话框,左键单击\"Initialize\"命令按钮以初始化拟合参数。\n12. 在拟合参数设置对话框中,左键单击\"Refine\"命令按钮执行一次拟合修正。\n13. 观察主界面右上角显示的拟合误差 R 值,若 R 值大于或等于 5%,则再次左键单击\"Refine\"按钮,重复此操作直至 R 值小于 5% 为止。"
}
}

View File

@@ -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"
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk1",
"snapshot": "origin",
"instruction": "在 Origin 中对数据进行平滑处理并绘制曲线图",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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上方的菜单栏中点击\"Plot\"选项在左侧选择【Basic 2D】分类然后选择【Scatter】散点图或\"Line + Symbol\"(线+符号图)。\n2、选择绘制散点图之后会弹出一个关于数据变量的界面框。在这里我们需要勾选要分析的X、Y数据列勾选完成后点击【确定】Origin就会根据勾选的结果绘制一个散点图。\n3、得到了绘制的散点图之后继续在Origin上方的菜单栏中点击\"Analysis\"选项,接着选择\"Signal Processing\"并点击\"Smooth...\"选项。\n4、点击了\"Smooth...\"选项后,会进入到曲线平滑的设置界面中。在\"Method\"下拉菜单中选择\"Adjacent-Averaging\"(相邻平均法),在\"Points of Window\"中设置窗口点数如5或7选择完成后点击\"OK\"生成平滑后的曲线。\n5、要绘制曲线图在输入数据后我们在Origin上方的菜单栏中点击\"Plot\"选项,在左侧选择\"Basic 2D\"分类,然后选择\"Line\"(折线图)。\n6、选择绘制\"Line\"(折线图)之后,同样会弹出一个关于数据变量对照关系的界面框。在这里我们需要勾选变量之间的彼此对照关系,勾选完成后点击\"OK\"Origin就会根据勾选的结果生成折线图。",
"steps_original":"1. 在菜单栏点击Plot选项在左侧选择【Basic 2D】分类然后选择【Scatter】散点图或【Line + Symbol】线+符号图在弹出的对话框中勾选要分析的X、Y数据列点击【确定】生成散点图。\n2. 得到散点图后在菜单栏点击【Analysis】->【Signal Processing】->【Smooth...】。\n3. 在平滑设置界面的【Method】下拉菜单中选择【Adjacent-Averaging】相邻平均法在【Points of Window】中设置窗口点数如5或7点击【OK】生成平滑后的曲线。\n4. 要绘制曲线图,在输入数据后,点击plot选项在左侧选择【Basic 2D】分类然后选择line(折线图)。\n5. 在弹出的数据变量界面中勾选变量对照关系点击OK生成折线图。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk10",
"snapshot": "origin",
"instruction": "在 Origin 中进行加法、乘法、平方和开平方(根号)等数据运算",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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、导入数据至工作表。\n通过【Column → Add New Columns】新增用于存放结果的列。\n选中要进行运算的数据列右击选择【Set Column Values】。\n在【Set Values】面板的公式框中输入运算公式如加法col(B)+4、乘法col(B)*4、平方col(B)^2或开平方sqrt(col(A)))。\n点击【Apply】预览结果然后点击【OK】输出新数据列。\n对于开方运算也可通过函数面板搜索并插入 sqrt 函数。",
"steps_original": "1、加法运算\n将数据导入至Origin工作表中选中要进行运算的数据列右击鼠标在下拉菜单栏中找到【设置列值】功能进入设置值界面。\n在这里我们可以输入各种数学公式对选中列进行计算。例如要将这列数据中的每个数值都+3点击工具栏的col (B)选项软件会自动在框中输入红色B。\n然后我们手动在公式框B值后面输入+4点击【应用】就可以看到Origin对B列的每个数据重新进行了计算并且生成了相应的公式F(X)=B+4。\n2、乘法运算\n同样方法如果想要将A列数据乘4可以在【设置值】面板条件框中输入公式col (B)*4点击【运用】进行查看如果没问题的话再点击【确定】输出。\n3、平方运算\n如果想要对数据平方进行运算只需要将运算符和相应的数值输入到条件公式中就可以简单操作完成在这里输入的公式为col (B)^2这里的col (B)即对应的是B数据列点击【运用】可以查看新生成的数据列。\n二、Origin公式怎么输入根号\n1、Origin提供了 “sqrt ( )” 函数来表示根号运算如果想对Origin数据进行求开平方的操作可以通过以下方法如下图所示想要对A列数据进行开平方操作选中A列数据鼠标右击在弹出来的菜单栏中选择【设置列值】按钮。\n2、在设置值面板上的文本框中输入公式sqrt ( )鼠标指针移动至括号中再点击工具栏上的col (A)如下图所示图片中的A即表示数列A点击【运用】我们就可以看到Origin界面生成的平方根值。\n3、除了手动输入之外我们还可以点击工具栏中的【函数】按钮在下拉菜单中找到【查找和插入】选项在搜索和插入函数面板中搜索sqrt就可以在下拉菜单中找到对应的根号函数点击该函数就会自动插入到条件框中方便我们进行后续的操作。\n4、除此之外点击【公式】面板我们可以在面板上看到一些相对应的数学公式点击该公式之后会在条件框中自动输入对应公式我们再选择数列值对其进行应用即可。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk11",
"snapshot": "origin",
"instruction": "在 Origin 中为散点折线图标注特殊数据点,并为函数曲线添加文本标注",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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、导入数据至工作表并选中 X 列与对应的 Y 列数据。\n点击【Plot → Basic 2D → Line + Symbol】生成带符号的折线图。\n使用【Data Reader】工具快捷键 3在图中点击某一特征点如峰值点以定位数据。\n通过图中标记确认已选中特殊数据点。\n选择左侧工具栏【Text Tool】工具在图中合适位置添加文字说明。\n输入标注内容如“Max Point”完成对特殊点的说明。",
"steps_original": "一、Origin怎么标注特殊点的数据\n1、打开Origin软件进入到主页面在主页面当中可以看到名为【book1】的数据表界面。我们可以将需要进行分析的数据添加到数据表格中如果需要添加的数据比较多就可以把数据通过导入的方式呈现在数据点中。\n2、添加完成数据后在软件上方的菜单栏中点击【绘图】选项就可以进入到图像的绘制界面。在图像绘制界面中我们可以选择需要添加的图像这里我们选择常见的散点折线图为例。\n3、点击添加散点折线图之后我们就可以进入到绘图的变量设置界面在这里我们勾选对应的变量关系接着点击【确定】就可以生成对应的数据图像内容。\n4、在得到对应的图像结果后我们就可以对数据点位进行标记了。这里我们在软件左侧的工具栏中点击【添加数据标记】选项点击之后就可以进入到数据的标记模式接着我们就可以直接在函数图像中标记对应的数据。\n二、Origin如何标注各个曲线\n1、首先在Origin中添加对应的曲线内容这里我们选择在绘图界面中添加了一个对数函数图像通过【绘图】中的函数图像绘制功能实现。\n2、将图像绘制完成后仍然在软件侧边的工具栏的中点击【文字工具】选项就可以直接在图像中添加一个新的文字框。我们可以在文字框中对曲线进行文字模式的标注。\n3、如果我们需要对文字编辑的内容进行后续的处理可以点击添加的文字内容接着点击【属性】选项就可以进入到【文本对象】设置界面。在这里我们可以对曲线的文本内容进行设置例如调整字号、字体颜色、字体格式等。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk12",
"snapshot": "origin",
"instruction": "在 Origin 中绘制三维图并修改Z轴",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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": "导入数据至工作表。\n点击【Worksheet → Convert to Matrix → Direct】将工作表数据转换为矩阵数据。\n在生成的矩阵窗口中点击【Plot → 3D → 3D Colormap Surface】绘制三维曲面图。\n在三维图中选中 Z 轴右键选择【Scale】进入坐标轴设置。\n在刻度设置中勾选【Reverse】选项以反转 Z 轴方向。\n点击【OK】应用设置完成三维图的轴调整。",
"steps_original": "1、首先我们打开Origin软件在软件打开后可以看到一个数据表首先要将工作数据表转化为矩阵。我们需要将相应的三维图数据输入到矩阵表格当中。在菜单栏中点击【创建矩阵】就可以在矩阵界面中输入数据了。\n2、将相关数据输入到数据表中后在菜单栏中点击【绘图】。接着选择需要绘制的图像这里我们就选择绘制三维图。\n3、选择完成后会进入到坐标轴的设置界面我们在其中选择相对应的x、y、z的对应坐标轴选择完成后点击创建将可以依照我们所输入的数据创建出一个三维图。\n4、当三维图创建完成后我们可以右键点击图像进入到图像设置界面在设置管理界面中进一步优化三维图的相关内容。\n1、在绘制完成的图像界面中我们可以点击上方的菜单栏在图像界面中单击z轴可以进入到坐标轴的管理界面。\n2、在设置管理界面中就可以根据修改的需要对z轴进行编辑了。如果我们需要进行z轴的翻转操作在其中勾选对应的选项框就可以实现翻转操作。\n3、除此之外还可以通过修改矩阵数据表中的数据来实现对z轴的数据进行修改矩阵数据表中的数据是绘制三维坐标图的来源我们通过修改数据的方式可以从来源中实现数据轴的变化。\n4、如果我们想要对整个三维图进行视觉上的调整可以点击菜单栏下方的坐标轴调整工具实现点击对应的调整工具就可以实现相应的处理效果。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk13",
"snapshot": "origin",
"instruction": "在 Origin 中设置柱状图的不同颜色,并为柱状图添加一条横线",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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": "导入数据至工作表。\n选中 Y 数据列点击【Plot → Bar, Pie, Area → Column】生成柱状图。\n双击柱状图进入设置界面在【Fill → Color】中选择 By Points点击【Apply】设置不同颜色。\n点击工具栏【Line Tool】按住 Shift 在图中绘制水平线,并拖动至 Y=0 位置。\n在数据表中新增列右键列名选择【Set Column Values】输入公式 -col(B) 生成相反数组。",
"steps_original": "一、Origin柱状图怎么设置不同颜色\n1、打开Origin软件进入到主页面后可以看到其中的数据表。我们需要在数据表中添加相应的数据。\n2、添加数据完成后在菜单栏中点击【绘图】选项就可以选择绘制的图形了。我们在其中选择绘制柱状图点击【柱状图】选项后Origin会依照我们输入的数据生成一幅柱状图。\n3、生成柱状图之后我们可以看到柱状图中的不同柱子有着不同的颜色同时在图例中也有不同颜色的区别。我们双击选中需要设置颜色的柱子点击后会呈现出一个关于柱状图的设置界面。\n4、在设置界面中我们就可以调整柱状图的颜色。在弹窗中我们可以看到几种不同的颜色设置模块包含了【填充颜色】和【边框颜色】我们在其中选择需要的模块进行颜色调整。\n5、设置完成后在弹出界面下方点击【确定】就可以完成Origin柱状图颜色的设置了。\n二、Origin柱状图怎么加一条横线\n1、首先仍然是在数据表的对应列中添加相应的数据为了满足绘制上下对比图的需要我们要在数据表中增添两列数据形成相反数组和误差对照数组。\n2、添加完成数据后在菜单栏中点击【绘图】接着选择绘制【堆积条形图】。点击确定后就能够在Origin中绘制出符合数据表的图形了。\n3、图表绘制完成后就可以在图表中添加一条横线。在左侧的工具栏中点击直线工具按住shift键并在图表的0刻度线位置添加一条刻度线。这条刻度线可以实现将柱状图一分为二的效果让数据呈现更加直观。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk14",
"snapshot": "origin",
"instruction": "在 Origin 中导入 Excel 数据,计算均值和标准差,并绘制误差棒图,最后调整误差棒大小。",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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": "导入数据至工作表,并选中所有 Y 数据列(不选 X 列)。\n点击【Statistics → Descriptive Statistics → Statistics on Rows】进入统计界面。\n在【Quantities】中勾选 Mean 和 Standard Deviation点击【OK】生成统计结果表。\n在结果表中选中 Mean 列点击【Plot → Column】生成柱状图。\n点击图中柱子选择【Graph → Add Error Bars】指定 Standard Deviation 列添加误差棒。",
"steps_original": "1、首先将Excel表格中的数据导入到origin中点击导入Excel表格图标选中需要导入的数据。\n2、数据导入完成之后我们可以看到origin将数据分成了X轴和Y轴制作误差棒图所需要的是Y轴数据因此我们用鼠标拖动选中Y轴数据随后在上方工具栏中点击“统计”-“描述统计”-“行统计”。\n3、在弹出的弹窗中选择“确定”生成均值和标准差。\n4、计算好均值和标准差后我们找到X轴中的数据单击X轴数据在弹出的工具栏中点击“X”图标。\n5、随后选中均值列和标准差列。\n6、随后右键点击数据点击“绘图”-“柱状图”。\n7、稍等片刻之后我们就能够得到一个误差棒图了。\n8、我们单击误差棒图在弹出的工具栏中选择线条粗细度调整工具即可对误差棒的大小进行调整了。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk15",
"snapshot": "origin",
"instruction": "在 Origin 中设置图层属性和调整图层大小",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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": "导入数据并绘制任意图形(如柱状图)。\n点击【Graph → Layer Management】进入图层管理界面。\n在【Size/Position】中修改图层宽度或高度点击【Apply】调整图层大小。\n右键图表界面选择【Fit Layer to Page】实现图层自适应页面。\n也可通过拖动图表窗口边框实现图层放大或缩小。",
"steps_original": "1、打开并进入到Origin的主页面在软件主页面中的数据表里添加需要进行分析的数据。\n2、添加完成数据后在软件的菜单栏中点击【绘图】选项就可以选择需要绘制的图形。\n3、选择需要绘制的图像后点击图像会进入到图像的设置界面勾选完成自变量的对应点后就可以生成一幅数据的柱状图。\n4、生成数据图后如果我们还想在其中添加图层在菜单栏中点击【插入】选项。接着选择【新图层】在外拉菜单栏中点击【打开对话框】选项就可以进入到图层属性设置界面。\n5、在图层设置界面中我们就可以对图层的相关属性进行自定义调整了。\n1、在Origin中设置图层大小最为简单和直接的方式便是直接将图层界面最大化或者最小化设置最大化设置后原先的图表直接覆盖了整个软件界面实现了图层放大和缩小的功能。\n2、除了直接拖动调整图表窗口之外还可以右键点击图表界面点击后选择【调整图层至页面大小】点击后我们图表就能够以页面的方式呈现出来。\n3、上面说到的两点都是注重调整图表的页面显示大小我们还可以在Origin中手动设置页面的大小。在软件的菜单栏中点击【图】界面接着选择【图层管理】选项。\n4、在【图层管理】界面中点击【大小/位置】选项,点击后就可以手动输入并调整页面的大小与所占的页面比例。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk16",
"snapshot": "origin",
"instruction": "在 Origin 中使用常用函数进行数据拟合,并通过插值从纵坐标获取横坐标",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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": "选中工作表中的两列数据(如 A 列为 XB 列为 Y。\n点击菜单【Plot → Basic 2D → Scatter】绘制散点图。\n点击菜单【Tools → Fitting Function Builder】新建函数并设置参数为 a, b函数表达式输入 a*x + b点击【Finish】保存函数。\n点击菜单【Analysis → Mathematics → Interpolate/Extrapolate Y from X…】打开插值窗口。\n在【Input】中选择整张工作表Whole Sheet并在【X Values to Interpolate】中输入一个数值如 1点击【OK】生成插值结果数据列。",
"steps_original": "1、打开Origin软件进入到数据分析的主页面在主页面中可以看到一个包含数据列的数据表Book1我们可以把需要分析的数据样本添加到数据表中。\n2、添加完成数据样本后接着在Origin上方的菜单栏中点击【绘图】并在其中选择绘制【散点图】。\n3、点击【散点图】之后需要我们继续添加进行数据拟合的自变量样本勾选X和Y作为数据变量添加完成后点击【确定】就可以得到拟合分析的结果。\n4、在得到拟合分析的结果报告之后我们还可以继续设置拟合的函数。在Origin上方的菜单栏中点击【工具】选项并进入到【拟合函数生成器】界面。\n5、进入到拟合函数生成器界面中之后需要根据系统的提示添加函数内容这里我们添加一个简单的线性拟合函数y=ax+b在添加的时候需要注意添加的格式要符合数据处理的工具格式。\n6、在拟合函数生成器界面中我们可以根据已知的函数内容和系统的提示完成操作每当一步的操作完成后点击【下一步】就可以进入到后续的操作中在完成操作的时候直接在函数生成器界面中点击【完成】。\n7、把这部分函数添加到生成器中之后我们后续就把函数从生成器中直接取用。\n8、在进行数据拟合的过程中我们也给大家列举几种常用的函数。\n常见的线性拟合函数y=ax+b、多项式拟合函数y=a+b1*x+b2*x²+…+bn*x^n、对数函数拟合y=a-b*ln(x+c)、幂函数拟合y=a*x^b\n1、在得到拟合分析的结果后在Origin上方的菜单栏中点击【分析】选项接着进入【数学】选项下的【插值】界面。\n2、在插值界面中需要设置插值的起始点和结束点这里可以根据数据样本的定义域进行设置设置好了插值的自变量之后点击【确定】Origin就会生成插值的样本结果。\n3、生成的工作表中包含了插值曲线中的数据点我们可以直接查找与纵坐标相匹配的横坐标结果。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk17",
"snapshot": "origin",
"instruction": "在 Origin 中绘制散点图、进行线性拟合,以及根据类别为散点图中的数据点着色",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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": "选中工作表中的多列数据(如 A 为 XB/C/D 为 Y。\n点击菜单【Plot → Basic 2D → Scatter】绘制多组散点图。\n点击图中任意数据点选择【Analysis → Fitting → Linear Fit】在弹窗中点击【OK】生成拟合直线和报告。\n双击图中数据点打开【Plot Details】窗口在左侧选择某一数据集如 Y_sin。\n在【Symbol】选项卡中将【Symbol Color】设置为【By Points】点击【OK】应用实现按点着色效果。",
"steps_original": "1、打开Origin软件在菜单栏【数据】选项卡中选择【从文件导入】按钮导入数据然后全选表格点击【绘图】按钮我们可以看到Origin中提供了丰富的图表类型在这里选择【基础2D 图】——【散点图】。\n2、Origin会根据所选的数据自动生成散点图。\n3、然后用鼠标选中散点图点击【分析】菜单在下拉菜单中选择【拟合】——【线性拟合】选项打开线性拟合对话框点击【确定】。\n4、Origin会自动进行线性拟合并弹出【线性拟合结果】窗口我们可以看到统计结果表、汇总表、方差分析表、拟合曲线图以及残差图等。\n5、从拟合曲线图中我们可以看出黑色的数据点表示的是实际数据图中的红色直线是根据这些数据点做的线性拟合曲线随着A值增大B值整体呈上升趋势可得出A、B两组数据有很强的关联性且是正相关关系。\n二、Origin散点图怎么给点分颜色\n1、双击绘制的散点图打开绘图属性面板在面板中选择【符号】标签。\n2、【符号颜色】下拉菜单中支持【单色】或【按点】着色此处选择【按点】以区分不同数据点。然后在颜色选项中选择【索引】可以根据对应的数列设置不同的颜色点击颜色列表位置的图标打开颜色创建面板。\n3、在颜色创建面板中可以为每个索引值指定不同的颜色还可以根据色调、饱和度、明度等进行自定义设置设置完成后点击【保存】。\n4、返回上一级菜单再点击【确定】按钮Origin会根据不同数据的取值情况为数据点进行着色。这样可以使散点图能够更直观清晰地展示出数据之间的差异和分布规律。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk18",
"snapshot": "origin",
"instruction": "在 Origin 中进行线性拟合和非线性拟合(参数识别)",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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": "选中数据表中的 X 和 Y 列点击【Plot → Basic 2D → Scatter】生成散点图。\n点击【Analysis → Fitting → Linear Fit】进行线性拟合并生成结果报告。\n点击【Analysis → Fitting → Nonlinear Curve Fit → Open Dialog】打开非线性拟合窗口。\n在【Category】中选择 Exponential在【Function】中选择 Asymptotic。\n点击【Fit】执行非线性拟合在图中生成拟合曲线及参数结果。",
"steps_original": "1、首先将数据导入至Origin中选中需要绘制的两列数据点击菜单栏中的【绘图】按钮选择绘制【散点图】通过散点图我们可以直观的看到这两组数据之间的对应关系。\n2、散点图绘制完成后点击菜单栏中【分析】-【拟合】-【线性拟合】选项,打开对话框。\n3、在线性拟合面板中设置拟合参数【输出量】中勾选【拟合参数】选项参数的置信度为95%参数设置完成之后点击【确定】按钮Origin就会运行分析并在结果窗口中显示拟合的参数。\n4、选中数据绘制散点图选中绘制完成的散点图后再点击菜单栏【分析】-【拟合】-【非线性曲线拟合】选项,打开非线性曲线拟合对话框。\n5、Origin软件中提供了多种非线性函数类别Exponential指数函数、Logarithmic对数函数、Power幂函数等我们可以通过这些数学模型对数据进行拟合从而找到最佳参数。在这里我们选择的是Exponential指数类别然后选择的是Asymptotic渐进函数设置完成之后点击【拟合】Origin就会进行非线性拟合操作。\n6、除了使用Origin中内置的函数参数外我们还可以根据实际需求自定义编辑拟合函数这为我们在实际工作中进行数据处理时提供了更大的灵活性和精准度。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk19",
"snapshot": "origin",
"instruction": "在Origin中删除绘图中的标注框以及在曲线图上标注最大值点。",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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": "选中数据表中的 X 和 Y 列点击【Plot → Basic 2D → Line】生成折线图。\n点击左侧工具栏【Text ToolT在图中单击并输入文本添加标注框。\n右键点击标注文本选择【Delete】删除标注框。\n点击左侧工具栏【Data Reader Tool】在曲线最高点单击进行标注。",
"steps_original": "1、打开Origin进入到数据分析主页面在主页面中可以看到一个名为【Book1】的数据表界面将需要分析的数据样本添加到数据表格中。\n2、将需要分析的数据添加完成后在软件上方的菜单栏中点击【绘图】接着选择需要绘制的图像这里我们选择绘制一幅折线图。\n3、点击绘制【折线图】后会出现一个变量显示的界面在这里我们勾选显示的数据变量勾选X变量和Y变量勾选完成后点击【确定】。\n4、点击【确定】后Origin就会根据输入的数据样本结果绘制一幅折线图图像绘制图像完成后在软件左侧的工具栏中点击【插入文本】接着就可以在图像中输入相应的文字内容了。\n5、将文字内容输入完成后如果想要去掉标注框中的内容可以直接鼠标右键点击标注框在这里可以直接将标注框删除。\n1、当我们需要标注曲线的最大值时就可以直接在Origin中绘制一幅二次函数的图像。在【绘图】选项中点击绘制样条图。\n2、在图像绘制的数据表格内需要输入绘制的数据点我们将需要绘制的点位输入其中后点击【确定】就可以生成对应的绘图结果了。\n3、由于我们绘制的函数在定义域内属于单调递增函数所以曲线最大值就为x横坐标取最大值时得到的结果。在软件左侧的工具栏中点击【标注】选项接着把标注点位选择在X的最右侧就可以对这一段曲线中的函数最大值进行标注了。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk2",
"snapshot": "origin",
"instruction": "在 Origin 中进行线性拟合,使拟合曲线通过原点并显示拟合方程",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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、将数据输入到表格中后选择需要绘制图像的数据列。在软件的菜单栏中点击【Plot】选项在左侧选择【Basic 2D】分类然后选择【Scatter】散点图或【Line + Symbol】线+符号图在弹出的对话框中勾选要分析的X、Y数据列点击【确定】绘制散点图。\n2、绘制散点图完成后需要调整X轴与Y轴的刻度范围将坐标原点设置为00。双击X轴在弹出的Scale对话框中将【From】设为0【To】设为数据最大值双击Y轴同样将【From】设为0或数据最小值【To】设为数据最大值点击【OK】。\n3、将坐标原点设置为00之后就可以进行快速线性拟合操作了。在软件的菜单栏中点击【Gadgets】选项接着点击【Quick Fit】然后点击【Linear】选项此时鼠标会变成十字准线在图表上点击并拖动弹出的黄色拟合框选择需要拟合的数据范围拟合结果会显示在拟合框中。\n4、在Origin的菜单栏中点击【Analysis】选项接着点击【Fitting】然后选择【Linear Fit】进入线性拟合界面。\n5、点击【Linear Fit】选项后会弹出线性拟合的设置界面。在设置界面中设置好拟合参数后点击【OK】就会生成相应的拟合数据报告表在生成的数据结果报告表中可以查看线性拟合的详细信息其中包括线性拟合的方程数据。",
"steps_original":"1. 选择数据列点击【Plot】菜单在左侧选择【Basic 2D】分类然后选择【Scatter】散点图。\n2. 调整X轴和Y轴的刻度范围将坐标原点设置为00双击X轴在Scale对话框中将【From】设为0【To】设为数据最大值双击Y轴同样设置【From】为0或数据最小值【To】为数据最大值点击【OK】。\n3. 点击【Gadgets】->【Quick Fit】->【Linear】在图表上拖动弹出的黄色拟合框选择数据范围进行快速拟合。\n4. 点击【Analysis】->【Fitting】->【Linear Fit】在弹出的设置界面中设置拟合参数点击【OK】生成拟合报告其中包含拟合方程。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk20",
"snapshot": "origin",
"instruction": "在 Origin 中导入数据,绘制散点图,进行线性拟合,并使用单因素方差分析查看数据的显著性。",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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": "选中数据表中的 X 和 Y 列点击【Plot → Basic 2D → Scatter】生成散点图。\n点击【Analysis → Fitting → Linear Fit】进行线性拟合并生成结果报告。\n回到数据表选中 Y 数据列点击【Statistics → ANOVA → One-Way ANOVA】打开方差分析窗口。\n在【Input】中设置 Data 为 Y 列Factor 选择 X 列作为分组变量。\n点击【OK】运行分析生成 ANOVA 结果表。",
"steps_original": "一、Origin线性拟合怎么操作\n1、打开Origin软件进入到数据分析主页面在主页面中我们需要将数据样本添加到【Book1】数据表中。\n2、将数据样本添加完成后在Origin上方的菜单栏中点击【绘图】并选择绘制【散点图】线性拟合分析是以散点图的数据点为分析的基准。\n3、选择绘制散点图后会进入到数据的显示变量设置界面。我们在这里勾选需要显示在图像中的变量勾选X和Y作为显示的数据变量。\n4、勾选完成后点击【确定】就可以在Origin中绘制出样本的散点图。\n5、得到绘制的散点图后继续在软件上方的菜单栏中点击【分析】选项接着进入到【拟合】选项同时在下拉菜单栏中进入【线性拟合】的操作界面。\n6、在线性拟合操作界面中添加需要分析的数据点击【确定】就可以完成数据样本的拟合分析了。\n二、Origin线性拟合怎么看显著性\n1、我们在前面数据样本的基础上利用方差分析的方式查看数据样本的显著性。在软件上方的菜单栏中点击【统计】选项接着进入到【方差分析】界面在下拉菜单栏中点击【单因素方差分析】选项。\n2、进入到单因素方差分析的界面中之后我们把需要分析的数据样本添加到方差分析界面中添加完成后点击【确定】。\n3、点击【确定】后就可以得到单因素方差分析的数据结果我们可以直接在数据样本检测报告中查看数据的显著性。\n4、在数据样本分析结果中我们可以看到在0.05的固定水平之下,总体均值并非显著地不同(样本数据呈现显著性)。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk3",
"snapshot": "origin",
"instruction": "在 Origin 中标记数据点和峰值点",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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、将数据信息添加到数据表格中之后在软件上方的菜单栏中点击【Plot】选项。在绘图界面中选择【Basic 2D】分类中的散点折线图勾选完成对应的X、Y坐标内容后点击确定生成对应的函数图像。\n2、在得到对应的函数图像之后先选中需要进行标记的数据点接着在软件左侧的工具栏界面中点击带有【T】字样的【Text Tool】文本工具。在需要标记的数据点位置点击并输入标记内容即可在图像中标记点位。\n3、对于峰值点标记可以在软件上方的菜单栏中点击【Gadgets】选项接着点击【Quick Peaks】快速寻峰。Origin会自动识别图像中的峰值点识别到峰值点后使用左侧工具栏的【Text Tool】对峰值点进行标记。",
"steps_original": "1. 在菜单栏点击【Plot】选项选择【Basic 2D】分类中的散点折线图勾选X、Y坐标后生成函数图像。\n2. 在生成的图像中先选中需要标记的数据点然后在左侧工具栏中点击带有【T】字样的【Text Tool】文本工具在数据点位置点击并输入标记内容。\n3 . 对于峰值点标记点击菜单栏【Gadgets】->【Quick Peaks】快速寻峰软件自动识别峰值点后使用左侧工具栏的【Text Tool】对峰值点进行标记。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk4",
"snapshot": "origin",
"instruction": "在 Origin 中调整数据列的小数点位数和调整图表中坐标轴的位置",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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. 选中需要调整小数点位数的列点击鼠标右键在下拉菜单中选择【Properties】属性选项。\n2. 进入【Properties】对话框后在【Options】选项中找到【Digits】位数设置将【Default Decimal Digits】默认小数位数改为【Significant Digits=】有效小数位数然后输入具体的保留位数如3。\n3. 点击【OK】或【Apply】即可看到Origin自动将数据的小数点精度进行了统一调整。",
"steps_original": "1. 调整小数点位数打开Origin在数据表中选中目标数据列右键选择【Properties】。\n2.【Options】的【Digits】设置中将【Default Decimal Digits】默认小数位数改为【Significant Digits=】(有效小数位数)\n3. 输入要保留的位数点击【OK】"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk5",
"snapshot": "origin",
"instruction": "在 Origin 中绘制两组数据的对比误差图",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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. 选中A B两组数据点击菜单栏【Statistics】->【Descriptive Statistics】->【Statistics on Columns】->【Open Dialog...】,打开统计窗口。\n2. 在对话框中点击【Quantities】选项卡勾选【Mean】均值和【Standard Deviation】标准差输出量点击【OK】。\n3. 按住Ctrl键选择序号列和新生成的均值、标准差列在工具栏中点击【Plot】绘制点线图生成误差图。",
"steps_original": "1. 选中A组和B组数据通过描述统计/行统计功能计算各自的均值和标准差。\n2. 选中序号列、均值列和标准差列,使用工具栏绘制点线图以生成误差图。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk6",
"snapshot": "origin",
"instruction": "在 Origin 中利用公式计算数据并绘制饼状图",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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. 按快捷键Ctrl+D 先在Origin工作表中新建一列点击任意列标题右键。\n2. 鼠标选中E列按Ctrl+Q快捷键打开对话框\n3. 在设置列值对话框的输入框中输入求和公式col(A)+col(B)点击【Apply】应用按钮将A列和B列的数据求和结果填充到新列中然后点击【OK】关闭对话框。\n4. 选择工作表中的E列点击菜单栏中的【Plot】绘图在下拉菜单中选择【Basic 2D】→【Pie】或【2D Pie Chart】2D彩色饼图Origin会根据选中的数据生成饼状图显示各数据的占比。",
"steps_original": "1. 公式计算:在 Origin 工作表中,选中 C 列并右键选择【设置列值】。在对话框中输入公式(例如 col(A)+col(B))或使用函数(如 log(col(B))),点击【应用】进行计算。\n2. 绘制饼状图:选择 X、Y 数据列,点击菜单栏【绘图】并选择 2D 彩色饼图。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk7",
"snapshot": "origin",
"instruction": "在 Origin 中导入 Excel 数据并绘制散点图,进行非线性曲线拟合,以及为散点图中的点按数据列分配颜色和大小。",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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. 选中X列和Y列数据通过[Plot] -> [Basic 2D] -> [Scatter]创建散点图。\n2. 选中散点图,通过[Analysis] -> [Fitting] -> [Nonlinear Curve Fit]打开拟合对话框,在[Function Selection]中,将[Category]设置为[Polynomial][Function]设置为[Parabola],点击[Fit]按钮完成拟合。\n3. 双击散点图数据点,打开[Plot Details]面板,切换到[Symbol]选项卡,点击[Symbol Color]下拉框选择[By Points],在[Color Options]中选择[Indexing],并指定[Col(A): \"X\"]为颜色索引列。\n4. 在[Symbol]选项卡中,将[Shape]改为立体球形Sphere将[Size]设置为与A列数据关联通过[Size]下拉框选择[Col(A)]或开启[Variable Size]并指定A列。",
"steps_original": "1. 选中X、Y列[Plot]->[Basic 2D]->[Scatter]创建散点图。\n2. 选中散点图,[Analysis]->[Fitting]->[Nonlinear Curve Fit],选择[Polynomial]类别下的[Parabola]函数,点击[Fit]。\n3. 双击散点图打开[Plot Details],在[Symbol]中设置[Symbol Color]为[By Points],选择[Indexing]并指定A列为颜色索引。\n4. 在[Symbol]中将[Shape]改为球形,[Size]与A列数据关联。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk8",
"snapshot": "origin",
"instruction": "在 Origin 中绘制散点图并添加线性拟合趋势线",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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_original": "1. 选中A、B列数据点击菜单栏【绘图】->【散点图】生成散点图。\n2. 双击散点图,在绘图属性面板中调整符号样式、颜色、大小等。\n3. 在【标签】选项中启用标签设置标签为列B调整偏移和位置。\n4. 点击散点图区域,选择菜单栏【分析】->【线性拟合】。\n5. 在线性拟合对话框中,勾选拟合曲线图、输出到报告表,并选择输出参数。\n6. 查看生成的拟合趋势线及分析报告(参数表、统计表、方差分析等)。",
"steps": "1、在开始制作散点图之前先把要分析的数据准备好如下图所示A列表示的产品价格B列表示的是月销量我们想要通过观察散点的分布来分析产品价格与月销量之间是否存在相关性。\n2、鼠标选中A、B列数据确保X、Y轴变量正确点击菜单栏中的 【绘图】选项卡选择下拉列表中的【散点图】Origin会立即根据数据生成对应的散点图。\n3、双击生成的散点图进入绘图属性面板选择面板中的【符号】标签调整符号样式在Origin中有多种符号样式可以选择比如圆形、方形、三角形等也可以设置符号颜色、符号大小以及符号透明度等还可以将不同数据系列设置为不同形状以作区分。\n4、点击面板中的【标签】选项勾选启用标签设置标签形式为col(B)调整水平偏移位置为15像素勾选【自动调整位置以避免重叠】将标签位置设置为右侧然后点击【应用】-【确定】。\n5、鼠标左键点击绘制完成的散点图区域然后选择菜单栏中的【分析】选项在下拉菜单中根据数据特点选择合适的拟合方式在这里我们选择的是【线性拟合】。\n6、在线性拟合对话框中点击【拟合曲线图】选项卡勾选面板中的拟合曲线图、输出到报告表中在【输出量】选项卡中勾选拟合参数、拟合汇总、方差分析等点击【确定】。\n7、Origin会自动计算并在散点图上添加拟合趋势线还会生成一系列结果分析表包括参数表、统计表、汇总表、方差分析表、拟合曲线图以及残差图等等。"
}
}

View File

@@ -0,0 +1,59 @@
{
"id": "Origin_Tutorial_tesk9",
"snapshot": "origin",
"instruction": "在 Origin 中显示拟合曲线的公式,以及通过给定的 Y 值计算对应的 X 值。",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"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. 选中数据,点击 Analysis 菜单,选择 Fitting选择 Nonlinear Curve Fit选择合适的函数完成拟合。\n2. 拟合完成后,拟合公式自动显示在图像上。\n3. 重新打开 Analysis 菜单,选择 Fitting选择 Nonlinear Curve Fit打开拟合对话框。\n4. 在对话框左侧面板点击 Fitted Curves展开后点击 Find X/Y。\n5. 选择 Find X from Y输入给定的 Y 值,点击 Find 或 OK得到对应的 X 值。",
"steps_original": "一、Origin拟合曲线怎么显示拟合公式\n1、打开Origin软件进入到数据表分析的主页面在主页面中可以看到一个名为【Book1】的数据列表栏将需要分析的数据点位添加到数据表中。\n2、将数据点添加完成后在Origin上方的菜单栏中点击【绘图】选项在绘图界面中选择【散点图】作为图像绘制的内容在进行拟合分析时需要用到散点图分析数据点位的趋势。\n3、选择绘制散点图后会出现一个变量的显示界面在这里选择需要显示的变量内容勾选X和Y变量勾选完成后点击【确定】。\n4、点击【确定】之后Origin就会根据数据样本中的点位绘制出一幅散点图图像。我们在得到图像后继续在软件上方的菜单栏中点击【分析】选择【拟合】后点击进入【线性拟合】界面。\n5、在线性拟合界面中需要输入拟合的相关数据信息或者设置设置完成后点击【确定】就可以生成对应的拟合数据报告了。\n6、在拟合分析的数据报告内我们可以看到拟合结果的斜率以及截距同时也可以在数据报告中查找到拟合分析结果的公式信息如果需要把公式数据添加在图像中可以在【插入公式】界面中将拟合公式插入到图像内。\n二、Origin拟合曲线怎么从y算出x\n1、我们在绘制完成了对应的散点图图像后在Origin上方的菜单栏中点击进入拟合分析界面。\n2、在线性拟合设置界面中点击进入【查找X/Y】选项在这里勾选根据Y查找X勾选后点击【确定】。\n3、我们在点击确定后会得到一个线性拟合的整体数据分析结果我们可以在这里查找整体数据拟合的相关信息。如果我们需要利用Y的值算出X可以在数据列表中点击进入【FitLinearFindXfromY1】接着在其中输入Y值后就可以得到对应的X数值以及对应的置信区间计算结果。"
}
}

View File

@@ -0,0 +1,57 @@
{
"id": "Origin_User_Guide_2025b_E_task11",
"snapshot": "origin",
"instruction": "在 Origin 中通过 Insert → Error Bars 为图表曲线添加误差条,误差来源选择 Percent of Data 5%",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/origin/example_with_graph.opju",
"path": "C:\\Users\\user\\Desktop\\example_with_graph.opju"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example_with_graph.opju"
]
}
},
{
"type": "sleep",
"parameters": {
"seconds": 20
}
}
],
"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. 单击图表窗口Graph1使其成为活动窗口。\n2. 单击主菜单栏中的 \"Insert\" 菜单。\n3. 在下拉菜单中单击 \"Error Bars...\" 菜单项。\n4. 在弹出的 \"Error Bars\" 对话框中,确认 \"Source of Errors\" 已选中 \"Percent of Data (%)\",并确认数值为 5。\n5. 单击 \"OK\" 按钮应用设置并关闭对话框。\n6. 观察图表窗口,确认 Y_sin 曲线上已添加误差条标记。",
"steps_original": "1. 在工作表中选中数据列后通过 Plot → Basic 2D → Line 绘制折线图。\n2. 单击图表窗口Graph1使其成为活动窗口。\n3. 在主菜单中选择 Insert → Error Bars...。\n4. 在弹出对话框中选择误差数据列并点击 OK 应用。\n5. 查看图表确认误差条已正确添加到数据曲线上。"
}
}

View File

@@ -0,0 +1,57 @@
{
"id": "Origin_User_Guide_2025b_E_task12",
"snapshot": "origin",
"instruction": "在 Origin 中通过 Data → Pick Data Points 工具在图表上拾取 3 个数据点并保存到新的工作表中",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/origin/example_with_graph.opju",
"path": "C:\\Users\\user\\Desktop\\example_with_graph.opju"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example_with_graph.opju"
]
}
},
{
"type": "sleep",
"parameters": {
"seconds": 20
}
}
],
"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. 单击图表窗口Graph1标题栏使其成为活动窗口。\n2. 单击主菜单栏中的 'Data' 菜单。\n3. 在下拉菜单中单击 'Pick Data Points' 菜单项。\n4. 系统弹出 'Pick Points' 对话框,鼠标光标自动变为交叉准星。\n5. 在图表区域内移动鼠标,将准星悬停定位在需要拾取的目标数据点上。\n6. 在该数据点上双击鼠标左键,确认 'Pick Points' 对话框中 'Total Picked' 数量增加且坐标值已记录。\n7. 重复步骤 5-6共拾取 3 个数据点,确认 'Total Picked' 显示为 3。\n8. 拾取完毕后,单击 'Pick Points' 对话框中的 'Done' 按钮。\n9. 确认拾取的数据点已保存到新建的工作表中。",
"steps_original": "1. 在工作表中选中数据列后通过 Plot → Line 绘制图表,单击图表窗口使其成为活动窗口。\n2. 在主菜单中选择 Data → Pick Data Points。\n3. 在弹出的 Pick Points 对话框中,使用交叉准星在图表中双击选择数据点,确认对话框中 Total Picked 数量增加且坐标值已记录。\n4. 点击 Done 按钮将选择的数据点保存到新的工作表。"
}
}

View File

@@ -0,0 +1,56 @@
{
"id": "Origin_User_Guide_2025b_E_task2",
"snapshot": "origin",
"instruction": "在 Origin 中通过 Window → Script Window 打开脚本窗口,输入并执行 stdDev(col(B)[1:10])=,观察输出的计算结果。",
"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:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example.xlsx"
]
}
},
{
"type": "sleep",
"parameters": {
"seconds": 20
}
}
],
"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. 单击顶部主菜单栏中的 \"Window\" 菜单。\n2. 在下拉菜单中单击 \"Script Window\",打开脚本窗口。\n3. 在 Script Window 的文本输入区域中单击,使光标定位于其中。\n4. 输入 \"stdDev(col(B)[1:10])=\"(末尾等号是 LabTalk 语法中触发打印结果的方式)。\n5. 按下 Enter 键执行。\n6. 在 Script Window 中观察打印出的标准差数值。"
}
}

View File

@@ -0,0 +1,56 @@
{
"id": "Origin_User_Guide_2025b_E_task3",
"snapshot": "origin",
"instruction": "在 Origin 中通过右键 X 轴 → Scale 修改 X 轴的范围为 2 到 10",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/origin/example_with_graph.opju",
"path": "C:\\Users\\user\\Desktop\\example_with_graph.opju"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example_with_graph.opju"
]
}
},
{
"type": "sleep",
"parameters": {
"seconds": 20
}
}
],
"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. 在图表窗口Graph1的 X 轴(横坐标轴)区域上,右键单击鼠标。\n2. 在弹出的右键快捷菜单中,单击选择 \"Scale...\" 菜单项。\n3. 在弹出的 \"Scale\" 对话框中,单击 \"From\" 右侧的文本输入框,清空现有内容,输入数值 2。\n4. 单击 \"To\" 右侧的文本输入框,清空现有内容,输入数值 10。\n5. 单击对话框底部的 \"OK\" 按钮完成设置并关闭对话框。"
}
}

View File

@@ -0,0 +1,56 @@
{
"id": "Origin_User_Guide_2025b_E_task4",
"snapshot": "origin",
"instruction": "在 Origin 中通过 Graph → Rescale to Show All 重设比例以显示所有数据",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/origin/example_with_graph_scaled_from2_to_10.opju",
"path": "C:\\Users\\user\\Desktop\\example_with_graph_scaled_from2_to_10.opju"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example_with_graph_scaled_from2_to_10.opju"
]
}
},
{
"type": "sleep",
"parameters": {
"seconds": 20
}
}
],
"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. 单击图表窗口Graph1使其成为活动窗口当前 X 轴范围为 2 到 10部分数据未显示。\n2. 单击主菜单栏中的 \"Graph\" 菜单,展开下拉菜单。\n3. 在下拉菜单中单击 \"Rescale to Show All\" 菜单项。\n4. 观察图表窗口,确认 X 轴范围已恢复为显示全部数据0 到约 12.57)。"
}
}

View File

@@ -0,0 +1,56 @@
{
"id": "Origin_User_Guide_2025b_E_task5",
"snapshot": "origin",
"instruction": "在 Origin 中通过 Data → Slicer 为图表添加数据切片器,并设置过滤条件为 X 大于 6",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/origin/example_with_graph.opju",
"path": "C:\\Users\\user\\Desktop\\example_with_graph.opju"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example_with_graph.opju"
]
}
},
{
"type": "sleep",
"parameters": {
"seconds": 20
}
}
],
"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. 单击图表窗口Graph1使其成为活动窗口。\n2. 单击主菜单栏中的 \"Data\" 菜单。\n3. 在下拉菜单中单击 \"Slicer...\" 菜单项。\n4. 在弹出的 \"Add Slicer to Graph\" 对话框中,确认 Column 1 已选择 \"A(X) : X\",单击 \"OK\" 按钮。\n5. 图表左侧出现 Slicer 面板Filters 列表中显示默认条件 \"X = 0\"。\n6. 在 Slicer 面板中双击 \"X = 0\" 条件项,弹出 \"Simple Numeric Filter\" 对话框。\n7. 单击 \"Formula Type\" 下拉菜单,选择 \"is greater than\"。\n8. 单击 \"Value\" 输入框,清空现有内容,输入 6。\n9. 单击 \"OK\" 按钮关闭对话框。\n10. 确认 Slicer 面板中条件更新为 X > 6图表中仅显示 X 大于 6 的数据点。"
}
}

View File

@@ -0,0 +1,57 @@
{
"id": "Origin_User_Guide_2025b_E_task8",
"snapshot": "origin",
"instruction": "在 Origin 中通过 Worksheet → Convert to Matrix 将活动表格转换成矩阵",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/origin/test.csv",
"path": "C:\\Users\\user\\Desktop\\test.csv"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\test.csv"
]
}
},
{
"type": "sleep",
"parameters": {
"seconds": 20
}
}
],
"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. 单击 Book1 工作表窗口标题栏使其成为活动窗口。\n2. 单击主菜单栏中的 \"Worksheet\" 菜单。\n3. 在下拉菜单中将鼠标移至 \"Convert to Matrix\",在展开的子菜单中单击 \"Direct...\"。\n4. 在弹出的对话框中,单击 \"Data Format\" 下拉菜单,选择 \"X across columns\"。\n5. 单击 \"OK\" 按钮完成转换。\n6. 确认系统生成了包含矩阵数据的新窗口MBook1。",
"steps_original": "1. 通过 File → Import → Single ASCII... 导入桌面上的 test.csv 文件,确认导入选项后点击 OK。\n2. 单击 Book1 工作表窗口使其成为活动窗口。\n3. 在主菜单中选择 Worksheet → Convert to Matrix → Direct...。\n4. 在对话框中选择转换方法(例如 X Across Columns。\n5. 点击 OK 完成转换,生成矩阵数据。"
}
}

View File

@@ -0,0 +1,57 @@
{
"id": "Origin_User_Guide_2025b_E_task9",
"snapshot": "origin",
"instruction": "在 Origin 中启用 Object Edit 工具栏选中图例Legend和 Y 轴标题执行左对齐Align Left",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/origin/example_with_graph.opju",
"path": "C:\\Users\\user\\Desktop\\example_with_graph.opju"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\Program Files\\OriginLab\\Origin2025b\\Origin64.exe",
"C:\\Users\\user\\Desktop\\example_with_graph.opju"
]
}
},
{
"type": "sleep",
"parameters": {
"seconds": 20
}
}
],
"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. 单击 Graph1 图表窗口标题栏使其成为当前活动窗口。\n2. 单击主菜单栏中的 \"View\" 菜单。\n3. 在下拉菜单中单击 \"Toolbars...\" 选项。\n4. 在弹出的 Toolbars 对话框中,找到并勾选 \"Object Edit\" 复选框。\n5. 单击 \"Close\" 按钮关闭对话框。\n6. 单击图表窗口中的图例Legend对象使其被选中。\n7. 按住 Shift 键,再单击 Y 轴标题Y-axis title对象完成两个对象的多选后松开 Shift 键。\n8. 在顶部 Object Edit 工具栏中,单击第一个按钮 \"Left Alignment\"(左对齐)。\n9. 确认图例Legend和 Y 轴标题Y_sin的左边缘已对齐。",
"steps_original": "1. 单击 Graph1 图表窗口使其成为活动窗口。\n2. 通过 View → Toolbars... 勾选 Object Edit 工具栏,点击 Close。\n3. 在图表窗口中按住 Shift 键依次单击选中需要对齐的多个图表对象。\n4. 在顶部 Object Edit 工具栏中点击对齐按钮(例如 Align Left 左对齐或 Align Center 居中对齐)。\n5. 所选对象将以统一对齐样式排列。"
}
}

View File

@@ -0,0 +1,57 @@
{
"id": "animation_task3",
"snapshot": "ovito",
"instruction": "在 OVITO 中将动画帧数从默认设置改为 10 帧每秒。",
"source": "custom",
"config": [
{
"type": "upload_file",
"parameters": {
"files": [
{
"local_path": "evaluation_examples/data/ovito/test_energy.xyz",
"path": "C:\\Users\\user\\Desktop\\test_energy.xyz"
}
]
}
},
{
"type": "launch",
"parameters": {
"command": [
"C:\\OVITO Basic\\ovito.exe",
"C:\\Users\\user\\Desktop\\test_energy.xyz"
]
}
},
{
"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' 选项,打开 'Animation Settings' 对话框。\n2. 在弹出的 'Animation Settings' 对话框中,定位到顶部的 'Animation' 分组区域。\n3. 单击 'Frames per second:' 标签右侧的数值输入框,将光标定位在输入框内(若为下拉菜单则单击展开)。\n4. 删除并清空该输入框中原有的数值内容。\n5. 使用键盘在输入框中输入数字 '10'(或在下拉选项中单击选中 '10')。\n6. 定位到对话框右下角,单击 'OK' 按钮以保存设置并关闭对话框.",
"steps_original": "1. 在 OVITO 窗口底部的工具栏或状态区域中选择 'Animation settings'。\n2. 在弹出的 'Animation settings' 窗口中,找到 'Frames per second' 输入框。\n3. 将帧速率设置为 10。\n4. 点击 'OK' 以保存更改。"
}
}

Some files were not shown because too many files have changed in this diff Show More