Ricerca automatica del periodo: limite superiore troppo restrittivo

BUG-552 Aperto
Versione MeStar 2.0.0
Priorità Media
Data inserimento 2026-11-14 05:25

Descrizione del problema

Software: MeStar v.2.0.0
Modulo: Analisi fotometrica – Ricerca del periodo
Tipologia: Bug algoritmico

Descrizione del problema

Il modulo di analisi fotometrica di MeStar 2.0.0 può restituire un periodo di variabilità errato quando l'utente lascia vuoti i campi relativi ai limiti di ricerca del periodo.

Il problema deriva dal criterio utilizzato per determinare automaticamente il periodo massimo: attualmente questo viene limitato, salvo altri vincoli, alla metà della durata complessiva della sessione osservativa.

Di conseguenza, il software esclude dalla ricerca tutti i periodi compresi tra metà e l'intera durata delle osservazioni, anche quando i dati contengono informazioni sufficienti per stimarli.

Il problema può interessare sia le stelle pulsanti sia le stelle binarie a eclisse.

Caso reale: XX Cyg

Durante l'analisi fotometrica della stella variabile XX Cyg, utilizzando immagini acquisite il 13 novembre 2026 con ZWO Seestar S50, è stato riscontrato il seguente comportamento:

ParametroValore
StellaXX Cyg
Misure fotometriche1.078
Durata osservazioni6,174692 h
Periodo di letteratura3,236763 h
Periodo restituito da MeStar3,09 h
Errore percentuale4,53%
Limite massimo automatico3,087346 h

Il periodo restituito da MeStar coincide, entro l'arrotondamento, con il limite superiore della ricerca.

Il periodo reale della stella, pari a circa 3.237 ore, si trova invece al di fuori dell'intervallo esaminato.

Un'analisi indipendente, estendendo l'intervallo di ricerca e utilizzando un modello Fourier multiar monico, ha consentito di ottenere un periodo compatibile con quello di letteratura.

Causa identificata nel codice

File: photometric_periods.py
Funzione: search_period()
Righe: 90–92

Codice attuale:

maximum = (
    float(maximum_days) if maximum_days is not None else max(minimum * 2, span / 2)
)

La variabile span rappresenta la durata complessiva della sessione espressa in giorni.

Se l'utente non specifica un periodo massimo, l'algoritmo utilizza span / 2, salvo che minimum * 2 sia maggiore.

Nel caso di XX Cyg, il periodo massimo ricercabile risulta quindi pari a circa 3.087 ore.

Il problema non è nel metodo Lomb–Scargle/Fourier utilizzato da MeStar, ma nell'intervallo di ricerca imposto automaticamente.

Soluzioni proposte

1. Correggere il limite superiore automatico

Sostituire il criterio attuale con:

maximum = (
    float(maximum_days) if maximum_days is not None else max(minimum * 2, span)
)

La modifica consente di cercare periodi fino alla durata completa delle osservazioni.

Questo intervento risolve il problema dell'esclusione automatica di periodi superiori a metà sessione, senza richiedere modifiche sostanziali al motore matematico.

Resta necessario segnalare che periodi vicini alla durata complessiva della sessione sono generalmente poco vincolati dai dati.

2. Migliorare il riconoscimento dei risultati ai limiti dell'intervallo

MeStar implementa già l'avviso pa_period_boundary, che segnala un massimo del periodogramma al bordo dell'intervallo di ricerca.

Si propone di:

  • Rendere l'avviso chiaramente visibile nella schermata dei risultati.
  • Segnalare che il periodo individuato potrebbe essere condizionato dai limiti di ricerca.
  • Evitare di presentare come misura affidabile un periodo coincidente con uno degli estremi.
  • Suggerire all'utente di ampliare l'intervallo di ricerca.

Valutare inoltre se un risultato al bordo debba mantenere lo stato di candidato oppure essere classificato come non sufficientemente determinato.

3. Introdurre l'espansione automatica dell'intervallo

Se il periodo migliore si trova vicino al limite superiore, il programma potrebbe ripetere automaticamente l'analisi utilizzando un intervallo più ampio.

L'espansione dovrebbe essere limitata e controllata per evitare di interpretare erroneamente variazioni lente, derive strumentali o effetti atmosferici come segnali periodici.

Il risultato dovrebbe riportare l'intervallo effettivamente utilizzato.

4. Migliorare la diagnostica della copertura temporale

Il software implementa già l'avviso pa_few_cycles per osservazioni che coprono meno di due cicli.

Si propone di visualizzare esplicitamente:

  • Durata della sessione osservativa.
  • Periodo stimato.
  • Numero di cicli osservati.
  • Livello di affidabilità e principali limitazioni della misura.

Per XX Cyg, utilizzando il periodo di letteratura, la sessione copre circa 1.91 cicli.

Questa condizione non impedisce necessariamente la misura, ma richiede cautela nell'interpretazione del risultato e della relativa incertezza.

5. Aggiungere test automatici di regressione

Introdurre nuovi test nella suite di analisi fotometrica, includendo:

Test A — XX Cyg simulata

  • Periodo di riferimento: 3.236763 h.
  • Durata osservazioni: circa 6.17 h.
  • Campionamento realistico.
  • Limiti di ricerca lasciati vuoti.

Verificare che il periodo reale sia incluso nell'intervallo di ricerca e che, con dati sintetici adeguati, l'algoritmo possa recuperarlo entro una tolleranza prestabilita.

Test B — Periodo al bordo

Verificare che un periodo coincidente con il limite superiore generi una segnalazione esplicita e non venga presentato come una stima pienamente affidabile.

Test C — Limiti definiti dall'utente

Verificare che i valori minimo e massimo inseriti manualmente rimangano prioritari rispetto ai criteri automatici.

Test D — Copertura inferiore a due cicli

Verificare che il programma conservi correttamente l'avviso relativo alla copertura temporale insufficiente, anche dopo l'ampliamento dell'intervallo automatico.

Risultato atteso

Con la correzione implementata, MeStar dovrebbe:

  1. Determinare automaticamente un intervallo di ricerca che non escluda a priori periodi superiori a metà della durata delle osservazioni.
  2. Recuperare, quando i dati lo consentono, periodi compatibili con quelli effettivi delle stelle variabili.
  3. Identificare e segnalare risultati potenzialmente condizionati dai limiti dell'intervallo.
  4. Informare l'utente quando la copertura temporale è insufficiente per una stima robusta.
  5. Preservare il comportamento delle ricerche effettuate con intervalli specificati manualmente.

Criteri di accettazione

Il bug potrà essere considerato risolto quando:

  • Il periodo reale di XX Cyg rientrerà nell'intervallo di ricerca automatico per la sessione esaminata.
  • Il motore di analisi non sarà più forzato a restituire un periodo di circa 3.09 h a causa del limite span / 2.
  • Gli avvisi relativi ai risultati di bordo e alla scarsa copertura temporale saranno correttamente gestiti e visibili.
  • I nuovi test di regressione saranno superati senza compromettere quelli esistenti.

Impatto

Il problema compromette l'affidabilità della ricerca automatica del periodo nelle osservazioni di durata limitata, in particolare quando il periodo effettivo è compreso tra metà e l'intera durata della sessione.

La correzione è particolarmente importante per l'utilizzo scientifico e didattico di MeStar, dove un periodo numericamente plausibile ma errato può produrre conclusioni non corrette.

Soluzione raccomandata: modificare il limite superiore predefinito da span / 2 a span, rafforzando contemporaneamente la diagnostica dei risultati di bordo e delle osservazioni con copertura temporale limitata.