La visualización molecular desempeña un papel fundamental en la construcción de bases de datos y repositorios, en la preparación de estructuras iniciales para cálculos cuánticos y de dinámica molecular, y en el análisis de las coordenadas de la trayectoria en tiempo real. La visualización y edición interactiva de la estructura de las moléculas puede reducir eficazmente el umbral de simulación y mejorar la eficiencia. El reciente desarrollo en el campo de la computación de alto rendimiento (HPC) y la computación en la nube ha dado lugar a muchas plataformas de computación en línea. Por ejemplo, MatCloud , rescale , WebMO , y MolCalc , ofrecen servicios web para el cálculo de materiales y química. Estas herramientas basadas en la web permiten controlar a distancia los recursos informáticos, y su accesibilidad y compatibilidad las hacen muy populares. Hoy en día, es común utilizar las herramientas de visualización y editor estructural 3D basadas en la web para generar las estructuras del modelo y preparar los archivos de entrada para las simulaciones.
El software de visualización de última generación en el campo de la química computacional se desarrolla principalmente en el entorno de escritorio, como Avogadro , Materials Studio , y VESTA . Con la creciente demanda de visualización basada en la web, han surgido varias herramientas relevantes. Por ejemplo, 3Dmol , JSmol y Web3DMol contienen potentes capacidades de visualización, pero falta la función de edición de estructuras. Otras herramientas, como ChemdoodleWeb , Kekule.js , JSME , sólo pueden editar estructuras de dos dimensiones (2D). En la literatura también hay herramientas de edición de estructuras 3D (por ejemplo, ChemMozart , CH5M3D ). Sin embargo, estas herramientas se centran en el modelado molecular orgánico y no admiten el procesamiento de la estructura cristalina. Además, ChemMozart se implementa utilizando el marco node.js, y no puede ser utilizado como una biblioteca ligera por sí sola.
Con el fin de procesar la información química en el servidor web, hemos desarrollado un programa de visualización y editor químico avanzado con las siguientes características. En primer lugar, tanto la molécula orgánica no periódica como la estructura cristalina pueden ser visualizadas, construidas y editadas interactivamente. En segundo lugar, se proporciona una amplia gama de algoritmos quimioinformáticos para la estructura cristalina, como la escisión de superficies, el establecimiento de capas de vacío y la creación de supercélulas. En tercer lugar, se trata de una biblioteca ligera implementada mediante JavaScript, y puede utilizarse fácilmente para proporcionar un servicio web de forma independiente o integrado en otras plataformas web. Finalmente, los archivos de entrada iniciales para VASP y Gaussian pueden ser generados interactuando con cuadros de diálogo.
Implementación
Al igual que la mayoría de los programas de interfaz gráfica de usuario (GUI) para la química computacional , 3DStructGen se centra en la generación de la geometría molecular inicial. Como se muestra en la Fig. 1, los módulos básicos de la molécula, el cristal y la losa superficial consisten en varios métodos para tratar con la molécula no periódica, el cristal periódico, así como el sistema de losa superficial, respectivamente. El lienzo HTML5 es el módulo central para mostrar las estructuras 3D y conectar todos los demás módulos. El módulo del ratón proporciona una serie de operaciones interactivas mediante el ratón para los usuarios. Los métodos de procesamiento para los formatos de archivos químicos generales (XYZ, SD, MOL, CIF) son soportados en el módulo IO, y el archivo de entrada inicial para VASP y Gaussian puede ser producido usando el módulo de interfaz. El módulo explorador imprime la información interactiva (por ejemplo, el nombre del archivo, el parámetro de la red, la distancia del átomo, la coordenada del átomo, etc.) para los usuarios en tiempo real. Además, la API de ChemKit proporciona extensiones de 3DStructGen mediante la integración de otras herramientas quimioinformáticas.
Elemento, átomo y molécula
Los parámetros de los elementos (por ejemplo, número de átomo, símbolo del elemento, masa atómica, color, radios covalentes, etc.) se definen como una lista en la función «element ()». La función «addElem ()» se utiliza para añadir un elemento especificado por los usuarios, y el modelo de átomo correspondiente se visualizará en el lienzo. Todos los elementos se muestran en el mismo color que en el programa VESTA. La molécula de metano se presenta en el lienzo cuando se inicializa 3DStructGen. La representación «bola y palo» de las estructuras con el tamaño de los átomos basado en sus radios covalentes por defecto. Además, los modelos «stick-and-line» pueden ser especificados por los usuarios también.
Las funciones «addAtom ()» y «delAtom ()» se utilizan para añadir un nuevo átomo y eliminar un átomo existente en una molécula, respectivamente. Por defecto, se añadirá un número adecuado de átomos de hidrógeno según la regla de la teoría del octeto, y a los ángulos de enlace se les asigna un valor basado en la hibridación orbital (sp3 por defecto) seleccionada por los usuarios.
Cuando se añade un nuevo átomo, se crea un enlace dentro de su valor de la suma de radios covalentes de los átomos enlazados. La conexión entre pares de átomos puede añadirse mediante operaciones de ratón llamando a la función «addBond ()», definida en archivos o calculada por el 3DStructGen. La función «createBond ()» describe detalladamente la regla de enlace: en primer lugar, se construye una lista de posibles átomos de enlace basada en el modelo de valencia del enlace, y luego se calcula la distancia de estos posibles átomos de enlace. Se crea un enlace si la distancia está entre 0,5 y 1,2 veces la suma de los radios covalentes de estos átomos de enlace. En este caso, la distancia de 0,5 veces se utiliza para evitar el enlace entre los átomos cerrados (tal vez átomos superpuestos). La función «bondMatrix ()» define una rutina pública para almacenar y devolver la lista de enlaces. El algoritmo de etiquetado gráfico (pseudocódigo en la Fig. 2) utilizado para reconocer el marco y el huésped (incluyendo la molécula de disolvente) se ha desarrollado para tratar los marcos metal-orgánicos (MOF) en la base de datos estructural de Cambridge (CSD). Nuestro método de unión ha mostrado resultados satisfactorios para esta tarea, y los resultados de visualización se pueden encontrar en la sección «Visualización de la estructura».
Cuando se crea una estructura, un átomo o un grupo de átomos seleccionados por los usuarios pueden moverse en las direcciones arriba, abajo, izquierda y derecha por una distancia especificada por el usuario. Se admite una optimización de la geometría cruda para la molécula no periódica mediante la optimización de las longitudes de enlace, los ángulos de enlace y el diedro siguiendo el mismo método en CH5M3D . Una optimización opcional de la geometría basada en el método de archivo de fuerza también se proporciona mediante el uso de ChemKit API, que se explica con más detalle en la sección «ChemKit API».
Cristal y losa de superficie
La función «buildCrystal ()» se utiliza para construir la estructura de la red cristalina. Al hacer clic en el cuadro de diálogo de «construir cristal», los grupos de espacio de simetría (230 en total), los parámetros de celosía, los tipos de átomos y las coordenadas pueden ser seleccionados o editados interactivamente por los usuarios. Cuando todas las operaciones estén terminadas, se mostrará una estructura de cristal en el lienzo.
La losa de la supercelda es un modelo estructural utilizado en simulaciones cuánticas o de dinámica molecular para estudiar las propiedades cinéticas , termodinámicas y electrónicas de la superficie. La función «cleaveSurf ()» muestra un algoritmo para construir un slab de superficie con cualquier orientación del índice de Miller a partir de una celda unitaria de cualquier red de Bravais. Una losa con dos superficies se incrusta con regiones de vacío en una supercelda. Sun propuso un algoritmo eficiente para construir la superficie de la losa, y el mismo método se utiliza para encontrar dos vectores base que abarcan una orientación de la superficie dada, \ (\varvec{v}_{1}\) y \ (\varvec{v}_{2}\). Las siguientes son las descripciones detalladas:
Si un índice de Miller no contiene ceros, tomamos (hkl) como ejemplo:
Si un índice de Miller contiene un cero, tomamos (hk0) como ejemplo:
Si un índice de Miller contiene dos ceros, tomamos (h00) como ejemplo:
Para una estructura cristalina compuesta por una celda unidad, y un conjunto de átomos están dispuestos de manera que los átomos se repiten periódicamente en tres dimensiones en una red. La función «displayStyle ()» proporciona varios métodos para mostrar los átomos repetidos, y las imágenes relevantes se muestran en la Fig. 3. Las siguientes opciones pueden ser elegidas en el 3DStructGen:
-
«Asimétrico»: Se presenta la subunidad mínima de un cristal, formada por uno o más átomos, iones o moléculas, cuya disposición geométrica no está relacionada por la simetría cristalográfica.
-
«Original»: Utilizando este estilo, cada átomo se mostrará en su ubicación original, junto con las copias formadas al aplicar cada uno de los operadores del grupo de simetría.
-
«En celda»: Los átomos se muestran en función de si sus coordenadas, así como sus copias simétricas están en la celda de la red.
-
«Embalaje»: Las moléculas completas y sus copias simétricas en una celda reticular se mostrarán en función del centro geométrico de los conjuntos conectados de átomos. Esto proporciona una visualización de la celda convencional para la mayoría de los tipos de sistemas cristalinos.
Los estilos anteriores permiten a los usuarios visualizar los átomos de las maneras deseadas para diferentes escenarios. El «Asimétrico» puede ser útil para centrarse en los detalles de la estructura mínima cuando todas las copias son invisibles, especialmente para los modelos grandes y complejos. Los estilos «Original» y «Empaquetado» proporcionan las copias de las unidades, que demuestran la información simétrica de un cristal. El estilo «In-cell» capta una visión de todos los átomos posibles en la celda de la red, que coincide con la escena real de truncar una celda de la red de todo el sistema periódico.