Documentation & Integration of Automated Workflow in Atomistic Software for Charge Analysis with SIESTA
Author
Date
Subject
Publisher
Abstract
Trabajo de Máster Universitario en Simulación Molecular (2021/22). Directores: Dr. D. Felipe Jiménez Blas; Dra. Dª. Mónica García-Mota. En esta memoria se describe el trabajo llevado a cabo durante una estancia de 3 meses en SIMUNE Atomistics, una empresa que provee de herramientas de simulación a la comunidad científica, académica e industrial de todo el mundo, y está desarrollando un software de simulación en Python llamado ASAP 1 (Atomistic Simulation Advanced Platform). ASAP contiene, entre otros paquetes, el uso del código abierto de simulación SIESTA 2,3,4 (Spanish Initiative for Electronic Simulations with Thousands of Atoms), para facilitar al usuario el trabajo de manera mucho más rápida y flexible a través de una interfaz gráfica evitando así el uso de la terminal. También entre otros servicios, SIMUNE ofrece tutoriales específicos de SIESTA así como apoyo profesional para aquellos usuarios del código que quieran resolver problemas de computación específicos. El objetivo de mi estancia en SIMUNE consistió en documentar en forma de tutorial la manera de llevar a cabo el análisis de cargas mediante el uso de SIESTA que se incluirá en los tutoriales que ofrecen como parte de sus servicios a clientes. Una vez completado, tuve que implementar en ASAP una función que permitiera automatizar el análisis de cargas a través del software. Los pasos a seguir para completar mi objetivo satisfactoriamente fueron los siguientes. Tuve que familiarizarme con el uso del código SIESTA en la terminal, completando para ello los tutoriales de uso ofrecidos por SIMUNE y realicé un trabajo de feedback aportando mi experiencia de usuario para la mejora del mismo. Más adelante, estudié los distintos métodos de análisis de carga disponibles en SIESTA que calculan la población electrónica de una sustancia. Estos son los métodos de Mulliken, Hirshfeld y Voronoi y aprendí en qué consisten y por qué motivo es más recomendable el uso de un método u otro. Busqué en el manual de SIESTA la manera de utilizarlos y propuse una serie de ejemplos sencillos. Al finalizar la redacción del tutorial me encargué de la implementación de dicha funcionalidad en el software ASAP. Para ello tuve que escribir un código de programación orientado a objetos con el lenguaje Python. Comenzando por el diseño del widget que permite al usuario seleccionar entre los tres distintos métodos de análisis, continuando con el tratamiento de datos del archivo de salida que emite SIESTA para extraer el resultado del análisis y finalizando con la exposición de los mismos en una tabla en la que el usuario pueda visualizarlos. Para este trabajo fue vital el uso de GitLab, un portal de trabajo que permite a los equipos de desarrollo trabajar en el código, a través de ramas que se modifican de manera independiente y que luego se incluyen en el código principal tras su revisión. Como parte de mi tarea de desarrollador del software, fue necesario incluir también unos tests que verifiquen que la aplicación funcione como se espera, mediante modelos sencillos introducidos manualmente en el código, y cuyos resultados conocidos se comparaban con los resultados emitidos por la aplicación. Además, dado que los resultados de un cálculo atomístico varían en función de la multiplicidad de espín electrónico seleccionada (molécula no polarizada, spin colineal, o no colineal), tuvimos que tenerlo en cuenta a la hora del tratamiento de datos y exposición de resultados. En última instancia, aplicamos cambios cosméticos que dotaban a la tabla de una estética más elegante y legible para el usuario y presentamos el resultado en una demo a todo el equipo de la empresa.
Trabajo de Máster Universitario en Simulación Molecular (2021/22). Directores: Dr. D. Felipe Jiménez Blas; Dra. Dª. Mónica García-Mota. En esta memoria se describe el trabajo llevado a cabo durante una estancia de 3 meses en SIMUNE Atomistics, una empresa que provee de herramientas de simulación a la comunidad científica, académica e industrial de todo el mundo, y está desarrollando un software de simulación en Python llamado ASAP 1 (Atomistic Simulation Advanced Platform). ASAP contiene, entre otros paquetes, el uso del código abierto de simulación SIESTA 2,3,4 (Spanish Initiative for Electronic Simulations with Thousands of Atoms), para facilitar al usuario el trabajo de manera mucho más rápida y flexible a través de una interfaz gráfica evitando así el uso de la terminal. También entre otros servicios, SIMUNE ofrece tutoriales específicos de SIESTA así como apoyo profesional para aquellos usuarios del código que quieran resolver problemas de computación específicos. El objetivo de mi estancia en SIMUNE consistió en documentar en forma de tutorial la manera de llevar a cabo el análisis de cargas mediante el uso de SIESTA que se incluirá en los tutoriales que ofrecen como parte de sus servicios a clientes. Una vez completado, tuve que implementar en ASAP una función que permitiera automatizar el análisis de cargas a través del software. Los pasos a seguir para completar mi objetivo satisfactoriamente fueron los siguientes. Tuve que familiarizarme con el uso del código SIESTA en la terminal, completando para ello los tutoriales de uso ofrecidos por SIMUNE y realicé un trabajo de feedback aportando mi experiencia de usuario para la mejora del mismo. Más adelante, estudié los distintos métodos de análisis de carga disponibles en SIESTA que calculan la población electrónica de una sustancia. Estos son los métodos de Mulliken, Hirshfeld y Voronoi y aprendí en qué consisten y por qué motivo es más recomendable el uso de un método u otro. Busqué en el manual de SIESTA la manera de utilizarlos y propuse una serie de ejemplos sencillos. Al finalizar la redacción del tutorial me encargué de la implementación de dicha funcionalidad en el software ASAP. Para ello tuve que escribir un código de programación orientado a objetos con el lenguaje Python. Comenzando por el diseño del widget que permite al usuario seleccionar entre los tres distintos métodos de análisis, continuando con el tratamiento de datos del archivo de salida que emite SIESTA para extraer el resultado del análisis y finalizando con la exposición de los mismos en una tabla en la que el usuario pueda visualizarlos. Para este trabajo fue vital el uso de GitLab, un portal de trabajo que permite a los equipos de desarrollo trabajar en el código, a través de ramas que se modifican de manera independiente y que luego se incluyen en el código principal tras su revisión. Como parte de mi tarea de desarrollador del software, fue necesario incluir también unos tests que verifiquen que la aplicación funcione como se espera, mediante modelos sencillos introducidos manualmente en el código, y cuyos resultados conocidos se comparaban con los resultados emitidos por la aplicación. Además, dado que los resultados de un cálculo atomístico varían en función de la multiplicidad de espín electrónico seleccionada (molécula no polarizada, spin colineal, o no colineal), tuvimos que tenerlo en cuenta a la hora del tratamiento de datos y exposición de resultados. En última instancia, aplicamos cambios cosméticos que dotaban a la tabla de una estética más elegante y legible para el usuario y presentamos el resultado en una demo a todo el equipo de la empresa.