拓扑信息获取及解析
功能介绍
使用 EMTLab SDK 获取仿真模型项目的 JSON 拓扑文件,并进行解析。
使用说明
用到的 API
模型类:Class: Model
- 实例方法:
方法 功能 model.revision
获取当前版本项目的版本信息 model.fetchTopology(implementType, config, maximumDepth=None)
获取项目拓扑实例
-
静态方法:
方法 功能 ModelTopology.fetch(hash, implementType, config, maximumDepth=None)
通过项目 hash,获取项目拓扑实例 ModelTopology.dump(topology, filePath, indent=None)
保存拓扑到本地文件(JSON 格式) -
实例方法:
方法 功能 modelTopology.components
拓扑解析,摊平后的拓扑元件,参数和引脚不再保留表达式的形式,如果元件为拓扑实现,并有读取权限时将被展开 modelTopology.mappings
拓扑分析后的一些映射数据
- 实例方法:
方法 功能 modelRevision.fetchTopology(implementType, config, maximumDepth=None)
通过项目 hash,获取项目拓扑实例
调用方式
获取项目拓扑实例
获取项目拓扑实例的方式有以下三种
- 通过模型类获取
- 使用
model.fetch
方法,获取项目实例 - 使用
model.fetchTopology()
方法,获取项目拓扑实例
- 通过拓扑类获取
- 使用
model.fetch
方法,获取项目实例 - 使用
model.revision.hash
方法,获取当前版本项目的 hash - 使用
ModelTopology.fetch(hash, implementType, config, maximumDepth=None)
获取项目拓扑实例
- 通过版本类获取
- 使用
model.fetch
方法,获取项目实例 - 使用
model.revision
方法,获取项目的版本信息 - 使用
modelRevision.fetchTopology(implementType, config, maximumDepth)
获取项目拓扑实例
拓扑实例解析
- 使用
modelTopology.components
方法获取项目摊平后的拓扑元件的参数和引脚信息 - 使用
modelTopology.mappings
方法获取项目虚拟输入和虚拟输出引脚信息
拓扑 JSON 文件获取
- 使用
ModelTopology.dump(topology, filePath, indent=None)
将拓扑实例保存为本地 JSON 文件
案例介绍
代码解析
以IEEE-3机9节点项目为例,通过三个完整的案例来介绍如何基于上述 API 编写 Python 脚本获取项目拓扑实例并进行解析。
- 通过模型类获取拓扑实例进行解析
- 通过拓扑类获取拓扑实例进行解析
- 通过版本类获取拓扑实例进行解析
- 使用
model.fetch
方法,获取项目实例
获取IEEE 3机9节点项目实例
import os
import cloudpss
if __name__ == '__main__':
os.environ['CLOUDPSS_API_URL'] = 'http://orange.local.cloudpss.net/'
cloudpss.setToken('{token}')
# 获取IEEE 3机9节点项目实例
model = cloudpss.Model.fetch('model/Maxwell/IEEE')
- 使用
model.fetchTopology()
方法,获取项目拓扑实例
# 获取电磁暂态实现方式下,参数方案为1,仅展开 1 层嵌套模块
modelTopology = model.fetchTopology(implementType='emtp',config=model.configs[0], maximumDepth=1)
- 拓扑实例解析
# 获取项目摊平后的拓扑元件的参数和引脚信息
components = modelTopology.components
print(components)
# 获取项目虚拟输入和虚拟输出引 脚信息
mappings = modelTopology.mappings
print(mappings)
- 拓扑 JSON 文件获取
# 使用 ModelTopology.dump 将拓扑实例保存为本地 JSON 文件
filePath = '{0}.json'.format(model.name)
cloudpss.ModelTopology.dump(modelTopology, filePath, indent=2)
- 使用
model.fetch
方法,获取项目实例
获取IEEE 3机9节点项目实例
import os
import cloudpss
if __name__ == '__main__':
os.environ['CLOUDPSS_API_URL'] = 'http://orange.local.cloudpss.net/'
cloudpss.setToken('{token}')
# 获取IEEE 3机9节点项目实例
model = cloudpss.Model.fetch('model/Maxwell/IEEE')
- 使用
model.revision.hash
方法,获取项目当前版本的 hash
hash = model.revision.hash
- 使用
ModelTopology.fetch()
方法,获取项目拓扑实例
# 获取潮流实现方式下,参数方案为1,仅展开 1 层嵌套模块
modelTopology = cloudpss.ModelTopology.fetch(hash,implementType='powerFlow',config=model.configs[0], maximumDepth=1)
- 拓扑实例解析
# 获取项目摊平后的拓扑元件的参数和引脚信息
components = modelTopology.components
print(components)
# 获取项目虚拟输入和虚拟输出引脚信息
mappings = modelTopology.mappings
print(mappings)
- 拓扑 JSON 文件获取
# 使用 ModelTopology.dump 将拓扑实例保存为本地 JSON 文件
filePath = '{0}.json'.format(model.name)
cloudpss.ModelTopology.dump(modelTopology, filePath, indent=2)
- 使用
model.fetch
方法,获取项目实例
获取IEEE 3机9节点项目实例
import os
import cloudpss
if __name__ == '__main__':
os.environ['CLOUDPSS_API_URL'] = 'http://orange.local.cloudpss.net/'
cloudpss.setToken('{token}')
# 获取IEEE 3机9节点项目实例
model = cloudpss.Model.fetch('model/Maxwell/IEEE')
- 使用
model.revision
方法,获取项目的版本信息
modelRevision = model.revision
- 使用
modelRevision.fetchTopology()
方法,获取项目拓扑实例
# 获取潮流实现方式下,参数方案为1,仅展开 1 层嵌套模块
modelTopology = modelRevision.fetchTopology(implementType='powerFlow',config=model.configs[0], maximumDepth=1)
- 拓扑实例解析
# 获取项目摊平后的拓扑元件的参数和引脚信息
components = modelTopology.components
print(components)
# 获取项目虚拟输入和虚拟输出引脚信息
mappings = modelTopology.mappings
print(mappings)