| English | Português |
Conseguimos saber se uma molécula é tóxica só pela sua estrutura? Este projeto constrói e avalia com rigor modelos de machine learning que preveem os resultados de 12 ensaios de toxicidade para cerca de 7 800 químicos. Inclui também uma aplicação que traça o perfil de qualquer molécula.
Os notebooks e o código estão em inglês, para chegar a um público mais alargado.
Dados: Tox21 (EPA, NIH e FDA dos EUA), através do MoleculeNet. Inclui 7 ensaios de recetores nucleares (disrupção hormonal) e 5 de resposta ao stress (danos no ADN, stress oxidativo, danos nas mitocôndrias). Cada resultado é ativo ou inativo. As classes são desequilibradas (3–16% de ativos) e há resultados em falta.
Resumo em linguagem simples: abre o dashboard online (código), uma página de síntese para quem não é técnico, em inglês e português.
Outros projetos: Porque param os ensaios clínicos · Dados da educação em Portugal · Alunos em risco em cursos online
Uma divisão aleatória dos dados dá uma imagem demasiado otimista. Com uma divisão por scaffold, em que as moléculas de teste têm sistemas de anéis que o modelo nunca viu, o ROC-AUC médio é 0,79, contra 0,83 com uma divisão aleatória. A divisão por scaffold é a estimativa honesta para química nova.

A confiança depende da semelhança. O ROC-AUC é 0,86 para moléculas de teste parecidas com as de treino e 0,72 para o terço menos familiar. Cada previsão deve vir acompanhada de um índice de semelhança.

Cola uma SMILES ou escolhe um exemplo, como o bisfenol A, o triclosan ou o benzo[a]pireno. A aplicação mostra:
streamlit run app/app.py
src/featurize.py descarrega o Tox21; limpa as moléculas; calcula fingerprints de Morgan, descritores RDKit, scaffolds e divisões
src/train_models.py treina os random forests finais (um por ensaio) usados pela aplicação
src/style.py estilo comum dos gráficos
notebooks/01_explore_tox21.ipynb ensaios, desequilíbrio, correlações, relações estrutura–atividade, scaffolds
notebooks/02_predict_toxicity.ipynb divisão aleatória vs scaffold, comparação de modelos, domínio de aplicabilidade, fragmentos tóxicos, enriquecimento
app/app.py aplicação Streamlit
figures/ gráficos exportados
toxicity-at-a-glance.html dashboard em linguagem simples
pip install -r requirements.txt
python src/featurize.py # ~1 minuto
python src/train_models.py # alguns minutos, só necessário para a aplicação
jupyter notebook notebooks/
Projeto educativo. As previsões não são uma avaliação de segurança.