Skip to main content

Distribution Feeder Conversion Tool

Project description

image1 image2 image3 codecov

DiTTo is the Distribution Transformation Tool. It is an open source tool to convert and modify electrical distribution system models. The most common domain of electrical distribution systems is from substations to customers.

How it Works

Flexible representations for power system components are defined in the ditto models defined here DiTTo implements a many-to-one-to-many parsing framework which makes it modular and robust. The reader modules parse data files of distribution system format (e.g. OpenDSS) and create an object for each electrical component. These objects are stored in a Store instance. The writer modules are then used to export the data stored in memory to a selected output distribution system format (e.g. Gridlab-D) which are written to disk.

Additional functionality can be found in the documentation here.

Quick Start

Install DiTTo

pip install ditto.py

This will install the basic version of ditto with limited dependencies. Because ditto supports conversion between many multiple formats, dependencies can be specified during installation For example:

pip install "ditto.py[extras,opendss,gridlabd]"

will install the required dependencies to convert between opendss and gridlab-d

To install the full dependency list run:

pip install "ditto.py[all]"

which is the same as

pip install "ditto.py[extras,opendss,cyme,dew,ephasor,synergi,gridlabd]" # same as `pip install "ditto.py[all]"`

Basic Usage

The most basic capability of DiTTo is the conversion of a distribution system from one format to another. To convert a cyme model represented in ASCII format with network.txt, equipment.txt and load.txt files, the following python script can be run to perform the conversion

from ditto.store import Store
from ditto.readers.cyme.read import Reader
from ditto.writers.opendss.write import Writer

store = Store()
reader = Reader(data_folder_path = '.', network_file='network.txt',equipment_file = 'equipment.txt', load_file = 'load.txt')
reader.parse(store)
writer = Writer(output_path='.')
writer.write(store)

The required input files for each reader format are defined in the folder of each reader

Command Line Interface

Ditto can also be run as a command line tool to perform basic conversion. The CLI accepts only one input file whatever the format. If we have a gridlabd model entirely stored in a file called model.glm we can use:

$ ditto-cli convert --from glm --input ./model.glm --to cyme

For formats like CYME where multiple input files are needed, a simple JSON configuration file is supplied:

{
    "data_folder_path": ".",
    "network_filename": "network.txt",
    "equipment_filename": "equipment.txt",
    "load_filename": "load.txt"
}

A default configuration file is found each reader folder. So to convert the cyme files described in the python program above, the following command would be used:

$ ditto-cli convert --from cyme --input ./config.json --to dss

Documentation on converting other formats can be found here.

Contributing

DiTTo is an open source project and contributions are welcome! Either for a simple typo, a bugfix, or a new parser you want to integrate, feel free to contribute.

To contribute to Ditto in 3 steps: - Fork the repository (button in the upper right corner of the DiTTo GitHub page). - Create a feature branch on your local fork and implement your modifications there. - Once your work is ready to be shared, submit a Pull Request on the DiTTo GitHub page. See the official GitHub documentation on how to do that here

Getting Help

If you are having issues using DiTTo, feel free to open an Issue on GitHub here

All contributions are welcome. For questions about collaboration please email Tarek Elgindy

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

ditto.py-0.2.4.tar.gz (284.7 kB view details)

Uploaded Source

Built Distribution

ditto.py-0.2.4-py3-none-any.whl (352.4 kB view details)

Uploaded Python 3

File details

Details for the file ditto.py-0.2.4.tar.gz.

File metadata

  • Download URL: ditto.py-0.2.4.tar.gz
  • Upload date:
  • Size: 284.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for ditto.py-0.2.4.tar.gz
Algorithm Hash digest
SHA256 e6228a3153eb4ab70034a062c8acea7cf781e227ec6b80a4daba006e8f6dccfb
MD5 cf4a12439b2802ad4e83a234726794c2
BLAKE2b-256 63444c651db42e533898217a31b030948a1b3655a1b071693d17d1df92f7ee67

See more details on using hashes here.

File details

Details for the file ditto.py-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: ditto.py-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 352.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for ditto.py-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b6251aa2f0490381e3c2b099f48593086a52adbc3faa0f7efd83882985c04f86
MD5 152e87a470fdfa347de0eb4853080094
BLAKE2b-256 0af2006d24ab5ebd7b7c48554b09bc716dbc66b48b3486f691387cba049262bb

See more details on using hashes here.

Supported by

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