Skip to content

Commit

Permalink
Introduce dynamic cluster numbers and dynamic sizing for large projects
Browse files Browse the repository at this point in the history
  • Loading branch information
pkraker committed May 15, 2018
1 parent 205b4a8 commit f0a4571
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 3 deletions.
4 changes: 4 additions & 0 deletions examples/viper/data-config_openaire.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ var data_config = {

paper_min_scale: 1,
paper_max_scale: 1,

dynamic_sizing: true,
dynamic_force_area: true,
dynamic_force_papers: true,

service: "openaire",
base_unit: "citations",
Expand Down
21 changes: 20 additions & 1 deletion server/preprocessing/other-scripts/vis_layout.R
Original file line number Diff line number Diff line change
Expand Up @@ -237,15 +237,34 @@ create_clusters <- function(distance_matrix, max_clusters=-1, method="ward.D") {
}
)
}

num_items = nrow(distance_matrix)

if(!is.null(num_clusters) && max_clusters > -1 && num_clusters > max_clusters) {
num_clusters = MAX_CLUSTERS

if(num_items >= 150) {
print("High content number, increasing max_k.")
if(num_items >= 150 && num_items < 200) {
num_clusters = 16
} else if (num_items >= 200 && num_items < 300) {
num_clusters = 17
} else if (num_items >= 300 && num_items < 400) {
num_clusters = 18
} else if (num_items >= 400 && num_items < 500) {
num_clusters = 19
} else if (num_items >= 500) {
num_clusters = 20
}
}
}

if(nrow(distance_matrix) <= 30){
if(num_items <= 30){
print("Low content number, lowering max_k.")
num_clusters = round(sqrt(nrow(distance_matrix))) + 1
}



meta_cluster = attr(css_cluster,"meta")
cluster = meta_cluster$hclust.obj
Expand Down
4 changes: 4 additions & 0 deletions vis/js/default-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ var config = {
zoom_factor: 0.9,
padding_articles: 0,
circle_padding: 0,
dynamic_sizing: false,

// map
min_height: 600,
Expand Down Expand Up @@ -59,6 +60,9 @@ var config = {

is_force_papers: true,
papers_force_alpha: 0.1,

dynamic_force_area: false,
dynamic_force_papers: false,

render_list: true,
render_bubbles: true,
Expand Down
44 changes: 44 additions & 0 deletions vis/js/headstart.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,50 @@ HeadstartFSM.prototype = {
});

},

dynamicForcePapers: function(num_items) {
if (num_items >= 150 && num_items < 200) {
config.papers_force_alpha = 0.2;
} else if (num_items >= 200) {
config.papers_force_alpha = 0.3;
}
},

dynamicForceAreas: function(num_items) {
if (num_items >= 200) {
config.area_force_alpha = 0.02;
}
},

dynamicSizing: function(num_items) {
if (num_items >= 150 && num_items < 200) {
this.adjustSizes(0.9, 1.1);
} else if (num_items >= 200 && num_items < 250) {
this.adjustSizes(0.8, 1.1);
} else if (num_items >= 250 && num_items < 300) {
this.adjustSizes(0.7, 1.1);
} else if (num_items >= 250 && num_items < 300) {
this.adjustSizes(0.6, 1.1);
} else if (num_items >= 300 && num_items < 350) {
this.adjustSizes(0.5, 1.2);
} else if (num_items >= 350 && num_items < 400) {
this.adjustSizes(0.4, 1.2);
} else if (num_items >= 400 && num_items < 450) {
this.adjustSizes(0.3, 1.2);
} else if (num_items >= 450 && num_items < 500) {
this.adjustSizes(0.2, 1.2);
} else if (num_items >= 500) {
this.adjustSizes(0.1, 1.2);
}
},

adjustSizes: function(resize_paper_factor, resize_bubble_factor) {
//config.papers_min_scale /= resize_paper_factor;
config.papers_max_scale /= resize_paper_factor;

config.bubble_min_scale *= resize_bubble_factor;
config.bubble_max_scale *= resize_bubble_factor;
},

createRestUrl: function () {
let url = config.server_url + "services/getBookmarks.php?user=" + config.user_id;
Expand Down
12 changes: 10 additions & 2 deletions vis/js/mediator.js
Original file line number Diff line number Diff line change
Expand Up @@ -226,19 +226,27 @@ MyMediator.prototype = {
},

init_start_visualization: function(highlight_data, csv) {
let data = (config.show_context)?(JSON.parse(csv.data)):csv;
let context = (config.show_context)?(csv.context):{};

mediator.manager.registerModule(headstart, 'headstart');

if(config.is_force_papers && config.dynamic_force_papers) mediator.manager.call('headstart', 'dynamicForcePapers', [data.length]);
if(config.is_force_area && config.dynamic_force_area) mediator.manager.call('headstart', 'dynamicForceAreas', [data.length]);
if(config.dynamic_sizing) mediator.manager.call('headstart', 'dynamicSizing', [data.length]);
if (config.render_bubbles) mediator.manager.registerModule(mediator.current_bubble, 'bubble');

mediator.manager.call('canvas', 'setupCanvas', []);
if(config.scale_toolbar) {
mediator.manager.registerModule(scale, 'scale')
mediator.manager.call('scale', 'drawScaleTypes', [])
}
let data = (config.show_context)?(JSON.parse(csv.data)):csv;
let context = (config.show_context)?(csv.context):{};


mediator.manager.call('io', 'initializeMissingData', [data]);
mediator.manager.call('io', 'prepareData', [highlight_data, data]);
mediator.manager.call('io', 'prepareAreas', []);

mediator.manager.call('io', 'setContext', [context, data.length]);
mediator.manager.call('io', 'setInfo', [context]);
mediator.manager.call('canvas', 'drawTitle', [context]);
Expand Down
1 change: 1 addition & 0 deletions vis/js/scale.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class Scale {
doScale (type) {
config.scale_by = type
config.base_unit = config.scale_base_unit[type];
config.dynamic_sizing = false;

if(type === "content_based") {
config.content_based = true;
Expand Down

0 comments on commit f0a4571

Please sign in to comment.