Skip to content

Instantly share code, notes, and snippets.

@kleem
Last active November 8, 2019 07:08
Show Gist options
  • Save kleem/897fc40504d16bdf35e1273f29a5a436 to your computer and use it in GitHub Desktop.
Save kleem/897fc40504d16bdf35e1273f29a5a436 to your computer and use it in GitHub Desktop.
DIITET matrix
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