All Projects → holderlb → Subdue

holderlb / Subdue

Licence: mit
The Subdue graph miner discovers highly-compressing patterns in an input graph.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Subdue

Urbanaccess
A tool for GTFS transit and OSM pedestrian network accessibility analysis
Stars: ✭ 137 (+585%)
Mutual labels:  graph, network
Urs
Universal Reddit Scraper - A comprehensive Reddit scraping command-line tool written in Python.
Stars: ✭ 275 (+1275%)
Mutual labels:  json, data-mining
Programming Languages Influence
Code to retrieve data for the programming languages influence visualizations from Freebase
Stars: ✭ 171 (+755%)
Mutual labels:  graph, network
Clientserverproject
一个C-S模版,该模版由三部分的程序组成,一个服务端运行的程序,一个客户端运行的程序,还有一个公共的组件,实现了基础的账户管理功能,版本控制,软件升级,公告管理,消息群发,共享文件上传下载,批量文件传送功能。具体的操作方法见演示就行。本项目的一个目标是:提供一个基础的中小型系统的C-S框架,客户端有三种模式,无缝集成访问,winform版本,wpf版本,asp.net mvc版本,方便企业进行中小型系统的二次开发和个人学习。同时网络组件方便的支持读写三菱和西门子PLC的数据,详细见Readme
Stars: ✭ 873 (+4265%)
Mutual labels:  json, network
Vue D3 Network
Vue component to graph networks using d3-force
Stars: ✭ 415 (+1975%)
Mutual labels:  graph, network
Protostuff
Java serialization library, proto compiler, code generator
Stars: ✭ 1,730 (+8550%)
Mutual labels:  graph, json
P2p Graph
Real-time P2P network visualization with D3
Stars: ✭ 245 (+1125%)
Mutual labels:  graph, network
Serial Studio
Multi-purpose serial data visualization & processing program
Stars: ✭ 1,168 (+5740%)
Mutual labels:  graph, network
Tbox
🎁 A glib-like multi-platform c library
Stars: ✭ 3,800 (+18900%)
Mutual labels:  json, network
Daisynet
1. - Alamofire与Cache封装 , 更容易存储请求数据. 2. - 封装Alamofire下载,使用更方便
Stars: ✭ 331 (+1555%)
Mutual labels:  json, network
Workbase
Grakn Workbase (Knowledge IDE)
Stars: ✭ 106 (+430%)
Mutual labels:  graph, network
Aws Security Viz
Visualize your aws security groups.
Stars: ✭ 511 (+2455%)
Mutual labels:  graph, json
Bitcoin Scraper
💲 bitcoin chart history scraper
Stars: ✭ 80 (+300%)
Mutual labels:  graph, json
Reddit Detective
Play detective on Reddit: Discover political disinformation campaigns, secret influencers and more
Stars: ✭ 129 (+545%)
Mutual labels:  graph, network
React Json Graph
React component for rendering graphs
Stars: ✭ 71 (+255%)
Mutual labels:  graph, json
Sparkliner
Sparkliner — easy way to make sparkline graph [Sketch plugin]
Stars: ✭ 184 (+820%)
Mutual labels:  graph, json
G6
♾ A Graph Visualization Framework in JavaScript
Stars: ✭ 8,490 (+42350%)
Mutual labels:  graph, network
Pyrwr
Python Implementation for Random Walk with Restart (RWR)
Stars: ✭ 48 (+140%)
Mutual labels:  graph, network
Ngraph.graph
Graph data structure in JavaScript
Stars: ✭ 295 (+1375%)
Mutual labels:  graph, network
Qsimpleupdater
Updater system for Qt applications
Stars: ✭ 429 (+2045%)
Mutual labels:  json, network

Subdue Graph Miner

The Subdue graph miner discovers highly-compressing patterns in an input graph. Compression is measured by the reduction in graph size after replacing each instance of the pattern with a single node. This version of Subdue can also find temporal patterns, i.e., the instances of the pattern also match in terms of the arrival order of the nodes and edges that comprise the pattern.

Starting with version 1.2, Subdue uses a polynomially-bounded, approximate graph isomorphism algorithm to improve efficiency while maintaining reasonable accuracy.

Subdue is designed to accept input graphs in the format produced by the Graph Stream Generator.

Author: Dr. Larry Holder, School of Electrical Engineering and Computer Science, Washington State University, email: [email protected].

Support: This material is based upon work supported by the National Science Foundation under Grant No. 1646640.

Running Subdue

CLI

Subdue is run using the following command-line format (requires Python 3):

python Subdue.py [options] <inputfile>

The options, input file format and output are described below.

networkx

Alternatively, if you work with networkx, you can execute Subdue.nx_subdue directly on the graph. See function's documentation for details. Simple usage is as follows:

from Subdue import nx_subdue
out = nx_subdue(graph, **params)

Options

The following options are available in Subdue.

--beam <n>

Number of patterns to retain after each expansion of previous patterns; based on their compression value. Default is 4.

--iterations <n>

Number of iterations of Subdue's discovery process. If more than 1, Subdue compresses the graph with the best pattern and then runs again using the compressed graph. If 0, then Subdue runs until no more compression (i.e., set to |E|). Default is 1.

--limit <n>

Number of patterns considered in each iteration of Subdue. A value of 0 implies |E|/2. Default is 0.

--maxsize <n>

Maximum size (#edges) of a pattern. A value of 0 implies |E|/2. Default is 0.

--minsize <n>

Minimum size (#edges) of a pattern. Default is 1.

--numbest <n>

Number of best patterns to report at end. Default is 3.

--overlap <overlap_type>

Controls how instances of a pattern may overlap. Possible overlap_type values are: none, vertex, edge. Overlap of "none" means no part of two instances of a pattern can overlap. Overlap of "vertex" means that any number of vertices can overlap, but no edges. Overlap of "edge" means that edges and vertices can overlap, but the two instances cannot be identical. Default is "none".

--prune

If enabled, Subdue removes any pattern whose value is worse than its parent pattern. Disabled by default.

--temporal

If enabled, Subdue discovers temporal patterns, i.e., patterns whose instances are not only isomorphic, but also match in terms of their vertex and edge arrival order. Disabled by default (i.e., static patterns that ignore timestamps).

--valuebased

If enabled, then all patterns with the top beam values are retained during the discovery process. Disabled by default.

--writecompressed

If enabled, Subdue writes the compressed graph after each iteration i to the file outputFileName-compressed-i.json, where outputFileName is the same as the input file name, but with .json removed if present. Disabled by default.

--writeinstances

If enabled, Subdue writes instances of the best pattern at iteration i as one graph to file outputFileName-instances-i.json. Disabled by default.

--writepattern

If enabled, Subdue writes the best pattern at iteration i to file outputFileName-pattern-i.json. Disabled by default.

Input File

The input file represents a graph in JSON format. An example is in the file inputgraph.json, and a visualization of this graph is in inputgraph.png. The input graph contains a JSON array of vertices and edges, as described below.

Vertex

A vertex is a JSON object with name "vertex" and whose value is a JSON object with the following properties.

  • id: A string identifier that uniquely identifies this vertex.
  • attributes: A JSON object of name/value pairs, where both the name and value are strings. For two vertices to match, all of their attributes must match.
  • timestamp: An integer value (as a string) representing the time at which this vertex first appeared in the graph. Timestamps are only used if Subdue is run with the --temporal option.

Edge

An edge is a JSON object with name "edge" and whose value is a JSON object with the following properties.

  • id: A string identifier that uniquely identifies this edge.
  • source: Vertex identifier string for the edge's source vertex.
  • target: Vertex identifier string for the edge's target vertex.
  • directed: Whether the edge is directed from source to target ("true"), or undirected ("false").
  • attributes: A JSON object of name/value pairs, where both the name and value are strings. For two edges to match, all of their attributes must match.
  • timestamp: An integer value (as a string) representing the time at which this edge first appeared in the graph. Timestamps are only used if Subdue is run with the --temporal option.

Output

Subdue outputs the top patterns according to their compression value along with their instances in the input graph. The file output.txt contains the output produced by Subdue on inputgraph.json using default options.

Questions?

Contact: Dr. Larry Holder, School of Electrical Engineering and Computer Science, Washington State University, email: [email protected].

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].