Skip to content

Commit 2275e48

Browse files
committed
preparing for next release
1 parent bd3bcf0 commit 2275e48

File tree

3 files changed

+93
-1
lines changed

3 files changed

+93
-1
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Reorder.js
22

3-
[Reorder.js](http://www.reorderjs.org/) is a JavaScript library for reordering matrices.
3+
[Reorder.js](https://github.com/jdfekete/reorder.js/) is a JavaScript library for reordering matrices.
4+
5+
Want to learn more? [See the wiki.](https://github.com/jdfekete/reorder.js/wiki)
46

57
## Development
68

src/graph2distmat.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Converts a graph with weighted edges (weight in l.value)
2+
// into a distance matrix suitable for reordering with e.g.
3+
// Optimal Leaf Ordering.
4+
5+
function distmat2valuemat(distmat) {
6+
var n = distmat.length,
7+
valuemat = reorder.zeroes(n, n),
8+
max_dist = reorder.distmax(distmat),
9+
i, j;
10+
11+
for (i = 0; i < n; i++) {
12+
for (j = i; j < n; j++) {
13+
valuemat[j][i] = valuemat[i][j] = 1+max_dist - distmat[i][j];
14+
}
15+
}
16+
return valuemat;
17+
}
18+
reorder.distmat2valuemat = distmat2valuemat;
19+
20+
reorder.graph2valuemats = function(graph, comps) {
21+
if (! comps)
22+
comps = graph.components();
23+
24+
var dists = reorder.all_pairs_distance(graph, comps);
25+
return dists.map(distmat2valuemat);
26+
};
27+
28+
reorder.valuemats_reorder = function(valuemats, leaforder, comps) {
29+
var orders = valuemats.map(leaforder);
30+
31+
if (comps) {
32+
orders = orders.map(function(d, i) {
33+
return reorder.permute(comps[i], d);
34+
});
35+
}
36+
return orders.reduce(reorder.flatten);
37+
};

test/graph2distmat-test.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
require("science");
2+
require("../reorder.v1");
3+
require("../reorder.v1");
4+
5+
var vows = require("vows"),
6+
assert = require("assert");
7+
var seedrandom = require('seedrandom');
8+
Math.seedrandom('reorder');
9+
10+
var suite = vows.describe("reorder.graph2distmat");
11+
12+
suite.addBatch({
13+
"graph2distmat": {
14+
"simple": function() {
15+
var mat = [
16+
[0, 1, 0],
17+
[1, 0, 1],
18+
[0, 1, 0]
19+
],
20+
dist = [
21+
[0, 1, 2],
22+
[1, 0, 1],
23+
[2, 1, 0]
24+
];
25+
var graph = reorder.mat2graph(mat);
26+
assert.equal(graph.nodes().length, 3);
27+
assert.equal(graph.links().length, 2);
28+
var dists = reorder.all_pairs_distance(graph);
29+
assert.deepEqual(dists[0], dist);
30+
var valuemat = reorder.distmat2valuemat(dist);
31+
assert.deepEqual(valuemat,
32+
[[3, 2, 1],
33+
[2, 3, 2],
34+
[1, 2, 3]]);
35+
// var max_link = graph.links().reduce(
36+
// function(a, b) {
37+
// return a.value > b.value ? a : b;
38+
// }),
39+
// max_value = max_link ? max_link.value : 0;
40+
// var links = graph.links()
41+
// .map(function(l) {
42+
// return {
43+
// value: (max_value - l.value)/max_value,
44+
// source: l.source.index,
45+
// target: l.target.index
46+
// };
47+
// });
48+
// console.log(links);
49+
}
50+
}
51+
});
52+
53+
suite.export(module);

0 commit comments

Comments
 (0)