gP2S é um aplicativo web para o rastreamento de experimentos crioEM. Suas principais características são descritas, assim como as etapas necessárias para instalar e configurar o aplicativo. Uma vez configurado, o aplicativo permite gravar com precisão metadados associados a experimentos de manchas negativas e crioEM.
A microscopia eletrônica criogênica (crioEM) tornou-se parte integrante de muitos projetos de descoberta de drogas porque a cristalografia da meta proteica nem sempre é alcançável e o crioEM fornece um meio alternativo para apoiar o design de ligantes baseado em estrutura. Ao lidar com um grande número de projetos distintos, e dentro de cada projeto um número potencialmente grande de co-estruturas de proteína de ligante, a manutenção precisa de registros rapidamente se torna desafiadora. Muitos parâmetros experimentais são ajustados para cada alvo, incluindo na preparação da amostra, preparação da grade e estágios de microscopia. Portanto, a manutenção precisa de registros pode ser crucialmente importante para permitir a reprodutibilidade a longo prazo e facilitar o trabalho em equipe eficiente, especialmente quando as etapas do fluxo de trabalho crioEM são realizadas por diferentes operadores. Para ajudar a lidar com esse desafio, desenvolvemos um sistema de gerenciamento de informações baseado na Web para crioEM, chamado gP2S.
A aplicação mantém o controle de cada experimento, da amostra ao modelo atômico final, no contexto dos projetos, uma lista da qual é mantida na aplicação, ou externamente em um sistema separado. Vocabulários controlados definidos pelo usuário de consumíveis, equipamentos, protocolos e software ajudam a descrever cada etapa do fluxo de trabalho crioEM de forma estruturada. o gP2S é amplamente configurável e, dependendo das necessidades da equipe, pode existir como um produto autônomo ou fazer parte de um ecossistema mais amplo de aplicações científicas, integrando-se via APIs de DESCANSO com ferramentas de gerenciamento de projetos, aplicativos que acompanham a produção de proteínas ou de ligantes de pequenas moléculas, ou aplicações que automatizam a coleta e armazenamento de dados. Os usuários podem registrar detalhes de cada sessão de grade e microscopia, incluindo os principais valores experimentais de metadados e parâmetros, e a linhagem de cada artefato experimental (amostra, grade, sessão de microscopia, mapa, etc.) é registrada. o gP2S serve como um organizador de fluxo de trabalho experimental crioEM que permite a manutenção precisa de registros para equipes e está disponível sob uma licença de código aberto.
Gerenciamento de informações nas instalações crioem
A partir de 2014, aproximadamente, o número de microscopia eletrônica criogênica (crioEM)1 tem crescido explosivamente, com pelo menos 300 sistemas high-end instalados em todo o mundo2, incluindo em um número de empresas farmacêuticas, refletindo um papel crescente para o crioEM na descoberta de medicamentos3. As missões dessas instalações e seus requisitos para rastreamento e gerenciamento de dados diferem4. Alguns, por exemplo, os centros crioEM nacionais, são encarregados de receber grades EM, coletar conjuntos de dados e devolver dados aos usuários para determinação da estrutura, talvez após algum processamento automatizado de imagens. Nessas instalações, o acompanhamento da procedência da rede, sua associação com uma proposta ou concessão do usuário e a linhagem da grade para o conjunto de dados são cruciais, mas outros fatores, como o método de purificação da amostra de proteína ou o eventual processo de determinação da estrutura, são menos, ou não, relevantes. Em outras instalações, como instalações acadêmicas locais, cada usuário final é responsável por preparar suas próprias amostras e grades, realizar a microscopia, gerenciar os dados brutos e seu processamento e publicação dos resultados. Não há necessidade rigorosa de rastreamento de metadados por parte de tal instalação porque essa função é cumprida pelo usuário final ou pelo seu principal investigador.
Em nossa instalação crioEM, o manuseio e otimização de amostras, grades, protocolos de coleta e processamento de dados e resultados (mapas, modelos) é centralizado em muitos projetos para um pequeno grupo de profissionais. Isso apresenta desafios na gestão experimental (meta)de dados. A linhagem experimental das estruturas, desde o modelo atômico até a identidade exata de proteínas e ligantes, através de parâmetros de preparação de grade e protocolos de coleta de dados, deve ser capturada e preservada com precisão. Esses metadados devem ser disponibilizados para vários operadores humanos. Por exemplo, uma pessoa que faz o processamento de imagens pode precisar saber qual construção de uma proteína foi usada e quais eram os parâmetros de imagem, mesmo que eles não tenham purificado a proteína nem coletado os próprios dados crioEM; sistemas de informática, como daemons automatizados de gerenciamento de dados, precisam identificar o projeto para o qual um microscópio está coletando dados atualmente, a fim de atribuir corretamente e sistematicamente nomes de diretórios.
Vários sistemas de gerenciamento de informações estão disponíveis para suportar instalações crioEM. Talvez o mais completo entre eles seja o EMEN25, que combina recursos de um notebook de laboratório eletrônico, um sistema de gerenciamento de informações e alguns elementos de uma ferramenta de gerenciamento de processos de negócios. Usado em muitos síncrotrons, o ISPyB6, originalmente construído para suportar as linhas de raios-X para cristalografia, agora também suporta a coleta de dados crioEM. O Scipion7 é um invólucro rico e poderoso em torno de pacotes de processamento de imagens, que permite que os usuários gravem fluxos de trabalho de processamento de imagens e compartilhem-os, por exemplo, através do repositório público EMPIAR8,9,e também está integrado ao ISPyB para permitir o processamento de dados crioEM on-the-fly.
Aqui descrevemos o gP2S (para Genentech Protein to Structure), um moderno e leve sistema de gerenciamento de informações crioEM construído para suportar o fluxo de trabalho desde proteína purificada e ligante de moléculas pequenas até o modelo atômico final.
Visão geral do gP2S
O gP2S é um sistema de gerenciamento de informações crioEM baseado na Web que facilita a manutenção precisa de registros para laboratórios crioEM e instalações multi-usuários de vários projetos. São rastreados os seguintes conjuntos, suas relações e metadados associados: projetos, equipamentos, consumíveis, protocolos, amostras, grades, sessões de microscopia, sessões de processamento de imagens, mapas e modelos atômicos. Os usuários também podem adicionar comentários de texto livre, opcionalmente incluindo anexos de arquivos, permitindo uma anotação rica de qualquer entidade registrada no gP2S. A front-end foi projetada para facilitar o uso com dispositivos touchscreen e testada extensivamente em iPad Pros de 12,9″, possibilitando o uso de gP2S no banco de laboratório enquanto prepara amostras e grades(Figura 1),bem como no computador ao operar o microscópio, processar imagens ou modelos de depósito. Cada página na parte frontal visa reduzir a entrada manual de dados por parâmetros de pré-configuração para valores padrão sensíveis quando possível.
O backend do gP2S apresenta uma série de pontos finais de API (REpresentational State Transfer Application Programming Interface), possibilitando a integração do gP2S nos fluxos de trabalho e scripts existentes. O modelo de dados foi projetado para permitir a captura precisa de fluxos de trabalho negativos de manchas e crioEM, incluindo ramificações, por exemplo, com uma amostra usada em várias grades, dados de várias sessões de microscopia sendo mesclados em uma única sessão de processamento de dados ou uma sessão de processamento de dados produzindo vários mapas.
Arquitetura do sistema
gP2S é um aplicativo clássico de três níveis(Figura 2). Nesta arquitetura modular, o sistema é dividido em três camadas separadas, cada uma responsável pelo desempenho de deveres distintos, e cada uma substituível ou modificável independentemente das outras. (1) A camada de apresentação (ou frontend) fornece acesso ao usuário via navegador web (amplamente testado com Chrome e Safari), permite a criação e modificação de elementos de fluxo de trabalho (incluindo validação de dados) e exibe dados experimentais como entidades individuais, listas baseadas em projetos e relatórios completos de fluxo de trabalho. (2) A camada de serviço (ou backend) serve como uma camada intermediária entre a interface do usuário e o sistema de armazenamento – ela mantém a lógica de negócios central, expõe a API de serviço usada pelo front-end, integra-se com o armazenamento de dados e o sistema LDAP (Lightweight Directory Access Protocol) para autenticação do usuário e fornece uma base para uma integração adicional com sistemas externos. (3) A camada de persistência (acesso a dados) é responsável pelo armazenamento de dados experimentais, comentários do usuário e anexos de arquivos.
Principais tecnologias e frameworks
Para facilitar o desenvolvimento, construção e manutenção da aplicação gP2S, diversas tecnologias e frameworks foram utilizadas no projeto. Os mais importantes são: Vue.js 2.4.210 para o frontend e SpringBoot 1.311 com servidor Tomcat 8 incorporado para o back-end. O aplicativo usa bancos de dados MySQL 5.7 e MongoDB 4.0.6 para armazenamento e LDAP12 para autenticação. Por padrão, todas essas peças componentes são enviadas e implantadas como um único aplicativo.
No total, o aplicativo usa centenas de bibliotecas diferentes direta ou indiretamente. Os mais proeminentes estão listados na Tabela 1.
Modelo de dados
Três tipos de entidades podem ser distinguidas no modelo de dados gP2S (Figura 3): entidades de fluxo de trabalho relacionadas aos dados coletados durante os experimentos (por exemplo, amostras ou sessões de microscopia); entidades de equipamentos e protocolos que descrevem dados comuns em todos os projetos (por exemplo, microscópios ou protocolos de vitrificação); outras entidades que desempenham funções favoráveis ou técnicas no sistema (por exemplo, comentários ou valores padrão).
A raiz da árvore de dados do fluxo de trabalho é a entidade do Projeto. Cada projeto consiste em uma série de Proteínas e/ou Ligantes que estão construindo blocos para a criação de entidades amostrais. Cada amostra pode ser usada para criar várias grades que, por sua vez, são usadas em Sessões de Microscopia (uma grade por sessão de microscopia). Estes últimos são atribuídos a Sessões de Processamento que podem produzir um ou mais mapas. A última entidade na árvore é o Modelo Atômico, criado usando um ou muitos Mapas. Em consequência, todas as entidades relacionadas ao fluxo de trabalho, da Proteína ao Modelo, estão sempre vinculadas a um projeto específico através de seus ancestrais. Esse design cria agregados de dados fáceis de processar, seja pelo módulo frontend ou por sistemas externos que usam a API.
Além dos dados de fluxo de trabalho, existem entidades que descrevem equipamentos utilizados em experimentos ou protocolos que foram seguidos durante a preparação de grades. A definição dessas entidades é um pré-requisito para a criação de entidades experimentais de fluxo de trabalho, como Grades, Microscopia e Sessões de Processamento.
O último tipo de entidade de dados, coletivamente denominada “Outro”, é usada para fins técnicos (por exemplo, anexos de arquivos ou valores padrão). Esta categoria inclui entidades de comentários que podem ser vinculadas a qualquer fluxo de trabalho ou entidades de equipamentos/protocolos.
Disponibilidade de software
A versão de código aberto do gP2S está disponível sob uma versão apache license 2.026, a partir de https://github.com/arohou/gP2S. Uma imagem do Docker para executar o gP2S está disponível a partir de https://hub.docker.com/r/arohou/gp2s. Uma filial de fonte fechada do gP2S está em desenvolvimento contínuo na Roche & Genentech.
Executando o aplicativo gP2S
Existem duas maneiras de executar gP2S: como um contêiner docker ou como um aplicativo Java autônomo. A escolha ideal dependerá do ambiente de implantação de destino. Por exemplo, se a capacidade de personalizar ou melhorar o código para atender às necessidades específicas dos usuários for desejada, todo o aplicativo deve ser re-construído primeiro. Neste caso, pode-se recomendar a execução do gP2S como um aplicativo autônomo.
Contêiner Docker
A maneira mais fácil de começar a trabalhar com o aplicativo gP2S é executá-lo como um serviço Docker. Para isso, uma imagem dedicada do Docker foi preparada e publicada no repositório do Docker Hub (“https://hub.docker.com/r/arohou/gp2s”). A execução da imagem gP2S depende do acesso aos bancos de dados MySQL e MongoDB e a um servidor LDAP. Para ambiente não produtivo, recomenda-se executar todas essas dependências como aplicações Docker de vários contêineres, juntamente com o aplicativo gP2S. Para tornar isso perfeito, um arquivo compor docker (https://github.com/arohou/gP2S/blob/master/docker-compose.yml) que inclui todas as configurações necessárias do ambiente final foi preparado e fornecido no repositório gP2S GitHub (https://github.com/arohou/gP2S). As seguintes imagens do docker são as dependências: mysql27, mongodb28, apacheds29.
Na configuração padrão, todos os dados armazenados, tanto entidades quanto anexos de arquivos serão excluídos após a remoção dos recipientes docker. Para manter os dados, os volumes de docker devem ser usados ou o aplicativo gP2S deve ser conectado a instâncias de banco de dados dedicadas (MySQL e MongoDB). O contêiner do servidor IDAP ApacheDS vem com um usuário administrativo pré-configurado (senha: segredo). Essas credenciais devem ser usadas para fazer login no aplicativo gP2S quando ele for executado como um serviço Docker. Para ambientes de produção, o mesmo arquivo docker-compor pode ser utilizado para implantar gP2S (e outros contêineres, se necessário) como serviços para uma plataforma de orquestração de contêineres Docker Swarm.
O processo completo de execução do gP2S como um contêiner Docker, incluindo todos os detalhes sobre a configuração adequada é descrito no repositório gP2S GitHub e abrange os seguintes tópicos:
• Executar o aplicativo gP2S dockerizado com todas as dependências.
• Acessando o aplicativo gP2S, banco de dados e LDAP.
• Atualização do serviço gP2S com uma nova versão.
• Remoção do aplicativo gP2S.
• Configuração da persistência dos dados.
• Conectar o aplicativo gP2S dockerizado a bancos de dados dedicados ou a um servidor LDAP.
• Detalhes de configuração
Aplicativo Java autônomo
Outra opção para executar o aplicativo gP2S é construir um pacote Java independente. Esta abordagem deve ser tomada se a execução de contêineres Docker não for possível. A construção do aplicativo gP2S requer a instalação de um Java Development Kit versão 8 ou superior. Todo o processo de compilação é gerenciado pela ferramenta Maven, que é fornecida na base de código no repositório Do GitHub. A configuração de compilação está preparada para construir a parte frontend primeiro, depois copiá-la para fontes de back-back-back-e, em seguida, construí-la como um aplicativo final. Dessa forma, não há necessidade de instalar outras ferramentas ou bibliotecas para preparar um pacote gP2S em pleno funcionamento. Por padrão, o resultado da compilação é um pacote JAR (armazenado localmente) e imagem Docker (empurrado para o repositório configurado no arquivo maven pom.xml). É importante lembrar que as informações necessárias para se conectar a sistemas externos (bancos de dados e servidor LDAP) precisam ser fornecidas em um arquivo de configuração adequado antes que o pacote seja construído.
Uma vez criado o pacote JAR gP2S, ele contém todas as dependências e informações de configuração necessárias para executar o aplicativo, incluindo o servidor de aplicativo Tomcat que hospeda o sistema. Se o pacote foi construído com vários arquivos de configuração, ele pode ser executado em diferentes modos sem reconstrução.
O repositório gP2S GitHub inclui uma descrição completa do processo de construção e execução do gP2S como um aplicativo autônomo e abrange os seguintes tópicos:
• Construção de gP2S usando a ferramenta Maven
• Construção e execução com bancos de dados incorporados
• Construção e funcionamento com dependências implantadas como contêineres docker
• Construção e execução com bancos de dados dedicados
• Configuração de autenticação
Quando usado de forma adequada e consistente, o gP2S ajuda a alcançar a manutenção adequada dos metadados de alta qualidade, aplicando o registro de metadados experimentais críticos usando modelos de dados estruturados e vocabulários definidos, mas o valor agregado disso só é totalmente realizado quando um alto nível de conformidade é alcançado em laboratório. O protocolo acima não cobre como conseguir isso. Descobrimos que uma técnica eficaz de aplicação era fazer com que os operadores de microscópio se recusassem a coletar dados em redes não registradas no gP2S. Isso levou a conformidade muito rapidamente e estabeleceu o terreno para o surgimento, ao longo dos meses seguintes, de um grande corpo de detalhes experimentais detalhados e precisos e memória corporativa. Após alguns meses de uso, o valor do corpus de metadados armazenados no gP2S tornou-se tão óbvio para a maioria dos usuários que a conformidade permaneceu alta sem intervenção explícita.
Aproveitar totalmente essa memória coletiva requer que os metadados armazenados no gP2S sejam acessíveis a sistemas externos e facilmente associados aos dados experimentais (micrografos) e resultados (mapas e modelos). O protocolo acima não descreve como integrar o gP2S com outros sistemas de informática e processamento de dados. As mais simples são as integrações potenciais através da API REST do gP2S, que não requerem nenhuma modificação do gP2S. Por exemplo, cada computador que controla nossos detectores de coleta de dados executa um script que consulta periodicamente o ponto final do gP2S “getItemByMicroscope” sob o controlador REST de gerenciamento de sessão de microscopia, para verificar se uma Sessão de Microscopia está em andamento em seu microscópio. Se assim for, o script recupera do gP2S o nome apropriado do diretório de armazenamento de dados (conforme configurado na página Configurações, veja acima) e cria um diretório no dispositivo local de armazenamento de dados usando esse nome. Isso garante a nomeação sistemática de diretórios de armazenamento de dados e reduz o risco de erro devido a erros de digitação.
Embora tenham sido comentadas na fonte da versão pública do gP2S, outras integrações envolvendo os dados de sistemas externos que consomem gP2S também são possíveis. Em nosso laboratório, nossa implantação do gP2S integra-se a (i) um sistema de gerenciamento de projetos, para que cada projeto configurado no gP2S possa ser vinculado a um projeto de portfólio em toda a empresa, e os metadados do portfólio possam ser exibidos dentro do gP2S; (ii) um sistema de registro de proteínas, de modo que cada proteína adicionada ao gP2S esteja vinculada, através de um identificador armazenado localmente, a um conjunto completo de registros detalhando a procedência da proteína, incluindo detalhes da biologia molecular relevante, sistema de expressão e purificação; (iii) um sistema de gerenciamento composto de moléculas pequenas, permitindo que o gP2S exiba informações-chave sobre cada ligante, como sua estrutura química. As modificações de código necessárias para habilitar essas integrações estão descritas na seção “Integração” do documento README-BUILD.md disponível no repositório gP2S (https://github.com/arohou/gP2S).
A versão atual do gP2S tem limitações, a primeira delas é o modelo de dados excessivamente simplista e o frontend para deposição de estrutura (Modelo). Isso foi intencionalmente deixado em um estado de “ossos nus” na versão lançada do gP2S porque um recurso de deposição e validação de estrutura completa está atualmente em desenvolvimento, juntamente com o suporte para cristalografia de raios-X. Outra decisão de design foi não implementar nenhum sistema de privilégio ou permissão: todos os usuários do gP2S têm acesso igual aos seus recursos e dados. Isso pode torná-lo uma má escolha para instalações que atendem grupos de usuários com interesses concorrentes e requisitos de confidencialidade, mas não era uma preocupação para nossa instalação.
O desenvolvimento da nossa versão interna do gP2S está em andamento e esperamos que a versão de código aberto descrita aqui seja útil para outros grupos crioemoEM, e que alguns possam contribuir com sugestões ou melhorias de código no futuro. Desenvolvimentos futuros de alto valor poderiam, por exemplo, focar em integrações com equipamentos de laboratório (robôs de vitrificação, microscópios eletrônicos), software (por exemplo, para coletar metadados de processamento de imagens) e repositórios públicos externos (por exemplo, para facilitar depoimentos estruturais).
A coleta sistemática de metadados de alta qualidade possibilitados pelo uso rotineiro de gP2S no laboratório e na instalação crioEM pode ter um impacto significativo e positivo na capacidade de processar vários projetos em paralelo ao longo de um período de anos. À medida que grupos e instalações crioEM cada vez mais compartilhadas e centralizadas são estabelecidas, antecipamos a necessidade de sistemas de gerenciamento de informações, como o gP2S, continuar a crescer.
The authors have nothing to disclose.
Os autores agradecem a todos os outros membros da equipe de desenvolvimento do GP2S que trabalharam no projeto desde a sua criação: Rafał Udziela, Cezary Krzyżanowski, Przemysław Stankowski, Jacek Ziemski, Piotr Suchcicki, Karolina Pająk, Ewout Vanden Eyden, Damian Mierzwiński, Michał Wojtkowski, Piotr Pikusa, Anna Surdacka, Kamil Łuczak e Artur Kusak. Agradecemos também a Raymond Ha e Claudio Ciferri por ajudarem a montar a equipe e moldar o projeto.