-
Notifications
You must be signed in to change notification settings - Fork 1
/
kepler_data.py
40 lines (38 loc) · 1.2 KB
/
kepler_data.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from __future__ import print_function
import numpy as np
import pyfits
import glob
import os
def load_kepler_data(LC_DIR):
"""
load and join quarters together.
Takes a list of fits file names for a given star.
Returns the concatenated arrays of time, flux and flux_err
"""
fnames = sorted(glob.glob(os.path.join(LC_DIR, "*fits")))
hdulist = pyfits.open(fnames[0])
t = hdulist[1].data
time = t["TIME"]
flux = t["PDCSAP_FLUX"]
flux_err = t["PDCSAP_FLUX_ERR"]
q = t["SAP_QUALITY"]
m = np.isfinite(time) * np.isfinite(flux) * np.isfinite(flux_err) * \
(q == 0)
x = time[m]
med = np.median(flux[m])
y = flux[m]/med - 1
yerr = flux_err[m]/med
for fname in fnames[1:]:
hdulist = pyfits.open(fname)
t = hdulist[1].data
time = t["TIME"]
flux = t["PDCSAP_FLUX"]
flux_err = t["PDCSAP_FLUX_ERR"]
q = t["SAP_QUALITY"]
m = np.isfinite(time) * np.isfinite(flux) * np.isfinite(flux_err) * \
(q == 0)
x = np.concatenate((x, time[m]))
med = np.median(flux[m])
y = np.concatenate((y, flux[m]/med - 1))
yerr = np.concatenate((yerr, flux_err[m]/med))
return x, y, yerr