Skip to main content

Visualizing Dynamic Programming on Tree Decompositions.

Project description

TdVisu

Maintenance PyPI license Tests codecov

GitHub release (latest SemVer including pre-releases) PyPI version fury.io PyPI status PyPI pyversions PyPI - Wheel GitHub repo size GitHub code size in bytes GitHub commits since latest release (by SemVer)


Visualization for dynamic programming on tree decompositions.

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 would be an option in the future.


Using

Alubbock:Graphviz (or Graphviz (>=2.38))

python-benedict

for dpdb: psycopg2 (2.8.5)

How to install

After downloading the latest verion, go to the source-directory.

With Conda on the system installed, the dependencies for this project can be automatically installed in a new environment - or in a place of your choosing:

Open a conda-command-prompt with admin privileges and run the commands from the gpusat-VISU\tdvisualization_repo folder: to create a new environment with basic dependencies:

conda env create -f .\environment.yml

to activate the environment:

conda activate tdvisu

to register the graphviz plugins:

dot.exe -c

to install the project in the environment: (to get pip see: https://pip.pypa.io/en/stable/)

pip install -h (for more information on install options)
pip install .

to confirm that the visualization finds all dependencies:

python .\tdvisu\visualization.py -h

to run all tests:

pip install .[test] 
pytest .\test\

How to use

The visualization needs input in the form of the Json API. The creation of this file is exemplary implemented in construct_dpdb_visu.py or the fork GPUSAT and --visufile filename (optionally disabling preprocessing with -p).

Run the python file with the above dependencies installed: 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:

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)

How to use construct_dpdb_visu.py

After installing the project dp_on_dbs with the there listed requirements, we need to

  • edit the database.ini with our password to postgresql
  • 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
    • 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.

New Release

Version

  • Bump /version.py according to the changes made
  • Change date to the release day, keep format

Requirements

In case any dependencies changed, or just to update some, check in

  • requirements.txt
  • stable-requirements.txt (using pip freeze)
  • setup.py (only tests_require = ['pytest'] right now)

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
  • 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

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, and this project adheres to Semantic Versioning.

Unreleased

No unreleased changes yet.

1.0.1 - 2020-06-04

Added

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

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

tdvisu-1.0.1.tar.gz (37.1 kB view hashes)

Uploaded Source

Built Distribution

tdvisu-1.0.1-py3-none-any.whl (57.7 kB view hashes)

Uploaded Python 3

Supported by

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