| var clusterfck = (function() { | |
| var module = { exports: {}}; | |
| var exports = module.exports; | |
| module.exports = (function() { | |
| var module = { exports: {}}; | |
| var exports = module.exports; | |
| var HierarchicalClustering = function(distance, merge, threshold) { | |
| this.distance = distance || clusterfck.EUCLIDEAN_DISTANCE; | |
| this.merge = merge || clusterfck.AVERAGE_LINKAGE; | |
| this.threshold = threshold == undefined ? Infinity : threshold; | |
| } | |
| HierarchicalClustering.prototype = { | |
| cluster : function(items, snapshot, snapshotCallback) { | |
| var clusters = []; | |
| var dists = []; // distances between each pair of clusters | |
| var mins = []; // closest cluster for each cluster | |
| var index = []; // keep a hash of all clusters by key | |
| for(var i = 0; i < items.length; i++) { | |
| var cluster = { canonical: items[i], key: i, index: i, size: 1}; | |
| clusters[i] = cluster; | |
| index[i] = cluster; | |
| dists[i] = []; | |
| mins[i] = 0; | |
| } | |
| for(var i = 0; i < clusters.length; i++) { | |
| for(var j = 0; j <= i; j++) { | |
| var dist = (i == j) ? Infinity : | |
| this.distance(clusters[i].canonical, clusters[j].canonical); | |
| dists[i][j] = dist; | |
| dists[j][i] = dist; | |
| if(dist < dists[i][mins[i]]) | |
| mins[i] = j; | |
| } | |
| } | |
| var merged = this.mergeClosest(clusters, dists, mins, index); | |
| var i = 0; | |
| while(merged) { | |
| if(snapshotCallback && (i % snapshot) == 0) | |
| snapshotCallback(clusters); | |
| merged = this.mergeClosest(clusters, dists, mins, index); | |
| i++; | |
| } | |
| clusters.forEach(function(cluster) { | |
| // clean up metadata used for clustering | |
| delete cluster.key; | |
| delete cluster.index; | |
| }); | |
| return clusters; | |
| }, | |
| mergeClosest: function(clusters, dists, mins, index) { | |
| // find two closest clusters from cached mins | |
| var minKey = 0, min = Infinity; | |
| for(var i = 0; i < clusters.length; i++) { | |
| var key = clusters[i].key, | |
| dist = dists[key][mins[key]]; | |
| if(dist < min) { | |
| minKey = key; | |
| min = dist; | |
| } | |
| } | |
| if(min >= this.threshold) | |
| return false; | |
| var c1 = index[minKey], | |
| c2 = index[mins[minKey]]; | |
| // merge two closest clusters | |
| var merged = { canonical: this.merge(c1.canonical, c2.canonical), | |
| left: c1, | |
| right: c2, | |
| key: c1.key, | |
| size: c1.size + c2.size }; | |
| clusters[c1.index] = merged; | |
| clusters.splice(c2.index, 1); | |
| index[c1.key] = merged; | |
| // update distances with new merged cluster | |
| for(var i = 0; i < clusters.length; i++) { | |
| var ci = clusters[i]; | |
| var dist; | |
| if(c1.key == ci.key) | |
| dist = Infinity; | |
| else if(this.merge == clusterfck.SINGLE_LINKAGE) { | |
| dist = dists[c1.key][ci.key]; | |
| if(dists[c1.key][ci.key] > dists[c2.key][ci.key]) | |
| dist = dists[c2.key][ci.key]; | |
| } | |
| else if(this.merge == clusterfck.COMPLETE_LINKAGE) { | |
| dist = dists[c1.key][ci.key]; | |
| if(dists[c1.key][ci.key] < dists[c2.key][ci.key]) | |
| dist = dists[c2.key][ci.key]; | |
| } | |
| else if(this.merge == clusterfck.AVERAGE_LINKAGE) { | |
| dist = (dists[c1.key][ci.key] * c1.size | |
| + dists[c2.key][ci.key] * c2.size) / (c1.size + c2.size); | |
| } | |
| else | |
| dist = this.distance(ci.canonical, c1.canonical); | |
| dists[c1.key][ci.key] = dists[ci.key][c1.key] = dist; | |
| } | |
| // update cached mins | |
| for(var i = 0; i < clusters.length; i++) { | |
| var key1 = clusters[i].key; | |
| if(mins[key1] == c1.key || mins[key1] == c2.key) { | |
| var min = key1; | |
| for(var j = 0; j < clusters.length; j++) { | |
| var key2 = clusters[j].key; | |
| if(dists[key1][key2] < dists[key1][min]) | |
| min = key2; | |
| } | |
| mins[key1] = min; | |
| } | |
| clusters[i].index = i; | |
| } | |
| // clean up metadata used for clustering | |
| delete c1.key; delete c2.key; | |
| delete c1.index; delete c2.index; | |
| return true; | |
| } | |
| } | |
| var SINGLE_LINKAGE = function(c1, c2) { return c1; }; | |
| var COMPLETE_LINKAGE = function(c1, c2) { return c1; }; | |
| var AVERAGE_LINKAGE = function(c1, c2) { return c1; }; | |
| var EUCLIDEAN_DISTANCE = function(v1, v2) { | |
| var total = 0; | |
| for(var i = 0; i < v1.length; i++) | |
| total += Math.pow(v2[i] - v1[i], 2) | |
| return Math.sqrt(total); | |
| } | |
| var MANHATTAN_DISTANCE = function(v1, v2) { | |
| var total = 0; | |
| for(var i = 0; i < v1.length ; i++) | |
| total += Math.abs(v2[i] - v1[i]) | |
| return total; | |
| } | |
| var MAX_DISTANCE = function(v1, v2) { | |
| var max = 0; | |
| for(var i = 0; i < v1.length; i++) | |
| max = Math.max(max , Math.abs(v2[i] - v1[i])); | |
| return max; | |
| } | |
| var hcluster = function(items, distance, merge, threshold, snapshot, snapshotCallback) { | |
| return (new HierarchicalClustering(distance, merge, threshold)) | |
| .cluster(items, snapshot, snapshotCallback); | |
| } | |
| clusterfck = { | |
| hcluster: hcluster, | |
| SINGLE_LINKAGE: SINGLE_LINKAGE, | |
| COMPLETE_LINKAGE: COMPLETE_LINKAGE, | |
| AVERAGE_LINKAGE: AVERAGE_LINKAGE, | |
| EUCLIDEAN_DISTANCE: EUCLIDEAN_DISTANCE, | |
| MANHATTAN_DISTANCE: MANHATTAN_DISTANCE, | |
| MAX_DISTANCE: MAX_DISTANCE | |
| }; | |
| module.exports = clusterfck; | |
| return module.exports; })(); | |
| return module.exports; })() |
| LABEL_SPACE_X = 250 | |
| LABEL_SPACE_Y = 50 | |
| svg = d3.select 'svg' | |
| width = svg.node().getBoundingClientRect().width | |
| height = svg.node().getBoundingClientRect().height | |
| # Group for zoomable content | |
| zoomable_layer = svg.append('g') | |
| # Zoom behavior definition | |
| zoom = d3.behavior.zoom() | |
| .scaleExtent [0,4] | |
| .on 'zoom', () -> | |
| zoomable_layer | |
| .attr | |
| transform: "translate(#{zoom.translate()})scale(#{zoom.scale()})" | |
| svg.call(zoom) | |
| matrix = zoomable_layer.append 'g' | |
| .attr 'transform', "translate(#{LABEL_SPACE_X},#{LABEL_SPACE_Y})" | |
| compare_obj = (a,b) -> | |
| if a.amount > b.amount | |
| return -1 | |
| if a.amount < b.amount | |
| return 1 | |
| return 0 | |
| sort_object_keys = (obj) -> | |
| keys = [] | |
| for k,v of obj | |
| keys.push {key: k, amount: v} | |
| keys.sort compare_obj | |
| CELL = 4 | |
| x = d3.scale.ordinal() | |
| y = d3.scale.ordinal() | |
| # color = d3.scale.category10() | |
| # color = d3.scale.ordinal() | |
| # .range(['#005','#A55']) | |
| color = () -> '#000' | |
| # File loading | |
| d3.csv "istituto.csv", (institutes) -> | |
| institutes.sort (a,b) -> d3.ascending(a.dipartimento_id, b.dipartimento_id) | |
| departments = d3.nest() | |
| .key (d) -> d.dipartimento_id | |
| .entries institutes | |
| x | |
| .domain(institutes.map (d) -> d.istituto_id) | |
| .rangeBands([0, CELL * institutes.length]) | |
| d3.csv "tema.csv", (thematics) -> | |
| thematics.sort (a,b) -> d3.ascending(a.area_progettuale_id, b.area_progettuale_id) | |
| areas = d3.nest() | |
| .key (d) -> d.area_progettuale_id | |
| .entries thematics | |
| y | |
| .domain(thematics.map (d) -> d.tema_id) | |
| .rangeBands([0, CELL * thematics.length]) | |
| # VERTICAL separators | |
| vseparators_x = [0] | |
| vseparators_x = vseparators_x.concat departments.map (d) -> x(d.values[d.values.length-1].istituto_id)+CELL # Position of last item of group | |
| vseparators = matrix.selectAll '.vseparator' | |
| .data vseparators_x | |
| vseparators.enter().append 'line' | |
| .attr | |
| class: 'vseparator' | |
| x1: (d) -> d | |
| x2: (d) -> d | |
| y1: -LABEL_SPACE_Y | |
| y2: CELL * thematics.length | |
| # HORIZONTAL separators | |
| hseparators_y = [0] | |
| hseparators_y = hseparators_y.concat areas.map (d) -> y(d.values[d.values.length-1].tema_id)+CELL # Position of last item of group | |
| hseparators = matrix.selectAll '.hseparator' | |
| .data hseparators_y | |
| hseparators.enter().append 'line' | |
| .attr | |
| class: 'hseparator' | |
| y1: (d) -> d | |
| y2: (d) -> d | |
| x1: -LABEL_SPACE_X | |
| x2: CELL * institutes.length | |
| d3.csv "istituto_tema.csv", (cells_data) -> | |
| # Objectify data structures | |
| institutes_index = {} | |
| institutes.forEach (d) -> | |
| institutes_index[d.istituto_id] = d | |
| d.cells = [] | |
| thematics_index = {} | |
| thematics.forEach (d) -> | |
| thematics_index[d.tema_id] = d | |
| d.cells = [] | |
| cells_data.forEach (d) -> | |
| d.istituto = institutes_index[d.istituto_id] | |
| d.tema = thematics_index[d.tema_id] | |
| d.istituto.cells.push d | |
| d.tema.cells.push d | |
| # Clustering | |
| # clusters = clusterfck.hcluster( | |
| # items, | |
| # ((a, b) -> | |
| # total = 0 | |
| # for i in [0...a.vector.length] | |
| # total += Math.pow(b.vector[i] - a.vector[i], 2) | |
| # Math.sqrt total), | |
| # clusterfck.SINGLE_LINKAGE | |
| # ) | |
| # tree = tree_utils.binary_to_std clusters | |
| # tree_utils.recursive_sort( | |
| # tree, | |
| # (a,b) -> b.key - a.key, | |
| # (n) -> | |
| # if n.children? | |
| # n.key = d3.min(n.children, (c) -> c.key) | |
| # else | |
| # n.key = n.value.vector.reduce (t, s) -> t + s | |
| # ) | |
| # matrix_data = tree_utils.get_leaves(tree).map (d) -> d.value | |
| # HORIZONTAL LABELS | |
| hlabels = matrix.selectAll '.hlabel' | |
| .data thematics | |
| hlabels.enter().append 'text' | |
| .text (d) -> d.tema_title.trim() #FIXME eliminate trim | |
| .attr | |
| class: 'hlabel' | |
| dy: '0.9em' | |
| dx: -1 | |
| y: (d) -> y(d.tema_id) | |
| fill: (d) -> color(d.area_progettuale_id) | |
| .style | |
| 'font-size': CELL-1 | |
| .on 'click', (d) -> | |
| cells_data.forEach (c) -> delete c.selected | |
| institutes.forEach (i) -> delete i.selected | |
| thematics.forEach (t) -> delete t.selected | |
| d.selected = true | |
| d.cells.forEach (c) -> | |
| c.selected = true | |
| c.istituto.selected = true | |
| redraw_highlighting() | |
| hlabels.exit().remove() | |
| # VERTICAL LABELS | |
| vlabels = matrix.selectAll '.vlabel' | |
| .data institutes | |
| enter_vlabels = vlabels.enter().append 'text' | |
| .text (d) -> d.sigla | |
| .attr | |
| class: 'vlabel' | |
| dy: '0.9em' | |
| dx: 1 | |
| transform: (d,i) -> "translate(#{x(d.istituto_id)},0) rotate(-90)" | |
| fill: (d) -> color(d.dipartimento_id) | |
| .style | |
| 'font-size': CELL-1 | |
| .on 'click', (d) -> | |
| cells_data.forEach (c) -> delete c.selected | |
| institutes.forEach (i) -> delete i.selected | |
| thematics.forEach (t) -> delete t.selected | |
| d.selected = true | |
| d.cells.forEach (c) -> | |
| c.selected = true | |
| c.tema.selected = true | |
| redraw_highlighting() | |
| enter_vlabels.append 'title' | |
| .text (d) -> "#{d.istituto_title.trim()}" | |
| vlabels.exit().remove() | |
| # CELLS | |
| cells = matrix.selectAll '.cell' | |
| .data cells_data, (d) -> d.id | |
| enter_cells = cells.enter().append 'circle' | |
| .attr | |
| class: 'cell' | |
| cy: (d) -> y(d.tema_id) + CELL/2 | |
| cx: (d) -> x(d.istituto_id) + CELL/2 | |
| r: CELL/2 | |
| .on 'click', (d) -> | |
| cells_data.forEach (c) -> delete c.selected | |
| institutes.forEach (i) -> delete i.selected | |
| thematics.forEach (t) -> delete t.selected | |
| d.selected = true | |
| d.istituto.selected = true | |
| d.tema.selected = true | |
| redraw_highlighting() | |
| enter_cells.append 'title' | |
| .text (d) -> "#{d.istituto.istituto_title}\n#{d.tema.tema_title.trim()}" | |
| cells.exit().remove() | |
| redraw_highlighting = () -> | |
| matrix.selectAll '.cell' | |
| .classed 'selected', (d) -> d.selected | |
| matrix.selectAll '.hlabel' | |
| .classed 'selected', (d) -> d.selected | |
| matrix.selectAll '.vlabel' | |
| .classed 'selected', (d) -> d.selected |
| svg = d3.select('svg') | |
| width = svg.node().getBoundingClientRect().width | |
| height = svg.node().getBoundingClientRect().height | |
| # append a group for zoomable content | |
| zoomable_layer = svg.append('g') | |
| # define a zoom behavior | |
| zoom = d3.behavior.zoom() | |
| .scaleExtent([0.3,4]) | |
| .on 'zoom', () -> | |
| zoomable_layer | |
| .attr | |
| transform: "translate(#{zoom.translate()})scale(#{zoom.scale()})" | |
| svg.call(zoom) | |
| simcolor = d3.scale.linear() | |
| .domain([0,1]) | |
| .range([d3.hcl(20,0,100),d3.hcl(20,75,25)]) | |
| .interpolate(d3.interpolateHcl) | |
| matrix = zoomable_layer.append('g') | |
| .attr('transform', 'translate(125,170)scale(0.4)') | |
| SIZE = 13 | |
| d3.json 'poetq.json', (data) -> | |
| items = [] | |
| predicates_data = [] | |
| instances_data = [] | |
| data.forEach (e1) -> | |
| vector = [] | |
| instances_data.push e1.k1 | |
| e1.similarities.forEach (e2) -> | |
| vector.push e2.sim | |
| if e2.k2 not in predicates_data | |
| predicates_data.push e2.k2 | |
| items.push vector | |
| console.debug 'Computing hierarchical clustering...' | |
| clusters = clusterfck.hcluster( | |
| items, | |
| clusterfck.EUCLIDEAN_DISTANCE, | |
| clusterfck.SINGLE_LINKAGE | |
| ) | |
| tree = tree_utils.binary_to_std(clusters) | |
| matrix_data = tree_utils.get_leaves(tree).map (d) -> d.value | |
| # COLUMNS | |
| mouseover = () -> | |
| d3.select(this) | |
| .style | |
| opacity: 0.8 | |
| mouseout = () -> | |
| d3.select(this) | |
| .style | |
| opacity: 1 | |
| columns = matrix.selectAll('.column') | |
| .data(matrix_data) | |
| enter_columns = columns.enter().append('g') | |
| .attr('class', 'column') | |
| .attr('transform', (d,i) -> "translate(#{SIZE*i},0)") | |
| .on('mouseover', mouseover) | |
| .on('mouseout', mouseout) | |
| # CELLS | |
| cells = columns.selectAll('.cell') | |
| .data((column) -> column) | |
| cells.enter().append('rect') | |
| .attr('class', 'cell') | |
| .attr('width', SIZE) | |
| .attr('height', SIZE) | |
| .attr('transform', (d, i) -> "translate(0,#{SIZE*i})") | |
| .attr('fill', (d) -> if d is 0 then 'gray' else 'black') | |
| matrix.append('rect') | |
| .attr('class','border') | |
| .attr('x', -1) | |
| .attr('y', -1) | |
| .attr('width', SIZE*matrix_data.length+2) | |
| .attr('height', SIZE*predicates_data.length+2) | |
| # HORIZONTAL LABELS | |
| hlabels = matrix.selectAll('.hlabel') | |
| .data(predicates_data) | |
| hlabels.enter().append('a') | |
| .attr('xlink:href', (d) -> d.k1) | |
| .append('text') | |
| .attr('class','hlabel') | |
| .text((d) -> d) | |
| .attr('transform', (d,i) -> "translate(0,#{SIZE*i})") | |
| .attr('dy', '1em') | |
| .attr('dx', -6) | |
| # VERTICAL LABELS | |
| vlabels = matrix.selectAll('.vlabel') | |
| .data(instances_data) | |
| vlabels.enter().append('a') | |
| .attr('xlink:href', (d) -> d.k1) | |
| .append('text') | |
| .attr('class','vlabel') | |
| .text((d) -> d.replace('http://dbpedia.org/resource/','')) | |
| .attr('transform', (d,i) -> "translate(#{SIZE*i},0) rotate(-90)") | |
| .attr('dy', '1em') | |
| .attr('dx', 6) | |
| html, body { | |
| padding: 0; | |
| margin: 0; | |
| width: 100%; | |
| height: 100%; | |
| } | |
| svg { | |
| width: 100%; | |
| height: 100%; | |
| background: white; | |
| } | |
| .border, .vseparator, .hseparator { | |
| stroke-width: 1; | |
| stroke: #DDD; | |
| fill: none; | |
| vector-effect: non-scaling-stroke; | |
| } | |
| .hlabel, .vlabel { | |
| font-family: sans-serif; | |
| } | |
| .hlabel { | |
| text-anchor: end; | |
| } | |
| .vlabel { | |
| text-anchor: start; | |
| } | |
| .selected { | |
| fill: red; | |
| } | |
| .cell { | |
| opacity: 0.7; | |
| } | |
| .cell:hover { | |
| opacity: 1; | |
| } | |
| select { | |
| position: absolute; | |
| top: 5px; | |
| left: 5px; | |
| } |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="description" content="DIITET matrix" /> | |
| <title>DIITET matrix</title> | |
| <link type="text/css" href="index.css" rel="stylesheet"/> | |
| <script src="http://d3js.org/d3.v3.min.js"></script> | |
| <script src="//wafi.iit.cnr.it/webvis/tmp/clusterfck.js"></script> | |
| <script src="//wafi.iit.cnr.it/webvis/libs/jigmaps/zip.js"></script> | |
| <script src="//wafi.iit.cnr.it/webvis/libs/jigmaps/tree_utils.js"></script> | |
| </head> | |
| <body> | |
| <svg></svg> | |
| <script src="index.js"></script> | |
| </body> | |
| </html> |
| // Generated by CoffeeScript 1.10.0 | |
| (function() { | |
| var CELL, LABEL_SPACE_X, LABEL_SPACE_Y, color, compare_obj, height, matrix, redraw_highlighting, sort_object_keys, svg, width, x, y, zoom, zoomable_layer; | |
| LABEL_SPACE_X = 250; | |
| LABEL_SPACE_Y = 50; | |
| svg = d3.select('svg'); | |
| width = svg.node().getBoundingClientRect().width; | |
| height = svg.node().getBoundingClientRect().height; | |
| zoomable_layer = svg.append('g'); | |
| zoom = d3.behavior.zoom().scaleExtent([0, 4]).on('zoom', function() { | |
| return zoomable_layer.attr({ | |
| transform: "translate(" + (zoom.translate()) + ")scale(" + (zoom.scale()) + ")" | |
| }); | |
| }); | |
| svg.call(zoom); | |
| matrix = zoomable_layer.append('g').attr('transform', "translate(" + LABEL_SPACE_X + "," + LABEL_SPACE_Y + ")"); | |
| compare_obj = function(a, b) { | |
| if (a.amount > b.amount) { | |
| return -1; | |
| } | |
| if (a.amount < b.amount) { | |
| return 1; | |
| } | |
| return 0; | |
| }; | |
| sort_object_keys = function(obj) { | |
| var k, keys, v; | |
| keys = []; | |
| for (k in obj) { | |
| v = obj[k]; | |
| keys.push({ | |
| key: k, | |
| amount: v | |
| }); | |
| } | |
| return keys.sort(compare_obj); | |
| }; | |
| CELL = 4; | |
| x = d3.scale.ordinal(); | |
| y = d3.scale.ordinal(); | |
| color = function() { | |
| return '#000'; | |
| }; | |
| d3.csv("istituto.csv", function(institutes) { | |
| var departments; | |
| institutes.sort(function(a, b) { | |
| return d3.ascending(a.dipartimento_id, b.dipartimento_id); | |
| }); | |
| departments = d3.nest().key(function(d) { | |
| return d.dipartimento_id; | |
| }).entries(institutes); | |
| x.domain(institutes.map(function(d) { | |
| return d.istituto_id; | |
| })).rangeBands([0, CELL * institutes.length]); | |
| return d3.csv("tema.csv", function(thematics) { | |
| var areas, hseparators, hseparators_y, vseparators, vseparators_x; | |
| thematics.sort(function(a, b) { | |
| return d3.ascending(a.area_progettuale_id, b.area_progettuale_id); | |
| }); | |
| areas = d3.nest().key(function(d) { | |
| return d.area_progettuale_id; | |
| }).entries(thematics); | |
| y.domain(thematics.map(function(d) { | |
| return d.tema_id; | |
| })).rangeBands([0, CELL * thematics.length]); | |
| vseparators_x = [0]; | |
| vseparators_x = vseparators_x.concat(departments.map(function(d) { | |
| return x(d.values[d.values.length - 1].istituto_id) + CELL; | |
| })); | |
| vseparators = matrix.selectAll('.vseparator').data(vseparators_x); | |
| vseparators.enter().append('line').attr({ | |
| "class": 'vseparator', | |
| x1: function(d) { | |
| return d; | |
| }, | |
| x2: function(d) { | |
| return d; | |
| }, | |
| y1: -LABEL_SPACE_Y, | |
| y2: CELL * thematics.length | |
| }); | |
| hseparators_y = [0]; | |
| hseparators_y = hseparators_y.concat(areas.map(function(d) { | |
| return y(d.values[d.values.length - 1].tema_id) + CELL; | |
| })); | |
| hseparators = matrix.selectAll('.hseparator').data(hseparators_y); | |
| hseparators.enter().append('line').attr({ | |
| "class": 'hseparator', | |
| y1: function(d) { | |
| return d; | |
| }, | |
| y2: function(d) { | |
| return d; | |
| }, | |
| x1: -LABEL_SPACE_X, | |
| x2: CELL * institutes.length | |
| }); | |
| return d3.csv("istituto_tema.csv", function(cells_data) { | |
| var cells, enter_cells, enter_vlabels, hlabels, institutes_index, thematics_index, vlabels; | |
| institutes_index = {}; | |
| institutes.forEach(function(d) { | |
| institutes_index[d.istituto_id] = d; | |
| return d.cells = []; | |
| }); | |
| thematics_index = {}; | |
| thematics.forEach(function(d) { | |
| thematics_index[d.tema_id] = d; | |
| return d.cells = []; | |
| }); | |
| cells_data.forEach(function(d) { | |
| d.istituto = institutes_index[d.istituto_id]; | |
| d.tema = thematics_index[d.tema_id]; | |
| d.istituto.cells.push(d); | |
| return d.tema.cells.push(d); | |
| }); | |
| hlabels = matrix.selectAll('.hlabel').data(thematics); | |
| hlabels.enter().append('text').text(function(d) { | |
| return d.tema_title.trim(); | |
| }).attr({ | |
| "class": 'hlabel', | |
| dy: '0.9em', | |
| dx: -1, | |
| y: function(d) { | |
| return y(d.tema_id); | |
| }, | |
| fill: function(d) { | |
| return color(d.area_progettuale_id); | |
| } | |
| }).style({ | |
| 'font-size': CELL - 1 | |
| }).on('click', function(d) { | |
| cells_data.forEach(function(c) { | |
| return delete c.selected; | |
| }); | |
| institutes.forEach(function(i) { | |
| return delete i.selected; | |
| }); | |
| thematics.forEach(function(t) { | |
| return delete t.selected; | |
| }); | |
| d.selected = true; | |
| d.cells.forEach(function(c) { | |
| c.selected = true; | |
| return c.istituto.selected = true; | |
| }); | |
| return redraw_highlighting(); | |
| }); | |
| hlabels.exit().remove(); | |
| vlabels = matrix.selectAll('.vlabel').data(institutes); | |
| enter_vlabels = vlabels.enter().append('text').text(function(d) { | |
| return d.sigla; | |
| }).attr({ | |
| "class": 'vlabel', | |
| dy: '0.9em', | |
| dx: 1, | |
| transform: function(d, i) { | |
| return "translate(" + (x(d.istituto_id)) + ",0) rotate(-90)"; | |
| }, | |
| fill: function(d) { | |
| return color(d.dipartimento_id); | |
| } | |
| }).style({ | |
| 'font-size': CELL - 1 | |
| }).on('click', function(d) { | |
| cells_data.forEach(function(c) { | |
| return delete c.selected; | |
| }); | |
| institutes.forEach(function(i) { | |
| return delete i.selected; | |
| }); | |
| thematics.forEach(function(t) { | |
| return delete t.selected; | |
| }); | |
| d.selected = true; | |
| d.cells.forEach(function(c) { | |
| c.selected = true; | |
| return c.tema.selected = true; | |
| }); | |
| return redraw_highlighting(); | |
| }); | |
| enter_vlabels.append('title').text(function(d) { | |
| return "" + (d.istituto_title.trim()); | |
| }); | |
| vlabels.exit().remove(); | |
| cells = matrix.selectAll('.cell').data(cells_data, function(d) { | |
| return d.id; | |
| }); | |
| enter_cells = cells.enter().append('circle').attr({ | |
| "class": 'cell', | |
| cy: function(d) { | |
| return y(d.tema_id) + CELL / 2; | |
| }, | |
| cx: function(d) { | |
| return x(d.istituto_id) + CELL / 2; | |
| }, | |
| r: CELL / 2 | |
| }).on('click', function(d) { | |
| cells_data.forEach(function(c) { | |
| return delete c.selected; | |
| }); | |
| institutes.forEach(function(i) { | |
| return delete i.selected; | |
| }); | |
| thematics.forEach(function(t) { | |
| return delete t.selected; | |
| }); | |
| d.selected = true; | |
| d.istituto.selected = true; | |
| d.tema.selected = true; | |
| return redraw_highlighting(); | |
| }); | |
| enter_cells.append('title').text(function(d) { | |
| return d.istituto.istituto_title + "\n" + (d.tema.tema_title.trim()); | |
| }); | |
| return cells.exit().remove(); | |
| }); | |
| }); | |
| }); | |
| redraw_highlighting = function() { | |
| matrix.selectAll('.cell').classed('selected', function(d) { | |
| return d.selected; | |
| }); | |
| matrix.selectAll('.hlabel').classed('selected', function(d) { | |
| return d.selected; | |
| }); | |
| return matrix.selectAll('.vlabel').classed('selected', function(d) { | |
| return d.selected; | |
| }); | |
| }; | |
| }).call(this); |
| istituto_id | istituto_title | sigla | dipartimento_id | |
|---|---|---|---|---|
| i_1 | Istituto di Informatica e Telematica | IIT | 1 | |
| i_2 | Istituto di Scienze e Tecnologie Informatiche | ISTI | 1 | |
| i_6 | Istituto Nazionale per Studi ed Esperienze di Architettura Navale | INSEAN | 1 | |
| i_15 | Istituto di Ricerca per la Protezione Idrogeologica | IRPI | 4 | |
| i_16 | Istituto di Geologia Ambientale e Geoingegneria | IGAG | 4 | |
| i_19 | Istituto di Scienze Marine | ISMAR | 4 | |
| i_20 | Istituto di Ricerca sulle Acque | IRSA | 4 | |
| i_21 | Istituto sull'Inquinamento Atmosferico | IIA | 4 | |
| i_22 | Istituto di Scienze dell'Atmosfera e del Clima | ISAC | 4 | |
| i_23 | Istituto di Metodologie per l'Analisi Ambientale | IMAA | 4 | |
| i_24 | Istituto per l'Ambiente Marino | IAMC | 4 | |
| i_25 | Istituto per la Dinamica dei Processi Ambientali | IDPA | 4 | |
| i_26 | Istituto di Geoscienze e Georisorse | IGG | 4 | |
| i_27 | Istituto di Biologia Agro-Ambientale e Forestale | IBAF | 4 | |
| i_28 | Istituto di Fisica del Plasma \'Piero Caldirola\' | IFP | 1 | |
| i_29 | Istituto Gas Ionizzati | IGI | 1 | |
| i_31 | Istituto di Ricerche sulla Combustione | IRC | 1 | |
| i_32 | Istituto di Tecnologie Avanzate per l'Energia \'Nicola Giordano\' | ITAE | 1 | |
| i_33 | Istituto Motori | IM | 1 | |
| i_34 | Istituto per il sistema produzione animale in ambiente Mediterraneo | ISPAAM | 5 | |
| i_35 | Istituto di Biologia e Biotecnologia Agraria | IBBA | 5 | |
| i_36 | Istituto di Biometeorologia | IBIMET | 5 | |
| i_37 | Istituto per i Sistemi Agricoli e Forestali del Mediterraneo | ISAFoM | 5 | |
| i_38 | Istituto per la Protezione Sostenibile delle Piante | IPSP | 5 | |
| i_39 | Istituto di Bioscienze e Biorisorse | IBBR | 5 | |
| i_40 | Istituto di Scienze delle Produzioni Alimentari | ISPA | 5 | |
| i_41 | Istituto per la Valorizzazione del Legno e delle Specie Arboree | IVALSA | 5 | |
| i_42 | Istituto di Biostrutture e Bioimmagini | IBB | 6 | |
| i_43 | Istituto di Scienze Neurologiche | ISN | 6 | |
| i_44 | Istituto di Farmacologia Traslazionale | IFT | 6 | |
| i_45 | Istituto di Bioimmagini e Fisiologia Molecolare | IBFM | 6 | |
| i_46 | Istituto di Genetica Molecolare | IGM | 6 | |
| i_47 | Istituto di Tecnologie Biomediche | ITB | 6 | |
| i_48 | Istituto di Biomedicina e di Immunologia Molecolare \'Alberto Monroy\' | IBIM | 6 | |
| i_49 | Istituto di Fisiologia Clinica | IFC | 6 | |
| i_50 | Istituto di Neuroscienze | IN | 6 | |
| i_51 | Istituto di Ricerca Genetica e Biomedica | IRGB | 6 | |
| i_52 | Istituto di Biochimica delle Proteine | IBP | 6 | |
| i_53 | Istituto di Genetica e Biofisica \'Adriano Buzzati Traverso\' | IGB | 6 | |
| i_54 | istituto di Biologia Cellulare e Neurobiologia | IBCN | 6 | |
| i_55 | Istituto di Biologia e Patologia Molecolari | IBPM | 6 | |
| i_56 | Istituto per l'Endocrinologia e l'Oncologia \'Gaetano Salvatore\' | IEOS | 6 | |
| i_57 | Istituto di Biomembrane e Bioenergetica | IBBE | 6 | |
| i_58 | Istituto per la Tecnologia delle Membrane | ITM | 3 | |
| i_59 | Istituto per lo Studio dei Materiali Nanostrutturati | ISMN | 3 | |
| i_60 | Istituto di Metodologie Chimiche | IMC | 3 | |
| i_61 | Istituto per lo Studio delle Macromolecole | ISMAC | 3 | |
| i_62 | Istituto per i Polimeri, Compositi e Biomateriali | IPCB | 3 | |
| i_63 | Istituto di Scienze e Tecnologie Molecolari | ISTM | 3 | |
| i_64 | Istituto per i Processi Chimico-Fisici | IPCF | 3 | |
| i_65 | Istituto di Chimica Biomolecolare | ICB | 3 | |
| i_66 | Istituto di Chimica dei Composti Organo Metallici | ICCOm | 3 | |
| i_67 | Istituto per la Sintesi Organica e la Fotoreattività | ISOF | 3 | |
| i_68 | Istituto di Scienza e Tecnologia dei Materiali Ceramici | ISTEC | 3 | |
| i_69 | Istituto di Chimica del Riconoscimento Molecolare | ICRM | 3 | |
| i_70 | Istituto di Cristallografia | IC | 3 | |
| i_71 | Istituto per l'Energetica e le Interfasi | IENI | 3 | |
| i_72 | Istituto Officina dei Materiali | IOM | 2 | |
| i_73 | Istituto Superconduttori, Materiali innovativi e dispositivi | SPIN | 2 | |
| i_74 | Istituto di Nanoscienze | NANO | 2 | |
| i_75 | Istituto Nazionale di Ottica | INO | 2 | |
| i_76 | Istituto di Struttura della Materia | ISM | 2 | |
| i_77 | Istituto dei Sistemi Complessi | ISC | 2 | |
| i_78 | Istituto di Biofisica | IBF | 2 | |
| i_79 | Istituto di Scienze Applicate e Sistemi Intelligenti \'Eduardo Caianiello\' | ISASI | 2 | |
| i_80 | Istituto di Fisica Applicata \'Nello Carrara\' | IFAC | 1 | |
| i_81 | Istituto di Nanotecnologia | NANOTEC | 2 | |
| i_82 | Istituto di Fotonica e Nanotecnologie | IFN | 2 | |
| i_83 | Istituto per la Microelettronica e Microsistemi | IMM | 2 | |
| i_84 | Istituto dei Materiali per l'Elettronica ed il Magnetismo | IMEM | 1 | |
| i_85 | Istituto di Studi sui Sistemi Intelligenti per l'Automazione | ISSIA | 1 | |
| i_86 | Istituto per le Macchine Agricole e Movimento Terra | IMAMOTER | 1 | |
| i_87 | Istituto di Tecnologie Industriali e Automazione | ITIA | 1 | |
| i_88 | Istituto per le Tecnologie della Costruzione | ITC | 1 | |
| i_89 | Istituto di Acustica e Sensoristica \'Orso Mario Corbino\' | IDASC | 1 | |
| i_90 | Istituto per il Rilevamento Elettromagnetico dell'Ambiente | IREA | 1 | |
| i_91 | Istituto di Elettronica e di Ingegneria dell'Informazione e delle Telecomunicazioni | IEIIT | 1 | |
| i_92 | Istituto di Calcolo e Reti ad Alte Prestazioni | ICAR | 1 | |
| i_93 | Istituto per le Applicazioni del Calcolo \'Mauro Picone\' | IAC | 1 | |
| i_94 | Istituto di Analisi dei Sistemi ed Informatica \'Antonio Ruberti\' | IASI | 1 | |
| i_95 | Istituto di Matematica Applicata e Tecnologie Informatiche | IMATI | 1 | |
| i_96 | Istituto di Studi sul Mediterraneo Antico | ISMA | 7 | |
| i_97 | Centro di Responsabilità di Attività Scientifica | IDAIC | 7 | |
| i_98 | Istituto per i Beni Archeologici e Monumentali | IBAM | 7 | |
| i_99 | Istituto per le Tecnologie Applicate ai Beni Culturali | ITABC | 7 | |
| i_100 | Istituto per la Conservazione e Valorizzazione dei Beni Culturali | ICVBC | 7 | |
| i_101 | Istituto di Scienze e Tecnologie della Cognizione | ISTC | 7 | |
| i_102 | Istituto per le Tecnologie Didattiche | ITD | 7 | |
| i_103 | Istituto di Studi Giuridici Internazionali | ISGI | 7 | |
| i_104 | Istituto di Opera del Vocabolario Italiano | OVI | 7 | |
| i_105 | Istituto di Teoria e Tecniche dell'Informazione Giuridica | ITTIG | 7 | |
| i_106 | Istituto di Linguistica Computazionale \'Antonio Zampolli\' | ILC | 7 | |
| i_107 | Istituto di Studi sulle Società del Mediterraneo | ISSM | 7 | |
| i_108 | Istituto di Ricerca su Innovazione e Servizi per lo Sviluppo | IRISS | 7 | |
| i_109 | Istituto di Storia dell'Europa Mediterranea | ISEM | 7 | |
| i_110 | Istituto di Studi sui Sistemi Regionali Federali e sulle Autonomie \'Massimo Severo Giannini\' | ISSIRFA | 7 | |
| i_111 | Istituto di Ricerche sulla Popolazione e le Politiche Sociali | IRPPS | 7 | |
| i_112 | Istituto di Ricerca sui Sistemi Giudiziari | IRSIG | 7 | |
| i_113 | Istituto per il Lessico Intellettuale Europeo e Storia delle Idee | ILIESI | 7 | |
| i_114 | Istituto per la Storia del Pensiero Filosofico e Scientifico Moderno | ISPF | 7 | |
| i_115 | Istituto di Ricerca sulla Crescita Economica Sostenibile | IRCRES | 7 |
| id | istituto_id | tema_id | |
|---|---|---|---|
| 37 | i_1 | t_28 | |
| 38 | i_85 | t_28 | |
| 39 | i_94 | t_28 | |
| 40 | i_33 | t_28 | |
| 41 | i_91 | t_28 | |
| 42 | i_2 | t_29 | |
| 43 | i_31 | t_30 | |
| 44 | i_31 | t_31 | |
| 45 | i_33 | t_31 | |
| 46 | i_1 | t_31 | |
| 47 | i_2 | t_32 | |
| 48 | i_94 | t_33 | |
| 49 | i_94 | t_34 | |
| 51 | i_91 | t_31 | |
| 52 | i_95 | t_36 | |
| 53 | i_29 | t_41 | |
| 54 | i_28 | t_42 | |
| 55 | i_28 | t_43 | |
| 56 | i_29 | t_43 | |
| 57 | i_29 | t_44 | |
| 58 | i_85 | t_47 | |
| 59 | i_93 | t_47 | |
| 60 | i_80 | t_47 | |
| 61 | i_89 | t_47 | |
| 62 | i_90 | t_47 | |
| 63 | i_92 | t_47 | |
| 64 | i_2 | t_47 | |
| 65 | i_88 | t_47 | |
| 66 | i_91 | t_48 | |
| 67 | i_80 | t_48 | |
| 68 | i_93 | t_48 | |
| 69 | i_94 | t_48 | |
| 70 | i_65 | t_48 | |
| 71 | i_92 | t_48 | |
| 72 | i_85 | t_48 | |
| 73 | i_95 | t_48 | |
| 74 | i_2 | t_48 | |
| 75 | i_88 | t_48 | |
| 76 | i_80 | t_49 | |
| 77 | i_94 | t_49 | |
| 78 | i_85 | t_49 | |
| 79 | i_90 | t_49 | |
| 80 | i_95 | t_49 | |
| 81 | i_93 | t_28 | |
| 82 | i_2 | t_28 | |
| 83 | i_32 | t_28 | |
| 84 | i_92 | t_29 | |
| 85 | i_89 | t_29 | |
| 86 | i_32 | t_29 | |
| 87 | i_93 | t_30 | |
| 88 | i_2 | t_30 | |
| 89 | i_89 | t_30 | |
| 90 | i_32 | t_31 | |
| 91 | i_85 | t_31 | |
| 92 | i_2 | t_31 | |
| 93 | i_1 | t_32 | |
| 94 | i_92 | t_32 | |
| 95 | i_90 | t_32 | |
| 96 | i_2 | t_33 | |
| 97 | i_92 | t_33 | |
| 98 | i_91 | t_34 | |
| 99 | i_90 | t_34 | |
| 100 | i_2 | t_34 | |
| 101 | i_94 | t_35 | |
| 102 | i_93 | t_35 | |
| 103 | i_85 | t_35 | |
| 104 | i_1 | t_35 | |
| 105 | i_2 | t_35 | |
| 106 | i_94 | t_38 | |
| 107 | i_1 | t_38 | |
| 108 | i_93 | t_39 | |
| 109 | i_95 | t_39 | |
| 110 | i_33 | t_39 | |
| 111 | i_94 | t_37 | |
| 112 | i_91 | t_37 | |
| 113 | i_94 | t_36 | |
| 114 | i_93 | t_36 | |
| 115 | i_1 | t_36 | |
| 116 | i_92 | t_36 | |
| 117 | i_6 | t_36 | |
| 118 | i_2 | t_36 | |
| 128 | i_6 | t_50 | |
| 129 | i_89 | t_50 | |
| 130 | i_90 | t_50 | |
| 131 | i_31 | t_50 | |
| 132 | i_32 | t_50 | |
| 133 | i_2 | t_50 | |
| 134 | i_85 | t_51 | |
| 135 | i_6 | t_51 | |
| 136 | i_2 | t_51 | |
| 137 | i_90 | t_51 | |
| 138 | i_32 | t_52 | |
| 139 | i_33 | t_52 | |
| 140 | i_90 | t_53 | |
| 141 | i_6 | t_53 | |
| 142 | i_92 | t_54 | |
| 143 | i_93 | t_55 | |
| 144 | i_1 | t_55 | |
| 145 | i_95 | t_55 | |
| 146 | i_94 | t_55 | |
| 147 | i_85 | t_55 | |
| 148 | i_92 | t_55 | |
| 149 | i_31 | t_56 | |
| 150 | i_91 | t_57 | |
| 151 | i_93 | t_57 | |
| 152 | i_95 | t_57 | |
| 153 | i_94 | t_57 | |
| 154 | i_80 | t_58 | |
| 155 | i_90 | t_58 | |
| 157 | i_89 | t_60 | |
| 158 | i_91 | t_60 | |
| 159 | i_89 | t_59 | |
| 160 | i_2 | t_60 | |
| 161 | i_91 | t_59 | |
| 162 | i_84 | t_60 | |
| 163 | i_28 | t_59 | |
| 164 | i_90 | t_59 | |
| 165 | i_92 | t_61 | |
| 166 | i_91 | t_61 | |
| 167 | i_80 | t_61 | |
| 168 | i_1 | t_61 | |
| 169 | i_85 | t_61 | |
| 170 | i_2 | t_61 | |
| 171 | i_88 | t_61 | |
| 172 | i_87 | t_61 | |
| 173 | i_94 | t_62 | |
| 174 | i_92 | t_62 | |
| 175 | i_91 | t_62 | |
| 176 | i_1 | t_62 | |
| 177 | i_80 | t_62 | |
| 178 | i_2 | t_62 | |
| 179 | i_93 | t_63 | |
| 180 | i_94 | t_63 | |
| 181 | i_92 | t_63 | |
| 182 | i_91 | t_63 | |
| 183 | i_1 | t_63 | |
| 184 | i_85 | t_63 | |
| 185 | i_95 | t_63 | |
| 186 | i_2 | t_63 | |
| 187 | i_88 | t_63 | |
| 188 | i_87 | t_63 | |
| 189 | i_93 | t_64 | |
| 190 | i_91 | t_64 | |
| 191 | i_80 | t_64 | |
| 192 | i_95 | t_64 | |
| 193 | i_84 | t_64 | |
| 194 | i_90 | t_64 | |
| 195 | i_91 | t_65 | |
| 196 | i_80 | t_65 | |
| 197 | i_84 | t_65 | |
| 198 | i_90 | t_65 | |
| 199 | i_95 | t_66 | |
| 200 | i_87 | t_66 | |
| 201 | i_80 | t_67 | |
| 202 | i_85 | t_67 | |
| 203 | i_87 | t_67 | |
| 204 | i_101 | t_67 | |
| 205 | i_94 | t_68 | |
| 206 | i_95 | t_68 | |
| 207 | i_85 | t_68 | |
| 208 | i_87 | t_68 | |
| 209 | i_91 | t_69 | |
| 210 | i_94 | t_69 | |
| 211 | i_85 | t_69 | |
| 212 | i_94 | t_70 | |
| 213 | i_85 | t_70 | |
| 214 | i_2 | t_70 | |
| 215 | i_87 | t_70 | |
| 216 | i_92 | t_67 | |
| 217 | i_94 | t_71 | |
| 218 | i_91 | t_71 | |
| 219 | i_84 | t_71 | |
| 220 | i_85 | t_71 | |
| 221 | i_87 | t_71 | |
| 222 | i_93 | t_72 | |
| 223 | i_32 | t_72 | |
| 224 | i_91 | t_72 | |
| 225 | i_80 | t_72 | |
| 226 | i_84 | t_72 | |
| 227 | i_2 | t_72 | |
| 228 | i_6 | t_72 | |
| 229 | i_80 | t_73 | |
| 230 | i_93 | t_73 | |
| 231 | i_84 | t_73 | |
| 232 | i_90 | t_73 | |
| 233 | i_85 | t_73 | |
| 234 | i_93 | t_74 | |
| 235 | i_94 | t_74 | |
| 236 | i_80 | t_74 | |
| 237 | i_90 | t_74 | |
| 238 | i_85 | t_74 | |
| 239 | i_94 | t_75 | |
| 240 | i_93 | t_75 | |
| 241 | i_80 | t_75 | |
| 242 | i_90 | t_75 | |
| 243 | i_87 | t_75 | |
| 244 | i_85 | t_75 | |
| 245 | i_91 | t_76 | |
| 246 | i_6 | t_76 | |
| 247 | i_87 | t_76 | |
| 248 | i_32 | t_76 | |
| 249 | i_90 | t_76 | |
| 250 | i_2 | t_76 | |
| 251 | i_91 | t_77 | |
| 252 | i_84 | t_77 | |
| 253 | i_80 | t_77 | |
| 254 | i_90 | t_77 | |
| 255 | i_91 | t_78 | |
| 256 | i_2 | t_78 | |
| 257 | i_1 | t_78 | |
| 258 | i_86 | t_78 | |
| 259 | i_85 | t_78 | |
| 260 | i_92 | t_79 | |
| 261 | i_93 | t_79 | |
| 262 | i_2 | t_79 | |
| 263 | i_95 | t_79 | |
| 264 | i_1 | t_79 | |
| 265 | i_94 | t_80 | |
| 266 | i_2 | t_80 | |
| 275 | i_89 | t_82 | |
| 276 | i_91 | t_82 | |
| 277 | i_90 | t_82 | |
| 278 | i_84 | t_82 | |
| 279 | i_85 | t_82 | |
| 280 | i_95 | t_83 | |
| 281 | i_90 | t_83 | |
| 282 | i_85 | t_83 | |
| 283 | i_91 | t_84 | |
| 284 | i_80 | t_84 | |
| 285 | i_95 | t_84 | |
| 286 | i_90 | t_84 | |
| 287 | i_89 | t_85 | |
| 288 | i_80 | t_85 | |
| 289 | i_1 | t_85 | |
| 290 | i_95 | t_85 | |
| 291 | i_84 | t_85 | |
| 292 | i_90 | t_85 | |
| 293 | i_85 | t_85 | |
| 294 | i_2 | t_85 | |
| 295 | i_94 | t_86 | |
| 296 | i_2 | t_86 | |
| 297 | i_29 | t_86 | |
| 298 | i_95 | t_86 | |
| 299 | i_1 | t_86 | |
| 300 | i_92 | t_86 | |
| 301 | i_93 | t_87 | |
| 302 | i_91 | t_87 | |
| 303 | i_94 | t_87 | |
| 304 | i_92 | t_87 | |
| 305 | i_1 | t_87 | |
| 306 | i_101 | t_87 | |
| 307 | i_88 | t_87 | |
| 308 | i_95 | t_87 | |
| 309 | i_2 | t_87 | |
| 310 | i_2 | t_88 | |
| 311 | i_2 | t_89 | |
| 312 | i_94 | t_89 | |
| 313 | i_1 | t_89 | |
| 314 | i_95 | t_89 | |
| 315 | i_92 | t_89 | |
| 316 | i_88 | t_89 | |
| 317 | i_1 | t_90 | |
| 318 | i_102 | t_90 | |
| 319 | i_95 | t_91 | |
| 320 | i_1 | t_91 | |
| 321 | i_102 | t_91 | |
| 322 | i_87 | t_91 | |
| 323 | i_1 | t_92 | |
| 324 | i_2 | t_92 | |
| 325 | i_88 | t_92 | |
| 326 | i_92 | t_92 | |
| 327 | i_106 | t_89 | |
| 328 | i_95 | t_94 | |
| 329 | i_88 | t_96 | |
| 330 | i_32 | t_98 | |
| 331 | i_32 | t_97 | |
| 332 | i_85 | t_97 | |
| 333 | i_32 | t_99 | |
| 334 | i_88 | t_95 | |
| 335 | i_93 | t_100 | |
| 336 | i_31 | t_100 | |
| 337 | i_28 | t_100 | |
| 338 | i_84 | t_100 | |
| 339 | i_89 | t_100 | |
| 340 | i_86 | t_100 | |
| 341 | i_33 | t_100 | |
| 342 | i_28 | t_101 | |
| 343 | i_31 | t_101 | |
| 344 | i_84 | t_101 | |
| 345 | i_88 | t_101 | |
| 346 | i_32 | t_101 | |
| 347 | i_91 | t_102 | |
| 348 | i_80 | t_102 | |
| 349 | i_84 | t_102 | |
| 350 | i_28 | t_102 | |
| 351 | i_93 | t_103 | |
| 352 | i_95 | t_103 | |
| 353 | i_33 | t_103 | |
| 354 | i_91 | t_103 | |
| 355 | i_89 | t_104 | |
| 356 | i_91 | t_106 | |
| 357 | i_80 | t_107 | |
| 358 | i_86 | t_108 | |
| 359 | i_86 | t_109 | |
| 360 | i_90 | t_110 | |
| 361 | i_85 | t_111 | |
| 362 | i_88 | t_113 | |
| 363 | i_88 | t_112 | |
| 364 | i_85 | t_107 | |
| 365 | i_92 | t_38 | |
| 366 | i_95 | t_38 | |
| 367 | i_93 | t_38 | |
| 368 | i_95 | t_116 | |
| 369 | i_90 | t_68 | |
| 370 | i_93 | t_37 | |
| 371 | i_94 | t_39 | |
| 372 | i_92 | t_39 | |
| 373 | i_91 | t_38 | |
| 374 | i_33 | t_119 | |
| 375 | i_31 | t_119 | |
| 376 | i_85 | t_119 | |
| 377 | i_84 | t_119 | |
| 378 | i_28 | t_119 | |
| 379 | i_6 | t_119 | |
| 380 | i_32 | t_119 | |
| 381 | i_31 | t_120 | |
| 382 | i_32 | t_120 | |
| 383 | i_31 | t_121 | |
| 384 | i_33 | t_121 | |
| 385 | i_31 | t_122 | |
| 386 | i_32 | t_122 | |
| 387 | i_33 | t_122 | |
| 388 | i_84 | t_123 | |
| 389 | i_32 | t_123 | |
| 390 | i_88 | t_123 | |
| 391 | i_1 | t_124 | |
| 392 | i_2 | t_124 | |
| 393 | i_92 | t_125 | |
| 394 | i_1 | t_125 | |
| 396 | i_2 | t_125 | |
| 397 | i_1 | t_126 | |
| 398 | i_92 | t_126 | |
| 399 | i_2 | t_127 | |
| 400 | i_1 | t_127 | |
| 401 | i_91 | t_127 | |
| 402 | i_1 | t_128 | |
| 403 | i_91 | t_128 | |
| 404 | i_2 | t_128 | |
| 405 | i_1 | t_129 | |
| 406 | i_92 | t_129 | |
| 407 | i_85 | t_130 | |
| 408 | i_1 | t_130 | |
| 409 | i_91 | t_130 | |
| 410 | i_91 | t_131 | |
| 411 | i_1 | t_131 | |
| 412 | i_85 | t_131 | |
| 413 | i_91 | t_132 | |
| 414 | i_85 | t_132 | |
| 415 | i_1 | t_132 | |
| 416 | i_85 | t_133 | |
| 417 | i_2 | t_133 | |
| 418 | i_92 | t_133 | |
| 419 | i_91 | t_133 | |
| 420 | i_1 | t_133 | |
| 421 | i_1 | t_134 | |
| 422 | i_2 | t_134 | |
| 423 | i_106 | t_134 | |
| 424 | i_1 | t_135 | |
| 425 | i_85 | t_135 | |
| 426 | i_91 | t_135 | |
| 427 | i_85 | t_136 | |
| 428 | i_1 | t_136 | |
| 429 | i_91 | t_136 | |
| 430 | i_91 | t_137 | |
| 431 | i_1 | t_137 | |
| 432 | i_85 | t_137 | |
| 433 | i_93 | t_137 | |
| 434 | i_1 | t_118 | |
| 435 | i_95 | t_117 | |
| 436 | i_90 | t_117 | |
| 437 | i_2 | t_117 | |
| 438 | i_85 | t_110 | |
| 439 | i_1 | t_138 | |
| 440 | i_42 | t_138 |
| tema_id | tema_title | area_progettuale_id | |
|---|---|---|---|
| t_28 | SMARTMOBILITY | 13 | |
| t_29 | SMART BUILDING | 13 | |
| t_30 | SMART ENVIRONMENTS | 13 | |
| t_31 | SMART ENERGY | 13 | |
| t_32 | SMART URBAN MONITORING | 13 | |
| t_33 | SMART GOVERNMENT | 13 | |
| t_34 | SMART LIVING | 13 | |
| t_35 | SMART CITIES MODELING | 13 | |
| t_36 | Modellistica e Calcolo Scientifico | 22 | |
| t_37 | Teoria dei sistemi e dei controlli | 22 | |
| t_38 | Ottimizzazione e matematica discreta | 22 | |
| t_39 | Modellistica stocastica e analisi di dati | 22 | |
| t_41 | La Neutral Beam Test Facility a Padova | 21 | |
| t_42 | Il sistema di riscaldamento a radiofrequenza di ITER | 21 | |
| t_43 | Progettazione e realizzazione di diagnostiche per ITER | 21 | |
| t_44 | Il Broader Approach | 21 | |
| t_45 | Programma europeo sulla fusione | 21 | |
| t_47 | Tecnologie per la digitalizzazione ed il monitoraggio | 18 | |
| t_48 | Tecnologie per la virtualizzazione e la fruizione digitale | 18 | |
| t_49 | Gestione del territorio | 18 | |
| t_50 | IMPATTO AMBIENTALE | 15 | |
| t_51 | MONITORAGGIO DELL'AMBIENTE MARINO E COSTIERO | 15 | |
| t_52 | SISTEMI PER LA PROPULSIONE NAVALE E LA GENERAZIONE DI ENERGIA A BORDO | 15 | |
| t_53 | TECNOLOGIE NAVALI E OFFSHORE | 15 | |
| t_54 | GESTIONE DEI PROCESSI DEL SISTEMA MARITTIMO | 15 | |
| t_55 | Nuovi approcci bioinformatici a supporto di esigenze cliniche, mediche e biotecnologiche | 9 | |
| t_56 | Processi biotecnologici industriali | 9 | |
| t_57 | Tools e tecnologie per terapie avanzate | 9 | |
| t_58 | Biofotonica | 9 | |
| t_59 | Dispositivie tecnologie a microonde ed onde millimetriche | 7 | |
| t_60 | Tecnologiemicro e nano-elettroniche | 7 | |
| t_61 | Advancing active and healthy ageing | 17 | |
| t_62 | Integrated, sustainable, citizen-centred care | 17 | |
| t_63 | Improving health information and dataexploitation | 17 | |
| t_64 | Tools, technologies and devices for advanced diagnosisand therapies | 17 | |
| t_65 | EMF for Health: Medical Applications,Environmental and Occupational Safety, Risk Assessment | 17 | |
| t_66 | Sistemiper la produzione personalizzata | 4 | |
| t_67 | Robotica | 3 | |
| t_68 | Strategie,metodi e strumenti per la sostenibilità industriale | 4 | |
| t_69 | Automatica | 3 | |
| t_70 | Sistemiper la valorizzazione delle persone nelle fabbriche | 4 | |
| t_71 | Sistemidi produzione evolutivi e adattativi ad alta efficienza | 4 | |
| t_72 | Tecnologie per l’Aerospazio e la Sicurezza nelloSpazio | 10 | |
| t_73 | Tecnologie per l’Osservazione della Terra | 10 | |
| t_74 | Modellistica Elettromagnetica e Statistica di dati diOsservazione della Terra | 10 | |
| t_75 | Tecnologie ed infrastrutture ICT per la gestione,elaborazione e rappresentazione di dati OT | 10 | |
| t_76 | Tecnologie per le telecomunicazioni spaziali, l’aeronauticae la navigazione | 10 | |
| t_77 | Fotonica | 7 | |
| t_78 | Tecnologie ed architetture di comunicazione e networking per il Future Internet | 8 | |
| t_79 | Distributed, High Performance and Parallel Systems | 8 | |
| t_80 | Software Engineering | 8 | |
| t_82 | Fight Against Crime and Terrorism | 19 | |
| t_83 | Border Security and External Security | 19 | |
| t_84 | Ethical Societal Dimension and SocialSecurity | 19 | |
| t_85 | Disaster Resilience: safeguarding and securingsociety, including adapting to climate change | 19 | |
| t_86 | Big data and Open Data Innovation and take-up | 1 | |
| t_87 | Big data – research | 1 | |
| t_88 | Cracking the language barrier | 1 | |
| t_89 | Technologies for creative industries, social media and convergence | 1 | |
| t_90 | Technologies for better human learning and teaching | 1 | |
| t_91 | Advanced digital gaming/gamification technologies | 1 | |
| t_92 | Multimodal and Natural computer interaction | 1 | |
| t_93 | Motori termici | 14 | |
| t_94 | Synthetic biology | 9 | |
| t_95 | Edilizia sostenibile | 12 | |
| t_96 | Ediliziaper le smart cities | 12 | |
| t_97 | Efficienzaenergetica dei sistemi elettrici in Smart Buildings | 12 | |
| t_98 | LCA, ecodesign e carbon footprint di elementiedilizi e tecnologie innovative abilitanti lo smart building | 12 | |
| t_99 | Tecnologie Innovative per lo Smart Building | 12 | |
| t_100 | Tema B1. Nanomateriali per dispositivi e processiindustriali (sensori, sistemi optoelettronici, acustici fotonici,fluidici, …) | 5 | |
| t_101 | B.2 Nanomateriali perenergetica | 5 | |
| t_102 | B3. Nano materiali per impiegobio-medico | 5 | |
| t_103 | B4. Modellistica e simulazionenumerica | 5 | |
| t_104 | Sensori per la sicurezza agro-alimentare basati su dispositivi MEMS | 11 | |
| t_105 | Motori elettrici epropulsione ibrida | 14 | |
| t_106 | Ottimizzazionedi supply-chain alimentari | 11 | |
| t_107 | Fotonica | 11 | |
| t_108 | Tuteladel suolo e delle acque superficiali | 11 | |
| t_109 | Usosostenibile della frazione solida deireflui zootecnici | 11 | |
| t_110 | Earth Observation andgeographic information systems for natural resource for remote monitoring and agro-ecosystemmanagement | 11 | |
| t_111 | Use of remote sensed data for sustainableagriculture | 11 | |
| t_112 | Analisidelle prestazioni di mezzi coibentati per il trasporto di merci deperibili | 11 | |
| t_113 | Analisi delle prestazioni di apparecchiature e impianti per laconservazione e l’esposizione di prodotti alimentari | 11 | |
| t_114 | Infrastrutture intelligenti e trasporto ferroviario intelligente | 14 | |
| t_115 | Tematiche di impattoambientale per il trasporto marittimo | 14 | |
| t_116 | Gestionedi specie invasive per la riduzione dei trattamenti fitosanitari | 11 | |
| t_117 | Infrastrutture dati: tecnologie e servizi | 2 | |
| t_118 | Infrastrutture di rete: tecnologie e servizi | 2 | |
| t_119 | Renewable electricityand heating and cooling technologies | 6 | |
| t_120 | Providing the energysystem with flexibility through enhanced energy storage technologies | 6 | |
| t_121 | Sustainablebiofuels and alternative fuels for the European transport fuel mix | 6 | |
| t_122 | Enabling thedecarbonisation of the use of fossil fuels during transition to a low-carboneconomy | 6 | |
| t_123 | Tecnologie HVAC&R (Heating, Ventilating and Air-Conditioning& Refrigeration) e risparmio di energia negli edifici | 6 | |
| t_124 | Privacy | 20 | |
| t_125 | Cloud security | 20 | |
| t_126 | Information sharing and Analytics | 20 | |
| t_127 | Secure Software Assurance | 20 | |
| t_128 | Modelli formali per la cyber security di sistemicyber physical (industriali, SCADA, etc.) | 20 | |
| t_129 | Crittografia | 20 | |
| t_130 | Digital forensic | 20 | |
| t_131 | Sicurezza dei dispositivi mobili (Mobile Security) | 20 | |
| t_132 | Sicurezza delle applicazioni e dei sistemi | 20 | |
| t_133 | Trusted e-services e controllo accessi | 20 | |
| t_134 | CyberIntelligence | 20 | |
| t_135 | Network Security | 20 | |
| t_136 | Cyberattacks | 20 | |
| t_137 | Risk management for cyber security | 20 | |
| t_138 | Impiego delle tecnologiebiometriche nel contesto della cyber security (Istituti coinvolti: IBB,IIT) | 20 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment