Pour gagner du temps nous utiliserons la fonction python bls.eebls qui permet de faire tourner l'algorithme BLS en une ligne de code (il faut suivre l'installation du module ici ). On peut aussi essayer de réinventer la roue et de le développer soi-même pour comprendre tous les tenants et aboutissants de cette fonction.
Faisons appel à la fonction BLS python pour trouver notre transit. On appellera la fonction bls.eebls où l'on doit fournir les arguments qui suivent en entrée:
bls.eebls(bjd, flux, u, v, nf, fmin, df, nb, qmi, qma)
bjd est la date. Flux est le flux ou la magnitude. Puis les autres arguments sont fixés comme ceci :
On appelle ensuite la fonction avec u et v qui sont vides et servent à des calculs intermédiaires et on stocke le résultat dans la variable results :
results = bls.eebls(bjd, mag, u, v, nf, fmin, df, nb, qmi, qma)
On stocke les résultats dans différentes variables décrites ci-dessous
power, best_period, best_power, depth, q, in1, in2 = results
power est le spectre de puissance de dimension nf aux fréquences f = fmin + arange(nf) * df,
best_period est la meilleure période de transit trouvée par l'algorithme (dans la même unité que le temps mis en entrée),
best_power est la puissance (du spectre de puissance) pour cette meilleure période trouvée,
depth est la profondeur du transit pour la meilleure période,
q est la durée du transit par rapport à la période,
in1 est l'index du bin où le transit commence,
in2 est l'index du bin où le transit se termine.
Puis on crée le périodogramme résultant comme ceci : plt.plot(np.arange(fmin, fmin+nf*df, df), power)
Cela retourne le périodogramme de la figure ci-jointe.
On constate donc qu'il y a une fréquence orbitale privilégiée à environ 0.33 orbite par jour, i.e. 1/0.326=3.067 jours par orbite. L'algorithme retourne une période (best_period) de 3.0674846 jours et une profondeur de transit (depth) de 0.0313459 pour cette meilleure période.