Giter Site home page Giter Site logo

dsiervo / sc3-autotuner Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 1.36 MB

Bayesian optimization approach for tuning SeisComP3's scautopick and scanloc modules

License: MIT License

Python 61.36% Jupyter Notebook 38.64%
seismology seismic-monitoring artificial-intelligence bayesian-optimization black-box-optimization seiscomp3

sc3-autotuner's Introduction

sc3-autotuner

Bayesian optimization approach for tuning SeisComP3's scautopick and scanloc modules.

Ajuste automático de parámetros de los módulos de SeisComP3 scautopick y scanloc usando optimización bayesiana.

Instalación

Requisitos

  • SeisComP3
  • Módulo scanloc de SeisComP3
  • Ubuntu 18.04 LTS o superior
  1. Instale los pre requisitos de python3.8:

    $ sudo apt update
    $ sudo apt install software-properties-common
  2. Instale python3.8:

    $ sudo add-apt-repository ppa:deadsnakes/ppa
    $ sudo apt update
    $ sudo apt install python3.8 python3.8-dev python3.8-venv python3.8-tk
  3. Descargue el repositorio de sc3-autotuner:

    $ git clone https://github.com/dsiervo/sc3-autotuner
    $ cd sc3-autotuner
  4. Cree y active una instancia de python3.8:

    $ python3.8 -m venv venv
    $ source venv/bin/activate
  5. Actualice pip:

    (venv) $ pip install --upgrade pip
  6. Instale las dependencias:

    (venv) $ pip install -r requirements.txt
  7. Agregue el pluging del pick S-AIC al global.cfg de su instalación de SeisComP3.

    Abra el archivo seicomp3/etc/global.cfg y agregue saic al final de la lista de plugins:

    plugins = hypo71,mlr,saic
  8. Configure el S-AIC como picker secundario del scautopick:

    Abra el archivo seicomp3/etc/scautopick.cfg (si no existe creelo en esa ruta) y agregue la siguiente línea (o reemplace la existente):

    spicker = S-AIC
  9. Desactive el ambiente de python3.8 y actualice la configuración de SeisComP3:

    (venv) $ deactivate
    $ seiscomp update-config
  10. Agregue sc3-autotuner al path en el archivo ~/.bashrc:

    $ echo 'export PATH=<ruta a sc3-autotuner>:$PATH' >> ~/.bashrc
    $ source ~/.bashrc
  11. Cambie el path de la ruta a la carpeta sc3-autotuner en la primera linea del script sc3autotuner.py

Uso

El programa lee los parámetros desde el archivo sc3-autotuner.inp que se encuentran en el directorio de ejecución.

  1. Copie en su directorio de trabajo el archivo sc3-autotuner.inp.

  2. Modifique el archivo sc3-autotuner.inp de acuerdo a sus preferencias.

  3. Ejecute el programa:

    $ sc3autotuner.py

sc3-autotuner.inp

Puede introducir comentarios al sc3-autotuner.inp usando el caracter # al inicio de la línea.

A continuación se explicará cada uno de estos parámetros:

Parámetros Globales

- tune_mode: Controla si se ajusta el picker (picker) o se ajusta el asociador (asoc). Por el momento sólo se acepta el valor picker.

- debug: Si es True muestra información de depuración y mostrará plots de los resultados.

- deb_url: Dirección IP del servidor SQL para la consulta de picks y eventos.

- ti: Tiempo inicial para la consulta de picks y eventos. Debe ser una fecha en formato YYYY-MM-DD HH:MM:SS.

- tf: Tiempo final para la consulta de picks y eventos. Debe ser una fecha en formato YYYY-MM-DD HH:MM:SS.

- inv_xml: Ruta al archivo XML de con la información del inventory. Puede usar el módulo de SeisComP3 scxmldump para generar el archivo.

Opciones del modo picker

- stations: Lista de estaciones a usar separadas por coma en formato: <network>.<station>.<location>.<channel sin componente>. Por ejemplo:

stations = IU.ANMO.10.BH, CM.BAR2.00.HH, CM.DBB.20.EH

- fdsn_ip: Dirección IP y puerto del servidor FDSN para la descarga de las formas de onda (Usualmente en SeisComP3 la IP del servidor FDSN es la misma que la IP del servidor SQL mas el puerto 8091).

- max_picks: Número máximo de picks manuales por estación a usar en el ajuste.

- n_trials: Número de intentos que hará el programa para ajustar el picker de cada fase y de cada estación.

Salida del programa

Archivos importantes

  • Carpeta output_station_files: Los archivos contenidos en esta carpeta contienen los resultados del ajuste de cada estación en el formato apropiado para su incorporación en la configuración de SeisComP3. Para agregar estos resultados a su sistema debe copiar estos archivos al directorio seicomp3/etc/key/scautopick y luego agregar la siguiente línea en los archivos homónimos en la ruta seicomp3/etc/key/:

    scautopick
    

    Ahora SeisComP3 reconocerá que dichas estaciones están disponibles para ser usadas por el autopicker scautopick y para el picado utilizará los parámetros consignados en el archivo de configuración de la estación en la ruta seicomp3/etc/key/scautopick.

  • Carpeta images: Gráficas interactivas del proceso de ajuste de cada fase de cada estación. Puede abrirlas con cualquier navegador web.

  • Archivos results_P.csv y results_S.csv: Compilación de los mejores parámetros encontrados para cada fase y estación junto con el valor del f1-score de esa iteración.

Archivos y carpetas residuales

  • exc_<station>_<phase>.xml: Contienen los parámetros de los pickers en la última iteración.
  • mseed_data: Carpeta con las formas de onda usadas en el ajuste.
  • picks_xml: Carpeta con archivos XML en formato seiscomp con los picks generados en la última iteración.

sc3-autotuner's People

Contributors

dsiervo avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

sismologosgc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.