# Example configuation of flats. # (C) 2010 Petr Kubanek # # Please see flats.py file for details about needed files. # # You most probably would like to modify this file to suit your needs. # Please see comments in flats.py for details of the parameters. from rts2solib import flats Flat, FlatScript = flats.Flat, flats.FlatScript import json #from rts2solib.rts2_wwwapi import rts2comm from rts2solib.big61filters import filter_set Filters = filter_set() import numpy from telescope import kuiper k = kuiper() # You would at least like to specify filter order, if not binning and # other thingsa # binning[0]==3x3 and binning[1]=1x1 expt = numpy.arange(1, 5, 0.2) expt = numpy.append(expt, numpy.arange(5, 10, 0.5)) expt = numpy.append(expt, numpy.arange(10, 41)) f = FlatScript(eveningFlats=[ Flat((Filters['U'], ), binning=0, window='100 100 500 500'), Flat((Filters['Open'], ), binning=0, window='100 100 500 500'),
from rts2solib import stellar from rts2solib.big61filters import filter_set FILTERS = filter_set() from astropy.time import Time import astropy.units as u from astropy.coordinates import Angle import datetime tucson = ('110d', '32d') def test_stellar(): st = Time(datetime.datetime.now(), location=tucson).sidereal_time('apparent') rastr = "{}:{}:{:2.2f}".format(int(st.hms[0]), int(st.hms[1]), st.hms[2]) decstr = "32:00:00.0" s = stellar("testtarg", rastr, decstr) return s def test_two_stellar(): """Test two stellar targets hour before and after the meridian""" st = Time(datetime.datetime.now(), location=tucson).sidereal_time('apparent') ra1 = st + Angle(1, u.hour) ra2 = st - Angle(1, u.hour) decstr = "32:00:00.0" return stellar("testarg2", ra1.to_string(sep=":"), decstr)
def goto_filter(Filter): filts = filter_set() filter_num = filts[Filter] commer = rts2comm() resp = commer.setValue("W0", "filter", filter_num, True ) return jsonify({"response": resp})
def __init__(self, faketarget=None): scriptcomm.Rts2Comm.__init__(self) self.cfg = Config() self.filters = filter_set() self.log("W", "looking at fake target {}".format(faketarget)) if faketarget is not None: self.log("W", "looking at fake target {}".format(faketarget)) targetid = faketarget else: targetid = self.getValue("current_target", "SEL") self.tel = kuiper() #TODO this should be done via rts2 and not # directly with the telescope class. # to fix this may require updating rts2 telescope driver. self.tel.comBIAS("OFF") self.script = None # target = rts2.target.get(targetid) # self.script = None # if len( target ) == 0: # self.log("E", "Can't find Target {}".format(targetid)) # self.script = None self.log("W", "looking at target {}".format(targetid)) name = self.getValue("current_name", "EXEC") print('using name {}'.format(name)) # remove the first 4 bits that make the name # unique and write that to objectName. self.setValue("objectName", name[4:]) self.log('W', self.cfg["orp_dbpath"]) engine = create_engine(self.cfg["orp_dbpath"]) meta = MetaData() meta.reflect(bind=engine) obsreqs = meta.tables["obsreqs"] session = sessionmaker(bind=engine)() try: db_resp = session.query(obsreqs).filter( obsreqs.columns["rts2_id"] == targetid) self.script = db_resp[0].rts2_doc except Exception: self.log("E", "Could not find target-- {}".format(targetid)) raise self.setValue('ObservationID', db_resp[0].observation_id, "C0") self.setValue('GroupID', db_resp[0].group_id, "C0") binning = db_resp[0].binning if binning in ("4x4", "3x3", "2x2", "1x1"): if binning == "1x1": self.setValue("binning", 1) if binning == "2x2": self.setValue("binning", 2) if binning == "3x3": self.setValue("binning", 3) if binning == "4x4": self.setValue("binning", 4) else: self.setValue("binning", 4) # 4x4 binning if db_resp[0].non_sidereal: self.rates = db_resp[0].non_sidereal_json self.tel.comBIAS("ON") # The idea here is that the non sidereal # targets will have an RA and Dec, RA Bias rate, Dec bias rate, # position epoch, object time epoch, position angle, bias_percentage # and object rate. The telescope should go to the coordinates # RA+sin(position_angle)*object_rate, Dec+cos(position_angle)*object_rate # and set the bias rates to # RA_bias_rate*bias_percentage, Dec_bias_rate*bias_percentage # Scott June 2019 utc_at_position = self.rates["UTC_At_Position"] dt_epoch = pytz.utc.localize( datetime.datetime.strptime(utc_at_position, "%Y-%m-%dT%H:%M:%S")) now = pytz.utc.localize(datetime.datetime.utcnow()) delta_time = now - dt_epoch biasra = float(self.rates['RA_BiasRate']) biasdec = float(self.rates['Dec_BiasRate']) ra_offset = biasra * delta_time.total_seconds() dec_offset = biasdec * delta_time.total_seconds() self.log("I", "Setting rates to {} {}".format(biasra, biasdec)) self.tel.command("BIASRA {}".format(biasra)) self.tel.command("BIASDEC {}".format(biasdec)) self.log( "I", "Setting offset to {}s {}s (UT {}, delta {})".format( ra_offset, dec_offset, utc_at_position, delta_time.total_seconds())) self.setValue('woffs', '{}s {}s'.format(ra_offset, dec_offset), 'BIG61') else: self.tel.command("BIASRA 0") self.tel.command("BIASDEC 0") self.has_exposed = False
#!/usr/bin/python # Example configuation of flats. # (C) 2010 Petr Kubanek # # Please see flats.py file for details about needed files. # # You most probably would like to modify this file to suit your needs. # Please see comments in flats.py for details of the parameters. from rts2solib import flats from flats import FlatScript, Flat import rts2.scriptcomm import json #from rts2solib.rts2_wwwapi import rts2comm from rts2solib.big61filters import filter_set; Filters=filter_set() import numpy from telescope import kuiper;k=kuiper() # You would at least like to specify filter order, if not binning and # other thingsa # binning[0]==3x3 and binning[1]=1x1 expt = numpy.arange(1, 5, 0.2) expt = numpy.append(expt, numpy.arange(5, 10, 0.5)) expt = numpy.append(expt, numpy.arange(10, 41)) f = FlatScript( eveningFlats=[