Skip to content

swbpy2.gtree 模块

概述

swbpy2.gtree 包含用于操作 SWB 项目的主要类。请参考 Examples 获取主要用例的代码示例。

类和方法列表

class swbpy2.gtree.Deck(projectpath, isHierarchical=True)

此类用于打开、修改、执行和导出 SWB 项目。创建一个新项目或使用现有项目。

参数

  • projectpath (str):SWB 项目路径。
  • isHierarchical (bool):以层级模式创建项目。

Deck.abort(nodes=[])

中止给定的运行节点或整个项目。

参数

  • nodes (list):要中止的运行节点列表。如果列表为空,则中止项目的所有运行节点。

Deck.cleanup(default=True, **kwargs)

清理项目。封装 gcleanup 二进制调用。

参数

  • default (bool):如果设为 True,则应用默认项目清理。
  • **kwargs:gcleanup 二进制支持的清理命令行选项集。详情请在终端运行 gcleanup -h

Deck.export(csvfile=None)

将当前项目数据导出为 CSV 格式。

表头组成: 第1行:工具名称 第2行:工具标签 第3行:参数名称和变量名称

参数

  • csvfile (str):保存 CSV 数据的文件路径。如果未提供值,则返回 CSV 数据而不保存。

返回:以 CSV 格式返回项目数据。类型:str

Deck.finalize()

Deck 对象的析构函数。

Deck.getGtree()

将项目仿真树检索为对象。

返回:仿真树对象的内部实例。类型:swbpy2.gtree.Gtree

Deck.getPath()

检索 SWB 项目路径。

返回:SWB 项目路径。类型:str

Deck.preprocess(**kwargs)

预处理项目。封装 spp 二进制调用。

参数

  • **kwargsspp 二进制支持的预处理器命令行选项集。详情请在终端运行 spp -h

Deck.reload(saveBeforeReload=False)

在 Deck 对象的上下文中重新加载项目。如果 SWB GUI 已打开,也向其发送重新加载命令。

参数

  • saveBeforeReload (bool):在开始重新加载之前保存项目。默认为 False。

Deck.rename(newName)

供将来实现使用的占位符。请勿使用。

Deck.resetStatus(newstatus='none')

重置项目状态。设置:将更改时间戳设为当前时间,主机设为当前主机 FQDN,用户设为当前用户,状态设为 NONE,PID 设为当前运行的 pid 值。

Deck.run(**kwargs)

运行项目。封装 gsub 二进制调用。

参数

  • **kwargsgsub 二进制支持的命令行选项集。详情请在终端运行 gsub -h。如果未提供参数,则启动整个项目。

Deck.save(path=None, clean=False)

保存当前项目。

参数

  • path (str):保存 SWB 项目的路径。如果未提供值,则在当前路径保存项目。
  • clean (bool):将 path 参数中指定的实例保存为干净的 SWB 项目。

Deck.status()

从文件系统检索项目状态。

返回:返回当前状态,可能为:none、ready、done、failed、aborted 之一。类型:str

class swbpy2.gtree.Gtree(project, bridge_project=False)

项目仿真树类。swbpy2.core.core.SWBTree 核心实体的类封装,扩展了用于处理 SWB 项目上下文的实用函数。

参数

  • project (str):SWB 项目路径。

Gtree.AddDefinedVar(node, varname, value, toSave=False)

向节点添加已定义变量。

参数

  • node (int):要添加已定义变量的节点。
  • varname (str):新或现有变量名称。
  • value:变量值。
  • toSave (bool):保存仿真树。

抛出:如果节点不存在则抛出 RuntimeException。

Gtree.AddNodesToScenario(nodes, scenario, toSave=False)

向给定场景添加节点。列表必须包含要添加的所有实验的所有节点。

参数

  • nodes (list):节点列表。
  • scenario (str):场景名称。
  • toSave (bool):保存仿真树。

抛出:如果节点列表中有节点不存在,或场景不存在,则抛出 RuntimeError。

Gtree.AddParam(param, defValue, step=-1, toSave=False)

向仿真树添加参数。

参数

  • param (str):参数名称。
  • defValue:默认值。
  • step (int):应插入工具的流程步骤。
  • toSave (bool):保存仿真树。

Gtree.AddPath(pvalues, scenario='default', toSave=False)

向树添加新实验。pvalues 列表的长度应与树流程中分割步骤(参数)的数量完全相同。

参数

  • pvalues (list):参数值元组。
  • scenario (str):新实验应添加到的场景名称(默认为 "default")。
  • toSave (bool):保存仿真树。

抛出:如果指定场景不存在,或 pvalues 列表长度与项目中的参数数量不匹配,则抛出 RuntimeError。

Gtree.AddTool(tool, dbtool, step=-1, toSave=False)

在给定步骤添加 dbtool 类型的工具。

参数

  • tool (str):工具名称(工具标签)。
  • dbtool (str):工具的数据库名称(工具名称)。
  • step (int):工具应插入的步骤(0:流程开头,-1:流程末尾)。
  • toSave (bool):保存仿真树。

抛出:如果 tool 为空、dbtool 为空、tool 已存在或步骤无效,则抛出 RuntimeError。

Gtree.AddVar(node, varname, value, hidden=False, toSave=False)

添加预处理变量。请参阅 Sentaurus Workbench 用户指南中关于 #set 和 #seth 预处理变量命令的章节。

参数

  • node (int):应添加预处理变量的节点。
  • varname (str):变量名称。
  • value (str):变量值。
  • hidden (bool):设置变量为隐藏。
  • toSave (bool):保存仿真树。

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.AddXVar(node, varname, xvalue, date, toSave=False)

添加提取变量。通常,这是仿真完成后从节点输出文件中提取的值。

参数

  • node (int):变量的节点。
  • varname (str):变量名称。
  • xvalue (str):提取变量的值。
  • date (int):时间戳
  • toSave (bool):保存仿真树。

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.AllLeafNodes(scenario='all', showpruned=True, fold=False)

返回属于指定场景的所有树叶节点列表。叶节点是实验节点路径中的最后一个节点。

参数

  • scenario (str):场景名称。如果未指定,则返回所有场景的叶节点。
  • showpruned (bool):包含剪枝节点。如果未指定,则包含剪枝节点。
  • fold (bool):包含折叠节点。

返回:叶节点列表。类型:list

Gtree.AllNodes(scenario='all')

返回指定场景的所有节点列表。

参数

  • scenario (str):场景名称。如果未指定,则返回所有场景的节点。

返回:参数名称列表。类型:list

Gtree.AllPnames()

返回树流程中所有参数名称的列表。

返回:参数名称列表。类型:list

Gtree.AllScenarios()

返回所有场景的列表。

返回:场景名称列表。类型:list

Gtree.AllStepNodes(scenario='all', step=-1, reorderNodes=False)

检索给定步骤的所有节点。

参数

  • scenario (str):场景名称。如果未提供,则返回所有场景的步骤节点。
  • step (int):输入步骤。如果步骤超出范围或未提供,则返回最后一步的节点。

返回:该步骤的节点。类型:list

Gtree.AllTools()

返回流程顺序中所有工具名称的列表。

返回:工具名称列表。类型:list

Gtree.AllVarNames()

返回所有变量名称的列表。

返回:参数名称列表。类型:list

Gtree.BridgeNodeToChildProject(**kwargs)

Gtree.ChangeNodeStatus(node, status)

在内部数据中更改节点状态,并在项目对应的已保存持久存储中更新。

参数

  • node (int):输入节点。
  • status (str):新的节点状态。状态应为以下之一:none、queued、ready、pending、running、done、failed、aborted。

返回:如果操作成功则返回 True,否则返回 False。类型:bool

抛出:如果尝试"剪枝"则抛出 ValueError。

Gtree.ChangeNodeValue(node, value, version=2, toSave=False)

更改节点的参数值。如果同一步骤中有其他节点具有相同的值,则会失败,因为这需要合并和重新父级化。这种情况下请使用 version = 2。

参数

  • node (int):输入节点编号。
  • value:要应用的新值。
  • version (int):算法版本号。
  • toSave (bool):保存仿真树。

Gtree.ChangeParamValues(param, values=[], toSave=False)

更改指定参数的值。

参数

  • param (str):参数名称。
  • values (list):参数值列表。
  • toSave (bool):保存仿真树。

抛出:如果指定参数不存在,或指定值列表的元素数量不同,则抛出 swbpy2.core.exception.TreeException。

Gtree.CollectParamsFromChildProject(**kwargs)

Gtree.CreateDefaultScenario(scenario='all', toSave=False)

创建默认场景。创建新项目时需要此操作。

参数

  • scenario (str):场景名称。
  • toSave (bool):保存仿真树。

Gtree.DBTool(toolname)

检索给定工具(工具标签)的数据库名称(工具名称)。

参数

  • toolname (str):工具名称。

抛出:如果项目不包含具有 toolname 的工具,则抛出 AttributeError。

Gtree.DeclareVariable(varname, defvalue='', refvarname='', after=False, toSave=False)

声明新 SWB 全局变量的方法。此变量将出现在 SWB GUI 项目流程的 Variables 面板中。

参数

  • varname (str):新变量名称。
  • defvalue (str):默认值。
  • refvarname (str):用于插入新变量的参考变量名称。
  • after (bool):在参考变量之前还是之后插入新变量。
  • toSave (bool):保存仿真树。

Gtree.DeleteParam(param, keepValue='', cleanup=True, toSave=False)

删除指定名称的参数。

参数

  • param (str):要删除的参数名称。
  • keepValue:保留参数值。这指定如果参数位于仿真流程中间,则要保留的仿真分支。
  • cleanup (bool):清理与参数一起删除的节点的结果和文件。
  • toSave (bool):保存仿真树。

Gtree.DeleteScenario(scenario, cleanup=True, toSave=False)

删除指定名称的场景。

参数

  • scenario (str):要删除的场景名称。
  • cleanup (bool):清理与已删除场景相关的已保存持久数据。
  • toSave (bool):保存仿真树。

抛出:如果场景不存在则抛出 RuntimeError。

Gtree.DeleteTool(tool, cleanup=True, toSave=False)

删除特定工具。

参数

  • tool (str):要删除的工具名称。如果工具具有参数,它们也将被删除。
  • cleanup (bool):清理与已删除工具相关的已保存持久节点数据。
  • toSave (bool):保存仿真树。

抛出:如果工具不在项目中则抛出 RuntimeError。

Gtree.DeleteTool2(tool, shift='l', cleanup=True, toSave=False)

删除特定工具并将剩余阶段左移或右移。

参数

  • tool (str):要删除的工具名称。
  • shift (enum):如何处理被删除工具的参数。可选值:SWBStep.PREVIOUS、SWBStep.NEXT、SWBStep.DELETE。
  • cleanup (bool):清理与已删除工具相关的已保存持久节点数据。
  • toSave (bool):保存仿真树。

抛出:如果工具不在项目中,或尝试移动超出项目边界,则抛出 RuntimeError。

Gtree.DeleteVariable(varname, node=0, toSave=False)

删除指定节点上的给定变量。注意,此方法不会删除全局变量。

参数

  • varname (str):变量名称。
  • node (int):应从其删除变量的节点。这必须设置为有效的节点值。
  • toSave (bool):保存仿真树。

抛出:如果节点无效则抛出 RuntimeError。

Gtree.FindExperiment(pvalues)

使用一组值来选择实验的检索方法。

参数

  • pvalues (list):输入值。

返回:查询结果。类型:dict

抛出:如果提供的值与任何实验都不匹配,则抛出 KeyError。

Gtree.FoldNode(node, scenario='all', toSave=False)

折叠特定场景的节点。

参数

  • node (int):要折叠的节点。
  • scenario (str):要折叠的节点所属的场景。
  • toSave (bool):保存仿真树。

Gtree.GetDBToolCtxItem(key, toolname=None)

从工具数据库的 WB_tool 数组中检索给定键的值。

参数

  • key (str):工具数据库中 WB_tool 数组的键。
  • toolname (str):键所属的工具名称。

返回:工具数据库层次结构中存储的值。

抛出:如果在 DBToolContext 中未找到键,则抛出 KeyError。

Gtree.GetEntity()

检索仿真树的内部实体。

返回:仿真树的实例。类型:swbpy2.core.core.SWBTree

Gtree.GetNodeDictionary(node, type='any')

返回包含节点信息聚合集的字典。字典包括给定节点的参数值、变量值、工具标签和工具名称。

参数

  • node (int):输入节点。
  • type (str):指定节点上定义的变量值类型:any、set、extracted、defined、not_set、not_extracted。

返回:节点信息的聚合集。类型:dict

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.GetParamValues(param)

返回指定参数的值。

参数

  • param (str):参数名称。

抛出:如果指定参数不存在,则抛出 swbpy2.core.exception.TreeException。

Gtree.GetToolAttribute(tool, key)

从工具偏好设置文件中检索属性的值。

参数

  • tool (str):工具名称。
  • key (str):工具属性名称,如同在工具数据库中出现的名称。

返回:在工具偏好设置文件中找到的属性值。类型:str

抛出:如果在工具中未找到属性,则抛出 swbpy2.core.exception.TreeException。

Gtree.GetToolCmdline(tool)

检索特定工具的命令行选项。

参数

  • tool (str):工具名称。

返回:工具的命令行选项。类型:str

抛出:如果未找到具有给定名称的工具,则抛出 swbpy2.core.exception.TreeException。

Gtree.GetToolComment(tool)

检索特定工具的注释消息。

参数

  • tool (str):工具名称。

返回:工具的注释消息。类型:str

抛出:如果未找到具有给定名称的工具,则抛出 swbpy2.core.exception.TreeException。

Gtree.GetToolPreferenceFile(toolname)

获取流程中给定工具的工具偏好设置文件的名称。

参数

  • toolname (str):工具名称。

返回:特定工具的工具偏好设置文件的绝对路径。类型:str

抛出:如果未找到具有给定名称的工具,则抛出 swbpy2.core.exception.TreeException。

Gtree.LoadDBToolCtx(reload=False)

加载工具数据库。

参数

  • reload (bool):清除并重新加载之前加载的工具数据。

Gtree.LoadExecGraph()

从已保存的持久存储(如果有)中加载 SWB 项目执行图及其执行节点集。

Gtree.LoadTree()

将给定项目仿真树从已保存的持久存储加载到当前 swbpy2.core.core.SWBTree 对象中。

Gtree.LoadVars(vtype='any')

将给定项目变量从已保存的持久存储加载到当前 swbpy2.core.core.SWBTree 对象中。

参数

  • vtype (str):变量类型。

抛出:如果 vtype 不是 'any'、'set'、'defined'、'extracted' 之一,则抛出 RuntimeError。

Gtree.LockScenario(scenario='all', toSave=False)

锁定特定场景。锁定给定场景中的所有节点(或如果未提供场景则锁定所有场景),使其无法进行预处理和执行。

参数

  • scenario (str):要锁定的场景名称。
  • toSave (bool):保存仿真树。

Gtree.NExperiments(**kwargs)

返回实验数量。

参数

  • **kwargs:用于指定匹配实验的参数:scenario、showpruned、fold。参数说明请参见 AllLeafNodes。

返回:实验数量。类型:int

Gtree.NSteps()

返回流程中的步骤数。

返回:步骤数量。类型:int

Gtree.NewScenario(scenario, toSave=False)

创建具有指定名称的新场景。

参数

  • scenario (str):新场景名称。
  • toSave (bool):保存仿真树。

抛出:如果场景已存在则抛出 RuntimeError。

Gtree.NodeAncestors(node)

以降序返回指定节点的祖先节点列表。列表包含从最近的祖先到树根节点的所有祖先。

参数

  • node (int):输入节点。

返回:祖先节点。类型:list

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodeChildren(node, scenario='all')

返回属于指定场景的指定节点的直接子节点列表。

参数

  • node (int):输入节点。
  • scenario (str):场景名称。

返回:子节点列表。类型:list

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodeData(node, detect_virtual=False)

返回包含节点数据的字典,包括:node、node_path、status、host_name、start、stop、elapsed time、scheduler、job_id。

参数

  • node (int):输入节点。
  • detect_virtual (bool):如果设为 True,对于虚拟节点返回状态 'virtual',否则对于虚拟节点返回状态 'none'。

返回:包含节点数据的字典。类型:dict

Gtree.NodeExists(node)

检查给定节点是否存在。

参数

  • node (int):输入节点。

返回:检查结果。类型:bool

Gtree.NodeIsLocked(node)

返回节点是否被锁定。

参数

  • node (int):输入节点。

返回:检查结果。类型:bool

抛出:如果节点不存在则抛出 RuntimeException。

Gtree.NodeIsVirtual(node)

返回节点是否为虚拟节点。

参数

  • node (int):输入节点。

返回:检查结果。类型:bool

抛出:如果节点不存在则抛出 RuntimeException。

Gtree.NodePath(node)

以升序返回指定节点的祖先节点列表。列表包含从根节点到直接祖先的所有祖先。

参数

  • node (int):输入节点。

返回:祖先节点。类型:list

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodePname(node)

返回给定节点所属树中参数的名称。如果节点不属于参数化步骤,则返回空字符串。

参数

  • node (int):输入节点编号。

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodePval(node, pname='', cast=False)

返回节点 'node' 在树中参数 'pname' 的值。

参数

  • node (int):输入节点编号。
  • pname (str):参数名称。
  • cast (bool):如果设为 True,则尝试将返回值强制转换为数值类型(int 或 float)。

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodePvalues(node)

检索给定节点的参数值列表。值遵循流程中参数的顺序。

参数

  • node (int):输入节点。

返回:节点的值。类型:list

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodeReconstructResults(node, trials=3, delay=3)

直接从节点输出文件检索节点仿真结果。

参数

  • node (NKEY):输入节点。
  • trials (int):等待节点输出文件的尝试次数。
  • delay (int):尝试之间的秒数。

返回:重建的节点结果。类型:dict

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodeScenarios(node)

检索给定节点的所有场景。

参数

  • node (int):输入节点。

返回:给定节点被添加到的场景。类型:tuple

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodeStatus(node, detect_virtual=False, detect_pruned=True)

返回节点的状态。状态值:'none'、'queued'、'ready'、'pending'、'running'、'done'、'failed'、'aborted'、'virtual'、'pruned'。

参数

  • node (int):输入节点。
  • detect_virtual (bool):如果设为 True,对于虚拟节点返回状态 'virtual'。
  • detect_pruned (bool):如果设为 True,对于设置了剪枝属性的节点返回状态 'pruned'。

返回:节点状态。类型:str

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodeTool(node)

检索节点的工具名称。

参数

  • node (int):输入节点。

返回:给定节点的工具名称。类型:str

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.NodeVariables(node, type='any')

检索在给定节点上定义的变量列表。可选的 type 值:any、set、defined、extracted、not_set、not_extracted。

参数

  • node (int):变量的节点。
  • type (str):要检索的变量类型。

返回:节点变量列表。类型:list

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.Path(pvalues)

返回与 pvalues 中给定节点匹配的节点,或返回到列表与当前实验集发生分歧的点之前的节点。

参数

  • pvalues (list):参数值。

返回:与 pvalues 中参数值对应的节点,或到分歧点的节点。类型:list

Gtree.PdefaultValue(param)

检索给定参数的默认值。

参数

  • param (str):参数名称。

返回:参数的值。

抛出:如果 param 不存在则抛出 AttributeError。

Gtree.PnameStep(param)

检索给定参数所在的步骤。如果提供的 param 不存在,则返回最后一步。

参数

  • param (str):参数名称。

返回:参数步骤。类型:int

Gtree.Project()

检索 SWB 项目路径。

返回:当前仿真树的 SWB 项目路径。类型:str

Gtree.ProjectOutputPath()

检索 SWB 项目输出路径。项目输出路径可以配置为与分层结构项目中节点结果的存储位置不同。

返回:SWB 项目输出路径。类型:str

Gtree.PruneNode(node, scenario='all', toSave=False)

将给定节点设置为剪枝状态。

参数

  • node (int):输入节点。
  • scenario (str):场景名称。
  • toSave (bool):保存仿真树。

抛出:如果节点不存在,或场景不存在,则抛出 AttributeError。

Gtree.Query(expr)

查询内部数据结构。

参数

  • expr (str):查询表达式。

返回:查询结果。类型:dict

Gtree.RemoveNodesFromScenario(nodes, scenario, toSave=False)

从场景中移除节点。列表必须包含要移除的所有实验的所有节点。

参数

  • nodes (list):要移除的节点。
  • scenario (str):场景名称。
  • toSave (bool):保存仿真树。

抛出:如果节点列表中有节点不存在,或场景不存在,则抛出 RuntimeError。

Gtree.RemoveParamValue(param, value, scenario='all', cleanup=True, toSave=False)

从仿真树中移除参数的特定值。

参数

  • param (str):参数名称。
  • value:要移除的值。
  • scenario (str):参数值所属的场景名称。
  • cleanup (bool):清理已移除参数的已保存持久节点数据。
  • toSave (bool):保存仿真树。

抛出:如果参数名称无效、参数值无效,或场景不存在,则抛出 RuntimeError。

Gtree.RemoveParamValues(param, values, scenario='all', cleanup=True, toSave=False)

从仿真树中移除参数的值列表。

参数

  • param (str):参数名称。
  • values:要移除的值列表。
  • scenario (str):参数值所属的场景名称。
  • cleanup (bool):清理已移除参数的已保存持久节点数据。
  • toSave (bool):保存仿真树。

抛出:如果参数名称无效、参数值无效,或场景不存在,则抛出 RuntimeError。

Gtree.RemovePath(values, scenario='all', toSave=False)

从场景中移除由其值列表构成的给定实验。

参数

  • pvalues (list):参数值。
  • scenario (str):输入场景。
  • toSave (bool):保存仿真树。

抛出:如果路径无效或场景无效,则抛出 RuntimeError。

Gtree.Renumber(toSave=False)

重新编号仿真树的节点。此方法仅重新编号节点,不会重命名节点文件和节点文件夹。仅对已清理的项目应用此方法。

参数

  • toSave (bool):保存仿真树。

Gtree.Save(nodes=[])

将仿真树存储到持久存储。

参数

  • nodes (list):要保存的输入节点列表。如果列表为空,则保存整个仿真流程。

Gtree.SaveVars()

将变量存储到持久存储。

Gtree.SearchNodesByStatus(scenario='all', status=8)

搜索具有特定状态的节点。从 swbpy2.core.core 导入状态:STATE_NULL_NODE、STATE_PRUNED_NODE、STATE_RUNNING、STATE_HIDDEN、STATE_NORMAL、STATE_READY、STATE_FAILED、STATE_TERMINATED、STATE_DONE、STATE_ABORTED、STATE_VIRTUAL、STATE_QUEUED、STATE_PENDING、STATE_LOCKED、STATE_UNKNOWN、STATE_NONE。

参数

  • scenario (str):输入场景。
  • status (STATE):节点状态。

抛出:如果状态参数不是有效状态之一,则抛出 TypeError。

Gtree.SetNodeLock(node, lock=True, toSave=False)

设置给定节点的锁定标志。

参数

  • node (int):输入节点。
  • lock (bool):锁定或解锁给定标志。
  • toSave (bool):保存仿真树。

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.SetPdefaultValue(param, defaultValue)

设置给定参数的默认值。仅重新编号节点,不重命名节点文件。

参数

  • param (str):输入参数。
  • defaultValue:新默认值。

抛出:如果指定参数不存在,则抛出 swbpy2.core.TreeException。

Gtree.SetToolAttribute(tool, key, value)

在工具偏好设置文件中设置属性的值。

参数

  • tool (str):工具名称。
  • key (str):工具属性名称,如同在工具数据库中出现的名称。
  • value (str):属性值。

Gtree.SetToolCmdline(tool, cmdline, toSave=False)

为特定工具设置命令行选项。

参数

  • tool (str):工具名称。
  • cmdline (str):要为工具指定的命令行选项。
  • toSave (bool):保存仿真树。

抛出:如果未找到工具,则抛出 swbpy2.core.exception.TreeException。

Gtree.SetToolComment(tool, comment, toSave=False)

设置工具的消息注释。

参数

  • tool (str):工具名称。
  • comment (str):工具的注释消息。
  • toSave (bool):保存仿真树。

抛出:如果未找到具有给定名称的工具,则抛出 swbpy2.core.exception.TreeException。

Gtree.SetToolLock(tool, scenario='all', lock=True, toSave=False)

为属于给定场景的所有节点设置锁定标志。

参数

  • tool (str):工具名称。
  • scenario (str):应锁定或解锁节点所在场景的名称。
  • lock (bool):锁定标志的值。
  • toSave (bool):保存仿真树。

Gtree.ToolPnames(toolname)

返回给定工具的参数名称列表。

参数

  • toolname (str):工具名称。

返回:参数名称列表。类型:list

Gtree.ToolStep(tool)

返回特定工具所属的步骤。

参数

  • tool (str):工具名称。

返回:给定工具的最左侧步骤 ID。类型:int

抛出:如果工具不存在则抛出 IndexError。

Gtree.ToolSteps(tool)

返回与给定工具关联的步骤 ID 列表。

参数

  • tool (str):工具名称。

返回:给定工具的步骤 ID 列表。类型:list

Gtree.UnfoldAllNodes(scenario='all', toSave=False)

展开特定场景的所有节点。

参数

  • scenario (str):要展开的节点所属的场景。
  • toSave (bool):保存仿真树。

Gtree.UnfoldNode(node, scenario='all', toSave=False)

展开特定场景的节点。

参数

  • node (int):要折叠的节点。
  • scenario (str):要展开的节点所属的场景。
  • toSave (bool):保存仿真树。

Gtree.UnlockScenario(scenario='all', toSave=False)

解锁特定场景。

参数

  • scenario (str):要解锁的场景名称。
  • toSave (bool):保存仿真树。

Gtree.UnpruneNode(node, scenario='all', toSave=False)

取消设置给定节点的剪枝标志。

参数

  • node (int):输入节点。
  • scenario (str):场景名称。
  • toSave (bool):保存仿真树。

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.VarValue(node, varname, type='any', cast=False, loadVars=True)

获取给定节点指定变量的值。按以下优先级查找:参数、提取变量、#set 或 #seth 值、已定义变量、全局变量。

参数

  • node (int):获取此节点的变量值。
  • varname (str):要查找的变量名称。
  • type (str):变量类型:any、set、extracted、defined、not_set、not_extracted。
  • cast (bool):强制转换输出变量值。
  • loadVars (bool):在检索值之前强制重新加载变量。

返回:包含 (值, 类型或时间戳, 设置值的节点) 的元组。类型:tuple

抛出:如果节点不存在则抛出 RuntimeError。

Gtree.finalize()

Gtree 对象的析构函数。

示例

#1 创建、打开、保存和关闭 SWB 项目

python
from swbpy2 import *

# 创建/打开 SWB 项目
_deck = Deck('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/', True)

# 处理仿真树
# ...

# 保存 SWB 项目
_deck.save()

# 关闭 SWB 项目
del(_deck)

#2 预处理并运行 SWB 项目

python
from swbpy2 import *

# 创建/打开 SWB 项目
_deck = Deck('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/')

# 预处理所有节点
_deck.preprocess()

# 运行所有节点
_deck.run()

#3 在 SWB 项目中添加新工具

python
from swbpy2 import *

# 打开 SWB 项目
_deck = Deck('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/')

# 获取仿真树实例
_tree = _deck.getGtree()

# 添加 'python' 工具作为初始步骤
_tree.AddTool('python','python',0)

# 保存项目
_deck.save()

#4 在 SWB 项目中添加新参数

python
from swbpy2 import *

# 打开 SWB 项目
_deck = Deck('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/')

# 获取仿真树实例
_tree = _deck.getGtree()

# 计算 'sprocess' 工具的下一个步骤
step = _tree.ToolSteps('sprocess')[-1] + 1

# 添加新参数
_tree.AddParam('test_parameter','--',step)

# 保存项目
_deck.save()

# 在 SWB 图形界面中重新加载
_deck.reload()

#5 在 SWB 项目中添加新实验

python
from swbpy2 import *

# 打开 SWB 项目
_deck = Deck('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/')

# 获取仿真树实例
_tree = _deck.getGtree()

# 添加实验
_tree.AddPath(pvalues=[0.25,1e+17,10,1e+15,0.05,'test'])

# 保存项目
_deck.save()

# 在 SWB 图形界面中重新加载
_deck.reload()

#6 处理工具的命令行参数和注释

python
from swbpy2 import *

# 打开 SWB 项目
_deck = Deck('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/')

# 获取仿真树实例
_tree = _deck.getGtree()

# 获取 'sprocess' 工具的命令行参数
_tree.GetToolCmdline('sprocess')

# 修改 'sdevice' 工具的工具注释
_tree.SetToolComment('sdevice', 'sdevice stage')

# 保存项目
_deck.save()

#7 处理存储在工具特定数据库文件中的工具属性

python
from swbpy2 import *

# 打开 SWB 项目
_deck = Deck('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/')

# 获取仿真树实例
_tree = _deck.getGtree()

# 从 svisual/IdVg 工具实例中检索属性 "exec_mode"
attr = _tree.GetToolAttribute('IdVg','exec_mode')

# 在 svisual/IdVg 工具实例中为属性 "exec_mode" 设置新值
_tree.SetToolAttribute('IdVg','exec_mode','interactive')

# 删除 svisual/IdVg 工具实例中属性 "exec_mode" 的条目
_tree.SetToolAttribute('IdVg','exec_mode',None)

#8 按状态搜索节点

python
import os
from swbpy2 import *

# 打开 SWB 项目
_deck = Deck('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/')

# 获取仿真树实例
_tree = _deck.getGtree()

print(tree.SearchNodesByStatus())
from swbpy2.core.core import STATE_DONE
state = STATE_DONE
print(tree.SearchNodesByStatus("all", state))
from swbpy2.core.core import STATE_NONE
state = STATE_NONE
print(tree.SearchNodesByStatus("all", state))
from swbpy2.core.core import STATE_VIRTUAL
state = STATE_VIRTUAL
print(tree.SearchNodesByStatus("all", state))
from swbpy2.core.core import STATE_READY
state = STATE_READY
print(tree.SearchNodesByStatus("all", state))
from swbpy2.core.core import STATE_NORMAL
state = STATE_NORMAL
print(tree.SearchNodesByStatus("all", state))

#9 处理元数据

python
from swbpy2 import Deck

dk = Deck(prj)
gt = dk.getGtree()

# 向通用对象添加元数据
extdata = gt.ExtData
extdata.Add(key, dict)

# 向参数对象添加元数据
pdata = gt.ParamExtData
pdata.Add(key, itemkey, itemvalue)

# 向变量对象添加元数据
vdata= gt.VarExtData
vdata.Add(key, itemkey, itemvalue)

gt.Save()

#10 输出树数据以及添加和删除树实体

python
import os
from swbpy2 import *
from swbpy2.core.core import SWBStep

project_path = '/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/'

deck = Deck(project_path)

tree = deck.getGtree()

print("===print(f"Scenarios:{scenarios}")
print("===End of scenario ouput===\n" )

print("===Start of tool ouput===" )
tools = tree.AllTools()
for tool in tools:
  print(f"Tool Name:{tool}")
  print(f"Tool DB Name:{tree.DBTool(tool)}")
  tool_steps = tree.ToolSteps(tool)
  print(f"{tool} Steps:{tool_steps}")
  tool_params = tree.ToolPnames(tool)
  print(f"{tool} Parameters:{tool_params}")
  tool_comment = tree.GetToolComment(tool)
  print(f"{tool} Comment:{tool_comment}")
  tool_preference_file = tree.GetToolPreferenceFile(tool)
  print(f"{tool} Preference File:{tool_preference_file}")
  tool_cmd_line = tree.GetToolCmdline(tool)
  print(f"{tool} Command Line:{tool_cmd_line}")
print("===End of tool ouput===\n" )

print("===Start of variables ouput===" )
variables = tree.AllVarNames()
print(f"Variables:{variables}")
print("===End of variables ouput===\n" )

print("===Start of node ouput===" )
leaf_nodes = tree.AllLeafNodes()
for leaf_node in leaf_nodes:
  ancestors = tree.NodeAncestors(leaf_node)[::-1]
  print(f"{ancestors}{leaf_node}")
print("===End of node ouput===\n" )

print("===Start Add nodes to new scenario===" )
nodes_to_add_to_scenario = [1,2,4,8,16,24,39,40,55,56]
new_scenario = "new_scenario"
tree.NewScenario("new_scenario")
tree.AddNodesToScenario(nodes_to_add_to_scenario, new_scenario)
new_scenario_leaf_nodes = tree.AllLeafNodes(new_scenario)
for leaf_node in new_scenario_leaf_nodes:
  ancestors = tree.NodeAncestors(leaf_node)[::-1]
  print(f"{ancestors}{leaf_node}")
print("===End Add nodes to new scenario===\n" )

print("===Start Add new path to project===" )
print(f"Leaf nodes before new path:{tree.AllNodes()}")
pvalues=['0.25','1e+17','15','1e+14','2.0']
tree.AddPath(pvalues)
print(f"Leaf nodes after new path:{tree.AllNodes()}")
print("===End Add new path to project===\n" )

print("===Start Add new tool and param to project===" )
tree.AddTool("new_tool","svisual",8)
tree.AddParam("new_param","value",9)
tools = tree.AllTools()
print(f"Tool Names:{tools}")
print(f"new tool DB Name:{tree.DBTool('new_tool')}")
tool_steps = tree.ToolSteps("new_tool")
print(f"new tool Steps:{tool_steps}")
tool_params = tree.ToolPnames("new_tool")
print(f"new tool Parameters:{tool_params}")
print("===End Add new tool and param to project===\n" )

print("===Start Delete new tool and param===" )
tree.DeleteParam('new_param')
tree.DeleteTool('new_tool')
tools = tree.AllTools()
print(f"Tool Names:{tools}")
print("===End Delete new tool and param===\n" )

print("===Start Add and Delete new variable project===" )

print(f"Variables before addition:{tree.AllVarNames()}")
variable_name = "new_variable"
tree.DeclareVariable(variable_name,"default_value","Id")
print(f"Variables after addition:{tree.AllVarNames()}")
tree._entity.DeleteVariable(variable_name)
print(f"Variables after addition:{tree.AllVarNames()}")
print("===End Add and Delete new variable project===\n" )

基于 Sentaurus TCAD 官方文档构建

代码块