Пример #1
0
def test2(kepid):
    filedir = [
        kepio.pathfinder(kepid, '/scratch/kepler_data/', q) for q in range(18)
    ]
    with Pool(5) as p:
        q2 = p.map(process2, filedir)
    return q2
Пример #2
0
import kepreduce
from transit_basic import *

instr = fits.open('/scratch/kepler_data/kepler_Q16/kplr008123937-2013098041711_llc.fits')
filename = '/scratch/kepler_data/kepler_Q16/kplr008123937-2013098041711_llc.fits'
print(kepio.timekeys(instr, filename))

cata_path = '../catalog/cumulative.csv'
data_path = '/scratch/kepler_data/'

B = LcNoiseSampler(cata_path, data_path)
print(B.kepid)
import numpy as np
kepid = np.random.choice(kepio.get_id(cata_path))

filedir = kepio.pathfinder(kepid, data_path, '*')
filenames = glob.glob(filedir)
all_time = []
all_flux = []
for i in range(len(filenames)):
    #read into cadence
    instr = fits.open(filenames[i])
    tstart, tstop, bjdref, cadence = kepio.timekeys(instr, filenames[i])
    #reduce lc
    intime, nordata = kepreduce.reduce_lc(instr, filenames[i])
    #calculte runing stddev
    stddev = kepstat.running_frac_std(intime, nordata, 6.5 / 24) * 1.0e6
    #cdpp
    cdpp = stddev / math.sqrt(6.5 * 3600.0 / cadence)
    # filter cdpp
    for i in range(len(cdpp)):
Пример #3
0
def rmsestimation(quarter, timescale):
    """
    do stastitical analysis of rms cdpp(expected snr) of certain quarter
    """
    #read data from keplerstellar catalog and match lightcurve in lc database
    cata_path = '../catalog/cumulative.csv'
    data_path = '/scratch/kepler_data/'
    kepid = kepio.get_id(cata_path)
    all_rms = []
    own_kid = []

    for i, k_id in enumerate(kepid[:100]):
        #print('This is '+str(kepid[i]))
        #lc path here
        file_dir = kepio.pathfinder(k_id, data_path, quarter)
        try:
            filename = glob.glob(file_dir)
            name = filename[0]
            #open file and read time keys
            instr = fits.open(name)
            tstart, tstop, bjdref, cadence = kepio.timekeys(instr, filename)

            #read lc
            hdu = instr[1]
            time = hdu.data.TIME
            time = time + bjdref - 2454900
            flux = hdu.data.PDCSAP_FLUX
            #filter data
            work1 = np.array([time, flux])
            work1 = np.rot90(work1, 3)
            work1 = work1[~np.isnan(work1).any(1)]

            intime = work1[:, 1]
            indata = work1[:, 0]
            #split lc
            intime, indata = keputils.split(intime, indata, gap_width=0.75)
            #calculate breaking points
            bkspaces = np.logspace(np.log10(0.5), np.log10(20), num=20)
            #calculate spline to every data points
            spline = kepspline.choose_kepler_spline(intime,
                                                    indata,
                                                    bkspaces,
                                                    penalty_coeff=1.0,
                                                    verbose=False)[0]
            if spline is None:
                raise ValueError("faied to fit spline")

            #flatten the data array
            intime = np.concatenate(intime).ravel()
            indata = np.concatenate(indata).ravel()
            spline = np.concatenate(spline).ravel()
            #normalized flux using spline
            nordata = indata / spline
            #calculte runing stddev
            stddev = kepstat.running_frac_std(intime, nordata,
                                              timescale / 24) * 1.0e6
            #cdpp
            cdpp = stddev / math.sqrt(timescale * 3600.0 / cadence)
            # filter cdpp
            for i in range(len(cdpp)):
                if cdpp[i] > np.median(cdpp) * 10.0:
                    cdpp[i] = cdpp[i - 1]

            #calculte RMS cdpp
            rms = kepstat.rms(cdpp, np.zeros(len(stddev)))
            rmscdpp = np.ones((len(cdpp)), dtype='float32') * rms
            if rms > 200:
                plt.figure(figsize=(10, 8))
                #plt.hist(cdpp, bins =25, color = 'gold', fill = True, edgecolor = 'black', linewidth = 2.0)
                #plt.ylabel('Count')
                #plt.xlabel('CDPP/6.5hrs(ppm)')
                #plt.savefig("./test/KOIQ"+str(quarter)+str(k_id)+"cdpp.png")
                plt.scatter(intime, nordata, marker='.')
                plt.savefig("./test/KOIQ" + str(quarter) + str(k_id) +
                            "display_lc.png")
            # print('%d has RMS %.1fhr CDPP = %d ppm\n' % (k_id,timescale, rms))
            all_rms.append(rms)
            own_kid.append(k_id)

        except IndexError:
            pass

    c, low, upp = sigmaclip(all_rms, 3, 3)
    plt.figure(figsize=(10, 8))
    plt.hist(c,
             bins=25,
             range=(low, upp),
             fill=True,
             edgecolor='black',
             linewidth=2.0)
    plt.ylabel('Count')
    plt.xlabel('RMSCDPP(ppm)')
    #plt.savefig("./result/KOIQ"+str(quarter)+"rms.png")
    result = np.transpose([own_kid, all_rms])