lab-exp
Skill2 starsChanged 46 days agoMITView on GitHub
Roda um experimento preditivo clinico de ponta a ponta no padrao do laboratorio, da auditoria de vazamento ate o zip e o repositorio privado. Comeca sempre pela auditoria que decide se o experimento faz sentido (momento da predicao, censura disfarcada de desfecho, variavel que sozinha da AUC alta demais), depois monta o pipeline com Boruta dentro do fold, sete modelos com regra de desempate declarada antes, limiar fora da amostra, IC por bootstrap e calibracao, e entrega notebook do Colab, notebook executado com as saidas, relatorio HTML de arquivo unico, results com figuras e tabelas, zip de compartilhamento e repo privado. Use SEMPRE que o usuario pedir "/lab-exp", "roda esse experimento", "monta o pipeline desse dado", "novo experimento do lab", "refaz esse notebook direito", "esse modelo tem vazamento?", "prepara isso pra dissertacao", ou enviar um notebook de aluno, um banco de coorte hospitalar ou uma pergunta preditiva clinica para transformar em experimento. Acionar PROATIVAMENTE quando alguem mandar um notebook de predicao clinica com AUC alta e pedir opiniao, porque o primeiro passo e a auditoria de vazamento.
In this repository26 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- abstractSkill
- artigoSkill
- author-creditSkill
- datasus-outcomeSkill
- desenho-metodologicoSkill
- graph-labSkill
- icSkill
- infograficoSkill
- journalSkill
- latexSkill
- ml-checkpointsSkill
- ml-eval-reportSkill
- ml-pipelineSkill
- ml-timeseriesSkill
- paper-pngSkill
- paper-reviewSkill
- paper-scaffoldSkill
- paperSkill
- papersSkill
- peer-reviewSkill
- radar-academicoSkill
- redSkill
- revisorSkill
- specSkill
- update-paperSkill
The file
Files
Skill: lab-exp
Experimento preditivo clinico completo, no padrao que o laboratorio ja validou.
A skill existe porque o erro caro nesses projetos nunca e o algoritmo. E o dado: uma coluna que so existe depois do desfecho, um paciente censurado rotulado como sobrevivente, uma metrica otimizada que nao e a que importa. Modelo errado custa 0.02 de AUC. Vazamento custa 0.19, e so aparece na validacao externa, ou no reviewer 2, ou nunca.
Regra central: nenhum modelo treinado antes da auditoria da fase 1 estar respondida por escrito.
Segunda regra: nenhum numero e digitado a mao. Todo valor no README e no relatorio sai de
uma tabela em results/, que sai de uma execucao registrada em run.log. Numero que muda, muda
por reexecucao.
Quando NAO usar
Recalcular uma metrica, refazer uma figura, rodar um modelo ja definido em dado ja limpo: faca direto, sem a estrutura. O ritual em tarefa pequena so gasta tempo.
Fase 1: auditoria, antes de qualquer modelo
Tres perguntas. Responda por escrito, com numero, antes de escrever o pipeline. Se qualquer uma ficar sem resposta, o experimento nao comeca.
1.1 Qual e o momento da predicao?
Escreva o instante do cuidado por extenso: "a alta hospitalar", "a admissao no pronto socorro", "o momento da indicacao cirurgica". Toda variavel medida depois desse instante e vazamento, sem excecao e sem negociacao.
Monte a lista explicita, com o motivo de cada coluna, e salve como tabela. Categorias que sempre aparecem: o desfecho e suas variantes em outras janelas, datas posteriores ao momento, identificadores, colunas constantes na coorte, e o grupo perigoso, que e a informacao que parece clinica mas so existe depois (tempo total de antibiotico, tempo de internacao quando o desfecho e intra-hospitalar, qualquer "tempo ate" que termine depois do momento da predicao).
Variavel que fica apesar de parecer suspeita fica com a justificativa escrita ao lado.
1.2 Quem nao teve o evento realmente nao teve?
Esta e a pergunta que mais passa batido. Se o desfecho e "obito em N dias", o paciente com seguimento de 40 dias e vivo nao e sobrevivente, e desconhecido. Rotular como zero produz um desfecho que so e coerente se o modelo tambem enxergar o tempo de seguimento, que e exatamente a variavel que precisa sair. O rotulo errado e o vazamento se sustentam mutuamente.
Solucao: censura vira criterio de elegibilidade, nunca preditor. Quem nao completou a janela sai da coorte. Reporte quantos sairam, porque costuma ser muito (no experimento de endocardite foram 153 de 775, quase 20 por cento) e isso vai para o fluxograma do artigo.
Quem quiser aproveitar os excluidos: analise de sobrevida como sensibilidade, que usa cada um ate onde foi observado.
1.3 Alguma variavel, sozinha, discrimina demais?
AUC univariada de cada candidata sobrevivente. Qualquer uma acima de 0.80 e suspeita de ser consequencia do desfecho, e nao causa. A lista manual cobre o que se conhece, a auditoria pega o que passou.
Sinal de que deu ruim: uma variavel com AUC univariada perto de 1.000 e uma tautologia, nao um achado. Se dentro da coorte elegivel "morreu em 180 dias" e "tem menos de 180 dias de seguimento" sao a mesma frase, a AUC de 1.000 esta medindo a definicao do desfecho.
1.4 Quantifique o estrago, se havia vazamento
Se o experimento e o refazimento de um anterior que vazava, rode tres cenarios na mesma validacao cruzada e com o mesmo modelo: original com a variavel, original sem ela, e novo com a coorte corrigida. A distancia entre o primeiro e o terceiro e o ganho artificial, e esse numero vale mais para o orientador do que qualquer AUC nova.
Fase 2: montar o pipeline
Copie "${CLAUDE_SKILL_DIR}/templates/pipeline.py" para a raiz do projeto como pipeline.py e preencha o que esta
marcado. O que ja vem pronto e testado:
| Peca | O que resolve |
sem_acento na carga | nome de coluna com acento quebra dependendo do encoding de leitura |
LIMITES_PLAUSIVEIS | valor impossivel vira missing por faixa, nunca por lista digitada a mao |
montar_coorte | elegibilidade e lista de vazamento num lugar so, devolvendo o fluxograma |
PreProcessador | descarte por missing, imputacao por mediana e indicador de ausencia, tudo dentro do fold |
SelecaoBoruta | Boruta com plano B quando nada e confirmado, para o fold nao ficar sem preditor |
rodar_cv | Boruta uma vez por fold alimentando todos os modelos, mais a estabilidade da selecao |
escolher_campeao | empate ate 0.01 resolvido a favor do modelo mais simples, regra declarada antes |
limiar_por_sensibilidade | limiar fora da amostra, um por modelo |
bootstrap_ic | IC95% em 2000 reamostragens |
shap_valores | explicador certo por tipo de modelo, incluindo o caro do TabPFN |
salvar_fig(nome, legenda) | grava a legenda em results/legendas.json, para o relatorio nunca descolar |
Decisoes que ja foram tomadas e nao precisam ser rediscutidas a cada experimento:
- Seletor e imputacao rodam dentro do fold. Fora, sao vazamento discreto.
- Otimizacao por AUC, nunca por acuracia em desfecho raro.
cross_val_scoresemscoringusa acuracia e, com 4 por cento de evento, encontra o modelo que acerta "todo mundo vive". - A logistica regularizada e obrigatoria na comparacao. Com poucas dezenas de eventos ela costuma ganhar, e o artigo precisa mostrar isso.
- Ensemble por media de postos, nunca de probabilidade: com peso de classe, a logistica preve risco medio de 0.45 e as arvores 0.045, e a media simples viraria a logistica disfarcada.
- Um limiar por modelo, mesmo criterio para todos. Limiar unico compara modelos em pontos de operacao diferentes.
- Calibracao e metrica de primeira classe. Peso de classe infla o risco predito. Reporte Brier e ofereca a versao recalibrada por Platt, ajustada dentro do treino. Se algum risco absoluto vai para o texto, ele sai do modelo calibrado.
sem_paralelismo_internoantes de qualquer busca paralela. Sem isso, cada processo do joblib abre uma thread por nucleo e a busca nao termina.
Fase 3: rodar e verificar
python pipeline.py > run.log 2>&1 # a saida inteira fica registradaSe a execucao passa de uns minutos, rode em background e acompanhe por tail -f run.log.
Enquanto roda, escreva o template do relatorio, que nao depende dos numeros.
Verificacao real: EXIT=0 e as tabelas em results/. Nunca diga que rodou sem ter o codigo de
saida e o arquivo no disco.
Fase 4: entregaveis
Nesta ordem, depois de copiar os scripts da skill para a raiz do projeto
(cp "${CLAUDE_SKILL_DIR}/scripts/"*.py .):
python gerar_notebook.py # pipeline.py -> <pasta>.ipynb, pronto para o Colab
python executar_notebook.py # roda o notebook e grava <pasta>_executado.ipynb
python montar_relatorio.py # relatorio_template.html + results/*.png -> relatorio.html
python montar_pacote.py # requirements.txt com as versoes que rodaram, mais o zipexecutar_notebook.py e o teste de integracao, nao um passo cosmetico. Checagem de sintaxe
nao pega tudo: uma primeira celula com IndentationError passou por ast.parse porque a
checagem ignorava as linhas iniciadas por !, e so apareceu na execucao de verdade.
O relatorio vai como artifact publicado, com capabilities: {downloads: true}, porque o sandbox
bloqueia download que a propria pagina dispara e um <a download> seria botao morto. Carregue a
skill artifact-design antes de escrever o template e a artifact-capabilities antes de
declarar a capability. Use "${CLAUDE_SKILL_DIR}/templates/relatorio_template.html" como ponto de partida.
Fase 5: repositorio
Criar o repositório privado a partir da pasta existente (gh repo create --private --source=.)
e subir o primeiro commit.
data/ nunca entra, nem desidentificado: data de nascimento com data de internacao
reidentifica. Antes do commit, varra os arquivos versionados procurando CPF, data de nascimento,
nome proprio e tabela com uma linha por paciente. results/ e os logs entram, porque sao a
evidencia do trabalho.
O CLAUDE.md do projeto recebe as regras que nao se negociam naquele experimento, para a
proxima sessao nao desfazer o que foi corrigido.
O que reportar ao terminar
- O artefato, com o link.
- Os numeros que decidem: n, eventos, EPV antes e depois do Boruta, AUC do campeao com intervalo, e o ganho artificial se havia vazamento.
- As ressalvas que precisam entrar no texto da dissertacao, com destaque para as que limitam a conclusao: tamanho da amostra de teste, ausencia de validacao externa, comparacoes entre coortes diferentes.
- O que ficou fora e por que.
Referencias
references/auditoria.md: a auditoria da fase 1 com os casos reais ja encontradostemplates/pipeline.py: o pipeline para copiar e preenchertemplates/relatorio_template.html: a casca do relatorioscripts/: os quatro scripts de entrega, generalizados por convencao de pasta
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

