An open API service indexing awesome lists of open source software.

https://github.com/aluriak/phasme

(ASP) graph handling made easy
https://github.com/aluriak/phasme

answer-set-programming graph graph-theory python

Last synced: 9 months ago
JSON representation

(ASP) graph handling made easy

Awesome Lists containing this project

README

          

# Phasme
Graph with ASP made easy.

## Use cases

### Write an ASP graph into gexf

phasme convert data.lp target.gexf

### Rewrite a gml graph with normalized node names

phasme convert data.gml --normalized

### Extract the biggest cc, write it anonymized in gml

phasme split data.lp --biggest-first "data_cc.lp" --slice 0 1
phasme convert data_cc_1.lp target.gml --anonymized

### Generate a small world graph in gml

phasme generate data.gml erdos_renyi_graph n=100 p=0.01

## Packaging

pip install phasme

Will also populate your env with the executable `phasme`,
enabling access to the CLI.

## CLI commands
CLI provides access to higher level [routines](phasme/routines.py).

- `split`: split by connected component.
- `info`: give info about given graph.
- `convert`: rewrite, anonymize, normalize or convert the graph to (clean) ASP or standard format.
- `generate`: generate a graph using a given generation method.

### Other examples

# split a graph by cc
python -m phasme split data.lp -o "data_{}.lp"

# get infos
python -m phasme infos data.lp --graph-properties

# there is a shitload of options
python -m phasme infos --help

# conversions between formats
python -m phasme convert data.lp data.gml --anonymize

# generation of new graphs to play with
python -m phasme generate graph.gml powerlaw_cluster_graph n=5 m=2 p=0.01

# ready-to-draw tikz visualization of ASP graph
python -m phasme convert data.lp graph-in-latex-tikz.tex

# randomize a graph, keeping the same degree distribution, using switching method
python -m phasme randomize data.lp randomized-graph.gml

## Changelog

- 0.0.14
- 0.0.13
- randomize: `--per-cc` option to run it on each connected component independantly
- 0.0.12
- new subcommand: *randomize*, to build a random graph based on another
- new subcommand: *extract*, to extract subgraphs based on their nodes
- convert: new output format: latex/tikz
- infos: give infos on articulation points
- infos: indicate number of self loops, if any, or give property 'no loop'