コード例 #1
0
ファイル: _test_gQuery.py プロジェクト: jvc2688/gPhoton
 def test_exposure_ranges(self):
     query = (str(self.baseURL)+
         'select vpo.objid, ra, dec, nuv_mag, fuv_mag, fov_radius, nuv_skybg,'
         ' fuv_skybg, nuv_fwhm_world, fuv_fwhm_world, vpe.fexptime,'
         ' vpe.nexptime, fuv_mag_aper_1, fuv_mag_aper_2, fuv_mag_aper_3,'
         ' fuv_mag_aper_4, fuv_mag_aper_5, fuv_mag_aper_6, fuv_mag_aper_7,'
         ' nuv_mag_aper_1, nuv_mag_aper_2, nuv_mag_aper_3, nuv_mag_aper_4,'
         ' nuv_mag_aper_5, nuv_mag_aper_6, nuv_mag_aper_7,'
         ' fuv_magerr_aper_1, fuv_magerr_aper_2, fuv_magerr_aper_3,'
         ' fuv_magerr_aper_4, fuv_magerr_aper_5, fuv_magerr_aper_6,'
         ' fuv_magerr_aper_7, nuv_magerr_aper_1, nuv_magerr_aper_2,'
         ' nuv_magerr_aper_3, nuv_magerr_aper_4, nuv_magerr_aper_5,'
         ' nuv_magerr_aper_6, nuv_magerr_aper_7'
         ' from '+str(self.MCATDB)+'.visitphotoobjall as vpo'
         ' inner join '+str(self.MCATDB)+'.visitphotoextract'
         ' as vpe on vpo.photoextractid=vpe.photoextractid inner join'
         ' '+str(self.MCATDB)+'.fGetNearbyVisitObjEq('+repr(float(self.ra0))+','+
         repr(float(self.dec0))+', '+str(self.radius*60.)+
         ') as nb on vpo.objid=nb.objid'+str(self.formatURL))
     self.assertEqual(gq.exposure_ranges(self.NUV,self.ra0,self.dec0,t0=self.t0,t1=self.t1,detsize=self.detsize),query)
コード例 #2
0
ファイル: dbasetools.py プロジェクト: parejkoj/gPhoton
def get_valid_times(band,skypos,trange=None,detsize=1.1,verbose=0,retries=100.,
                    skyrange=None):
    if not np.array(trange).tolist():
        trange = [1,1000000000000]
    if len(np.shape(trange))==2:
        trange=trange[0]

    # FIXME: This is probably not an optimally efficient way to check an entire
    #  region of sky for data, but it's not hugely dumb and does work...
    # Assemble sky positions on a grid within the targeted region.
    skypos_list = [skypos]
    if skyrange:
        for r in np.linspace(skypos[0]-skyrange[0]/2.,skypos[0]+skyrange[0]/2.,
                    np.ceil(skyrange[0]/(detsize/2.)),endpoint=True):
            for d in np.linspace(skypos[1]-skyrange[1]/2.,
                    skypos[1]+skyrange[1]/2.,np.ceil(skyrange[1]/(detsize/2.)),
                    endpoint=True):
                skypos_list += [[r,d]]

    times = []
    for skypos in skypos_list:
        try:
            times = (list(times) +
                list(np.array(gQuery.getArray(gQuery.exposure_ranges(
                    band,skypos[0],skypos[1],t0=trange[0],t1=trange[1],
                    detsize=detsize),verbose=verbose,retries=retries),
                    dtype='float64')[:,0]/tscale))
        except IndexError:
            if verbose:
                print "No exposure time available at {pos}".format(pos=skypos)
                return np.array([],dtype='float64')
        except TypeError:
            print "Is one of the inputs malformed?"
            raise
        except:
            raise

    return np.sort(np.unique(times))
コード例 #3
0
ファイル: test_gQuery.py プロジェクト: sarallelagram/gPhoton
 def test_exposure_ranges(self):
     self.assertEqual(gq.exposure_ranges(self.NUV,self.ra0,self.dec0,t0=self.t0,t1=self.t1,detsize=self.detsize),"http://masttest.stsci.edu/portal/Mashup/MashupQuery.asmx/GalexPhotonListQueryTest?query=select distinct time from fGetNearbyAspectEq(176.919525856,0.255696872807,((1.25/2.0)*60.0),766525332995,866526576995) where band='NUV' or band='FUV/NUV' order by time&format=json&timeout={}")
コード例 #4
0
ファイル: dbasetools.py プロジェクト: sarallelagram/gPhoton
def fGetTimeRanges(band,skypos,trange=None,tscale=1000.,detsize=1.25,verbose=0,
                   maxgap=1.,minexp=1.,retries=100.,predicted=False):
    """Find the contiguous time ranges within a time range at a
    specific location.
	minexp - Do not include exposure time less than this.
	maxgap - Gaps in exposure longer than this initiate a new time range.
	detsize - Fiddle with this if you want to exlude the edges of the
    detector.
    predicted - Use the aspect solutions to estimate what exposure will be
    available once the database is fully populated.
	"""
    try:
        if not np.array(trange).tolist():
            trange = [1,1000000000000]
        if len(np.shape(trange))==2:
            trange=trange[0]
        times = (np.array(gQuery.getArray(gQuery.exposure_ranges(band,
            skypos[0],skypos[1],t0=trange[0],t1=trange[1],detsize=detsize,
            tscale=tscale),verbose=verbose,retries=retries),
                                                dtype='float64')[:,0]/tscale
            if not predicted else get_aspect(band,skypos,trange,
                                        tscale=tscale,verbose=verbose)['t'])
    except IndexError:
        if verbose:
            print "No exposure time available at {pos}".format(pos=skypos)
        return np.array([],dtype='float64')
    except TypeError:
        print "Is one of the inputs malformed?"
        raise
    except:
        raise
    if verbose:
        print_inline('Parsing '+str(len(times)-1)+' seconds of exposure.: ['+str(trange[0])+', '+str(trange[1])+']')
    blah = []
    for i in xrange(len(times[0:-1])):
        blah.append(times[i+1]-times[i])
    # A drop in data with duration greater than maxgap initiates a
    #  new exposure
    gaps = np.where(np.array(blah)>maxgap)
    ngaps = len(gaps[0])
    chunks = []
    for i in range(ngaps):
        if not i:
            chunk = [times[0],times[gaps[0][i]]]
        elif i==ngaps-1:
            chunk = [times[gaps[0][i]+1],times[-1]]
        else:
            chunk = [times[gaps[0][i]+1],times[gaps[0][i+1]]]
        # If the duration of this slice is less than minexp, do not
        #  count it as valid exposure.
        if chunk[1]-chunk[0]<minexp:
            continue
        else:
            chunks.append(chunk)
    if not ngaps:
        if times.min()==times.max():
            chunks.append([times.min(),times.min()+1])
        else:
            chunks.append([times.min(),times.max()])

    return np.array(chunks,dtype='float64')