L’Osservatorio Vesuviano, fondato nel 1841, è il più antico istituto di ricerca vulcanologica al
mondo. Attualmente è la Sezione di Napoli dell’Istituto Nazionale di Geofisica e Vulcanologia
e si occupa della ricerca e del monitoraggio dei tre vulcani campani (Vesuvio, Campi Flegrei
e Ischia).
I dati delle reti strumentali sono convogliati presso le due Sale di Monitoraggio, di cui una
presidiata 24/7 da due turnisti che si occupano della comunicazione istituzionale verso il
Dipartimento della Protezione Civile. L’Osservatorio Vesuviano gestisce l’intero processo di
acquisizione, analisi, storage e distribuzione dei dati tramite un insieme di software sia
proprietari che (la maggior parte) open source e sviluppati internamente, tra cui possiamo
ricordare:
● il database SERENADE (SEismic Restful ENAbled DatabasE)
● il portale WESSEL (WEb Services for Seismic Event Location)
● i microservizi per la gestione di comunicati, mappe e analisi varie (REFASE,
SEISMOWEB, ecc)
● i portali per la diffusione dei dati (GOSSIP e i segnali sismici in tempo reale)
ed altro. Il tutto internamente al proprio CED, utilizzando sia macchine fisiche che virtuali
(con tecnologia Proxmox, VmWare e XEN), sia sistemi di containerizzazione (Kubernetes,
docker) e, recentemente, con l’aggiunta di sistemi di messaggistica ad alte prestazioni quali
Kafka e redis per la gestione integrata di eventi di vario tipo.
Sito web: https://www.ov.ingv.it/
Referenti Aziendali:
Anna Tramelli (Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.)
Rosario Peluso (Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.)
Pasquale Cantiello (Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.)
Di seguito alcune proposte di tiroicnio.
Progetto 1:
Sviluppo di un modulo integrato nel sistema WESSEL (WEb Service for Seismic Event Location) utilizzato nella Sala Sismica dell’Osservatorio Vesuviano che, attingendo all’interfaccia REST del database sismico SERENADE (SEismic Restful ENAbled DatabasE), esegua analisi statistiche sulle localizzazioni degli eventi sismici selezionati.
L’interfaccia web dovrà permettere all’utente di selezionare un insieme di eventi sismici dal database disegnando su mappa un poligono di riferimento e permettendo la scelta di periodo e, eventualmente, profondità. L’insieme di eventi così selezionati dovrà essere inviato ad un microservizio (da scrivere da zero o integrare in altri servizi già presenti) per effettuare un insieme di analisi statistiche sugli eventi selezionati quali, ad esempio:
- calcolo del b-value e della magnitudo di completezza utilizzando tecniche differenti;
- andamenti temporali di b-value e magnitudo di completezza;
- calcolo degli intertempi, interdistanze e profondità medie;
- distribuzioni statistiche dei risultati ottenuti;
- clusterizzazione spaziale degli eventi (con algoritmi tipo k-MEANS, DBSCAN o similari) e calcolo delle predette quantità sui cluster localizzati.
Il microservizio dovrà fornire un’interfaccia per la sottomissione del “job” di calcolo e per l’interrogazione dello stato del medesimo, dovrà gestire un eventuale abort da parte dell’utente e restituire un report, in un formato da decidere, tabelle ed immagini contenenti i risultati dell’elaborazione, in un modo molto simile a quanto già esiste per la generazione della parte sismica dei bollettini del monitoraggio.
Per la parte di integrazione con Wessel si richiede l’utilizzo di PHP e JavaScript con interfaccia alle librerie del sistema già sviluppate. Il microservizio dovrà utilizzare Flask + python per la parte di interfaccia e librerie standard quali NumPy e Matplotlib per la parte di calcolo richiesta.
Progetto 2:
Sviluppo di un sistema per la Sala di Monitoraggio dell’Osservatorio Vesuviano per la visualizzazione in tempo reale dello stato recente delle tre reti di monitoraggio sismico: Vesuvio, Campi Flegrei ed Ischia. Il sistema dovrà visualizzare una mappa con gli ultimi eventi sismici registrati in zona e rispondere, anche con allarmi sonori, all’accadimento di nuovi eventi sismici ed alla presenza di stati particolari della sorveglianza (sciami sismici, eventi di maggiore importanza ecc). Dovrà contenere informazioni sul tempo dall’ultimo evento sismico o sciame e una lista degli ultimi eventi più importanti.
Il sistema dovrà accedere all’interfaccia REST del database sismico dell’Osservatorio Vesuviano SERENADE (SEismic Restful ENAbled DatabasE) per ottenere uno snapshot della situazione dello stato sismico attuale e dovrà consumare messaggi presenti su vari topic del sistema Kafka della sala contenenti, ad esempio, l’accadimento di nuovi eventi, il passaggio della sala alla “modalità sciame” ed il calcolo automatico di magnitudo e localizzazioni dei sistemi automatici e manuali.
Il candidato dovrà sviluppare l’interfaccia grafica del sistema, che dovrà prevedere poca o nulla interazione con l’utente, prevedendo che debba normalmente girare in “modalità kiosk” sui monitor della sala. Il candidato dovrà produrre un container che possa girare sotto Docker in ambiente Debian GNU/Linux e tutti i meccanismi necessari a prevedere il suo avvio automatico all’accensione della macchina fisica ospitante.
Il sistema dovrà essere scritto in python ed utilizzare PyQT (versione 6) per l’interfaccia grafica e librerie sviluppate in house per l’accesso ai topic di Kafka.
Progetto 3:
Sviluppo di un sistema per la generazione di mappature termiche a partire da immagini acquisite da drone tramite termocamere FLIR nell'infrarosso termico (TIR). Prendendo spunto dalla letteratura esistente (ad esempio https://www.sciencedirect.com/science/article/pii/S030324342100307X) il candidato dovrà sviluppare un sistema che utilizzi uno dei cluster HPC attualmente installati all’Osservatorio Vesuviano (10 nodi con dual Xeon e NVIDIA Quadro P2000 + nodo di frontend, utilizza slurm come sistema di code) che renda possibile gestire un workflow semi automatico per la sottomissione del job al cluster, il passaggio degli input, la creazione ed il download degli output.
Il candidato dovrà individuare le migliori librerie che possano effettuare il calcolo in questione e, basandosi sui sistemi presenti all’Osservatorio, definire i metodi migliori per il passaggio dei dati dal calcolatore dell’utente al cluster e viceversa e produrre un’interfaccia a linea di comando che gestisca il seguente workflow:
- identificazione delle immagini di input e loro invio al cluster HPC
- avvio del job e controllo remoto
- restituzione dello stato del job durante l'esecuzione
- restituzione del risultato del calcolo.
Non vengono date particolari indicazioni sui linguaggi e sulle librerie da utilizzare se non che queste ultime debbano appartenere al panorama FOSS, con licenze libere (GPL, LGPL, BSD ed equivalenti). Il prototipo dell’interfaccia utente deve girare inizialmente su macchine Debian GNU/Linux.
Il batch di input sarà costituito dalle immagini termiche appartenenti ad un singolo volo di drone nel formato proprietario della FLIR (leggibili tramite reverse engineering) contenenti, oltre alle informazioni termiche, anche le posizioni rilevate dal GPS di bordo e gli angoli di volo del drone stesso.
Gli output attesi saranno mappature termiche del volo in questione, nei seguenti formati: immagine semplice in falsi colori geolocalizzata (PNG o JPEG), TIFF multispettrale geolocalizzato, mappa di temperatura nel formato ASCII GRID di Esri (anche conosciuto come ARC/INFO ASCII GRID) e possibilmente nuvola di punti e DEM/DTM termico (da valutare in fase di sviluppo).
Progetto 4:
Realizzazione di un sistema di monitoraggio integrato dello stato di salute di un cluster basato su Kubernetes e dei servizi software ospitati su di esso. Il monitoraggio dovrà operare a livelli differenti del cluster: nodi fisici, sistema operativo, piattaforma di orchestrazione, servizi software comuni presenti (Kafka, Ceph, Postgres, MongoDB, TimescaleDB, …) e worker con i servizi applicativi per il monitoraggio vulcanico. In particolare occorrerà:
- installare e/o configurare exporter di metriche in formato standard OpenMetrics (node_exporter, Grafana Alloy,...) per ogni componente da monitorare qualora esso non ne sia già provvisto nativamente. Eventualmente sviluppare script appositi (Python) per l’esportazione di particolari metriche.
- installare e configurare aggregatori di metriche (Prometheus, Mimir, …) che effettuino periodicamente le operazioni di scraping per raccogliere i valori da tutti i punti di misura.
- installare e configurare aggregatori di log (Promtail, Loki, …) per catturare e processare i messaggi di log generati dai vari componenti.
- Realizzare dashboard basate su Grafana con viste differenti per il monitoraggio continuo su tutti i livelli del cluster
- Definire e porre in opera politiche di alert per la segnalazione tempestiva di fault o di condizioni di preallarme, sia operanti sulle metriche di tipo numerico sia sull’analisi dei log aggregati.




