Skip to content

Commit

Permalink
add nn2opt, mult barycenter and example
Browse files Browse the repository at this point in the history
  • Loading branch information
nvbeusekom committed May 13, 2022
1 parent 41311c3 commit 960f806
Show file tree
Hide file tree
Showing 22 changed files with 830 additions and 1,279 deletions.
84 changes: 6 additions & 78 deletions examples/table.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,85 +133,13 @@ class table{
}

quality(){
let permuted = reorder.permute_matrix(this.matrix,this.row_perm,this.col_perm);
let bandwidth = reorder.bandwidth_matrix(permuted);
let profile = reorder.profile(permuted);
let linarr = reorder.linear_arrangement(permuted);
let moran = reorder.morans_i(permuted);

var permuted = [];
for (var i = 0; i < this.row_perm.length; i++) {
permuted.push([]);
for (var j = 0; j < this.col_perm.length; j++) {
permuted[i].push(this.matrix[this.row_perm[i]][this.col_perm[j]]);
}
}

var bandwidth = 0;
var linarr = 0;
for(var i=0 ; i< this.row_perm.length; i++){
for(var j=0 ; j<this.col_perm.length ; j++){
if(i!==j && this.matrix[i][j] === 1){
var lambda = 0;
var b = false;
for(var k=0; k<this.row_perm.length; k++){
if(this.row_perm[k] === i || this.row_perm[k] === j){
b = !b;
}
if(b){
lambda++;
}
}
linarr += lambda;
if(lambda > bandwidth){
bandwidth = lambda;
}
}
}
}
// return max;
var profile = 0;
for(var i=0 ; i< this.row_perm.length; i++){
var min = this.col_perm.length ;
for(var j=0 ; j<this.col_perm.length ; j++){
if(this.row_perm[i]===this.row_perm[j] || this.matrix[this.row_perm[i]][this.col_perm[j]] === 1){
if(j<min){
min = j;
}

}
}
profile += i - min;
}

var bbadjacencies = 0;
var bwadjacencies = 0;
var wwadjacencies = 0;
for(var i=0 ; i< this.row_perm.length; i++){
for(var j=0 ; j<this.col_perm.length ; j++){
if(i<this.row_perm.length-1){
if(permuted[i][j] === 1){
bbadjacencies += permuted[i+1][j];
bwadjacencies += 1 - permuted[i+1][j];
}
if(permuted[i][j] === 0){
bwadjacencies += permuted[i+1][j];
wwadjacencies += 1 - permuted[i+1][j];
}
}
if(j<this.col_perm.length-1){
if(permuted[i][j] === 1){
bbadjacencies += permuted[i][j+1];
bwadjacencies += 1 - permuted[i][j+1];
}
if(permuted[i][j] === 0){
bwadjacencies += permuted[i][j+1];
wwadjacencies += 1 - permuted[i][j+1];
}
}
}
}



var moran = reorder.morans_i(permuted);

return [bandwidth,profile,linarr,moran,bbadjacencies,bwadjacencies,wwadjacencies];
return [bandwidth,profile,linarr,moran];
}

}
18 changes: 11 additions & 7 deletions examples/timeseries/data_example.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
var matrices_example = [];
var col_labels_example = [];
var row_labels_example = [];
let matrices_example = [];
let col_labels_example = [];
let row_labels_example = [];

var margin = {top: 30, right: 0, bottom: 10, left: 30},
width = 800 - margin.left - margin.right,
height = 800 - margin.top - margin.bottom;
/* The example used for the teaser image of:
*
* Simultaneous Matrix Orderings for Graph Collections.
* Nathan van Beusekom, Wouter Meulemans, and Bettina Speckmann.
* IEEE Transactions on Visualization and Computer Graphics, 28(1), pp 1-10, 2021.
* https://arxiv.org/abs/2109.12050
*/
function load_example(callback){

matrices_example = [
Expand Down Expand Up @@ -48,7 +52,7 @@ matrices_example = [
// [1,0,0,1,0,1,1,0]]
//];
const labels = [];
for (var i = 0; i < matrices_example[0].length; i++) {
for (let i = 0; i < matrices_example[0].length; i++) {
labels.push(i);
}
col_labels_example = labels;
Expand Down
43 changes: 20 additions & 23 deletions examples/timeseries/data_flt.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,27 @@
var matrices_flt = [];
var col_labels_flt = [];
var row_labels_flt = [];

var margin = {top: 30, right: 0, bottom: 10, left: 30},
width = 800 - margin.left - margin.right,
height = 800 - margin.top - margin.bottom;
let matrices_flt = [];
let col_labels_flt = [];
let row_labels_flt = [];

// Datasets extracted from https://aviz.fr/~bbach/multipiles/
function load_flt(callback){

var filename = "FlashTap_flashtap_1_graphdat_8.dyjson";
//var filename = "RC4101_1_graphdat_16.dyjson";
//var filename = "RC4103_1_graphdat_16.dyjson";
//var filename = "RC4201_1_graphdat_16.dyjson";
//var filename = "RC4204_1_graphdat_16.dyjson";
let filename = "FlashTap_flashtap_1_graphdat_8.dyjson";
//let filename = "RC4101_1_graphdat_16.dyjson";
//let filename = "RC4103_1_graphdat_16.dyjson";
//let filename = "RC4201_1_graphdat_16.dyjson";
//let filename = "RC4204_1_graphdat_16.dyjson";
d3.json(filename, function(err,data){
if(err) console.log("error fetching data: " + err);
var size = data.times.length;
for (var i = 0; i < size; i++) {
var step = data.times[i].matrix;
let size = data.times.length;
for (let i = 0; i < size; i++) {
let step = data.times[i].matrix;
matrices_flt.push(step);


}
for (var k = 0; k < matrices_flt.length; k++) {
for (var i = 0; i < matrices_flt[0].length; i++) {
for (var j = 0; j < matrices_flt[0][0].length; j++) {
for (let k = 0; k < matrices_flt.length; k++) {
for (let i = 0; i < matrices_flt[0].length; i++) {
for (let j = 0; j < matrices_flt[0][0].length; j++) {
if(matrices_flt[k][i][j] >= 0.5){
matrices_flt[k][i][j] = 1;
}
Expand All @@ -36,20 +33,20 @@ d3.json(filename, function(err,data){
}
}
}
var labels = [];
for (var i = 0; i < matrices_flt[0].length; i++) {
let labels = [];
for (let i = 0; i < matrices_flt[0].length; i++) {
labels.push(i);
}
col_labels_flt = labels;
row_labels_flt = labels;
var tables_flt = [];
let tables_flt = [];
for(let i = 0; i<matrices_flt.length; i++){
var svg = d3.select("#heatmap").append("svg")
let svg = d3.select("#heatmap").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var t1 = new table({matrix: matrices_flt[i], row_labels_flt: labels, col_labels_flt: labels},svg);
let t1 = new table({matrix: matrices_flt[i], row_labels_flt: labels, col_labels_flt: labels},svg);
tables_flt[i] = t1;
}

Expand Down
41 changes: 19 additions & 22 deletions examples/timeseries/data_sch.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
var matrices_sch = [];
var col_labels_sch = [];
var row_labels_sch = [];

var margin = {top: 30, right: 0, bottom: 10, left: 30},
width = 800 - margin.left - margin.right,
height = 800 - margin.top - margin.bottom;
let matrices_sch = [];
let col_labels_sch = [];
let row_labels_sch = [];

//Dataset from http://www.sociopatterns.org/datasets/primary-school-temporal-network-data/
function load_sch(callback){

d3.csv("primaryschool.csv", function(err,data) {
var indices = {};
var count = 0;
for (var i = 0; i < data.length; i++) {
let indices = {};
let count = 0;
for (let i = 0; i < data.length; i++) {
if(indices[data[i]['i']] === undefined){
indices[data[i]['i']] = count;
count++;
Expand All @@ -21,23 +18,23 @@ d3.csv("primaryschool.csv", function(err,data) {
count++;
}
}
var T = 31220;
var matrix = []
for (var i = 0; i < Object.keys(indices).length; i++) {
var arr = [];
for (var j = 0; j < Object.keys(indices).length; j++) {
let T = 31220;
let matrix = []
for (let i = 0; i < Object.keys(indices).length; i++) {
let arr = [];
for (let j = 0; j < Object.keys(indices).length; j++) {
arr[j] = 0;
}
matrix[i] = arr;

}
for (var i = 0; i < data.length; i++) {
for (let i = 0; i < data.length; i++) {
if(parseInt(data[i]['t']) > T + 3600){
matrices_sch.push(matrix);
matrix = [];
for (var k = 0; k < Object.keys(indices).length; k++) {
var arr = [];
for (var l = 0; l < Object.keys(indices).length; l++) {
for (let k = 0; k < Object.keys(indices).length; k++) {
let arr = [];
for (let l = 0; l < Object.keys(indices).length; l++) {
arr[l] = 0;
}
matrix[k] = arr;
Expand All @@ -48,14 +45,14 @@ d3.csv("primaryschool.csv", function(err,data) {
matrix[indices[data[i]['i']]][indices[data[i]['j']]] = 1;
matrix[indices[data[i]['j']]][indices[data[i]['i']]] = 1;
}
var tables_sch = [];
let tables_sch = [];
for(let i = 0; i<matrices_sch.length; i++){
var svg = d3.select("#heatmap").append("svg")
let svg = d3.select("#heatmap").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var t1 = new table({matrix: matrices_sch[i], row_labels_sch: row_labels_sch, col_labels_sch: col_labels_sch},svg);
let t1 = new table({matrix: matrices_sch[i], row_labels_sch: row_labels_sch, col_labels_sch: col_labels_sch},svg);
tables_sch[i] = t1;
}

Expand Down
Loading

0 comments on commit 960f806

Please sign in to comment.