Ejemplo n.º 1
0
    def read(cls, fname, sid, **kwargs):
        cache = namedtuple(
            'K2Cache',
            'fname objno nobj nexp time cadence quality fluxes errors x y header'
        )
        if not cls._cache or cls._cache.fname != fname:
            with pf.open(fname) as fin:
                data = fin[1].data
                nobj = fin[1].header['naxis2']
                nexp = fin[2].header['naxis2']
                fluxes = (1. + data['f'].reshape(
                    [nobj, nexp, -1])) * data['f_med'][:, np.newaxis, :]
                fluxes = np.swapaxes(fluxes, 1,
                                     2)  # Fluxes as [nobj,napt,nexp] ndarray
                cls._nstars = nobj
                cls._cache = cache(fname, fin[1].data['objno'], nobj, nexp,
                                   fin[2].data['mjd_obs'],
                                   fin[2].data['cadence'],
                                   np.zeros(nexp, np.int), fluxes,
                                   np.zeros_like(fluxes), data['x'], data['y'],
                                   fin[0].header)

        return K2Data(cls._cache.objno[sid],
                      time=cls._cache.time[:-1],
                      cadence=cls._cache.cadence[:-1],
                      quality=cls._cache.quality[:-1],
                      fluxes=cls._cache.fluxes[sid, :, :-1],
                      errors=cls._cache.errors[sid, :, :-1],
                      x=cls._cache.x[sid, :-1],
                      y=cls._cache.y[sid, :-1],
                      sap_header=cls._cache.header)
Ejemplo n.º 2
0
    def read(cls, fname, sid, **kwargs):
        ftype = kwargs.get('type', 'pdc').lower()
        assert ftype in cls.allowed_types, 'Flux type must be either `sap` or `pdc`'
        fkey = cls.fkeys[ftype]

        try:
            epic = int(re.findall('ktwo([0-9]+)-c', basename(fname))[0])
        except:
            epic = int(re.findall('C([0-9]+)_smear',
                                  basename(fname))[0][2:])  # for smear
        data = pf.getdata(fname, 1)
        phead = pf.getheader(fname, 0)
        dhead = pf.getheader(fname, 1)

        [h.remove('CHECKSUM') for h in (phead, dhead)]
        [phead.remove(k) for k in 'CREATOR PROCVER FILEVER TIMVERSN'.split()]

        return K2Data(epic,
                      time=data['time'],
                      cadence=data['cadenceno'],
                      quality=data['sap_quality'],
                      fluxes=data[fkey],
                      errors=data[fkey + '_err'],
                      x=data['pos_corr1'],
                      y=data['pos_corr2'],
                      primary_header=phead,
                      data_header=dhead,
                      campaign=phead['campaign'])
Ejemplo n.º 3
0
 def read(cls, fname, **kwargs):
     epic = int(re.findall('EPIC_([0-9]+)_', basename(fname))[0])
     data = np.loadtxt(fname, skiprows=1)
     return K2Data(epic,
                   time=data[:, 0],
                   cadence=data[:, 1],
                   quality=data[:, -1],
                   fluxes=data[:, 2:-3:2].T,
                   errors=data[:, 3:-3:2].T,
                   x=data[:, -3],
                   y=data[:, -2])
Ejemplo n.º 4
0
    def read(cls, fname, sid, **kwargs):

        #        ftype = 'sap_flux' if kwargs.get('type','sap').lower() == 'sap' else 'pdcsap_flux'
        #        try:
        #            epic = int(re.findall('ktwo([0-9]+)-c', basename(fname))[0])
        #        except:
        #            epic = int(re.findall('C([0-9]+)_smear', basename(fname))[0][2:]) # for smear
        #        data = pf.getdata(fname, 1)
        #        head = pf.getheader(fname, 0)

        lcfn = 'test.fits'
        transfn = '/Users/petigura//Research/K2//k2photfiles/pixeltrans_C3_ch04.h5'
        tlimits = [0, 9999]
        pipe = k2phot.pipeline_core.Pipeline(fname,
                                             lcfn,
                                             transfn,
                                             tlimits=tlimits,
                                             tex=None)
        pipe.set_lc0('region', 200)
        print "using the following aperture"
        print pipe.im.ap
        hduL = fits.open(pipe.pixfn)
        quality = hduL[1].data['QUALITY']
        fluxes = pipe.lc0['fsap']
        time = pipe.lc0['t'] - bjd0
        cadence = pipe.lc0['cad']

        # Stand in for true photometric errors
        errors = fluxes * (60 * 30 * pipe.lc0['fsap'].median())**-0.5
        pos = pipe.lc0['xpr ypr'.split()]
        pos -= pos.mean()
        head = pf.getheader(fname, 0)
        epic = head['KEPLERID']
        x = pos['xpr']
        y = pos['ypr']

        time = np.array(time)
        cadence = np.array(cadence)
        quality = np.array(quality)
        fluxes = np.array(fluxes)
        errors = np.array(errors)
        x = np.array(x)
        y = np.array(y)
        return K2Data(epic,
                      time=time,
                      cadence=cadence,
                      quality=quality,
                      fluxes=fluxes,
                      errors=errors,
                      x=x,
                      y=y,
                      sap_header=head)
Ejemplo n.º 5
0
 def read(cls, fname, sid, **kwargs):
     ftype = 'sap_flux' if kwargs.get(
         'type', 'sap').lower() == 'sap' else 'pdcsap_flux'
     try:
         epic = int(re.findall('ktwo([0-9]+)-c', basename(fname))[0])
     except:
         epic = int(re.findall('C([0-9]+)_smear',
                               basename(fname))[0][2:])  # for smear
     data = pf.getdata(fname, 1)
     head = pf.getheader(fname, 0)
     return K2Data(epic,
                   time=data['time'],
                   cadence=data['cadenceno'],
                   quality=data['sap_quality'],
                   fluxes=data[ftype],
                   errors=data[ftype + '_err'],
                   x=data['pos_corr1'],
                   y=data['pos_corr2'],
                   sap_header=head)