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
- Host: GitHub
- URL: https://github.com/aluriak/phasme
- Owner: Aluriak
- Created: 2018-03-20T22:29:25.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2019-11-08T10:55:06.000Z (about 6 years ago)
- Last Synced: 2024-10-08T09:38:00.192Z (over 1 year ago)
- Topics: answer-set-programming, graph, graph-theory, python
- Language: Python
- Homepage:
- Size: 64.5 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.mkd
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'