A visualização molecular desempenha um papel vital na construção de bancos de dados e repositórios, preparando estruturas iniciais para cálculos de dinâmica quântica e molecular e analisando as coordenadas de trajetória em tempo real. A visualização e edição interativa da estrutura das moléculas pode efetivamente reduzir o limiar de simulação e melhorar a eficiência. O desenvolvimento recente no campo da computação de alto desempenho (HPC) e da computação em nuvem levou a muitas plataformas de computação online. Por exemplo, MatCloud , rescale , WebMO , e MolCalc , fornecem serviços web para materiais e cálculo de química. Essas ferramentas baseadas na Web oferecem controle remoto dos recursos de computação, e sua acessibilidade e compatibilidade os tornam extremamente populares. Atualmente, é comum usar as ferramentas de visualização estrutural e editor 3D baseadas na web para gerar as estruturas do modelo e preparar os arquivos de entrada para simulações.
O software de visualização de última geração no campo da química computacional é desenvolvido principalmente em ambiente desktop, como Avogadro , Materials Studio , e VESTA . Com a crescente demanda por visualização baseada na web, várias ferramentas relevantes têm surgido. Por exemplo, o 3Dmol , JSmol e Web3DMol contêm poderosos recursos de visualização, mas falta a função de edição de estrutura. Outras ferramentas, tais como ChemdoodleWeb , Kekule.js , JSME , só podem editar estruturas de 2 dimensões (2D). Ferramentas de edição de estruturas 3D (por exemplo, ChemMozart , CH5M3D ) também são relatadas na literatura. Entretanto, essas ferramentas focam na modelagem molecular orgânica e não suportam o processamento de estruturas de cristal. Além disso, o ChemMozart é implementado usando o framework node.js, e não pode ser usado apenas como uma biblioteca leve.
A fim de processar informações químicas no servidor web, desenvolvemos um programa avançado de visualização química e editor com as seguintes características. Primeiro, tanto a molécula orgânica não periódica como a estrutura de cristal podem ser visualizadas, construídas e editadas de forma interativa. Em segundo lugar, é fornecida uma ampla gama de algoritmos quimioterápicos para estrutura de cristal, tais como superfícies de clivagem, estabelecimento de camadas de vácuo e criação de supercélulas. Em terceiro lugar, é uma biblioteca leve implementada usando JavaScript, e pode ser facilmente utilizada para fornecer serviço web de forma independente ou integrada em outras plataformas web. Finalmente, os arquivos de entrada inicial para VASP e Gaussian podem ser gerados interagindo com caixas de diálogo.
Implementação
O mesmo que a maioria dos programas de interface gráfica de usuário (GUI) para computação química , 3DStructGen foca na geração da geometria molecular inicial. Como mostrado na Fig. 1, os módulos básicos de molécula, cristal e laje de superfície consistem em vários métodos para lidar com molécula não periódica, cristal periódico, bem como sistema de laje de superfície, respectivamente. A tela HTML5 é o módulo central para exibir estruturas 3D e conectar todos os outros módulos. O módulo do mouse fornece uma série de operações interativas por mouse para os usuários. Os métodos de processamento para formatos de arquivos químicos gerais (XYZ, SD, MOL, CIF) são suportados no módulo IO, e o arquivo de entrada inicial para VASP e Gaussian pode ser produzido usando o módulo de interface. O módulo explorador imprime as informações interativas (por exemplo, nome do arquivo, parâmetro da malha, distância do átomo, coordenada do átomo, etc.) para os usuários em tempo real. Adicionalmente, o ChemKit API fornece extensões do 3DStructGen integrando outras ferramentas cheminformatics.
Element, atom e molécula
Os parâmetros dos elementos (por exemplo número do átomo, símbolo do elemento, massa atômica, cor, raios covalentes, etc.) são definidos como uma lista na função “elemento ()”. A função “addElem ()” é usada para adicionar um elemento especificado pelos usuários, e o modelo de átomo correspondente será visualizado na tela. Todos os elementos são visualizados na mesma cor que no programa VESTA. A molécula de metano é apresentada na tela quando se inicializa o 3DStructGen. A representação “ball-and-stick” das estruturas com o tamanho dos átomos com base em seus raios covalentes por padrão. Além disso, os modelos “stick-and-line” também podem ser especificados pelos usuários.
As funções “addAtom ()” e “delAtom ()” são usadas para adicionar um novo átomo e excluir um átomo existente em uma molécula, respectivamente. Por padrão, um número adequado de átomos de hidrogênio será adicionado de acordo com a regra da teoria do octeto, e aos ângulos de ligação é atribuído um valor baseado na hibridação orbital (sp3 no padrão) selecionada pelos usuários.
Quando um novo átomo é adicionado, uma ligação é criada dentro do seu valor da soma dos raios covalentes dos átomos ligados. A conexão entre pares de átomos pode ser adicionada usando operações do mouse, chamando a função “addBond ()”, definida em arquivos ou calculada pelo 3DStructGen. A função “createBond ()” descreve detalhadamente a regra de ligação: primeiro, é construída uma lista de possíveis átomos de ligação com base no modelo de valor da ligação, e depois é calculada a distância para estes possíveis átomos de ligação. Uma obrigação é criada se a distância cair entre 0,5 e 1,2 vezes a soma dos raios covalentes para estes átomos de ligação. Aqui, a distância de 0,5 vezes é usada para evitar a ligação entre os átomos fechados (talvez sobreposição de átomos). A função “bondMatrix ()” define uma rotina pública para armazenar e retornar a lista de ligações. O algoritmo de etiquetagem gráfica (pseudo código na Fig. 2) usado para reconhecer framework e guest (incluindo molécula de solvente) são desenvolvidos para lidar com frameworks metal-orgânicas (MOF) na base de dados estrutural de Cambridge (CSD). Nosso método de ligação tem mostrado resultados satisfatórios para esta tarefa, e os resultados de visualização podem ser encontrados na seção “Visualização de estrutura”.
Quando uma estrutura é criada, um átomo ou um grupo de átomos selecionados pelos usuários pode ser movido para cima, para baixo, para a esquerda e para a direita por uma distância especificada pelo usuário. Uma otimização da geometria bruta é suportada para moléculas não periódicas através da otimização dos comprimentos de ligação, ângulos de ligação e diedros seguindo o mesmo método em CH5M3D . Uma otimização geométrica opcional baseada no método de arquivo de força também é fornecida pelo uso do ChemKit API, que é explicado em mais detalhes na seção “ChemKit API”.
Crystal and surface slab
A função “buildCrystal ()” é usada para construir a estrutura da malha de cristal. Ao clicar na caixa de diálogo do “build crystal”, os grupos de espaço de simetria (230 no total), parâmetros da malha, tipos de átomos e coordenadas podem ser selecionados ou editados interativamente pelos usuários. Quando todas as operações estiverem concluídas, uma estrutura de cristal será mostrada na tela.
A laje da supercélula é um modelo estrutural usado em simulações de dinâmica quântica ou molecular para estudar as propriedades cinéticas, termodinâmicas e eletrônicas da superfície. A função “cleaveSurf ()” mostra um algoritmo para construir uma laje de superfície com qualquer orientação de índice Miller a partir de uma célula a granel de qualquer malha Bravais. Uma laje com duas superfícies é embutida com regiões de vácuo em uma supercélula. Sun propôs um algoritmo eficiente para construir uma superfície de laje, e o mesmo método é usado para encontrar dois vetores base que abrangem uma determinada orientação de superfície, {vvec{v}_{1}) e {vec{v}_{2}). As descrições detalhadas são as seguintes:
Se um índice Miller não contém zeros, tomamos (hkl) como exemplo:
Se um índice Miller contém um zero, tomamos (hk0) como exemplo:
Se um índice Miller contém dois zeros, tomamos (h00) como exemplo:
Para uma estrutura de cristal composta por uma célula unitária, e um conjunto de átomos são dispostos de forma a que os átomos se repitam periodicamente em três dimensões numa grelha. A função “displayStyle ()” fornece vários métodos para exibir os átomos repetidos, e as imagens relevantes são mostradas na Fig. 3. As seguintes opções podem ser escolhidas no 3DStructGen:
-
“Assimétrico”: A subunidade mínima de um cristal é apresentada, consistindo de um ou mais átomos, íons ou moléculas, dos quais a disposição geométrica não está relacionada por simetria cristalográfica.
-
“Original”: Usando este estilo, cada átomo será exibido em sua localização original, juntamente com as cópias formadas pela aplicação de cada um dos operadores do grupo de simetria.
-
“In-cell”: Os átomos são exibidos com base se suas coordenadas, bem como suas cópias simétricas estão na célula da malha.
-
“Embalagem”: As moléculas completas e suas cópias simétricas em uma célula da malha serão exibidas dependendo do centro geométrico dos conjuntos de átomos conectados. Isto dá uma exibição da célula convencional para a maioria dos tipos de sistema de cristal.
Os estilos acima permitem aos usuários visualizar os átomos de maneiras desejadas para diferentes cenários. O “Assimétrico” pode ser útil para focar nos detalhes da estrutura mínima quando todas as cópias são invisíveis, especialmente para modelos grandes e complexos. Os estilos “Original” e “Packing” fornecem as cópias das unidades, que demonstram a informação simétrica de um cristal. O estilo “In-cell” captura um vislumbre de todos os átomos possíveis na célula da malha, o que corresponde à cena real de truncagem de uma célula da malha de todo o sistema periódico.