
O laboratório manda 4,3 gigabytes; o produtor recebe uma página que ele entende
A DNA Genética do Brasil é referência em melhoramento genético bovino em Santa Catarina — e decidiu ser pioneira também na genômica ovina. O resultado do laboratório internacional chega como um arquivo de 4,3 GB com 59 milhões de linhas, ilegível para qualquer planilha. A Epicora construiu o SheepGen: a plataforma que lê esse arquivo em streaming, aplica um catálogo de 76 marcadores e 1.103 regras de interpretação — mantido pela própria equipe da DNA, sem programador no caminho — e entrega um laudo por animal, com nota por composto e alerta genético. Na primeira carga real: 735 animais de 24 propriedades, e a conta conferida por dois caminhos independentes, com zero divergência.
- Cliente
- DNA Genética do Brasil (Chapecó/SC)
- O que fizemos
- Plataforma web de avaliação genômica: importa o resultado bruto do laboratório, interpreta por um catálogo configurável de marcadores e emite o laudo por animal — com recálculo do rebanho inteiro quando a pesquisa avança
- Plataforma
- React + Vite · NestJS · MongoDB · AWS (S3, Elastic Beanstalk, SES) · Terraform
O ponto de partida
A DNA Genética já domina a genética bovina — coleta, interpretação e gestão de dados genômicos são o negócio dela. Ao entrar no segmento de ovinos, um mercado ainda pouco explorado no Brasil, ela montou a parceria internacional: amostras de cartilagem auricular dos animais são genotipadas no exterior num chip de 80 mil SNPs. A ciência estava resolvida. O problema era o que acontecia depois.
O resultado volta como um Illumina FinalReport: um arquivo de texto com uma linha por animal × SNP. Para um lote de 735 animais, isso significa 4,3 GB e cerca de 59 milhões de linhas — um arquivo que o Excel não abre (o limite dele é 1 milhão de linhas; o arquivo estoura 56 vezes) e que nenhuma pessoa lê. E do chip inteiro, só 76 marcadores interessam para a avaliação: o resto é ruído para este trabalho.
- Processamento manual em planilha, animal por animal — inviável no volume real: o dado útil estava enterrado em 59 milhões de linhas.
- Sem rastreabilidade por animal: o histórico de cada ovino não existia em lugar nenhum — existia um arquivo por lote.
- O cliente final recebia dado bruto, não leitura técnica — o valor percebido do serviço ficava abaixo do valor real da ciência.
- A regra de interpretação muda o tempo todo. É a natureza da genômica: a cada publicação científica, um marcador "ganha direção" e passa a pontuar. Nas palavras do próprio cliente: "pesquisas novas, a gente cria um campo novo, recalcula e entrega de novo" — não era recurso futuro, era a premissa de como ele trabalha.
A virada
A decisão estruturante foi tratar a regra de interpretação como dado, não como código. A equipe da DNA Genética cadastra os marcadores e, para cada combinação de genótipo × raça, define o composto, a pontuação e a classificação. Esse catálogo — hoje 76 marcadores e 1.103 regras — é o cérebro do sistema, e quem o mantém é o geneticista, não o programador. Marcador tem ciclo de vida (ativo · aguardando direção · bloqueado), sonda causal tem precedência sobre a réplica técnica, e o mesmo SNP pode pontuar diferente em raças diferentes, porque é assim que a ciência funciona.
A segunda decisão foi separar o genótipo bruto do cálculo. O arquivo do laboratório sobe direto para o armazenamento — 4,3 GB não passam pelo corpo da requisição — e a API lê o objeto em streaming, gravando cada leitura útil como dado do animal, independente de qualquer pontuação. A consequência é o que o cliente pediu sem saber o nome técnico: o recálculo virou um botão. E quando um marcador é cadastrado depois da importação, o sistema relê o arquivo que já está guardado e grava só o que faltava, sem pedir nada novo ao laboratório.
A terceira decisão protege o laudo: número errado com cara de certo é o pior defeito possível num documento genético. O motor de pontuação não foi apenas testado — foi conferido contra um oráculo independente: uma implementação separada do cálculo, rodando fora do sistema, sobre os mesmos dados. Resultado na carga real: zero divergência em 735 animais. E o laudo distingue o que sistemas descuidados misturam: zero é "avaliado e não pontuou"; nulo é "não avaliado" — marcador que o ensaio não leu aparece como não lido, réplica preterida aparece como preterida, e nada é descartado em silêncio.
A prova, feita ao vivo
Cadastramos um marcador novo pela API — o "pesquisa nova, cria um campo" do cliente. O sistema respondeu em 0,6 segundo, releu os 4,3 GB guardados em 4 minutos, gravou as 734 leituras que faltavam e recalculou os 735 laudos. A nota do animal conferido mudou exatamente o que a regra mandava. Depois da prova, o marcador de teste saiu e o recálculo devolveu o número validado — a conta fecha no dígito, nos dois sentidos.
O que entregamos
01 · O importador que engole o arquivo do laboratório
Upload direto ao armazenamento e leitura em streaming: os 4,3 GB do FinalReport não passam pela memória de ninguém. Dos 80.366 SNPs do chip, o sistema aproveita os do catálogo — na primeira carga real, 55.050 leituras de 734 animais genotipados — e grava o genótipo bruto separado do cálculo. Todo descarte é contado e nomeado: a importação diz o que entrou, o que ficou de fora e por quê.
02 · O catálogo genético que a própria DNA mantém
Marcadores com regra por genótipo × raça, compostos configuráveis (Produção · Fertilidade · Saúde, mais os informativos, que aparecem no laudo e ficam fora da nota) e o tratamento que dado genômico real exige: grupos de sonda causal × réplica técnica, genótipos hemizigotos e indels, três nomenclaturas de alelo normalizadas na entrada. Importação de catálogo idempotente e conferível: exportar e reimportar devolve as mesmas regras — zero a mais, zero a menos.
03 · O alerta genético — a doença separada da nota
Susceptibilidade a doença não pontua: é um bloco próprio no laudo, com o genótipo do animal e o grau de risco de 1 a 5 na escala internacional (UK National Scrapie Plan), com as cores da tabela do laboratório e a fonte científica citada. O scrapie é a primeira condição; quando vier outra doença, é cadastro, não desenvolvimento.
04 · O laudo por animal e o painel do rebanho
Na tela do animal: nota por composto, pontuação do animal, alerta genético e a tabela de marcadores com estado explícito (avaliado · réplica preterida · não lido), genótipo, qualidade da leitura e pontos. O laudo em PDF sai no clique, em ~1,4 segundo, sempre atual — se houve recálculo, o documento se regenera sozinho — e carrega no rodapé a revisão do catálogo e a data do cálculo. E o painel do rebanho lê o conjunto: nota média por composto, distribuição das somas, risco genético por grupo — cada número acompanhado de um "como ler".
Como garantimos
Dois caminhos independentes para o mesmo número
O motor de produção e o oráculo de conferência foram escritos separados de propósito — se os dois concordam em 55.050 leituras de 735 animais, composto por composto, a chance de um erro de lógica sobreviver escondido despenca. A regra é guardada por teste automatizado: mudança no motor que descole do oráculo quebra a suíte. E quando decisões do cliente mudaram a régua no meio da semana, o oráculo se moveu junto — e a igualdade se manteve.
A conferência pega até o que veio errado de fora
Quando 71 animais saíram com Produção zerada, a revalidação contra os arquivos originais achou uma classificação trocada na planilha de origem — marcadores de músculo e gordura registrados no composto errado. Confirmada e corrigida com o cliente, a correção entrou como dado versionado (a planilha de terceiro não se edita; a correção é nomeada, datada e reproduzível). A soma de cada animal não mudou um ponto — era reclassificação, e a prova de que o resto estava certo.
Dado genético tratado como confidencial
Laudo e arquivo do laboratório vivem em armazenamento fechado: toda leitura sai por URL assinada que expira em 15 minutos, e pedir o documento sem sessão devolve recusa, não arquivo. A ordem da implantação foi desenhada para isso — primeiro o cofre fechou, depois os laudos reais entraram. E a carga de 735 animais rodou com as travas de quem mexe em dado alheio: modo seco por padrão, gravação só com flag explícita, idempotência pelo código do animal e recusa de data impossível.
O resultado
O número que resume o projeto não é um dos grandes — é o pequeno: 4 minutos. É o tempo entre "saiu pesquisa nova sobre este marcador" e "o rebanho inteiro tem laudo atualizado". No fluxo antigo, essa frase significava reprocessar planilhas à mão, animal por animal — ou simplesmente não acontecer. A genômica ovina vai continuar publicando marcador novo, e a plataforma foi desenhada para que isso seja uma boa notícia, não um retrabalho.
E o laudo que chega ao produtor carrega a honestidade do dado: o que foi avaliado, o que não foi lido pelo ensaio e por quê, qual revisão do catálogo produziu aquele número. Num documento que orienta decisão de reprodução de rebanho, dizer o que não se sabe vale tanto quanto dizer o que se sabe. A implantação fechou com o rebanho inteiro no ambiente do cliente e o aceite formal veio no prazo combinado, sem repactuação de data.
Soluções relacionadas
Cases relacionados
Sua operação recebe dado técnico que só vive em planilha?
A Epicora constrói a plataforma que transforma o dado bruto do laboratório, do sensor ou do parceiro em documento que o seu cliente entende — com a regra de interpretação na mão de quem entende do assunto, não no código.