UNPKG

2.79 kBMarkdownView Raw
1---
2title: iper
3---
4# iper
5
6> Hypergraphs for breakfast!
7
8[![Node engine](https://img.shields.io/node/v/iper.svg)](https://nodejs.org/en/) [![NPM version](https://badge.fury.io/js/iper.svg)](http://badge.fury.io/js/iper) [![Build Status](https://travis-ci.org/fibo/iper.svg?branch=master)](https://travis-ci.org/fibo/iper?branch=master) [![Dependency Status](https://gemnasium.com/fibo/iper.svg)](https://gemnasium.com/fibo/iper) [![Coverage Status](https://coveralls.io/repos/fibo/iper/badge.svg?branch=master)](https://coveralls.io/r/fibo/iper?branch=master) [![Test page](https://img.shields.io/badge/test-page-blue.svg)](http://g14n.info/iper/test)
9
10[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)
11
12[![NPM](https://nodei.co/npm-dl/iper.png)](https://nodei.co/npm-dl/iper/)
13
14## Installation
15
16With [npm](https://npmjs.org/) do
17
18```bash
19npm install iper
20```
21
22With [bower](http://bower.io/) do
23
24```bash
25bower install iper
26```
27
28## API
29
30### `new Graph([graph])`
31
32> Hypergraph constructor.
33
34```javascript
35const Graph = require('iper').Graph
36
37const graph = new Graph()
38```
39
40* **@param** `{Object}` [graph]
41* **@param** `{Object}` [graph.edges]
42* **@param** `{Object}` [graph.nodes]
43* **@param** `{Boolean}` [graph.multigraph] can contain duplicated edges
44* **@param** `{Boolean}` [graph.pseudograph] is a multigraph with loops allowed
45* **@param** `{Number}` [graph.uniform] all edges has the same cardinality (i.e. number of nodes)
46
47### `graph.addEdge(nodeIds)`
48
49> Add an hyperedge that connects given nodeIds.
50
51* **@param** `{Array}` nodeIds
52* **@returns** `{String}` id
53
54### `graph.addNode(data)`
55
56> Add a node, containing given data.
57
58```javascript
59var nodeId = graph.addNode({ label: 'foo' })
60```
61
62* **@param** `{*}` [data]
63* **@returns** `{String}` id of the node created
64
65### `graph.degreeOf(nodeId)`
66
67> Returns the degree of a node, that is the number of incident edges with loops counted twice.
68
69* **@param** `{String}` id
70* **@returns** `{void}`
71
72### `graph.delEdge(id)`
73
74> Delete edge by given id.
75
76* **@param** `{String}` id
77* **@returns** `{void}`
78
79### `graph.delNode(id)`
80
81> Delete node by given id.
82
83* **@param** `{String}` id
84* **@returns** `{void}`
85
86### `graph.generateId()`
87
88> Returns a random string to be used as id.
89
90* **@returns** `{String}`
91
92Override this method if you want to customize how ids are generated, for example
93
94```javascript
95const uniqueid = require('lodash.uniqueid')
96const Graph = require('iper').Graph
97
98class MyGraph extends Graph {
99 generateId () {
100 return uniqueid()
101 }
102}
103
104module.exports = MyGraph
105```
106
107
108### `graph.getRank()`
109
110> Returns the max cardinality of any of the edges in the hypergraph.
111
112* **@returns** `{Number}`
113
114## License
115
116[MIT](http://www.g14n.info/mit-license)