Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug #101

Open
svaverbe opened this issue Apr 21, 2022 · 0 comments
Open

Bug #101

svaverbe opened this issue Apr 21, 2022 · 0 comments
Labels
bug Something isn't working

Comments

@svaverbe
Copy link

While testing the grazing template in TLS, an issue appears with a fit that has a clear underestimation of the transit duration.
It is not clear if this is due to a bug in the code.

import numpy as np
import transitleastsquares
from transitleastsquares import transitleastsquares,cleaned_array,catalog_info,transit_mask
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt
from astroquery.mast import Catalogs

def TLS(tic,Tmag,ra,dec,time,flux,detrended_flux,flux_err,Pmin,Pmax,duration_grid_step,ntransits_min):

Applies the TLS algorithm to the detrended data to search for transits

ab, mass, mass_min, mass_max, radius, radius_min, radius_max = catalog_info(TIC_ID=np.int(tic))

if np.isnan(mass):
   mass_param=1.0
else:
   mass_param=mass

if np.isnan(radius):
   radius_param=1.0
else:
   radius_param=radius
   
model = transitleastsquares(time, detrended_flux,flux_err)

results = model.power(u=ab,period_min=Pmin,period_max=Pmax,duration_grid_step=duration_grid_step,M_star=mass_param, \

R_star=radius_param,M_star_max=1.5,transit_template='grazing')

results = model.power(u=ab,period_min=Pmin,period_max=Pmax,duration_grid_step=duration_grid_step,transit_template='grazing')
ntransits=results.transit_count

transit_depth=1.0-results.depth

if ~np.isnan(ntransits): 

   with PdfPages('detection_TLS_'+str(tic)+'.pdf') as pdf:
        
        filename='detection_output_TLS_'+str(tic)+'.dat'
        file1=open(filename,"w")
        
        plt.figure(figsize=(8, 6))
        plt.scatter(time, flux, color='blue',s=2, alpha=0.5, zorder=0,label='Normalized PDCSAP flux')
        plt.scatter(time, detrended_flux, color='red',s=2, alpha=0.5, zorder=0,label='Detrended PDCSAP flux')
        plt.legend(loc='best')
        plt.xlabel('BKJD')
        plt.ylabel('Normalized flux')
        plt.title('Detrended PDCSAP lightcurve:TIC '+str(tic))
        pdf.savefig()
        plt.close()
   
        plt.figure(figsize=(8, 6))
        ax = plt.gca()
        ax.axvline(results.period, alpha=0.4, lw=3)
        plt.xlim(np.min(results.periods), np.max(results.periods))

        for n in range(2, 10):
            ax.axvline(n*results.period, alpha=0.4, lw=1, linestyle="dashed")
            ax.axvline(results.period / n, alpha=0.4, lw=1, linestyle="dashed")
     
        plt.ylabel(r'SDE')
        plt.xlabel('Period (days)')
        plt.semilogx(results.periods, results.power, color='black', lw=0.5)
        plt.title('P='+str("{:.4f}".format(results.period))+' d')
        pdf.savefig()
        plt.close()

        plt.figure(figsize=(8, 6))
        plt.plot((results.model_folded_phase-0.5)*results.period, results.model_folded_model, color='red',label='transit model')
        plt.scatter((results.folded_phase-0.5)*results.period, results.folded_y, color='blue', s=10, alpha=0.5, zorder=2,label='folded data') 
        plt.xlim(-5*results.duration,5*results.duration)
        plt.legend(loc='best')
        plt.xlabel('Time from central transit(days)')
        plt.ylabel('Normalized flux')
        pdf.savefig()
        plt.close()

        plt.figure(figsize=(8, 6))
        in_transit = transit_mask(time, results.period, results.duration, results.T0)
        plt.scatter(time[in_transit], detrended_flux[in_transit], color='red', s=2, zorder=0,label='in transit data')
        plt.scatter(time[~in_transit], detrended_flux[~in_transit], color='blue', alpha=0.5, s=2, zorder=0,label='out of transit data')
        plt.plot(results.model_lightcurve_time, results.model_lightcurve_model, alpha=0.5, color='red', zorder=1)
        plt.xlim(time.min(), time.max())
        plt.legend(loc='best')
        plt.xlabel('BKJD')
        plt.ylabel('Normalized flux')
        pdf.savefig()
        plt.close()
       
        print('TIC id:',tic,file=file1)
        print('Period', format(results.period, '.5f'), 'd at T0=', results.T0,file=file1)
        print(len(results.transit_times), 'transit times in time series:', ['{0:0.5f}'.format(i) for i in results.transit_times],file=file1)
        print('Number of data points during each unique transit', results.per_transit_count,file=file1)            
        print('Transit duration (days)', format(results.duration, '.5f'),file=file1)
        print('Transit depths (mean)', results.transit_depths,file=file1)

        print('The number of transits with intransit data points', results.distinct_transit_count,file=file1)
        print('The number of transits with no intransit data points', results.empty_transit_count,file=file1)
        print('Transit depth', format(results.depth, '.5f'), '(at the transit bottom)',file=file1)
        print('Transit depth uncertainties', results.transit_depths_uncertainties,file=file1)
        print('Overall transit SNR',results.snr,file=file1)
        print('Transit SNRs', results.snr_per_transit,file=file1)
        print('Odd even mismatch',results.odd_even_mismatch,file=file1)
       
        plt.figure(figsize=(8, 6))
        plt.errorbar(results.transit_times,results.transit_depths,yerr=results.transit_depths_uncertainties,
        fmt='o', color='red')
        plt.plot((time.min(), time.max()),(np.mean(results.transit_depths), np.mean(results.transit_depths)),
        color='black', linestyle='dashed')
        plt.plot((time.min(), time.max()), (1, 1), color='black')
        plt.xlabel('BKJD')
        plt.ylabel('Normalized flux')
        pdf.savefig()
        plt.close()
        
        file1.close()
              
return results

tic=236887394
Pmin=0.5
Pmax=100.0
ntransits_min=2
duration_grid_step=1.1 # default=1.1

ticinfo = Catalogs.query_criteria(catalog="Tic", ID=tic) # stellar data from TIC

Vmag=ticinfo['Vmag'][0]
Tmag=ticinfo['Tmag'][0]
ra=ticinfo[0]['ra']
dec=ticinfo[0]['dec']

fname='detrended_lightcurve_'+str(tic)+'.dat'

data=np.genfromtxt(fname,dtype='float',delimiter=" ") # detrended flux time series
time=data[:,0]
flux=data[:,1]
detrended_flux=data[:,2]
nobs=len(time)

flux_err=np.ones((nobs))

results=TLS(tic,Tmag,ra,dec,time,flux,detrended_flux,flux_err,Pmin,Pmax,duration_grid_step,ntransits_min)

print(results)

detrended_lightcurve_236887394.txt
detection_TLS_236887394.pdf

@svaverbe svaverbe added the bug Something isn't working label Apr 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant