コード例 #1
0
def colortemp():
    s = sun()
    sunrise = datetime.combine(date.today(), s.sunrise(when=datetime.now()))
    solarnoon = datetime.combine(date.today(),
                                 s.solarnoon(when=datetime.now()))
    sunset = datetime.combine(date.today(), s.sunset(when=datetime.now()))

    if (datetime.now() - sunrise).seconds < 0 or (datetime.now() -
                                                  sunrise).days < 0:
        #print("It is before sunrise")
        return "bluehour"

    elif (datetime.now() - solarnoon).seconds < 0 or (datetime.now() -
                                                      solarnoon).days < 0:
        #print("it is between sunrise and solar noon")
        percent = (datetime.now() - sunrise).seconds / (solarnoon -
                                                        sunrise).seconds
        index = int(percent * 20)
        return str(ct_lookup[index])

    elif (datetime.now() - sunset).seconds < 0 or (datetime.now() -
                                                   sunset).days < 0:
        #print("it is between solar noon and sunset")
        percent = (datetime.now() - solarnoon).seconds / (sunset -
                                                          solarnoon).seconds
        index = int((1 - percent) * 20)

        return str(ct_lookup[index])

    else:
        #print("It is after sunset")
        return "bluehour"
コード例 #2
0
ファイル: datalib.py プロジェクト: ishivvers/1907ChicagoCubs
    def sunrise_sunset(self,lat, lon, delta_hours):
        s = sunrise.sun( lat, 360- lon)
        if self.which == 'train':
            date_start = datetime.datetime(1994,1,1)
        elif self.which == 'test':
            date_start = datetime.datetime(2007,1,1, 2)
        else: date_start = datetime.datetime(2009,1,1,2)

        utc_time = date_start + datetime.timedelta( delta_hours/24)
        srise, sset = s.sunrise(when = utc_time), s.sunset(when = utc_time)
        return srise, sset
コード例 #3
0
    def sunrise_sunset(self, lat, lon, delta_hours):
        s = sunrise.sun(lat, 360 - lon)
        if self.which == 'train':
            date_start = datetime.datetime(1994, 1, 1)
        elif self.which == 'test':
            date_start = datetime.datetime(2007, 1, 1, 2)
        else:
            date_start = datetime.datetime(2009, 1, 1, 2)

        utc_time = date_start + datetime.timedelta(delta_hours / 24)
        srise, sset = s.sunrise(when=utc_time), s.sunset(when=utc_time)
        return srise, sset
コード例 #4
0
def sunrise_sunset(loc, date, utcoffset):

    sunsun = sun(lat=loc.latitude, long=loc.longitude)
    t_sunrise = sunsun.sunrise(when=date)
    t_sunset = sunsun.sunset(when=date)

    # convert from time to datetime object
    t_sunrise = datetime.datetime(2000, 1, 1, t_sunrise.hour, t_sunrise.minute)
    t_sunset = datetime.datetime(2000, 1, 1, t_sunset.hour, t_sunset.minute)

    # add utcoffset
    t_sunrise = (t_sunrise + utcoffset).time()
    t_sunset = (t_sunset + utcoffset).time()

    return t_sunrise, t_sunset
コード例 #5
0
    def __init__(self, board, switchIndex, lat, long, sensor=None):
        DeskLamp.lamp_count += 1
        self.sun = sun(lat=lat, long=long)
        self.board = board
        self.switchIndex = switchIndex
        self.lamp_should_be_on = False
        self.sensor = None
        self.last_motion_time = int(0)
        if sensor is not None:
            self.sensor = Sensor(sensor)
            self.sensor.on_motion = self.on_motion

        schedule.every(1).minutes.do(self.check_lamp_state)
        self.check_lamp_state()

        if DeskLamp.t is None:
            t = Thread(target=run_schedule)
            t.daemon = True
            t.start()
コード例 #6
0
ファイル: meteogram.py プロジェクト: trackow/prob_meteogram
def sunrise_sunset(loc,date):
    # find timezone first
    timezone_str = tz.tzNameAt(loc.latitude,loc.longitude)
    timezone = pytz.timezone(timezone_str)
    dt = timezone.utcoffset(date)
    
    sunsun = sun(lat=loc.latitude,long=loc.longitude)
    t_sunrise = sunsun.sunrise(when=date)
    t_sunset = sunsun.sunset(when=date)
    
    # convert from time to datetime object
    t_sunrise = datetime.datetime(2000,1,1,t_sunrise.hour,t_sunrise.minute)
    t_sunset = datetime.datetime(2000,1,1,t_sunset.hour,t_sunset.minute)
    
    # add utcoffset
    t_sunrise = (t_sunrise+dt).time()
    t_sunset = (t_sunset+dt).time()
    
    return t_sunrise,t_sunset
コード例 #7
0
ファイル: model.py プロジェクト: smotta/master-thesis
def setSunperiod(timestamp):
    #Starting the daylight saving time:
    dst1 = datetime(2017, 3, 26)
    dst2 = datetime(2017, 10, 29)
    
    sunrisetime = []
    sunsettime = []
    sunperiod = np.zeros(len(timestamp))
    
    s = sunrise.sun()
    for i in range(len(timestamp)):
        if timestamp[i] > dst1 and timestamp[i] < dst2:
            delta = timedelta(hours = 2)
        else:
            delta = timedelta(hours = 1)
        
        sunrisetime.append(datetime.combine(date.today(), s.sunrise(timestamp[i])) + delta)
        sunsettime.append(datetime.combine(date.today(), s.sunset(timestamp[i])) + delta)

        if timestamp[i].time() > sunrisetime[i].time() and timestamp[i].time() < sunsettime[i].time():
            sunperiod[i] = 1
    return sunperiod
コード例 #8
0
def main():
    global sunriseclass
    global scheduler
    global pin1
    global pin2
    # setup
    logger.info(scriptname+" starting")
    wiringpi.wiringPiSetupGpio()
    wiringpi.pinMode(pin1, 1)
    wiringpi.pinMode(pin2, 1)
    sunriseclass = sunrise.sun(lat=lat,long=long)
    scheduler = sched.scheduler(time.time, time.sleep)
    # calculate times for today
    now = datetime.datetime.now()
    testtime = pytz.timezone('Europe/Amsterdam').localize(datetime.datetime.combine(now.date(), datetime.time(hour=12, minute=0, second=0, microsecond=0)))
    sunrisetoday = sunriseclass.sunrise(when = testtime)
    sunsettoday = sunriseclass.sunset(when = testtime)
    # determine current state
    if sunrisetoday < now.time():
        if now.time() < sunsettoday:
            logger.info("sun is up")
            lightsoff()
            nextsunset = pytz.timezone('Europe/Amsterdam').localize(datetime.datetime.combine(now.date(), sunsettoday))
            logger.info('Scheduling next sunset event at: '+str(nextsunset))
            scheduler.enterabs(nextsunset.timestamp(), 1, sunsetevent)
            scheduler.run()
        else:
            logger.info("sun is down, evening")
            sunsetevent()
    else:
        logger.info("sun is down, night or morning")
        lightson()
        nextsunrise = pytz.timezone('Europe/Amsterdam').localize(datetime.datetime.combine(now.date(), sunrisetoday))
        logger.info('Scheduling next sunrise event at: '+str(nextsunrise))
        scheduler.enterabs(nextsunrise.timestamp(), 1, sunriseevent)
        scheduler.run()
コード例 #9
0
ファイル: kaku_timer.py プロジェクト: hwiggerm/kaku
def main():
    oldtime = "00:00"
    #read timetable
    rows = read_tt()
    #endless loop
    while True:
        #loop timetable and compare with currenttime
        #get current time
        now = time.localtime(time.time())
        current_time = time.strftime("%H:%M", now)

        #get the sunrise time for Wageningen
        s = sunrise.sun(lat=51.8, long=5.40)

        #convert time to a datetime
        sr = dt.datetime.combine(dt.date(1901, 1, 1), s.sunrise())
        ss = dt.datetime.combine(dt.date(1901, 1, 1), s.sunset())

        if current_time == '08:30':
            rows = read_tt()

        if current_time != oldtime:
            #print( current_time )
            for row in rows:
                if row[1] is not None:
                    #there is a switchtime
                    #print ("%s %s %s %s %s" % row)
                    if row[1] == current_time:
                        switch_kaku(row[0], row[4], 'A')
                else:
                    #print('we have a sunrise/set time')
                    #print(row[3])

                    if row[3] is None:
                        #print('sunset')
                        #calculate time
                        #print(row[2])
                        delta_s = dt.timedelta(minutes=row[2])
                        ss = ss + delta_s

                        #sstime=ss
                        sstime = ss.strftime("%H:%M")
                        #print('SS',sstime)

                        if sstime == current_time:
                            #print "%s %s %s %s %s" % row
                            switch_kaku(row[0], row[4], 'A')
                    else:
                        #print('sunrise')
                        #calculate time
                        delta_r = dt.timedelta(minutes=row[3])
                        sr = sr + delta_r

                        srtime = time.strftime("%H:%M")
                        #print('sr',srtime)

                        if srtime == current_time:
                            #print "%s %s %s %s %s" % row
                            switch_kaku(row[0], row[4], 'A')
                            #to ensure we switch oly one time per minute
                            oldtime = current_time
    return
コード例 #10
0
#!/usr/local/bin/python3.4

import config
import requests
import sys
import datetime, time
from time import sleep
from sunrise import sun

light = sys.argv[1]

s = sun(lat=52,long=-2)

time = s.sunset(when=datetime.datetime.now())
#print('Sunset at ', time)

today = datetime.date.today()

end = datetime.datetime.combine(today, time)
start = datetime.datetime.combine(today, datetime.datetime.now().time())

delta = end - start
sleep(delta.seconds +3600)

# Turn on
url='http://{}/api/{}/lights/{}/state'.format(
  config.hue['host'],
  config.hue['key'],
  light
)
normal_data='{"on":true, "hue": 29000, "sat": 100, "bri": 80, "ct": 350}'
コード例 #11
0
def get_sunset(date):
    s = sun(lat=50.475, long=6.987)
    sunset = datetime.datetime.combine(date, s.sunset(when=date))
    return int(pytime.mktime(sunset.timetuple()) * 1e6)
コード例 #12
0
def get_sunrise(date):
    date += datetime.timedelta(days=1)
    s = sun(lat=50.475, long=6.987)
    sunrise = datetime.datetime.combine(date, s.sunrise(when=date))
    return int(pytime.mktime(sunrise.timetuple()) * 1e6)
コード例 #13
0
ファイル: __init__.py プロジェクト: lukas2511/FlederSchranke
def get_sunrise(date):
    date += datetime.timedelta(days=1)
    s=sun(lat=50.475,long=6.987)
    sunrise = datetime.datetime.combine(date, s.sunrise(when=date))
    return int(pytime.mktime(sunrise.timetuple())*1e6)
コード例 #14
0
        self.humidity = 100
        self.temp = 100
        self.level = 100
        self.brightness = 100


if __name__ == '__main__':

    ib = IntelligenterBlumentopf()
    tempHumiditySensor = TempHumiditySensor()
    remotePowerSupplyController = RemotePowerSupplyController()
    groundHumiditySensor = GroundHumiditySensor()
    lightSensor = LightSensor()
    levelSensor = LevelSensor()
    sun = sun(lat=ib.coordsLat, long=ib.coordsLong)
    csvData = CSVData()

    ib.logger.debug('IntelligenterBlumentopf is up and running...')
    ib.logger.debug('self.criticalHumidity:' + str(ib.criticalHumidity))
    ib.logger.debug('self.criticalBrightness:' + str(ib.criticalBrightness))
    ib.logger.debug('self.checkSensorsInterval:' +
                    str(ib.checkSensorsInterval))
    ib.logger.debug('self.additionalLightingDuration:' +
                    str(ib.additionalLightingDuration))

    while True:

        #check sensors
        ib.humidity = groundHumiditySensor.getGroundHumidity()
        ib.temp = int(tempHumiditySensor.getTemparature())
コード例 #15
0
import datetime
import sunrise

s = sunrise.sun(lat=51.441642, long=5.4697225)
sun_rise = s.sunrise(when=datetime.datetime.now())
sun_rise = datetime.time(0, 0) + datetime.timedelta(hours=2)
print('sunrise at ', sun_ris)
コード例 #16
0
#!/usr/bin/python3

import urllib.request, urllib.parse, subprocess, os, string, json, re, sys
from datetime import date, datetime, time, timedelta
from sunrise import sun
from time import sleep
from PIL import Image, ImageFont, ImageDraw

ip = '192.168.0.193'
width = 112
height = 16
stationBoardFrom=time(hour=22,minute=0,second=0)
stationBoardTo=time(hour=8,minute=0,second=0)

s = sun(lat=52.37,long=9.72)
lightIs = False
black = (0,0,0)
yellow = (255,255,0)

debug = False
if len(sys.argv) >= 2:
	debug = (sys.argv[1] == "debug")

bigfont = ImageFont.truetype("5x7.ttf", 16)
digfont = ImageFont.truetype("4x7.ttf", 7)
font =  ImageFont.truetype("5x7.ttf", 8)

def isDarkOutside():
	return s.sunrise() > datetime.now().time() or datetime.now().time() > s.sunset()

def URLRequest(url, params, method="GET"):
コード例 #17
0
    def Draw(self, ypos, owm):

        xpos = 0
        t = datetime.datetime.now()
        dt = datetime.timedelta(hours=WeatherInfo.FORECAST_PERIOD_HOURS)
        tf = t

        s = sun()

        for i in range(8):

            f = owm.Get(tf)
            if (f == None):
                continue

            #f.Print()

            t_sunrise = s.sunrise(tf)
            t_sunset = s.sunset(tf)

            if (tf <= t_sunrise) and (tf + dt > t_sunrise):
                dx = self.TimeDiffToPixels(t_sunrise - tf) - self.XSTEP / 2
                self.PutImg("sun", 0, xpos + dx, ypos - self.YSTEP, False)

            if (tf <= t_sunset) and (tf + dt > t_sunset):
                dx = self.TimeDiffToPixels(t_sunset - tf) - self.XSTEP / 2
                self.PutImg("moon", 0, xpos + dx, ypos - self.YSTEP)

            if (i == 0):
                self.PutImg("house", 0, xpos, ypos + self.YSTEP)
                if (f.t.hour == 0):
                    self.PutImg("ground", 1, xpos, ypos + self.YSTEP)
                if (f.t.hour == 12):
                    self.PutImg("ground", 2, xpos, ypos + self.YSTEP)
            elif (f.t.hour == 0):
                self.PutImg("ground", 1, xpos, ypos + self.YSTEP)
            elif (f.t.hour == 12):
                self.PutImg("ground", 2, xpos, ypos + self.YSTEP)
            else:
                self.PutImg("ground", 0, xpos, ypos + self.YSTEP)

            wcond = int(f.id / 100)

            if (wcond == WeatherInfo.Thunderstorm):
                self.PutImg("thunderstorm", 0, xpos, ypos + self.YSTEP)

            if (wcond == WeatherInfo.Atmosphere):
                self.PutImg("fog", 0, xpos, ypos + self.YSTEP)

            c = int((round(float(f.clouds) / 10)))
            self.PutImg("cloud", c, xpos, ypos)

            r = round(f.rain)
            if (r == 0) and (f.rain > 0.01):
                r = 1
            if (r > 5):
                r = 5
            self.PutImg("rain", r, xpos, ypos + self.YSTEP)

            xpos += self.XSTEP
            tf += dt
コード例 #18
0
ファイル: eframe_weather2.py プロジェクト: lds133/epaper
    def Draw(self, ypos, owm):

        self.picheight = self.IMGHEIGHT
        self.picwidth = self.IMGEWIDTH
        self.ypos = ypos

        nforecasrt = ((self.picwidth - self.XSTART) / self.XSTEP)
        maxtime = datetime.datetime.now() + datetime.timedelta(
            hours=WeatherInfo.FORECAST_PERIOD_HOURS * nforecasrt)

        (self.tmin, self.tmax) = owm.GetTempRange(maxtime)
        self.temprange = self.tmax - self.tmin
        if (self.temprange < self.YSTEP):
            self.degreeperpixel = self.DEFAULT_DEGREE_PER_PIXEL
        else:
            self.degreeperpixel = self.temprange / float(self.YSTEP)

        print("tmin = %f , tmax = %f, range=%f" %
              (self.tmin, self.tmax, self.temprange))

        xpos = 0
        tline = [0] * (self.picwidth + self.XSTEP + 1)
        f = owm.GetCurr()
        oldtemp = f.temp
        oldy = self.DegToPix(oldtemp)
        for i in range(self.XSTART):
            tline[i] = oldy
        yclouds = int(ypos - self.YSTEP / 2)
        f.Print()

        self.sprite.Draw("house", xpos, 0, oldy)
        self.sprite.DrawInt(oldtemp, xpos + 8, oldy + 10)
        self.sprite.DrawCloud(f.clouds, xpos, yclouds, self.XSTART,
                              self.YSTEP / 2)
        self.sprite.DrawRain(f.rain, xpos, yclouds, self.XSTART, tline)
        self.sprite.DrawSnow(f.snow, xpos, yclouds, self.XSTART, tline)

        t = datetime.datetime.now()
        dt = datetime.timedelta(hours=WeatherInfo.FORECAST_PERIOD_HOURS)
        tf = t

        xpos = int(self.XSTART)
        nforecasrt = int(nforecasrt)

        n = int((self.XSTEP - self.XFLAT) / 2)
        for i in range(nforecasrt + 1):
            f = owm.Get(tf)
            if (f == None):
                continue
            f.Print()
            newtemp = f.temp
            newy = self.DegToPix(newtemp)
            for i in range(n):
                tline[xpos + i] = self.mybezier(xpos + i, xpos, oldy, xpos + n,
                                                newy)

            for i in range(self.XFLAT):
                tline[int(xpos + i + n)] = newy

            xpos += n + self.XFLAT

            n = (self.XSTEP - self.XFLAT)
            oldtemp = newtemp
            oldy = newy
            tf += dt

        s = sun()
        tf = t
        xpos = self.XSTART
        objcounter = 0
        for i in range(nforecasrt + 1):
            f = owm.Get(tf)
            if (f == None):
                continue

            t_sunrise = s.sunrise(tf)
            t_sunset = s.sunset(tf)

            ymoon = ypos - self.YSTEP * 5 / 8

            if (tf <= t_sunrise) and (tf + dt > t_sunrise):
                dx = self.TimeDiffToPixels(t_sunrise - tf) - self.XSTEP / 2
                self.sprite.Draw("sun", 0, xpos + dx, ymoon)
                objcounter += 1
                if (objcounter == 2):
                    break

            if (tf <= t_sunset) and (tf + dt > t_sunset):
                dx = self.TimeDiffToPixels(t_sunset - tf) - self.XSTEP / 2
                self.sprite.Draw("moon", 0, xpos + dx, ymoon)
                objcounter += 1
                if (objcounter == 2):
                    break

            xpos += self.XSTEP
            tf += dt

        istminprinted = False
        istmaxprinted = False
        tf = t
        xpos = self.XSTART
        n = int((self.XSTEP - self.XFLAT) / 2)
        for i in range(nforecasrt + 1):
            f = owm.Get(tf)
            if (f == None):
                continue

            #f.Print()

            yclouds = int(ypos - self.YSTEP / 2)

            if (f.temp == self.tmin) and (not istminprinted):
                self.sprite.DrawInt(f.temp, xpos + n, tline[xpos + n] + 10)
                istminprinted = True

            if (f.temp == self.tmax) and (not istmaxprinted):
                self.sprite.DrawInt(f.temp, xpos + n, tline[xpos + n] + 10)
                istmaxprinted = True

            t0 = f.t - dt / 2
            t1 = f.t + dt / 2

            # FLOWERS: black - midnight ,  red - midday
            dt_onehour = datetime.timedelta(hours=1)
            dx_onehour = self.XSTEP / WeatherInfo.FORECAST_PERIOD_HOURS
            tt = t0
            xx = xpos
            while (tt <= t1):
                ix = int(xx)
                if (tt.hour == 12):
                    self.sprite.Draw("flower", 1, ix, tline[ix])
                if (tt.hour == 0):
                    self.sprite.Draw("flower", 0, ix, tline[ix])
                if (tt.hour == 6) or (tt.hour == 18) or (tt.hour == 3) or (
                        tt.hour == 15) or (tt.hour == 9) or (tt.hour == 21):
                    self.sprite.DrawWind(f.windspeed, f.winddeg, ix, tline)

                tt += dt_onehour
                xx += dx_onehour

            self.sprite.DrawCloud(f.clouds, xpos, yclouds, self.XSTEP,
                                  self.YSTEP / 2)

            self.sprite.DrawRain(f.rain, xpos, yclouds, self.XSTEP, tline)
            self.sprite.DrawSnow(f.snow, xpos, yclouds, self.XSTEP, tline)

            xpos += self.XSTEP
            tf += dt

        BLACK = 0
        pixel = self.bimg.load()

        for x in range(self.picwidth):
            if (tline[x] < self.picheight):
                pixel[x, tline[x]] = BLACK
            else:
                print("out of range: %i - %i(max %i)" %
                      (x, tline[x], self.picheight))
コード例 #19
0
ファイル: ephem.py プロジェクト: gkeane/nexrads3
import datetime  
import sunrise  
s = sunrise.sun(lat=49,long=3)
print('sunrise at '+s.sunrise(when=datetime.datetime.now()))
コード例 #20
0
    def __init__(self,
                 filename,
                 inst='HARPS',
                 pfits=True,
                 orders=None,
                 wlog=def_wlog,
                 drs=False,
                 fib=None,
                 targ=None,
                 verb=False):
        """
      pfits : fits reader
             True: pyfits (safe, e.g. to get the full header of the start refence spectrum)
             2: my own simple pure python fits reader, faster than pyfits
             It was developed for HARPS e2ds, but the advent ADP.*.tar was difficult.

      """
        self.filename = filename
        self.drsname = 'DRS'
        self.drs = drs
        self.flag = 0
        self.bflag = 0
        self.tmmean = 0
        self.f = None
        self.w = None
        self.e = None
        self.bpmap = None
        self.mod = None
        self.fib = fib
        self.fo = None
        self.wo = None
        self.eo = None
        self.bo = None
        self.drift = np.nan
        self.e_drift = np.nan
        self.utc = None
        self.ra = None
        self.de = None
        #      self.obs = type('specdata', (object,), {'lat': None, 'lon': None})
        self.obs = type('specdata', (object, ), dict(lat=None, lon=None))
        self.airmass = np.nan
        self.inst = inst
        self.scan = self.inst.scan
        self.data = self.inst.data

        if '.gz' in filename: pfits = True

        self.ccf = type(
            'ccf', (),
            dict(rvc=np.nan,
                 err_rvc=np.nan,
                 bis=np.nan,
                 fwhm=np.nan,
                 contrast=np.nan,
                 mask=0,
                 header=0))

        # scan fits header for times, modes, snr, etc.
        #read_spec(self, filename, inst=inst, pfits=pfits, verb=verb)
        self.scan(self, filename, pfits=pfits)

        if verb:
            print "scan %s:" % self.instname, self.timeid, self.header[
                'OBJECT'], self.drsbjd, self.sn55, self.drsberv, self.drift, self.flag, self.calmode

        if inst.name != self.instname:
            pause('WARNING:', filename, 'from', self.inst, ', but mode is',
                  inst)
        self.obj = self.header['OBJECT']

        ### Barycentric correction ###
        # start and end computed only for WE and WEhtml
        self.bjd_sart, self.berv_start = np.nan, np.nan
        self.bjd_end, self.berv_end = np.nan, np.nan

        if targ and targ.name == 'cal':
            self.bjd, self.berv = self.drsbjd, 0.
        elif targ and targ.ra:  # unique coordinates
            if self.brvref == 'MH':
                # fastest version
                #sys.path.append(os.environ['HOME']+'/programs/BarCor/')
                sys.path.insert(1, sys.path[0] + os.sep +
                                'BarCor')  # bary now in src/BarCor
                import bary
                self.bjd, self.berv = bary.bary(self.dateobs,
                                                targ.ra,
                                                targ.de,
                                                inst.name,
                                                epoch=2000,
                                                exptime=self.exptime * 2 *
                                                self.tmmean,
                                                pma=targ.pmra,
                                                pmd=targ.pmde)
            if self.brvref in ('WEhtml', 'WEidl', 'WE'):
                # Wright & Eastman (2014) via online or idl request
                # cd /home/raid0/zechmeister/idl/exofast/bary
                # export ASTRO_DATA=/home/raid0/zechmeister/
                #idl -e 'print, bjd2utc(2457395.24563d, 4.58559072, 44.02195596), fo="(D)"'
                jd_utc = [
                    self.mjd + 2400000.5 +
                    self.exptime * self.tmmean / 24. / 3600
                ]
                jd_utcs = [
                    self.mjd + 2400000.5, jd_utc[0],
                    self.mjd + 2400000.5 + self.exptime / 24. / 3600
                ]
                ra = (targ.ra[0] + targ.ra[1] / 60. +
                      targ.ra[2] / 3600.) * 15  # [deg]
                de = (targ.de[0] + np.copysign(
                    targ.de[1] / 60. + targ.de[2] / 3600., targ.de[0])
                      )  # [deg]
                obsname = inst.obsname  #{'CARM_VIS':'ca', 'CARM_NIR':'ca', 'FEROS':'eso', 'HARPS':'eso', 'HARPN':'lapalma', 'HPF':'hpf'}[inst]
                obsloc = inst.obsloc if hasattr(inst, 'obsloc') else {}
                if self.brvref == 'WE':
                    # pure python version
                    import brv_we14py
                    #self.bjd, self.berv = brv_we14py.bjdbrv(jd_utc=jd_utc[0], ra=ra, dec=de, obsname=obsname, pmra=targ.pmra, pmdec=targ.pmde, parallax=0., rv=0., zmeas=[0])
                    (_, self.bjd,
                     _), (self.berv_start, self.berv,
                          self.berv_end) = brv_we14py.bjdbrv(jd_utc=jd_utcs,
                                                             ra=ra,
                                                             dec=de,
                                                             obsname=obsname,
                                                             pmra=targ.pmra,
                                                             pmdec=targ.pmde,
                                                             parallax=0.,
                                                             rv=0.,
                                                             zmeas=[0],
                                                             **obsloc)
                elif self.brvref == 'WEhtml':
                    self.bjd = brv_we14html.utc2bjd(jd_utc=jd_utc,
                                                    ra=ra,
                                                    dec=de)
                    #self.berv = brv_we14html.bvc(jd_utc=jd_utc, ra="%s+%s+%s"%targ.ra, dec="%s+%s+%s"%targ.de, obsname='ca', pmra=targ.pmra, pmdec=targ.pmde, parallax=0., rv=0., zmeas=[0], raunits='hours', deunits='degrees')[0]
                    self.berv_start, self.berv, self.berv_end = brv_we14html.bvc(
                        jd_utc=jd_utcs,
                        ra="%s+%s+%s" % targ.ra,
                        dec="%s+%s+%s" % targ.de,
                        obsname='ca',
                        pmra=targ.pmra,
                        pmdec=targ.pmde,
                        parallax=0.,
                        rv=0.,
                        zmeas=[0],
                        raunits='hours',
                        deunits='degrees')
                else:
                    self.bjd, self.berv = brv_we14idl.bjdbrv(jd_utc=jd_utc[0],
                                                             ra=ra,
                                                             dec=de,
                                                             obsname=obsname,
                                                             pmra=targ.pmra,
                                                             pmdec=targ.pmde,
                                                             parallax=0.,
                                                             rv=0.,
                                                             zmeas=[0])

                self.berv /= 1000.  # m/s to km/s
            if self.brvref == 'DRS':
                self.bjd, self.berv = self.drsbjd, self.drsberv
                self.brvref = self.drsname
        else:
            self.bjd, self.berv = self.drsbjd, self.drsberv
            self.brvref = self.drsname

        if self.fib == 'B':
            self.berv = np.nan
            self.drsberv = np.nan

        self.header['HIERARCH SERVAL BREF'] = (self.brvref, 'Barycentric code')
        self.header['HIERARCH SERVAL BJD'] = (self.bjd,
                                              'Barycentric Julian Day')
        self.header['HIERARCH SERVAL BERV'] = (self.berv,
                                               '[km/s] Barycentric correction')
        #self.header['HIERARCH SERVAL RA'] = (targ.ra[0], 'Barycentric code')
        #self.header['HIERARCH SERVAL DE'] = (targ.ra[0], 'Barycentric code')
        #self.header['HIERARCH SERVAL PMRA'] = (targ.ra[0], 'Barycentric code')
        #self.header['HIERARCH SERVAL PMDE'] = (targ.ra[0], 'Barycentric code')

        if self.utc:
            date = self.utc.year, self.utc.month, self.utc.day
            sunris = sunrise.sun(*date, lon=self.obs.lon, lat=self.obs.lat)
            sunset = sunrise.sun(*date,
                                 lon=self.obs.lon,
                                 lat=self.obs.lat,
                                 rise=False)
            ut = self.utc.hour + self.utc.minute / 60. + self.utc.second / 3600.
            utend = ut + self.exptime / 3600.
            dark = ((sunset < ut <= utend < sunris) or  # |****S__UT__R***|
                    (sunris < sunset < ut <= utend) or  # |__R*******S__UT|
                    (utend < sunris < sunset < ut) or  # |T__R********S_U|
                    (ut < utend < sunris < sunset))  # |UT__R********S_|
            #if not dark:
            #self.flag |= sflag.daytime

        if orders is not None:
            self.read_data(orders=orders, wlog=wlog)
コード例 #21
0
ファイル: __init__.py プロジェクト: lukas2511/FlederSchranke
def get_sunset(date):
    s=sun(lat=50.475,long=6.987)
    sunset = datetime.datetime.combine(date, s.sunset(when=date))
    return int(pytime.mktime(sunset.timetuple())*1e6)