Skip to main content

A high-level python interface for OpenDSS

Project description

PytestUpload to PyPideploy-docsPyPI - DownloadsGitHub issuesLicensePyPI Downloads

PyDSS

PyDSS is a high-level Python interface for OpenDSS that extends its organizational, analytical, and co-simulation capabilities. It is built on top of OpenDSSDirect.py.

Documentation: https://natlabrockies.github.io/PyDSS/

Key Features

  • Custom Control Algorithms — Define Python-based controllers for any circuit element, executed at each simulation time step. 13 built-in controllers are included (PV, storage, motor stall, fault, transformer, thermostat, and more).
  • HELICS Co-simulation — Integrate with external simulators via the HELICS framework for cyber-physical co-simulation studies.
  • Scenario Management — Run multiple scenarios on a shared OpenDSS model with independent controllers, exports, and post-processing.
  • Flexible Data Export — Export results to HDF5 or CSV with per-element filtering, regex-based selection, moving averages, and group aggregation.
  • Automated Reports — Generate reports for voltage metrics, thermal metrics, PV clipping/curtailment, capacitor switching, tap changes, and feeder losses.
  • Monte Carlo Studies — Built-in support for running Monte Carlo simulations with profile management.
  • Extension Architecture — Plugin system for custom controllers, post-processing scripts, and report types.

Installation

Install in a conda virtual environment (recommended):

conda create -n pydss python=3.11
conda activate pydss
pip install NREL-pydss

Quick Start

# Create a project with two scenarios
pydss create-project --project=my-project --scenarios="scenario1,scenario2" --path=./projects

# Copy your OpenDSS files into projects/my-project/DSSfiles/
# Set dss_file in projects/my-project/simulation.toml

# Run all scenarios
pydss run ./projects/my-project

Python API

from pydss.pydss_project import PyDssProject

# Run a project
PyDssProject.run_project("./projects/my-project")

# Access results
from pydss.pydss_results import PyDssResults
results = PyDssResults("./projects/my-project")
scenario = results.scenarios[0]
df = scenario.get_dataframe("Lines", "Currents", "Line.pvl_112")

CLI Commands

Command Description
pydss create-project Create a new project with scenarios
pydss run Run all scenarios in a project
pydss export Convert HDF5 results to CSV
pydss controllers Manage the controller registry
pydss edit-scenario Modify scenario configuration
pydss reports Generate analysis reports

Run pydss --help for full usage details.

License

BSD 3-Clause. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nrel_pydss-3.1.10.tar.gz (178.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nrel_pydss-3.1.10-py3-none-any.whl (239.8 kB view details)

Uploaded Python 3

File details

Details for the file nrel_pydss-3.1.10.tar.gz.

File metadata

  • Download URL: nrel_pydss-3.1.10.tar.gz
  • Upload date:
  • Size: 178.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nrel_pydss-3.1.10.tar.gz
Algorithm Hash digest
SHA256 43d03089285a1c0253aa4c9682abc68078e8c8a3fd89078b0beb630d27b04b08
MD5 e90e06c476acbcf48cd28ecc65dbe8b6
BLAKE2b-256 140b0e76389dc452d44ca823ee8c54a1dd610fc6eea7a2f1b3dd72d40c13de74

See more details on using hashes here.

File details

Details for the file nrel_pydss-3.1.10-py3-none-any.whl.

File metadata

  • Download URL: nrel_pydss-3.1.10-py3-none-any.whl
  • Upload date:
  • Size: 239.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nrel_pydss-3.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 d0214d47c7aef5ae960ec53c985d6974df9723590be1e2dae39c14e7a3f9c030
MD5 5437802ed6571ff9d7e2a45acd5eddc9
BLAKE2b-256 dd1cefb00a05196fde0a2aaf7d81c0af19e22fca4f86672a9aa5b62edaab2ee0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page