条件替换(Conditional Replace)
Group: Alloy
Class: ConditionalReplaceCard
Source: src/NepTrainKit/ui/views/_card/conditional_replace_card.py
功能说明
按空间表达式对目标元素执行条件替换(conditional replacement),构建区域选择性化学改性样本。
它最适合的场景是:只替换满足局部规则的位点,而不是对所有候选原子做无差别随机替换。如果你更关心完整工作流而不是单个参数,请先看下面的“操作示例”。
操作示例
场景:只替换满足局部规则的位点,而不是对所有候选原子做无差别随机替换
输入: 一个含目标元素的结构,以及明确的替换规则或条件表达式
目标: 把“只换表面 O”或“只换某一 group 内位点”这类条件约束写进替换流程
参数设置:
target写要被替换的原始元素或位点条件replacements写候选替换元素及比例condition用来限制哪些位点允许参与
输出: 只有命中条件的位点会被替换;未命中的位置保持原样
怎么验证结果合理:
抽查被替换的原子是否真的满足条件
若结果和原结构完全一样,先检查
condition是否过严确认替换后标签和元素统计与预期一致
适用场景与不适用场景
数据症状 (Dataset symptom): 需要只在表层/局域区域替换元素。
目标任务 (Target objective): 增强局域化学环境变化覆盖。
建议添加条件 (Add-it trigger): 可以用
x/y/z明确写出作用区域。不建议添加条件 (Avoid trigger): 仅需全局替换,Random Doping 更直接。
物理提示 (Physics caution): 重点检查目标配比、实际元素统计和标签是否一致,避免“标签写对了、占位落错了”。
输入前提
先验证
replacements语法正确。先用
condition=all验证路径,再收紧条件。
参数说明(完整)
target (Target element)
UI Label:
Target element字段映射 (Field mapping): 序列化键
target<-> 界面标签Target element。控件标签 (Caption):
Target element。控件解释 (Widget): 文本输入
LineEdit(或可编辑下拉)。类型/范围 (Type/Range): string
默认值 (Default):
""含义 (Meaning): 目标元素 (target species)。
对输出规模/物理性的影响: 限定被替换或处理的原子种类。
怎么判断该开还是该关: 先用默认值跑小样本;只有当你能明确说明它会改变当前结果分布时,再主动偏离默认设置。
配置建议 (Practical note):
Target element可按任务替换为自定义值;建议先用最小样本验证后再批量生成。
replacements (Replacements)
UI Label:
Replacements字段映射 (Field mapping): 序列化键
replacements<-> 界面标签Replacements。控件标签 (Caption):
Replacements。控件解释 (Widget): 文本输入
LineEdit(或可编辑下拉)。类型/范围 (Type/Range): string (
elem:ratiolist or JSON dict)默认值 (Default):
""含义 (Meaning): 替换配方 (replacement map),支持
A:0.7,B:0.3或 JSON dict。对输出规模/物理性的影响: 决定替换后化学组成分布。
怎么判断该开还是该关: 先用默认值跑小样本;只有当你能明确说明它会改变当前结果分布时,再主动偏离默认设置。
配置建议 (Practical note): 按映射语法填写,建议先用简单映射验证后再扩展。
condition (Condition)
UI Label:
Condition字段映射 (Field mapping): 序列化键
condition<-> 界面标签Condition。控件标签 (Caption):
Condition。控件解释 (Widget): 勾选开关
CheckBox。类型/范围 (Type/Range): string boolean expression on
x,y,z默认值 (Default):
""含义 (Meaning): 空间条件表达式 (condition expression),支持 x/y/z 与逻辑运算。
对输出规模/物理性的影响: 命中区域越宽,替换越全局;越窄,越局域。
怎么判断该开还是该关: 只在你明确知道该字段会命中输入结构时填写;不确定时先用最小样本验证命中情况。
配置建议 (Practical note):
开启:需要启用
Condition对应行为时开启。关闭:希望保持默认/更保守行为时关闭。
seed (Seed)
UI Label:
Seed字段映射 (Field mapping): 序列化键
seed<-> 界面标签Seed。控件标签 (Caption):
Seed。控件解释 (Widget): 数值输入
SpinBoxUnitInputFrame。类型/范围 (Type/Range): int(单值输入)
默认值 (Default):
[0]含义 (Meaning): 随机种子值 (random seed value)。
对输出规模/物理性的影响: 只影响随机路径,不改变物理模型本身。
参数联动 / 生效条件:
seed只有在use_seed=true时才真正固定随机路径。物理直觉 / 典型值: 先从小范围试跑并抽查输出,再决定是否扩大范围;范围越宽,覆盖越广,但极端构型风险也越高。
推荐范围 (Recommended range):
保守:0(随机)
平衡:1-99(可复现)
探索:100-9999(多 seed 对比)
mode (Mode)
UI Label:
Mode字段映射 (Field mapping): 序列化键
mode<-> 界面标签Mode。控件标签 (Caption):
Mode。控件解释 (Widget): 下拉选择
ComboBox(显示文本与序列化值可能不同)。类型/范围 (Type/Range): enum(int)
默认值 (Default):
0含义 (Meaning): 操作模式 (operation mode)。
对输出规模/物理性的影响: 改变执行逻辑路径,影响样本分布。
参数联动 / 生效条件: 它决定当前工作流走哪条主分支;先选模式,再填写与该模式对应的字段。
物理直觉 / 典型值: 它决定程序走哪种离散策略;先选对模式,再去调该模式下真正起作用的数值参数。
推荐范围 (Recommended range):
保守:默认模式先验证
平衡:按任务切换
探索:探索模式配审计
替换输入 Schema (Replacement input schema)
replacements优先写成Co:0.7,Ni:0.3这种逗号+冒号字符串;只有在你明确需要回填内部序列化结果时,才考虑 JSON dict 字符串。condition支持x/y/z与and/or/not逻辑表达式。建议先用
all验证替换路径,再收紧局域条件。
推荐预设(可直接复制 JSON)
保守(Safe)
{
"class": "ConditionalReplaceCard",
"check_state": true,
"target": "O",
"replacements": "F:1.0",
"condition": "z>=8 and z<=10",
"seed": [
101
],
"mode": 1
}
平衡(Balanced)
{
"class": "ConditionalReplaceCard",
"check_state": true,
"target": "O",
"replacements": "F:0.7,N:0.3",
"condition": "z>=6 and z<=14",
"seed": [
101
],
"mode": 0
}
激进/探索(Aggressive/Exploration)
{
"class": "ConditionalReplaceCard",
"check_state": true,
"target": "O",
"replacements": "F:0.4,N:0.3,Cl:0.3",
"condition": "all",
"seed": [
101
],
"mode": 0
}
推荐组合
Conditional Replace -> Random Doping: 先做几何门控替换,再做更广泛替位采样。
先明确“目标配比”还是“具体落位”,再决定接
Composition Sweep、Random Occupancy还是Random Doping。涉及 group 或局部位点限制时,可先接
Group Label或规则类卡片再执行替换。
常见问题与排查
结果没有变化时,先检查目标元素、规则字符串或
Comp tag来源是否真的命中了输入结构。如果输出成分偏离预期,优先检查是“目标配比定义”问题,还是“离散落位/随机替换”步骤把分布拉偏。
这组卡片不会自动替你决定工作流分工;需要系统扫配比时先用
Composition Sweep,需要真实落位时再接Random Occupancy或Random Doping。
输出标签 / 元数据变更
该卡片输出的 Config_type 标签模式:
Repl({...}->{...})
可复现性说明
seed=[0]一般表示随机路径;固定非零值用于可重复对比。输入顺序变化会改变样本对应关系。