tdvisu


Nametdvisu JSON
Version 1.1.9 PyPI version JSON
download
home_pagehttps://github.com/VaeterchenFrost/tdvisu
SummaryVisualizing Dynamic Programming on Tree Decompositions.
upload_time2023-07-27 17:09:02
maintainer
docs_urlNone
authorMartin Röbke
requires_python
licenseGPLv3
keywords graph visualization dynamic-programming msol-solver
VCS
bugtrack_url
requirements graphviz hypothesis psycopg2 python-benedict python-benedict pytest pytest-mock PyYAML
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # TdVisu
![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)
[![PyPI license](https://img.shields.io/pypi/l/tdvisu.svg)](https://pypi.python.org/pypi/tdvisu/)
![Tests](https://github.com/VaeterchenFrost/tdvisu/workflows/Tests/badge.svg) 
[![codecov](https://codecov.io/gh/VaeterchenFrost/tdvisu/branch/master/graph/badge.svg)](https://codecov.io/gh/VaeterchenFrost/tdvisu)


![GitHub release (latest SemVer including pre-releases)](https://img.shields.io/github/v/release/vaeterchenfrost/tdvisu?include_prereleases)
[![PyPI version fury.io](https://badge.fury.io/py/tdvisu.svg)](https://pypi.python.org/pypi/tdvisu/)
[![PyPI status](https://img.shields.io/pypi/status/tdvisu.svg)](https://pypi.python.org/pypi/tdvisu/)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/tdvisu.svg)](https://pypi.python.org/pypi/tdvisu/)
![PyPI - Wheel](https://img.shields.io/pypi/wheel/tdvisu)
![GitHub repo size](https://img.shields.io/github/repo-size/VaeterchenFrost/tdvisu)
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/VaeterchenFrost/tdvisu)
![GitHub commits since latest release (by SemVer)](https://img.shields.io/github/commits-since/VaeterchenFrost/tdvisu/latest)

----------

Visualization for [dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming) on [tree decompositions](https://en.wikipedia.org/wiki/Tree_decomposition).

Create a graph object for each given graph that is of interest for the dynamic programming.

The visualization generates highlights and adds solution-tables for user defined time steps.

These snapshot of the graphs will be written in a graphviz-supported file-format to a folder of your choosing.

For the portable and light weight '.svg' format, all graphs for a timestep can be joined together to provide a thoroughly view on the process of dynamic programming.

With the '.svg' format the images are highly customizable, and even combining several timesteps together using svg [animate](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animate) would be an option in the future.

----------

# Using
[Alubbock:Graphviz](https://anaconda.org/alubbock/graphviz) (or [Graphviz (>=2.38)](https://graphviz.gitlab.io/download/))

[python-benedict](https://pypi.org/project/python-benedict/)

[for dpdb: psycopg2 (2.8.5)](https://www.psycopg.org/docs/index.html)

----------

# To register the graphviz plugins
https://gitlab.com/graphviz/graphviz/-/issues/1352
```shell
dot.exe -c
```

# To install

In a command prompt with pip (to get *pip* see: https://pip.pypa.io/en/stable/) installed:
Just run
```shell
pip install -h (for more information on install options)
pip install tdvisu
```

To download the latest version from the default branch:
```shell
git clone --depth 1 --single https://github.com/VaeterchenFrost/tdvisu
```

# To isolate the dependencies

With [virtualenv](https://virtualenv.pypa.io/en/latest/installation.html ) on the system installed you can isolate the environment, for example
```shell
virtualenv tdvisu_dir -p 3.8
cd tdvisu_dir/bin/
source activate
```
With [Conda](https://docs.conda.io/en/latest/) on the system installed the dependencies for this project can be automatically installed in a new environment:

Go to the projects base directory.

Open a *conda-command-prompt* with admin privileges and run the commands from the project folder
- to create a new environment with basic dependencies:
```shell
conda env create -f .\environment.yml
```
- to activate the environment:
```shell
conda activate tdvisu
```

# Install from source

To clone the complete repository:
```shell
git clone https://github.com/VaeterchenFrost/tdvisu
```

To download only the latest version from the default branch:
```shell
git clone --depth 1 --single https://github.com/VaeterchenFrost/tdvisu
```

To install the project from the source folder:
```shell
pip install -h (for more information on install options)
pip install .
```
to confirm that the visualization finds all dependencies:
```shell
python .\tdvisu\visualization.py -h
```
to run all tests:
```shell
pip install .[test] 
pytest .\test\
```

----------

# How to use

The visualization needs input in the form of the [Json API](https://github.com/VaeterchenFrost/gpusat-VISU/blob/master/JsonAPI_v1.3.md).
The creation of this file is exemplary implemented in *construct_dpdb_visu.py* or the fork [GPUSAT](https://github.com/VaeterchenFrost/GPUSAT) and *--visufile filename* (optionally disabling preprocessing with *-p*).

Run the python file with the above dependencies installed:
[visualization.py](https://github.com/VaeterchenFrost/gpusat-VISU/blob/master/satvisualization_repo/satvisu/visualization.py)

**visualization.py** takes two parameters, the json-**infile** to read from, and optionally one **outputfolder**.
With both arguments a call from IPython might look like this:

```python
runfile('visualization.py', 
args='visugpusat.json examplefolder')
```

For #SAT it produces for example three different graphs suffixed with a running integer to represent timesteps:

+ *TDStep* the tree decomposition with solved nodes
+ *PrimalGraphStep* the primal graph with currently active variables highlighted
+ *IncidenceGraphStep* the bipartite incidence graph with active clauses/variables highlighted

The graphs are images encoded in resolution independent **.svg files** (see https://www.lifewire.com/svg-file-4120603)

<p align="center"><img src="https://raw.githubusercontent.com/VaeterchenFrost/tdvisu/master/doc/images/combined6DA4.svg?sanitize=true" width="70%"/></p>

## How to use construct_dpdb_visu.py
After installing the project [dp_on_dbs](https://github.com/hmarkus/dp_on_dbs) with the there listed [requirements](https://github.com/hmarkus/dp_on_dbs#requirements), we need to
- edit the [database.ini](https://github.com/VaeterchenFrost/tdvisu/blob/master/tdvisu/database.ini) with our password to [postgresql](https://www.postgresql.org/)
- Solve a problem with `python dpdb.py [GENERAL-OPTIONS] -f <INPUT-FILE> <PROBLEM> [PROBLEM-SPECIFIC-OPTIONS]`
  - for the problem **VertexCover** 
    - with flag `--gr-file` to store the htd Input (if the input was in a different format)
  - for the problem **SharpSat**
    - with flag `--store-formula` to store the formula in the database
- Run 
  - **Sat** / **SharpSat**: `python construct_dpdb_visu.py [PROBLEMNUMBER]`
  - **VertexCover**: `python construct_dpdb_visu.py [PROBLEMNUMBER] --twfile [TWFILE]` 
   with the file in DIMACS tw-format containing the edges of the graph.

# Installation of the psycopg2 package 

See https://www.psycopg.org/docs/install.html#build-prerequisites

For example on linux today this might need
`sudo apt install libpq-dev` 
before completion.

-----------------

# New Release

## Version
- Bump `/version.py` according to the changes made
- Change date to the release day, keep format 

## Requirements
In case dependencies have changed, or just to update some, check
- *requirements.txt*
- *stable-requirements.txt* (using `pip freeze`)
- *setup.py*

## Write Changelog.md
- Add tag with link (see bottom for linking examples)
- Add changes, maybe some are already in *Unreleased*
- Update *Unreleased* with **(No) unreleased changes**

## Review code
- Run tests (pytest)
- Check codestyle (pylint)

## Push
- Push changes to master
- Wait for all automated checks! (All checks have passed...)

## Create Release
- On the GitHub page go to: Release, **[Draft a new release](https://github.com/VaeterchenFrost/tdvisu/releases/new )** 
- Enter v'YOUR VERSION NUMBER' as the tag.
- Add a **Release Title** (could be just the version)
- Add some description (like in the CHANGELOG.md)
- Click on **Publish release** on the bottom

## Should automatically release to [PyPI](https://pypi.org/project/tdvisu/ )
- For details see: [Upload Python Package](https://github.com/VaeterchenFrost/tdvisu/blob/master/.github/workflows/python-publish.yml )

**Now you are set for the new release :tada:**

----------


# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/ ), and this
project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html ).

## [Unreleased]
- No unreleased changes yet.

## [1.1.9] - 2023-07-27

### Added
- `python-benedict[xml]` to dependencies
### Changed
- Updated requirements.txt
- Updated stable-requirements.txt


## [1.1.8] - 2021-05-04

### Changed
- Updated pyyaml from 5.3.1 to 5.4 [#33]
- Updated py from 1.9.0 to 1.10.0 [#35]
- Fixed python-app.yml [#34]

## [1.1.7] - 2020-09-13
### Added
- Better tests around the (Dimacs) Reader

### Changed
- Improved the SQL queries with explicit formats [#32]
- Improved Readme sections for install and usage

## [1.1.6] - 2020-08-01
### Added
- Added better property based testing with *hypothesis* [#29]
- Added jobs and setups to test on macos and windows [#31]

### Changed
- *do_sort_nodes* now sorts in correct numeric order. [commit cdfcf6](https://github.com/VaeterchenFrost/tdvisu/commit/cdfcf6c332a63f05b499fe133fada4473ad7524c )
- Fixed some import orders

## [1.1.5] - 2020-07-17
### Added
- Added many new tests.
- Hints for not covered code lines.

### Changed
- Simplified code to parse commandline flags while removing duplications in code.
- Entrypoint for modules visualization and construct_dpdb_visu is now in init().
- Some improvements in utilities.solution_node

## [1.1.4] - 2020-07-14
### Added
- Added the possibility to specify and create multiple graph-visualizations in one file [#25]
- Added test case *test_vc_multiple_and_join* in [commit aa31901](https://github.com/VaeterchenFrost/tdvisu/commit/aa319016ac71f9a54023474bf820cb30929c52a8 )
- Added test cases for [construct_dpdb_visu](https://github.com/VaeterchenFrost/tdvisu/blob/master/test/test_construct_dpdb.py )
- Add pytest-mock to tests_require

### Changed
- Simplified and refactored TDVisu.schema.json 
- Schema now includes possibility to specify multiple instances of generalGraph and incidenceGraph 
- Revisited doc/JsonAPI.md to now include all parameters available
- Renamed test folder expected_images to expected_files
- Updated stable-requirements.txt
- Several minor improvements

## [1.1.3] - 2020-07-09
### Added
- Added *TDVisu.schema.json* to validate the Json-API for TDVisu [#24]
- Added 'col' to allowed formats in tw reader (default string in Mathematica)

### Changed
- Fixed error where database configuration was not found in the directory
- Fixed missing double quotation marks in JsonAPI.md
- Moved JsonAPI.md → *doc/JsonAPI.md*

### Removed
- Removed *generalGraph* and *incidenceGraph* from required arguments in API

## [1.1.2] - 2020-06-26
### Added
- Tests for visualization.py using graphviz in the Github Action too
- Tests for reader.py

### Changed
- Fixed typo that prevented joining SVG in visualization
- Fixed cases where logging.yml was not found in the working directory
- Now using pathlib.Path for most file-related operations
- Unified logging configuration in utilities and made it easier to work with [#22]
- Added more type hints and improved existing ones

## [1.1.1] - 2020-06-25
### Added
- Added problem type **Sat** to tdvisu/construct_dpdb_visu.py 
- Added testcases in file test/test_dijkstra.py

### Changed
- JsonAPI.md is now updated with snake_case names and consistent with visualization_data.py 
- Fixed default value for svg-join **v_top** to *None* from *'top'*
- Improved flexibility in several function parameters
- Improved documentation and comments in several places
- Fixed passing parameters to method *setup_tree_dec_graph*

### Removed
- Removed old dependency from  tdvisu/dijkstra.py on utilities

## [1.1.0] - 2020-06-07
### Added
- Added file utilities.py with several static or shared things like
    - Constants: CFG_EXT, LOGLEVEL_EPILOG, DEFAULT_LOGGING_CFG 
    - Methods: 
        - flatten
        - read_yml_or_cfg combining yaml, json, cfg reader in one
        - logging_cfg configure logging with file or DEFAULT_LOGGING_CFG 
        - helper convert_to_adj from dijkstra.py
        - add_edge_to (edges and adj list)
        - gen_arg infinite Generator
    - Styles:
        - base_style, emphasise_node, style_hide_node, style_hide_edge
    - Graph manipulation:
        - bag_node
        - solution_node

- Added file logging.yml (and .ini) with logging configuration for the module [#20]
- Added half the tests for utilities.py

### Changed
- Changed path of image SharpSatExample to the absolute URL for [PyPI].
- Changed names of loggers to absolute name. Should be easy to adjust if needed.
- Changed logging defaults and config in tdvisu/visualization.py and construct_dpdb_visu.py
- Updated ArgumentParser help
- Some fixes of code-style or variable names. 

## [1.0.1] - 2020-06-04
### Added
- Codecoverage with [Codecov]

### Changed
- Changed path of image SharpSatExample to the absolute URL for [PyPI].

## [1.0.0] - 2020-06-04
### Added
- Added svgjoin parameters to JsonAPI [#6]
- Added call to svgjoin from visualization.py
- Added workflow to display the sourcecode-files in [DIRECTORY]

### Changed 
- Moved JsonAPI and conda_packages to /doc
- Updated arguments in svgjoin to be more flexible for multiple joins [#11]
- Fixed scaling mechanism in svgjoin [#13]
- Changed tests from unittest to pytest [#12]

### Removed
- Changelog in JsonAPI.md

## [0.5.1] - 2020-06-01
### Added
- Added publishing Action to [PyPI] [#4]

### Changed
- Changed setup.py with more documentation and simpler functionality.
- Updated Readme with a guide on how to use construct_dpdb_visu [#2]

### Removed
- Removed publishing Action to testpypi [#4]


## [0.5.0-dev1] - 2020-06-01

### Added

- Development version; beginning of the repository [#1]
- Added version.py
- Added module-name to imports
- Added README to tdvisu directly

### Changed
- Fixed usage of `__version__` in tdvisu/construct_dpdb_visu.py

### Removed
- Removed individual versioning 

[#1]: https://github.com/VaeterchenFrost/tdvisu/issues/1
[#2]: https://github.com/VaeterchenFrost/tdvisu/issues/2
[#4]: https://github.com/VaeterchenFrost/tdvisu/issues/4
[#6]: https://github.com/VaeterchenFrost/tdvisu/issues/6
[#11]: https://github.com/VaeterchenFrost/tdvisu/issues/11
[#12]: https://github.com/VaeterchenFrost/tdvisu/issues/12
[#13]: https://github.com/VaeterchenFrost/tdvisu/issues/13
[#20]: https://github.com/VaeterchenFrost/tdvisu/pull/20
[#22]: https://github.com/VaeterchenFrost/tdvisu/issues/22
[#24]: https://github.com/VaeterchenFrost/tdvisu/issues/24
[#25]: https://github.com/VaeterchenFrost/tdvisu/pull/25
[#29]: https://github.com/VaeterchenFrost/tdvisu/issues/29
[#31]: https://github.com/VaeterchenFrost/tdvisu/issues/31
[#32]: https://github.com/VaeterchenFrost/tdvisu/pull/32
[#33]: https://github.com/VaeterchenFrost/tdvisu/pull/33
[#34]: https://github.com/VaeterchenFrost/tdvisu/pull/34
[#35]: https://github.com/VaeterchenFrost/tdvisu/pull/35

[@VaeterchenFrost]: https://github.com/VaeterchenFrost
[PyPI]: https://pypi.org/project/tdvisu/
[mypy]: https://github.com/python/mypy
[DIRECTORY]: https://github.com/VaeterchenFrost/tdvisu/blob/master/DIRECTORY.md
[Codecov]: https://codecov.io/gh/VaeterchenFrost/tdvisu

[Unreleased]: https://github.com/VaeterchenFrost/tdvisu/compare/v1.1.9...master
[1.1.8]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.9
[1.1.8]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.8
[1.1.7]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.7
[1.1.6]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.6
[1.1.5]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.5
[1.1.4]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.4
[1.1.3]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.3
[1.1.2]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.2
[1.1.1]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.1
[1.1.0]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.0
[1.0.1]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.0.1
[1.0.0]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.0.0
[0.5.1]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v0.5.1
[0.5.0-dev1]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v0.5.0-dev1



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/VaeterchenFrost/tdvisu",
    "name": "tdvisu",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "graph visualization dynamic-programming msol-solver",
    "author": "Martin R\u00f6bke",
    "author_email": "martin.roebke@mailbox.tu-dresden.de",
    "download_url": "https://files.pythonhosted.org/packages/32/5a/11c5d7d0626c28fb2ed96bd08d984a7a94c6cdb9f56936981f07ba168783/tdvisu-1.1.9.tar.gz",
    "platform": "any",
    "description": "# TdVisu\n![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)\n[![PyPI license](https://img.shields.io/pypi/l/tdvisu.svg)](https://pypi.python.org/pypi/tdvisu/)\n![Tests](https://github.com/VaeterchenFrost/tdvisu/workflows/Tests/badge.svg) \n[![codecov](https://codecov.io/gh/VaeterchenFrost/tdvisu/branch/master/graph/badge.svg)](https://codecov.io/gh/VaeterchenFrost/tdvisu)\n\n\n![GitHub release (latest SemVer including pre-releases)](https://img.shields.io/github/v/release/vaeterchenfrost/tdvisu?include_prereleases)\n[![PyPI version fury.io](https://badge.fury.io/py/tdvisu.svg)](https://pypi.python.org/pypi/tdvisu/)\n[![PyPI status](https://img.shields.io/pypi/status/tdvisu.svg)](https://pypi.python.org/pypi/tdvisu/)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/tdvisu.svg)](https://pypi.python.org/pypi/tdvisu/)\n![PyPI - Wheel](https://img.shields.io/pypi/wheel/tdvisu)\n![GitHub repo size](https://img.shields.io/github/repo-size/VaeterchenFrost/tdvisu)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/VaeterchenFrost/tdvisu)\n![GitHub commits since latest release (by SemVer)](https://img.shields.io/github/commits-since/VaeterchenFrost/tdvisu/latest)\n\n----------\n\nVisualization for [dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming) on [tree decompositions](https://en.wikipedia.org/wiki/Tree_decomposition).\n\nCreate a graph object for each given graph that is of interest for the dynamic programming.\n\nThe visualization generates highlights and adds solution-tables for user defined time steps.\n\nThese snapshot of the graphs will be written in a graphviz-supported file-format to a folder of your choosing.\n\nFor the portable and light weight '.svg' format, all graphs for a timestep can be joined together to provide a thoroughly view on the process of dynamic programming.\n\nWith the '.svg' format the images are highly customizable, and even combining several timesteps together using svg [animate](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animate) would be an option in the future.\n\n----------\n\n# Using\n[Alubbock:Graphviz](https://anaconda.org/alubbock/graphviz) (or [Graphviz (>=2.38)](https://graphviz.gitlab.io/download/))\n\n[python-benedict](https://pypi.org/project/python-benedict/)\n\n[for dpdb: psycopg2 (2.8.5)](https://www.psycopg.org/docs/index.html)\n\n----------\n\n# To register the graphviz plugins\nhttps://gitlab.com/graphviz/graphviz/-/issues/1352\n```shell\ndot.exe -c\n```\n\n# To install\n\nIn a command prompt with pip (to get *pip* see: https://pip.pypa.io/en/stable/) installed:\nJust run\n```shell\npip install -h (for more information on install options)\npip install tdvisu\n```\n\nTo download the latest version from the default branch:\n```shell\ngit clone --depth 1 --single https://github.com/VaeterchenFrost/tdvisu\n```\n\n# To isolate the dependencies\n\nWith [virtualenv](https://virtualenv.pypa.io/en/latest/installation.html ) on the system installed you can isolate the environment, for example\n```shell\nvirtualenv tdvisu_dir -p 3.8\ncd tdvisu_dir/bin/\nsource activate\n```\nWith [Conda](https://docs.conda.io/en/latest/) on the system installed the dependencies for this project can be automatically installed in a new environment:\n\nGo to the projects base directory.\n\nOpen a *conda-command-prompt* with admin privileges and run the commands from the project folder\n- to create a new environment with basic dependencies:\n```shell\nconda env create -f .\\environment.yml\n```\n- to activate the environment:\n```shell\nconda activate tdvisu\n```\n\n# Install from source\n\nTo clone the complete repository:\n```shell\ngit clone https://github.com/VaeterchenFrost/tdvisu\n```\n\nTo download only the latest version from the default branch:\n```shell\ngit clone --depth 1 --single https://github.com/VaeterchenFrost/tdvisu\n```\n\nTo install the project from the source folder:\n```shell\npip install -h (for more information on install options)\npip install .\n```\nto confirm that the visualization finds all dependencies:\n```shell\npython .\\tdvisu\\visualization.py -h\n```\nto run all tests:\n```shell\npip install .[test] \npytest .\\test\\\n```\n\n----------\n\n# How to use\n\nThe visualization needs input in the form of the [Json API](https://github.com/VaeterchenFrost/gpusat-VISU/blob/master/JsonAPI_v1.3.md).\nThe creation of this file is exemplary implemented in *construct_dpdb_visu.py* or the fork [GPUSAT](https://github.com/VaeterchenFrost/GPUSAT) and *--visufile filename* (optionally disabling preprocessing with *-p*).\n\nRun the python file with the above dependencies installed:\n[visualization.py](https://github.com/VaeterchenFrost/gpusat-VISU/blob/master/satvisualization_repo/satvisu/visualization.py)\n\n**visualization.py** takes two parameters, the json-**infile** to read from, and optionally one **outputfolder**.\nWith both arguments a call from IPython might look like this:\n\n```python\nrunfile('visualization.py', \nargs='visugpusat.json examplefolder')\n```\n\nFor #SAT it produces for example three different graphs suffixed with a running integer to represent timesteps:\n\n+ *TDStep* the tree decomposition with solved nodes\n+ *PrimalGraphStep* the primal graph with currently active variables highlighted\n+ *IncidenceGraphStep* the bipartite incidence graph with active clauses/variables highlighted\n\nThe graphs are images encoded in resolution independent **.svg files** (see https://www.lifewire.com/svg-file-4120603)\n\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/VaeterchenFrost/tdvisu/master/doc/images/combined6DA4.svg?sanitize=true\" width=\"70%\"/></p>\n\n## How to use construct_dpdb_visu.py\nAfter installing the project [dp_on_dbs](https://github.com/hmarkus/dp_on_dbs) with the there listed [requirements](https://github.com/hmarkus/dp_on_dbs#requirements), we need to\n- edit the [database.ini](https://github.com/VaeterchenFrost/tdvisu/blob/master/tdvisu/database.ini) with our password to [postgresql](https://www.postgresql.org/)\n- Solve a problem with `python dpdb.py [GENERAL-OPTIONS] -f <INPUT-FILE> <PROBLEM> [PROBLEM-SPECIFIC-OPTIONS]`\n  - for the problem **VertexCover** \n    - with flag `--gr-file` to store the htd Input (if the input was in a different format)\n  - for the problem **SharpSat**\n    - with flag `--store-formula` to store the formula in the database\n- Run \n  - **Sat** / **SharpSat**: `python construct_dpdb_visu.py [PROBLEMNUMBER]`\n  - **VertexCover**: `python construct_dpdb_visu.py [PROBLEMNUMBER] --twfile [TWFILE]` \n   with the file in DIMACS tw-format containing the edges of the graph.\n\n# Installation of the psycopg2 package \n\nSee https://www.psycopg.org/docs/install.html#build-prerequisites\n\nFor example on linux today this might need\n`sudo apt install libpq-dev` \nbefore completion.\n\n-----------------\n\n# New Release\n\n## Version\n- Bump `/version.py` according to the changes made\n- Change date to the release day, keep format \n\n## Requirements\nIn case dependencies have changed, or just to update some, check\n- *requirements.txt*\n- *stable-requirements.txt* (using `pip freeze`)\n- *setup.py*\n\n## Write Changelog.md\n- Add tag with link (see bottom for linking examples)\n- Add changes, maybe some are already in *Unreleased*\n- Update *Unreleased* with **(No) unreleased changes**\n\n## Review code\n- Run tests (pytest)\n- Check codestyle (pylint)\n\n## Push\n- Push changes to master\n- Wait for all automated checks! (All checks have passed...)\n\n## Create Release\n- On the GitHub page go to: Release, **[Draft a new release](https://github.com/VaeterchenFrost/tdvisu/releases/new )** \n- Enter v'YOUR VERSION NUMBER' as the tag.\n- Add a **Release Title** (could be just the version)\n- Add some description (like in the CHANGELOG.md)\n- Click on **Publish release** on the bottom\n\n## Should automatically release to [PyPI](https://pypi.org/project/tdvisu/ )\n- For details see: [Upload Python Package](https://github.com/VaeterchenFrost/tdvisu/blob/master/.github/workflows/python-publish.yml )\n\n**Now you are set for the new release :tada:**\n\n----------\n\n\n# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/ ), and this\nproject adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html ).\n\n## [Unreleased]\n- No unreleased changes yet.\n\n## [1.1.9] - 2023-07-27\n\n### Added\n- `python-benedict[xml]` to dependencies\n### Changed\n- Updated requirements.txt\n- Updated stable-requirements.txt\n\n\n## [1.1.8] - 2021-05-04\n\n### Changed\n- Updated pyyaml from 5.3.1 to 5.4 [#33]\n- Updated py from 1.9.0 to 1.10.0 [#35]\n- Fixed python-app.yml [#34]\n\n## [1.1.7] - 2020-09-13\n### Added\n- Better tests around the (Dimacs) Reader\n\n### Changed\n- Improved the SQL queries with explicit formats [#32]\n- Improved Readme sections for install and usage\n\n## [1.1.6] - 2020-08-01\n### Added\n- Added better property based testing with *hypothesis* [#29]\n- Added jobs and setups to test on macos and windows [#31]\n\n### Changed\n- *do_sort_nodes* now sorts in correct numeric order. [commit cdfcf6](https://github.com/VaeterchenFrost/tdvisu/commit/cdfcf6c332a63f05b499fe133fada4473ad7524c )\n- Fixed some import orders\n\n## [1.1.5] - 2020-07-17\n### Added\n- Added many new tests.\n- Hints for not covered code lines.\n\n### Changed\n- Simplified code to parse commandline flags while removing duplications in code.\n- Entrypoint for modules visualization and construct_dpdb_visu is now in init().\n- Some improvements in utilities.solution_node\n\n## [1.1.4] - 2020-07-14\n### Added\n- Added the possibility to specify and create multiple graph-visualizations in one file [#25]\n- Added test case *test_vc_multiple_and_join* in [commit aa31901](https://github.com/VaeterchenFrost/tdvisu/commit/aa319016ac71f9a54023474bf820cb30929c52a8 )\n- Added test cases for [construct_dpdb_visu](https://github.com/VaeterchenFrost/tdvisu/blob/master/test/test_construct_dpdb.py )\n- Add pytest-mock to tests_require\n\n### Changed\n- Simplified and refactored TDVisu.schema.json \n- Schema now includes possibility to specify multiple instances of generalGraph and incidenceGraph \n- Revisited doc/JsonAPI.md to now include all parameters available\n- Renamed test folder expected_images to expected_files\n- Updated stable-requirements.txt\n- Several minor improvements\n\n## [1.1.3] - 2020-07-09\n### Added\n- Added *TDVisu.schema.json* to validate the Json-API for TDVisu [#24]\n- Added 'col' to allowed formats in tw reader (default string in Mathematica)\n\n### Changed\n- Fixed error where database configuration was not found in the directory\n- Fixed missing double quotation marks in JsonAPI.md\n- Moved JsonAPI.md \u2192 *doc/JsonAPI.md*\n\n### Removed\n- Removed *generalGraph* and *incidenceGraph* from required arguments in API\n\n## [1.1.2] - 2020-06-26\n### Added\n- Tests for visualization.py using graphviz in the Github Action too\n- Tests for reader.py\n\n### Changed\n- Fixed typo that prevented joining SVG in visualization\n- Fixed cases where logging.yml was not found in the working directory\n- Now using pathlib.Path for most file-related operations\n- Unified logging configuration in utilities and made it easier to work with [#22]\n- Added more type hints and improved existing ones\n\n## [1.1.1] - 2020-06-25\n### Added\n- Added problem type **Sat** to tdvisu/construct_dpdb_visu.py \n- Added testcases in file test/test_dijkstra.py\n\n### Changed\n- JsonAPI.md is now updated with snake_case names and consistent with visualization_data.py \n- Fixed default value for svg-join **v_top** to *None* from *'top'*\n- Improved flexibility in several function parameters\n- Improved documentation and comments in several places\n- Fixed passing parameters to method *setup_tree_dec_graph*\n\n### Removed\n- Removed old dependency from  tdvisu/dijkstra.py on utilities\n\n## [1.1.0] - 2020-06-07\n### Added\n- Added file utilities.py with several static or shared things like\n    - Constants: CFG_EXT, LOGLEVEL_EPILOG, DEFAULT_LOGGING_CFG \n    - Methods: \n        - flatten\n        - read_yml_or_cfg combining yaml, json, cfg reader in one\n        - logging_cfg configure logging with file or DEFAULT_LOGGING_CFG \n        - helper convert_to_adj from dijkstra.py\n        - add_edge_to (edges and adj list)\n        - gen_arg infinite Generator\n    - Styles:\n        - base_style, emphasise_node, style_hide_node, style_hide_edge\n    - Graph manipulation:\n        - bag_node\n        - solution_node\n\n- Added file logging.yml (and .ini) with logging configuration for the module [#20]\n- Added half the tests for utilities.py\n\n### Changed\n- Changed path of image SharpSatExample to the absolute URL for [PyPI].\n- Changed names of loggers to absolute name. Should be easy to adjust if needed.\n- Changed logging defaults and config in tdvisu/visualization.py and construct_dpdb_visu.py\n- Updated ArgumentParser help\n- Some fixes of code-style or variable names. \n\n## [1.0.1] - 2020-06-04\n### Added\n- Codecoverage with [Codecov]\n\n### Changed\n- Changed path of image SharpSatExample to the absolute URL for [PyPI].\n\n## [1.0.0] - 2020-06-04\n### Added\n- Added svgjoin parameters to JsonAPI [#6]\n- Added call to svgjoin from visualization.py\n- Added workflow to display the sourcecode-files in [DIRECTORY]\n\n### Changed \n- Moved JsonAPI and conda_packages to /doc\n- Updated arguments in svgjoin to be more flexible for multiple joins [#11]\n- Fixed scaling mechanism in svgjoin [#13]\n- Changed tests from unittest to pytest [#12]\n\n### Removed\n- Changelog in JsonAPI.md\n\n## [0.5.1] - 2020-06-01\n### Added\n- Added publishing Action to [PyPI] [#4]\n\n### Changed\n- Changed setup.py with more documentation and simpler functionality.\n- Updated Readme with a guide on how to use construct_dpdb_visu [#2]\n\n### Removed\n- Removed publishing Action to testpypi [#4]\n\n\n## [0.5.0-dev1] - 2020-06-01\n\n### Added\n\n- Development version; beginning of the repository [#1]\n- Added version.py\n- Added module-name to imports\n- Added README to tdvisu directly\n\n### Changed\n- Fixed usage of `__version__` in tdvisu/construct_dpdb_visu.py\n\n### Removed\n- Removed individual versioning \n\n[#1]: https://github.com/VaeterchenFrost/tdvisu/issues/1\n[#2]: https://github.com/VaeterchenFrost/tdvisu/issues/2\n[#4]: https://github.com/VaeterchenFrost/tdvisu/issues/4\n[#6]: https://github.com/VaeterchenFrost/tdvisu/issues/6\n[#11]: https://github.com/VaeterchenFrost/tdvisu/issues/11\n[#12]: https://github.com/VaeterchenFrost/tdvisu/issues/12\n[#13]: https://github.com/VaeterchenFrost/tdvisu/issues/13\n[#20]: https://github.com/VaeterchenFrost/tdvisu/pull/20\n[#22]: https://github.com/VaeterchenFrost/tdvisu/issues/22\n[#24]: https://github.com/VaeterchenFrost/tdvisu/issues/24\n[#25]: https://github.com/VaeterchenFrost/tdvisu/pull/25\n[#29]: https://github.com/VaeterchenFrost/tdvisu/issues/29\n[#31]: https://github.com/VaeterchenFrost/tdvisu/issues/31\n[#32]: https://github.com/VaeterchenFrost/tdvisu/pull/32\n[#33]: https://github.com/VaeterchenFrost/tdvisu/pull/33\n[#34]: https://github.com/VaeterchenFrost/tdvisu/pull/34\n[#35]: https://github.com/VaeterchenFrost/tdvisu/pull/35\n\n[@VaeterchenFrost]: https://github.com/VaeterchenFrost\n[PyPI]: https://pypi.org/project/tdvisu/\n[mypy]: https://github.com/python/mypy\n[DIRECTORY]: https://github.com/VaeterchenFrost/tdvisu/blob/master/DIRECTORY.md\n[Codecov]: https://codecov.io/gh/VaeterchenFrost/tdvisu\n\n[Unreleased]: https://github.com/VaeterchenFrost/tdvisu/compare/v1.1.9...master\n[1.1.8]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.9\n[1.1.8]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.8\n[1.1.7]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.7\n[1.1.6]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.6\n[1.1.5]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.5\n[1.1.4]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.4\n[1.1.3]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.3\n[1.1.2]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.2\n[1.1.1]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.1\n[1.1.0]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.1.0\n[1.0.1]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.0.1\n[1.0.0]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v1.0.0\n[0.5.1]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v0.5.1\n[0.5.0-dev1]: https://github.com/VaeterchenFrost/tdvisu/releases/tag/v0.5.0-dev1\n\n\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "Visualizing Dynamic Programming on Tree Decompositions.",
    "version": "1.1.9",
    "project_urls": {
        "Homepage": "https://github.com/VaeterchenFrost/tdvisu"
    },
    "split_keywords": [
        "graph",
        "visualization",
        "dynamic-programming",
        "msol-solver"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4c2bc735c8febab3c20aa0ec926c7738933b75e86d6b246a6f828208a01e6f80",
                "md5": "117bdfb99a76bbfbcddb229f8615ac92",
                "sha256": "bfff6bf5d302e206b24036834fc0e3d3f835c262dd42d7f6bc1d7704351e304e"
            },
            "downloads": -1,
            "filename": "tdvisu-1.1.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "117bdfb99a76bbfbcddb229f8615ac92",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 63109,
            "upload_time": "2023-07-27T17:09:00",
            "upload_time_iso_8601": "2023-07-27T17:09:00.371465Z",
            "url": "https://files.pythonhosted.org/packages/4c/2b/c735c8febab3c20aa0ec926c7738933b75e86d6b246a6f828208a01e6f80/tdvisu-1.1.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "325a11c5d7d0626c28fb2ed96bd08d984a7a94c6cdb9f56936981f07ba168783",
                "md5": "dcad7997ecb3d8eaf94bdc53c018f11b",
                "sha256": "d2d89a724091584b1ea4796374933be4a2d2a3e23ec7adbc35f45b2b4eb203a1"
            },
            "downloads": -1,
            "filename": "tdvisu-1.1.9.tar.gz",
            "has_sig": false,
            "md5_digest": "dcad7997ecb3d8eaf94bdc53c018f11b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 72962,
            "upload_time": "2023-07-27T17:09:02",
            "upload_time_iso_8601": "2023-07-27T17:09:02.135368Z",
            "url": "https://files.pythonhosted.org/packages/32/5a/11c5d7d0626c28fb2ed96bd08d984a7a94c6cdb9f56936981f07ba168783/tdvisu-1.1.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-27 17:09:02",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "VaeterchenFrost",
    "github_project": "tdvisu",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "graphviz",
            "specs": [
                [
                    "~=",
                    "0.20"
                ]
            ]
        },
        {
            "name": "hypothesis",
            "specs": [
                [
                    "~=",
                    "6.82.0"
                ]
            ]
        },
        {
            "name": "psycopg2",
            "specs": [
                [
                    "~=",
                    "2.9.6"
                ]
            ]
        },
        {
            "name": "python-benedict",
            "specs": [
                [
                    "~=",
                    "0.32.0"
                ]
            ]
        },
        {
            "name": "python-benedict",
            "specs": [
                [
                    "~=",
                    "0.32.0"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "~=",
                    "7.4.0"
                ]
            ]
        },
        {
            "name": "pytest-mock",
            "specs": [
                [
                    "~=",
                    "3.11.0"
                ]
            ]
        },
        {
            "name": "PyYAML",
            "specs": [
                [
                    "~=",
                    "6.0"
                ]
            ]
        }
    ],
    "lcname": "tdvisu"
}
        
Elapsed time: 0.09866s