Ricerca automatica del periodo: limite superiore troppo restrittivo
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:
| Parametro | Valore |
|---|---|
| Stella | XX Cyg |
| Misure fotometriche | 1.078 |
| Durata osservazioni | 6,174692 h |
| Periodo di letteratura | 3,236763 h |
| Periodo restituito da MeStar | 3,09 h |
| Errore percentuale | 4,53% |
| Limite massimo automatico | 3,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:
- Determinare automaticamente un intervallo di ricerca che non escluda a priori periodi superiori a metà della durata delle osservazioni.
- Recuperare, quando i dati lo consentono, periodi compatibili con quelli effettivi delle stelle variabili.
- Identificare e segnalare risultati potenzialmente condizionati dai limiti dell'intervallo.
- Informare l'utente quando la copertura temporale è insufficiente per una stima robusta.
- 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.

