Calculadora de Relógios Epigenéticos
Calcula relógios de envelhecimento por metilação do DNA a partir de um arquivo de valores beta. 25 relógios estão disponíveis; GrimAge é o principal.
Autossuficiente. Requer apenas pandas + numpy — sem biolearn, torch, seaborn, scipy ou network. Os coeficientes e referências dos relógios estão incluídos em data/ (extraídos da biblioteca biolearn de código aberto, reduzidos aos CpGs que os relógios usam, ~1 MB no total). scripts/compute_clocks.py reimplementa fielmente os GrimageModel, LinearMethylationModel e a normalização quantil do DunedinPACE (com um rankdata apenas em numpy), reproduzindo as saídas do biolearn para todos os 25 relógios (verificado com diferença <0,005, ou seja, apenas arredondamento).
Os relógios (execute --list-clocks para a lista completa)
| família | relógios | unidade |
|---|---|---|
| GrimAge (2ª geração, mortalidade) | grimagev1, grimagev2 | anos (precisa idade+sexo) |
| 1ª geração cronológica | horvath, horvath2, hannum, lin, vidalbralo, weidner, garagnani, bocklandt | anos |
| 2ª geração idade biológica | phenoage, hrsinchphenoage | anos |
| Ying 2022 (causalidade) | yingcausage, yingdamage, yingadaptage | anos |
| estocásticos | stoch, stocp, stocz | anos |
| tecido-específicos | pedbe (bucal pediátrico), cortical (cérebro) | anos |
| 3ª geração ritmo de envelhecimento | dunedinpace, dunedinpoam | anos/ano |
| outros marcadores | dnamtl (telômero kb), zhang (mortalidade), epitoc1 (mitótico) | variável |
Apelidos de grupo para --clocks: all, grimage, core (padrão), firstgen, secondgen, thirdgen.
dunedinpace precisa de ~20 mil CpGs de fundo para sua normalização quantil (não apenas seus 173 CpGs do modelo). Em uma entrada esparsa, ele auto-imputa o fundo ausente a partir da referência padrão-ouro; se sua cobertura relatada estiver bem abaixo de ~90%, o resultado é dominado pela referência e não confiável — informe isso. Uma exportação completa de EPIC/450K cobre isso bem.
Fatos importantes sobre GrimAge (para interpretá-lo corretamente)
GrimAge é de segunda geração, treinado para mortalidade: ele estima substitutos de DNAm para 7 proteínas plasmáticas + anos de tabagismo (V2 adiciona DNAm A1C e CRP), e então os combina com idade cronológica e sexo em um modelo de sobrevivência. Idade e sexo alimentam a fórmula diretamente, então ambos são obrigatórios para qualquer relógio grimage*. Os outros relógios não precisam deles, mas passar --age permite que a ferramenta informe a aceleração.
Fluxo de trabalho
1. Inspecionar o arquivo de entrada
Formatos detectados automaticamente: Longo (duas colunas: ID do CpG + beta) ou Matriz (primeira coluna ID do CpG, colunas restantes = amostras). Betas são floats em [0,1]. Observe a contagem de linhas; a cobertura dos CpGs de cada relógio é relatada por relógio.
2. Obter idade e sexo
Obrigatório para GrimAge. Se apenas uma faixa de idade for conhecida, use o ponto médio e execute --sensitivity para que o usuário veja o quanto a resposta depende da idade exata.
3. Verificar dependências (apenas pandas + numpy)
python3 -c "import pandas, numpy" 2>/dev/null && echo OK || pip install pandas numpy
Sem necessidade de venv, biolearn, torch ou network.
4. Executar
python3 <skill-dir>/scripts/compute_clocks.py \
--input "<betas.csv>" --age <anos> --sex <m|f> \
--clocks all # ou: core (padrão), grimage, firstgen, secondgen, ou chaves específicas
# --sensitivity 40 42 47 49 # opcional, quando a idade exata é incerta
python3 <skill-dir>/scripts/compute_clocks.py --list-clocks # ver todas as chaves
O script imputa quaisquer CpGs ausentes dos relógios a partir da referência populacional incluída (reduzida) data/sesame_450k_median.csv, executa cada modelo e imprime uma tabela com valor, aceleração (para relógios em anos) e cobertura, além de uma linha JSON para uso posterior.
5. Relatar e interpretar
Comece com GrimAge, depois a comparação. Sempre transmita estas ressalvas:
- Reimplementação de código aberto, não a calculadora oficial. Os valores acompanham o servidor oficial de Horvath / Clock Foundation de perto, mas não são um número certificado. Para um valor citável, aponte para o Horvath DNAm Age calculator ou um provedor comercial.
- **