- A interface gráfica do usuário
- Semantic chemistry
- Construir uma molécula: átomo por átomo
- Construindo uma molécula: de fragmentos
- Preparação de entrada para códigos quânticos
- Alinhamento e medições
- Visualização
- Representações padrão
- Cálculos quânticos e estrutura eletrônica
- Estrutura biológica secundária
- GLSL, nova visualização
- Ray tracing
- Avogadro library in use
- Packmol
- XtalOpt
A interface gráfica do usuário
A primeira coisa que a maioria das pessoas verá é a janela principal da aplicação Avogadro, como mostrado na Figura 4. Instaladores binários são fornecidos para Apple Mac OS X e Microsoft Windows, juntamente com pacotes para todas as principais distribuições Linux. Isto significa que o Avogadro pode ser instalado com bastante facilidade na maioria dos sistemas operacionais. Instruções fáceis de seguir sobre como compilar o código fonte mais recente também são fornecidas no site principal da Avogadro para os mais aventureiros, ou para aqueles que utilizam um sistema operacional que ainda não é suportado.
O kit de ferramentas Qt dá ao Avogadro uma aparência nativa nos três principais sistemas operacionais suportados – Linux, Apple Mac OS X, e Microsoft Windows. A funcionalidade básica esperada em um construtor e visualizador molecular foi implementada, juntamente com várias funcionalidades menos comuns. É muito fácil para os novos usuários instalar o Avogadro e construir suas primeiras moléculas em poucos minutos. Graças à biblioteca Open Babel , o Avogadro suporta uma grande parte dos formatos de arquivos químicos que são de uso comum. A grande maioria desta funcionalidade foi escrita usando a interface disponibilizada aos escritores de plugins, e é carregada em tempo de execução. Discutiremos essas interfaces de plugins e descrições dos tipos de plugins mais tarde.
Semantic chemistry
Avogadro tem usado CML como seu formato de arquivo padrão desde um estágio muito inicial; isto foi escolhido ao invés de outros formatos de arquivo devido à estrutura extensível, semântica fornecida pelo CML, e o suporte disponível no Open Babel . O formato CML oferece uma série de vantagens em relação a outros formatos de uso comum, incluindo a capacidade de estender o formato. Isso permite que o Avogadro e outros programas sejam à prova de futuro, adicionando novas informações e recursos necessários para um editor avançado e semântico em um momento posterior, enquanto ainda permanece legível em versões mais antigas do Avogadro.
Através do uso do Open Babel , uma grande variedade de formatos de arquivos pode ser interpretada. Ao estender o Avogadro para ler em maior quantidade a saída de códigos quânticos, foi necessário dedicar recursos significativos de desenvolvimento para entender e adicionar significado semântico à saída de códigos quânticos. Este trabalho foi desenvolvido em um plugin, que posteriormente foi dividido em uma pequena biblioteca independente chamada OpenQube . Mais recentemente, uma grande quantidade de trabalho foi feita pelo projeto Quixote, JUMBO-Converters e o workshop Semantic Physical Science para aumentar os códigos quânticos para produzir mais destes dados diretamente a partir do código. Como o CML pode ser estendido, é possível reutilizar convenções existentes para dados de estrutura molecular, e adicionar novas convenções para os dados quânticos adicionais.
Construir uma molécula: átomo por átomo
Após abrir Avogadro é apresentada uma janela como a mostrada na Figura 4. Por padrão, a ferramenta de desenho é selecionada. Basta clicar com o botão esquerdo do mouse sobre a parte preta do visor para desenhar um átomo de carbono. Se o usuário pressionar o botão esquerdo do mouse para baixo e arrastar, um átomo de carbono colado é desenhado entre o ponto inicial e a posição final onde o mouse é liberado.
Despende-se uma grande quantidade de esforço para criar uma ferramenta intuitiva para desenhar pequenas moléculas. Elementos químicos comuns podem ser selecionados a partir de uma lista suspensa, ou uma tabela periódica pode ser exibida para selecionar elementos menos comuns. Clicar num átomo existente altera-o para o elemento actualmente seleccionado, arrastar altera o átomo de volta para o seu elemento anterior e desenha um novo átomo colado ao original. Se as ligações forem clicadas com o botão esquerdo do mouse, os ciclos de ordem de ligação entre simples, duplo e triplo. Teclas de atalho também estão disponíveis, por exemplo, digitando o símbolo atômico (por exemplo, “C-o” para cobalto) altera o elemento selecionado, ou digitando os números “1,” “2,” e “3” altera a ordem de ligação.
P>Clicar direito nos átomos ou ligações os apaga. Se a caixa “Ajustar hidrogênios” estiver marcada, o número de hidrogênios ligados a cada átomo é automaticamente ajustado para satisfazer a valência. Alternativamente, isto também pode ser feito no final de uma sessão de edição usando a extensão “Adicionar hidrogênios” no menu de construção.
Além da ferramenta de desenho, há duas ferramentas para ajustar a posição dos átomos nas moléculas existentes. A ferramenta “atom centric manipulate” pode ser usada para mover um átomo ou um grupo de átomos selecionados. A ferramenta “manipulação cêntrica de ligação” pode ser usada para selecionar uma ligação, e então ajustar todas as posições dos átomos em relação à ligação selecionada de várias maneiras (por exemplo, alterando o comprimento da ligação, ângulos de ligação, ou ângulos diedros). Estas três ferramentas permitem uma grande flexibilidade na construção interativa de pequenas moléculas na tela.
Após a estrutura molecular estar completa, a extensão do campo de força pode ser usada para realizar uma otimização da geometria. Ao clicar em “Extensões” e “Otimizar Geometria”, uma rápida otimização geométrica é realizada na molécula. O campo de força e os parâmetros de cálculo podem ser ajustados, mas os valores padrão são adequados para a maioria das moléculas. Este fluxo de trabalho é típico quando se constrói uma pequena estrutura molecular para ser usada como entrada para cálculos quânticos, ou figuras de qualidade de publicação.
Uma alternativa é combinar a ferramenta “Otimização Automática” com a ferramenta de desenho. Isto apresenta uma forma única de esculpir a molécula enquanto a geometria é constantemente minimizada no fundo. A otimização da geometria é animada, e o efeito de alterar ordens de ligação, adicionar novos grupos ou remover grupos pode ser observado interativamente.
Diálogos transversais são implementados para fornecer informações sobre as propriedades da molécula e para mudar parâmetros com precisão, como as coordenadas cartesianas dos átomos na molécula.
Construindo uma molécula: de fragmentos
Além de construir moléculas átomo-a-atom, os usuários podem inserir fragmentos pré-construídos de moléculas comuns, ligandos, ou sequências amino-ácidas, como mostrado na Figura 5. Em todos os casos, após a inserção do fragmento, a ferramenta de manipulação centrada no átomo é selecionada, permitindo que o fragmento seja movido ou girado facilmente.
Os utilizadores também podem inserir um fio SMILES para uma molécula. Neste caso, uma geometria 3D aproximada é gerada usando Open Babel e uma otimização rápida do campo de força.
Preparação de entrada para códigos quânticos
Extensões Severais foram desenvolvidas para Avogadro que ajudam o usuário na preparação de arquivos de entrada para códigos quânticos populares como GAMESS-US, NWChem, Gaussian, Q-Chem, Molpro, e MOPAC200x . Os diálogos gráficos apresentam os recursos necessários para executar cálculos quânticos básicos; alguns exemplos são mostrados na Figura 6.
A visualização do arquivo de entrada na parte inferior de cada diálogo é atualizada à medida que as opções são alteradas. Esta abordagem ajuda novos usuários de códigos quânticos a aprender a sintaxe dos arquivos de entrada para diferentes códigos e a gerar rapidamente arquivos de entrada úteis à medida que eles aprendem. A entrada também pode ser editada manualmente na caixa de diálogo antes que o arquivo seja salvo e submetido ao código quântico. A extensão MOPAC também pode executar o programa MOPAC200x diretamente se ele estiver disponível no computador do usuário, e então recarregar o arquivo de saída no Avogadro uma vez que o cálculo esteja completo. Este recurso será estendido para outros códigos quânticos em futuras versões do Avogadro.
O plugin GAMESS-US é um dos mais altamente desenvolvidos, apresentando um diálogo básico presente na maioria dos outros geradores de deck de entrada, bem como um diálogo avançado expondo muitos dos tipos de cálculo mais incomuns e complexos. Além da caixa de diálogo avançada, o deck de entrada pode ser editado em linha e apresenta destaque de sintaxe (Figura 7) como usado em muitos editores populares destinados a desenvolvedores de software. Isto pode indicar erros de digitação simples em palavras-chave, bem como erros de espaço em branco mais difíceis de detectar que de outra forma causariam a falha do deck de entrada editado manualmente ao ser lido pelo GAMESS-US.
Alinhamento e medições
Uma das ferramentas especializadas incluídas na distribuição padrão Avogadro é a ferramenta de alinhamento. Esta ferramenta do mouse facilita o alinhamento de uma estrutura molecular com a origem coordenada se um átomo for selecionado, e ao longo do eixo especificado se dois átomos forem selecionados. A ferramenta de alinhamento pode ser combinada com a medida, selecionar e manipular ferramentas para criar entradas para códigos quânticos onde a posição e orientação da molécula é importante. Um exemplo disso são os cálculos onde um campo elétrico externo é aplicado à molécula. Nestes tipos de cálculos, o alinhamento da molécula pode ter um grande efeito. A figura 8 mostra a ferramenta de medição em ação com o diálogo de configuração da ferramenta de alinhamento visível no canto inferior esquerdo.
Ferramentas de alinhamento mais complexas para tarefas específicas poderiam ser criadas. A ferramenta de alinhamento foi criada em apenas algumas horas para um projeto de pesquisa específico. Este é um excelente exemplo onde a extensibilidade foi muito importante para realizar pesquisas usando uma ferramenta gráfica de química computacional. Não valeria a pena o investimento para criar uma nova aplicação apenas para alinhar estruturas moleculares a um eixo, mas criar um plugin para um projeto extensível não é irracional.
Visualização
A aplicação Avogadro usa OpenGL para renderizar representações moleculares para a tela de forma interativa. O OpenGL oferece uma API de alto nível e multi-plataforma para renderizar imagens tridimensionais usando gráficos acelerados por hardware. O OpenGL 1.1 e abaixo é usado na maioria do código de renderização, e assim o Avogadro pode ser usado mesmo em sistemas de computador mais antigos, ou aqueles sem gráficos acelerados mais modernos. Ele é capaz de aproveitar algumas das novas funcionalidades disponíveis no OpenGL 2.0 como descrito abaixo, mas isto tem sido mantido como uma funcionalidade extra opcional quando se trabalha em novas visualizações de estrutura molecular.
Representações padrão
Em química, existem várias representações padrão de estrutura molecular, originalmente baseadas naquelas possíveis com modelos físicos. A aplicação Avogadro implementa cada uma destas representações mostradas na Figura 2 como um plugin. Estas vão desde a representação simples de wireframe, bastão/licorice, esfera e bastão e esferas Van der Waals.
Também é possível combinar várias representações, tais como esfera e bastão com renderização em anel (Figura 2 (d)), e uma representação semi-transparente de Van der Waals com preenchimento de espaço com uma representação de bastão para elucidar o backbone molecular (Figura 2 (f)).
Cálculos quânticos e estrutura eletrônica
Códigos quânticos foram originalmente desenvolvidos para impressoras de linha, e infelizmente pouco mudou desde então nos arquivos de log padrão. Existem vários formatos desenvolvidos para uso em outros códigos e especificamente para visualização e análise, mas há pouca concordância sobre qualquer formato de arquivo padrão na comunidade de química quântica computacional. Um plugin foi desenvolvido em Avogadro para visualizar a saída de vários códigos quânticos, e obter os dados no formato certo para posterior visualização e análise.
Foram adicionados e estendidos suportenial no Open Babel para arquivos em cubo Gaussiano. Este formato fornece coordenadas atômicas e uma ou mais grades regularmente espaçadas de valores escalares. Isto pode ser lido, e técnicas como o algoritmo marching cubes podem ser usadas para calcular malhas triangulares de isossuperfícies em valores de densidade de elétrons, por exemplo. Uma vez que o código foi desenvolvido para visualizar estas isossuperfícies, tornou-se claro que seria útil ser capaz de calcular estes cubos na mosca, e em diferentes níveis de detalhe dependendo do uso pretendido.
O primeiro formato, que foi um pouco documentado no momento em que foi desenvolvido, é o formato de ponto de verificação no formato Gaussiano. Este formato é muito mais fácil de analisar do que os arquivos de log gerados enquanto o programa é executado, e fornece todos os detalhes necessários para calcular os valores escalares da densidade molecular orbital ou de elétrons em qualquer ponto do espaço. Uma vez desenvolvida uma estrutura de classes para orbitais do tipo Gaussiano, a abordagem foi estendida para leitura em vários outros formatos populares de arquivos de saída, incluindo Q-Chem, GAMESS-US, NWChem e Molpro. O suporte a MOPAC200x foi adicionado posteriormente, juntamente com o suporte ao formato AUX e orbitais do tipo Slater usados nesse código. Todos estes códigos saem suas configurações finais usando a combinação linear padrão de orbitais atômicos, o que significa que a paralelização é extremamente simples.
O plugin foi desenvolvido para aproveitar a abordagem map-reduce oferecida pela QtConcurrent, a fim de usar todos os núcleos de processadores disponíveis. Isto oferece escalas quase lineares, já que cada ponto da grade pode ser calculado independentemente de todos os outros pontos, cujos resultados podem ser vistos na Figura 9. Uma abordagem alternativa para calcular os orbitais moleculares foi desenvolvida em um segundo plugin que desde então foi dividido em um projeto separado chamado “OpenQube”. A biblioteca “OpenQube” também foi adicionada como um backend opcional no VTK durante o Google Summer of Code 2011, trazendo suporte para vários formatos de arquivos de saída e cálculo de arquivos de cubos que mais tarde podem ser alimentados em pipelines de dados mais avançados.
Uma hierarquia de classes com um API padrão é fornecida para saída quântica. Adicionando suporte a novos códigos envolvidos no desenvolvimento de um novo analisador e garantindo que o conjunto Gaussiano ou Slater seja preenchido com a ordenação correta e o esquema de normalização esperado. Os orbitais s, p e d tipo Gaussiano são suportados, com f e g suporte planejado a fim de suportar o número crescente de cálculos usando esses orbitais de ordem mais alta. O Basis Set Exchange hospedado pela EMSL fornece acesso aos conjuntos de base em uso comum, embora no momento esses conjuntos de base são normalmente lidos diretamente dos arquivos de saída. Existem vários projectos relacionados para adicionar significado semântico a este tipo de saída, incluindo o projecto JUMBO-Converters e o Quixote. Espera-se que mais códigos adotem a saída semântica no futuro, usando um formato comum para que a troca de dados, validação e análise se tornem mais fáceis através de vários códigos. Este foi o tema de uma recente reunião com vários códigos de química computacional que começaram a utilizar o FoX para a saída de CML. Começou o desenvolvimento do código a ser lido na saída CML, seja diretamente dos códigos ou da conversão de outros formatos usando o Open Babel ou o JUMBO-Converters. Se uma estrutura semântica suficiente pode ser adicionada ao CML, e os conversores suportam uma gama suficientemente grande da saída, isto poderia substituir a maioria do código de análise presente no OpenQube. O significado semântico é um dos mais difíceis de extrair dos arquivos de log, e se reunir como uma comunidade ajudará projetos como Avogadro a derivar mais significado dos outputs desses códigos.
Estrutura biológica secundária
Avogadro usa o leitor PDB do Open Babel para ler na estrutura biológica secundária. Existem dois plugins para processar e renderizar esta informação. O primeiro é um plugin que torna um tubo simples entre os átomos da espinha dorsal da biomolécula. Um segundo plugin mais avançado calcula malhas para as hélices alfa e folhas beta. Enquanto o primeiro plugin é muito mais rápido, o plugin avançado produz com mais precisão a saída esperada no campo. Isto permite aos usuários flexibilidade para renderizar estruturas biológicas secundárias.
GLSL, nova visualização
GLSL, ou OpenGL Shader Language, é uma sintaxe parecida com C que pode ser usada para desenvolver código que será executado em placas gráficas e incluído na especificação OpenGL 2.0. Tem sido usada com grande efeito pela indústria de jogos, bem como em muitas áreas de visualização de dados. Vários trabalhos recentes destacam o potencial em química, como o QuteMol em adicionar suporte a recursos como oclusão ambiente para adicionar profundidade às imagens.
Avogadro tem suporte a programas de sombreamento de vértices e fragmentos, e vários exemplos estão empacotados com o pacote. Se a placa gráfica do usuário for capaz, estes programas podem ser carregados em tempo de execução e usados para um grande efeito para visualizar a estrutura. Alguns destes incluem técnicas de sumarização como a renderização isosurface onde apenas as bordas ortogonais ao plano de visão são visíveis, dando uma renderização muito melhor tanto da estrutura molecular quanto da estrutura eletrônica (Figura 10).