Pular para conteúdo

M5. Vetting na prática

Nível médio · semanas 8–10 · cerca de 12 horas

Nesta aula você vai aprender

  • A pergunta que cada teste do vetting básico responde, o que ele pega, o limite e um caso real.
  • Como o score é calculado a partir dos pesos, e o que significam aprovado, P1 e P2.
  • Como ler a tabela de validação: quantos planetas reais e quantos falsos positivos passam.
  • Um roteiro para revisar candidatos com planethunter candidates, dossier e review.
  • Como comparar dossiês de planetas conhecidos e de falsos positivos conhecidos.

A ideia: tentar derrubar o sinal

O vetting não tenta provar que um sinal é planeta. Tenta derrubá-lo. Cada teste é uma pergunta que um falso positivo comum responderia errado. Um sinal que sobrevive a todas as perguntas não é um planeta confirmado; é só um sinal que não conseguimos derrubar com os dados disponíveis.

O vetting básico roda sem internet, só com a curva de luz, os centróides do arquivo SPOC e os parâmetros da estrela. Está em src/planethunter/vetting/basic.py. Testes que precisam de rede (imagem-diferença no TPF, vizinhos Gaia, outros setores, FPP) ficam no vetting aprofundado, assunto do nível avançado.

Cada teste devolve um de três resultados:

  • passa;
  • falha: multiplica o score por um peso entre 0,3 e 0,6; alguns testes vetam acima de um limite mais duro, e veto zera o score;
  • sem dados: multiplica o score por 0,95 (unknown_weight).

Os testes, um por um

A tabela resume. Os casos reais são do run final de calibração do setor 69 (20261009T203437Z-single-s69), salvo indicação.

Teste Pergunta Pega o quê Limite Veto? Peso
sde, snr O sinal é forte o bastante? Ruído SDE ≥ 9; SNR ≥ 7,1 Sim —
n_transits Vimos pelo menos 2 trânsitos? Evento único sem período ≥ 2 Sim —
independence Sobrevive se apagarmos os sinais mais fortes da estrela? Eco de outro sinal ≥ 50 % dos pontos restam Sim —
odd_even Ímpares e pares têm a mesma profundidade? Binária com período 2× falha 3σ ≥ 5σ 0,4
secondary Há queda em fase 0,5? Eclipse secundário falha 3σ ≥ 5σ e ≥ 10 % 0,4
secondary_scan Há queda em outra fase? Binária excêntrica falha 5σ Não 0,5
shape Fundo chato (U) ou pontudo (V)? Binária rasante τ/T14 ≤ 0,35; Rp/R* ≤ 0,3 Não 0,5
radius O tamanho é de planeta? Estrela falha > 22,4 R⊕ > 33,6 R⊕ 0,3
duration A duração bate com a estrela? Blend; rasante extremo razão 0,15 a 1,3 Não 0,6
centroid A luz se desloca durante o trânsito? Vizinha como fonte ≥ 3σ e fonte > 1 px Não 0,4
edges_dumps Trânsitos em bordas ou ajustes do telescópio? Sistemático ≤ 50 % Não 0,4
consistency Os trânsitos concordam entre si? Um evento dominando p ≥ 0,001; maior < 80 % do SNR² Não 0,5

Portões de detecção: sde, snr, n_transits

Pergunta: há sinal suficiente para falar de período? Os limites vêm das aulas M1 e M3.

No começo eram falhas leves. O efeito medido: sinais com SNR 4,9 e sinais com um só trânsito viravam P2 e iam para a fila de revisão. Hoje são veto.

Casos reais. Planetas confirmados também caem aqui quando o setor é fraco: o TOI-286.01 teve SNR 5,6 no setor 69. Dos 4 planetas reprovados na calibração por SNR, nenhum seria detectável como novo naquele setor. E GJ 143 b, com período de cerca de 35 dias, aparece com um trânsito no setor 69: sem segundo trânsito, não há período, e o sinal é vetado.

independence

Pergunta: este sinal é independente dos mais fortes da mesma estrela? O teste mascara os trânsitos dos outros sinais e mede quanto do trânsito deste sobra. Se sobrar menos de 50 %, é eco.

Caso real. Na primeira fatia do setor 69, o sinal 1601 (11,95 d) estava reaproveitando os eclipses do sinal 1600 (6,75 d), da mesma estrela. Vetado.

odd_even

Pergunta: os trânsitos ímpares e pares têm a mesma profundidade? Uma binária de estrelas diferentes, encontrada com metade do período verdadeiro, alterna eclipses fundos e rasos. O erro usa o ruído em blocos (aula M1).

Casos reais. TOI-343.01 (falso positivo): ímpar 2 294 ppm, par 4 583 ppm, 5,8σ, veto. TOI-2391.01: 6 019 contra 12 749 ppm, veto.

Armadilha. O planeta confirmado TOI-114.01 também foi vetado: 6 690 contra 5 911 ppm, 5,7σ. É o único planeta perdido por ímpar/par na calibração. Com SNR alto, pequenas diferenças (manchas, resíduos de detrending) ficam significativas.

secondary e secondary_scan

Pergunta: existe uma queda menor em fase 0,5 (ou em outra fase)? Física na aula M2.

Casos reais. TOI-287.01: 4 503 ppm em fase 0,5, 37 % do primário, veto. TOI-187.01: 108 %, dois eclipses iguais, veto. WASP-18 b: 276 ppm, 3 % do primário, 8σ: falha leve sem veto, graças à regra dos 10 %. O secondary_scan foi criado porque a binária excêntrica TOI-367.01 passava; ele também dá falsos alarmes, como no planeta TOI-329 b (5,3σ em fase 0,543), por isso nunca veta.

shape

Pergunta: o trânsito tem forma de U ou de V? Mede \(\tau/T_{14}\) num ajuste de trapézio.

Calibração. Limite 0,35: pega 8 de 18 falsos positivos e marca 3 de 50 planetas (rasantes reais: HIP 65 A b, LTT 9779 b, TOI-2382 b). Casos: TOI-297.01 (0,42), TOI-353.01 (0,45), TOI-4858.01 (0,41, e com \(R_p/R_\star\) = 0,25).

radius

Pergunta: o objeto tem tamanho de planeta? \(R_p = \sqrt{\delta} \times R_\star\). Falha acima de 2 raios de Júpiter (22,4 R⊕), veta acima de 3 (33,6 R⊕). Depende do raio da estrela no TIC: raio errado, raio errado do planeta.

Casos reais. TOI-147.01: 26,2 R⊕, falha. TOI-219.01: 33,3 R⊕, falha por pouco sem veto. TOI-353.01: 29,4 R⊕.

duration

Pergunta: a duração combina com o tamanho e a massa da estrela? Física e fórmula na aula M2.

Casos reais. Curto demais: sinal 1594, 0,58 h numa gigante com 10,7 h previstas (razão 0,05). Longo demais: TOI-724.01, 8,40 h contra 3,56 h (razão 2,4).

centroid

Pergunta: o "centro de luz" da imagem se desloca durante o trânsito? Se a queda vier de uma vizinha, o centróide se move na direção oposta a ela.

O truque é a distância implícita da fonte. Se uma fonte a uma distância \(D\) do centróide escurece com profundidade relativa \(\delta\), o centróide se desloca cerca de \(\delta \times D\). Então \(D \approx\) deslocamento / profundidade.

Calibração medida. A primeira versão reprovava qualquer deslocamento acima de 3σ. Resultado: 11 de 41 planetas confirmados reprovavam. Todos tinham fonte implícita a no máximo 0,88 pixel, ou seja, em cima do alvo. Com estrelas brilhantes e muitos trânsitos, até um deslocamento minúsculo vira "significativo". Regra atual: falha só se o deslocamento for maior que 3σ e a fonte implícita estiver a mais de 1 pixel (21″).

Caso real. TOI-854.01 (falso positivo): deslocamento de 12σ, fonte implícita a 2,0 pixels. Falha.

edges_dumps

Pergunta: os trânsitos caem colados em bordas de segmento ou em ajustes de apontamento (momentum dumps)? Falha se mais de 50 % caírem perto de um ou de outro (aula M3).

Casos reais. Vários sinais NEW de 11 a 12 dias com 100 % dos trânsitos em bordas de segmento: eventos de borda de órbita. O planeta TOI-481 b também falhou (67 % em bordas): é falha leve porque planetas reais às vezes têm azar.

consistency

Pergunta: todos os trânsitos têm profundidade parecida? Qui-quadrado com erro em blocos (aula M1).

Casos reais. TOI-343.01 (falso positivo): p = 6 × 10⁻⁷. Planetas de SNR muito alto também falham (WASP-97 b, WASP-18 b), por isso é falha leve.

O score

O score começa em 1,0. Para cada teste:

  • falhou sem veto: multiplica pelo peso do teste (tabela acima, de config/thresholds.yaml);
  • sem dados: multiplica por 0,95;
  • vetou: o score vira 0.

Aprovado no básico (PASS_BASIC) se o score for pelo menos 0,5 (pass_score). Para sinais NEW, a severidade segue: P1 com score ≥ 0,8; P2 entre 0,5 e 0,8, ou se a estrela não tem raio conhecido, ou se ela é uma binária eclipsante catalogada.

Três exemplos reais:

Sinal Falhas Conta Score Resultado
Pi Men c (setor 1) nenhuma 1,0 1,0 PASS_BASIC
WASP-18 b (setor 69) secondary, consistency 0,4 × 0,5 0,2 FAIL
Sinal 1594, regras atuais duration 0,6 0,6 PASS_BASIC, mas no máximo P2

O score não é uma probabilidade

Score 1,0 diz que nenhum teste automático encontrou problema. Não diz que é planeta. E WASP-18 b, um planeta confirmado, tem score 0,2. O score é uma ordenação útil para decidir o que olhar primeiro.

Exercício 1

Calcule o score e o resultado:

a) Falha em shape; todos os outros passam. b) Falha em shape; centroid sem dados; o resto passa. c) Falha em odd_even com 4,2σ e em edges_dumps. d) Tudo passa, mas odd_even deu 5,3σ.

Ver resposta

a) 0,5. Aprovado (≥ 0,5), mas P2 se for NEW.

b) 0,5 × 0,95 = 0,475. Reprovado. Um teste sem dados pode ser a diferença entre passar e não passar.

c) 0,4 × 0,4 = 0,16. Reprovado. 4,2σ é falha (≥ 3σ), mas não veto (< 5σ).

d) 0. Veto: 5,3σ passa do limite de 5σ do odd_even. Nenhuma combinação de outros testes salva um veto.

A validação: o vetting funciona?

Como saber se os pesos e limites fazem sentido? Rodando o vetting em sinais de resposta conhecida: planetas confirmados (KNOWN_PLANET) e falsos positivos já classificados (KNOWN_FP).

Setor 69, calibração (194 alvos escolhidos: TOIs da lista de recall mais 30 falsos positivos do TFOPWG):

Classe Sinais Aprovados Taxa
KNOWN_PLANET 54 44 81 %
KNOWN_TOI 74 61 82 %
KNOWN_FP 18 8 44 %
NEW 10 0 0 %

Setor 107, setor inteiro (12 998 estrelas, 4 431 sinais; run 20261009T221706Z-single-s107, tabela impressa por planethunter vet):

Classe Sinais Aprovados Taxa
KNOWN_PLANET 84 66 79 %
KNOWN_TOI 104 77 74 %
KNOWN_FP 132 7 5 %
NEW 1 339 62 5 %

O guia do projeto resume as calibrações do setor 69 assim: planetas confirmados passam de 77 % a 84 %, e falsos positivos de 11 % a 44 %, conforme a amostra e a versão dos testes. No setor 107 inteiro: 79 % contra 5 %.

Por que os falsos positivos passam tanto mais no setor 69? Porque a amostra foi escolhida a dedo: falsos positivos que o TFOPWG só descartou com trabalho extra. Os 8 que ainda passam incluem secundários vistos só somando os setores 1 a 69 (TOI-366, 307, 297, 184), uma binária excêntrica (TOI-367), formas em V marginais (TOI-189, 4858) e binária de fundo. No setor 107, a amostra é o setor inteiro, dominado por binárias óbvias: vetadas por raio (45), secundário (43) e ímpar/par (14).

E por que 20 % dos planetas reais reprovam? No setor 107, os vetos em planetas foram por SNR (4), número de trânsitos (2) e secundário (1). As falhas leves mais comuns: forma, centróide, consistência. Planetas fracos num setor e rasantes reais pagam o preço de um vetting que precisa derrubar binárias.

Na ferramenta

uv run planethunter vet <run_id> imprime essa tabela a cada execução, com as colunas classe, n, pass, taxa_pass, falhas_comuns e vetos. O que esperar: KNOWN_PLANET perto de 80 % e KNOWN_FP baixo. Se KNOWN_PLANET cair muito depois de uma mudança, o vetting ficou rigoroso demais. Se KNOWN_FP subir, ficou frouxo.

Roteiro de revisão de candidatos

Os candidatos são sinais NEW que passaram o vetting básico. Três comandos:

uv run planethunter candidates                   # a fila, por severidade e score
uv run planethunter dossier <signal_id>          # gera o dossiê HTML em data/dossiers/
uv run planethunter review <signal_id> rejected --reason eb --note "eclipses alternados"

O review aceita três decisões: approved, rejected e follow_up. Rejeitar exige um motivo:

Motivo Quando usar
eb Binária eclipsante: ímpar/par diferente, secundário, forma em V, raio de estrela
blend O sinal vem de outra estrela: centróide fora, duração incompatível, vizinha conhecida
sistematico Defeito instrumental: trânsitos em bordas ou dumps, um setor só
ruido Não há trânsito convincente: pico fraco, dobra sem forma
ja_conhecido O objeto já existe e o crossmatch não pegou
outro Nenhum dos acima; explique na nota

A nota é guardada junto ao motivo (por exemplo, [eb] eclipses alternados). Rejeitados saem da lista. As revisões viram dados de treino para o futuro classificador.

flowchart TD
    A[Abrir dossiê] --> B{Trânsito dobrado em U, pontos acompanham o modelo?}
    B -- não --> R1[rejected: ruido]
    B -- sim --> C{Ímpar = par e fase 0,5 plana?}
    C -- não --> R2[rejected: eb]
    C -- sim --> D{Trânsitos longe de bordas e dumps?}
    D -- não --> R3[rejected: sistematico]
    D -- sim --> E{Duração e centróide compatíveis com o alvo?}
    E -- não --> R4[rejected: blend]
    E -- sim --> F[ExoFOP e literatura: já existe?]
    F -- sim --> R5[rejected: ja_conhecido]
    F -- não --> G[follow_up ou approved]

Para cada candidato, percorra o dossiê nesta ordem: cabeçalho (severidade, classe, score, host conhecido); parâmetros (a estrela tem raio? o planeta tem tamanho de planeta?); curva de luz (trânsitos colados em linhas azuis ou bordas?); trânsito dobrado (U ou V?); ímpar, par e secundário; profundidade por trânsito (algum ponto fora da linha?); tabela de vetting (leia cada nota, não só o resultado); crossmatch (idade dos espelhos); próxima ação.

Escreva sempre a nota

"eb" sozinho ensina pouco. "eb: par 2× mais fundo que ímpar, secundário 12 % em fase 0,5" ensina muito, para você daqui a três meses e para o classificador.

Exercício principal: planetas contra falsos positivos

Exercício 2

Gere e compare 5 dossiês de KNOWN_PLANET e 5 de KNOWN_FP. Para listar sinais de cada classe já vetados no seu banco, salve este script como listar_conhecidos.py e rode uv run python listar_conhecidos.py:

import duckdb

con = duckdb.connect("data/planethunter.duckdb", read_only=True)
df = con.execute("""
    SELECT c.match_class, s.signal_id, s.tic_id, c.matched_name,
           round(s.period_days, 3) AS periodo_d, round(s.depth_ppm) AS prof_ppm,
           round(v.score, 2) AS score, v.vetoed_by, v.failed
    FROM signals s
    JOIN crossmatch c USING (signal_id)
    JOIN vetting v USING (signal_id)
    WHERE c.match_class IN ('KNOWN_PLANET', 'KNOWN_FP')
    ORDER BY c.match_class, s.signal_id DESC
    LIMIT 60
""").df()
print(df.to_string(index=False))

Escolha 5 de cada classe (de preferência variados: alguns aprovados, alguns reprovados) e gere os dossiês com uv run planethunter dossier <signal_id>. Para cada um, anote numa tabela: profundidade, raio, forma (τ/T14), ímpar/par, fase 0,5, razão de duração, centróide, score. Depois responda: o que distingue os dois grupos visualmente?

Ver resposta

A resposta depende dos sinais escolhidos, mas os padrões que aparecem no setor 69 são:

  • Profundidade e raio. Falsos positivos tendem a ser mais fundos (milhares a dezenas de milhares de ppm) e a dar raios acima de 22 R⊕ (TOI-147.01, TOI-219.01, TOI-353.01). Planetas pequenos quase nunca são falsos positivos óbvios.
  • Forma. No gráfico "Trânsito dobrado", os FPs mostram V ou rampas longas (τ/T14 de 0,36 a 0,45); os planetas, U com rampas curtas (0,1 a 0,15).
  • Ímpar, par e fase 0,5. Nos FPs, o painel ímpar/par mostra profundidades diferentes (TOI-343.01) ou o terceiro painel mostra uma queda clara (TOI-287.01). Nos planetas, os dois primeiros painéis são iguais e o terceiro é plano. Exceção a reconhecer: Júpiteres ultraquentes, como WASP-18 b, com uma ocultação pequena em fase 0,5.
  • Centróide. Alguns FPs mostram fonte implícita a mais de 1 pixel (TOI-854.01).
  • Onde eles se parecem. FPs que só se revelam com vários setores ou com imagens de alta resolução parecem planetas em todos os gráficos de um setor. É por isso que existe o vetting aprofundado.

Se você escolheu planetas reprovados (WASP-18 b, TOI-114.01, TOI-481 b), note que a reprovação vem de testes de consistência e ímpar/par em sinais de SNR altíssimo: diferenças pequenas e reais, mas sem cara de binária.

Exercício 3

Qual motivo de rejeição você usaria?

a) Dossiê com 2 trânsitos, ambos a menos de 0,1 d do início de um segmento. b) τ/T14 = 0,45, par 2× mais fundo que ímpar, Rp = 28 R⊕. c) Duração 0,6 h numa estrela de 2,5 R☉; centróide com fonte implícita a 1,8 pixel. d) O ExoFOP mostra um CTOI submetido ontem com o mesmo período.

Ver resposta

a) sistematico. Trânsitos em bordas de segmento são a assinatura de rampas de detrending. Nota sugerida: "2/2 trânsitos em borda de segmento".

b) eb. Três sinais de binária ao mesmo tempo: forma em V, alternância ímpar/par, tamanho de estrela.

c) blend. Duração curta demais para uma estrela grande (como o sinal 1594) e centróide apontando para fora do alvo: o sinal provavelmente vem de uma vizinha menor.

d) ja_conhecido. O espelho local ainda não tinha o CTOI. Vale anotar o nome do CTOI na nota.

Checklist da aula

  • Sei dizer a pergunta de cada um dos 13 testes da tabela e um caso real de cada.
  • Sei calcular o score a partir das falhas, dos testes sem dados e dos vetos.
  • Sei explicar por que o centróide usa a distância implícita da fonte.
  • Sei ler a tabela de validação e explicar a diferença entre o setor 69 e o setor 107.
  • Gerei e comparei 5 dossiês KNOWN_PLANET e 5 KNOWN_FP.
  • Revisei pelo menos 10 candidatos com planethunter review, cada um com motivo e nota.
  • Li docs/benchmarks/2026-10-09-s0069-vetting.md e sei explicar cada linha da tabela "O que foi medido e corrigido".

Para ir além

  • No repositório, docs/benchmarks/2026-10-09-s0069-vetting.md: a calibração completa, com o que foi medido e corrigido, os FPs que ainda passam e o funil da primeira fatia real.
  • Guerrero et al. (2021), The Astrophysical Journal Supplement Series 254, 39: como a equipe do TESS faz o vetting dos TOIs. Compare os critérios com os desta aula.
  • Thompson et al. (2018), The Astrophysical Journal Supplement Series 235, 38: o Robovetter do Kepler, o "avô" dos testes automáticos. Fica para a aula A2.
  • Fóruns do Planet Hunters TESS em zooniverse.org: voluntários discutindo, com os mesmos argumentos desta aula, se um sinal é planeta ou binária.