Avogadro: um editor químico semântico avançado, plataforma de visualização e análise

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.

Figure 4
figure4

A interface gráfica do usuário do Avogadro. Tirado no Mac OS X, mostrando a interface de edição para uma molécula.

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.

Figure 5
figure5

Dialogs para inserção de fragmentos pré-construídos. A esquerda mostra moléculas, e a direita sequências amino-ácidas.

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.

Figure 6
figure6

Dialog para geração de entrada para códigos quânticos. Diálogos para geração de entrada para Q-Chem, NWChem, Molpro e MOPAC200x. Note que os diálogos são similares na interface, permitindo aos usuários usar múltiplos pacotes de química computacional.

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.

Figure 7
figure7

O gerador de deck de entrada GAMESS-US. Este gerador de entrada tem um painel avançado e destaque de sintaxe.

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.

Figure 8
figure8

A ferramenta de medição. A ferramenta de medição sendo usada para medir ângulos e comprimentos de ligação (no Linux com KDE 4).

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.

Figure 9
figure9

Orbitais e superfícies moleculares. Renderização de uma superfície molecular orbital isosuperficial (esquerda) e um potencial de superfície eletrostática mapeada na densidade de elétrons (direita).

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).

Figure 10
figure10

Renderização orbital molecular usando shaders GLSL. Renderização de uma superfície orbital molecular usando dois shaders GLSL para destacar as bordas das superfícies. O efeito de raio X (esquerda) e vermelho e azul (direita) mostrando as formas orbitais moleculares positivas e negativas.

Ray tracing

Avogadro usa uma abstração do pintor que facilita muito a adição de novos tipos de display. Ele também abstrai o renderizador, tornando possível adicionar suporte a backends alternativos. Atualmente apenas OpenGL e POV-Ray são suportados. Devido à abstração, somos capazes de usar as superfícies implícitas disponíveis nos traçadores de raio para renderizar a estrutura molecular em níveis muito altos de clareza e com nenhum dos artefatos triangulares presentes nas imagens padrão renderizadas em OpenGL. Transparência e reflexão de qualidade muito superior também permitem que as imagens sejam utilizadas em apresentações orais e em pôsteres, assim como em artigos de pesquisa (Figura 11).

Figure 11
figure11

Ray-traced HOMO isosurfaces de densidade variável de cubos. Renderização de uma isossuperfície orbital molecular usando POV-Ray com cubos de baixa (esquerda) e alta (direita) densidade.

Esta funcionalidade é implementada em uma extensão, com uma classe de pintor adicional derivada da classe base e um diálogo permitindo ao usuário editar os controles básicos de renderização. O arquivo de entrada do POV-Ray também pode ser mantido e editado para produzir imagens mais complexas, ou para permitir um controle muito mais fino do processo de renderização, se desejado.

Avogadro library in use

A primeira utilização da biblioteca Avogadro foi a aplicação Avogadro, seguida de perto pelo programa de tabelas periódicas Kalzium que faz parte da coleção de software do KDE. Este trabalho inicial foi financiado em parte pelo programa Google Summer of Code em 2007, e também resultou na adição de vários outros recursos na biblioteca Avogadro para apoiar o Kalzium e a visualização e edição geral da estrutura molecular (Figura 12).

Figure 12
figure12

A aplicação do Kalzium no KDE usando Avogadro para renderizar estruturas moleculares.

O pacote Q-Chem desenvolveu “QUI – The Q-Chem User Interface” em torno do Avogadro, originalmente como uma extensão Avogadro. Esta é uma versão mais avançada do gerador de entradas desenvolvido no Avogadro, com integração muito mais apertada. Molpro também publicou alguns resultados do seu desenvolvimento de uma interface Molpro usando a biblioteca Avogadro .

Packmol

Packmol é um pacote de terceiros projetado para criar configurações iniciais “embaladas” de moléculas para dinâmica molecular ou outras simulações . Exemplos disso incluem o contorno de uma proteína com solvente, misturas de solvente, biletes lipídicos, micelas esféricas, colocação de contadores, adição de ligandos a nanopartículas, etc. Tipicamente, os usuários podem ter “caixas de solventes” equilibradas que foram executadas para simulações longas para garantir a densidade adequada, e interações de curto e longo alcance entre moléculas de solventes. O uso dessas caixas de solventes permite colocar moléculas de soluto, tais como proteínas, em uma estrutura inicial aproximadamente correta, como a mostrada na Figura 13. O soluto é adicionado à caixa, e as moléculas de solvente com átomos sobrepostos são removidas. Embora estas utilidades sejam frequentemente suficientes, nem sempre é fácil criar arquivos de entrada complexos. Para sistemas mais complicados, Packmol pode criar uma configuração inicial baseada em densidades definidas, geometrias (por exemplo, esfera, caixa, etc.), e as moléculas a serem colocadas. Um desenvolvedor Avogadro escreveu um plugin externo para facilitar o uso do Packmol, incluindo a estimativa do número de moléculas em um dado volume.

Figure 13
figure13

A camada lipídica PackMol como produzida pela extensão PackMol.

O plugin não é atualmente distribuído com o Avogadro como recurso padrão, embora esteja planejado para alguma versão futura. Ele serve como um exemplo de como o Avogadro pode facilitar um fluxo de trabalho com um pacote orientado a texto (Packmol), incluindo salvar arquivos no formato PDB requerido pelo Packmol, gerar um arquivo de entrada, e ler a saída para visualização, análise e outras simulações.

XtalOpt

O pacote de software XtalOpt é implementado como uma extensão C++ de terceiros para o Avogadro e faz uso pesado da API da libavogadro. A extensão implementa um algoritmo evolutivo feito sob medida para a previsão da estrutura de cristal. A equipe de desenvolvimento do XtalOpt escolheu o Avogadro como plataforma devido à sua licença open-source, API bem projetada, poderosas ferramentas de visualização e interface intuitiva com o usuário. O XtalOpt existe como uma janela de diálogo (Figura 14) e usa a janela principal do Avogadro para visualizar as estruturas candidatas à medida que elas evoluem. A API é bem adequada para as necessidades do XtalOpt, fornecendo um mecanismo simples para permitir ao usuário visualizar, editar e exportar as estruturas geradas durante a busca. Aproveitando as capacidades de cross-platform do Avogadro e suas dependências, o XtalOpt está disponível para Linux, Windows e Mac.

Figure 14
figure14
>p> A extensão XtalOpt. A extensão XtalOpt mostrando um gráfico de estabilidade vs. progresso da busca por uma supercélula TiO2.

Deixe uma resposta

O seu endereço de email não será publicado.