コード例 #1
0
 def solar_avoidance_degrees(self):
     """
     Returns 0.0 if there is no solar avoidance, otherwise returns
     this obs param in degrees.
     """
     sa = self.get_solar_avoidance()
     return 0.0 if sa is None else TimeAgent.rad2deg(sa)
コード例 #2
0
ファイル: Target.py プロジェクト: mmccarty/nell
    def get_deg(self, value):
        degs = TimeAgent.rad2deg(value)

        if degs < 0:
            degs = abs(degs)
            sign = "-"
        else:
            sign = " "

        fpart, ddegs = modf(degs)
        fpart, dmins = modf(fpart * 60)
        dsecs = round(fpart * 60, 1)

        if dsecs > 59.9:
            dmins = dmins + 1
            dsecs = 0.0
        if dmins > 59.9:
            ddegs = ddegs + 1
            dmins = 0.0

        return "%s%02i:%02i:%04.1f" % (sign, int(ddegs), int(dmins), dsecs)
コード例 #3
0
ファイル: SessionHttpAdapter.py プロジェクト: mmccarty/nell
    def jsondict(self):
        irradiance = self.sesshun.irradiance()
        solarAvoid = self.sesshun.get_solar_avoidance()
        solarAvoid = None if solarAvoid is None else TimeAgent.rad2deg(solarAvoid) # DB in radians

        d = {"id"         : self.sesshun.id
           , "pcode"      : self.sesshun.project.pcode
           , "handle"     : self.sesshun.toHandle()
           , "type"       : self.sesshun.session_type.type
           , "science"    : self.sesshun.observing_type.type
           , "total_time" : self.sesshun.allotment.total_time
           , "PSC_time"   : self.sesshun.allotment.psc_time
           , "sem_time"   : self.sesshun.allotment.max_semester_time
           , "remaining"  : 0 if self.sesshun.observing_type.type == "maintenance" \
                              else TimeAccounting().getTimeRemaining(self.sesshun)
           , "grade"      : self.sesshun.allotment.grade
           , "orig_ID"    : self.sesshun.original_id
           , "name"       : self.sesshun.name
           , "freq"       : self.sesshun.frequency
           , "req_max"    : self.sesshun.max_duration
           , "req_min"    : self.sesshun.min_duration
           , "between"    : self.sesshun.time_between
           , "enabled"    : self.sesshun.status.enabled
           , "authorized" : self.sesshun.status.authorized
           , "complete"   : self.sesshun.status.complete
           , "backup"     : self.sesshun.status.backup
           , "guaranteed" : self.sesshun.guaranteed()
           , "gas"        : self.sesshun.good_atmospheric_stability() or False
           , "transit"    : self.sesshun.transit() or False
           #, "nighttime"  : self.sesshun.nighttime() or False
           , "time_of_day": self.sesshun.get_time_of_day()
           , "lst_ex"     : self.sesshun.get_lst_string('LST Exclude') or ""
           , "lst_in"     : self.sesshun.get_lst_string('LST Include') or ""
           , "receiver"   : self.sesshun.get_receiver_req()
           , "project_complete" : "Yes" if self.sesshun.project.complete else "No"
           , "xi_factor"  : self.sesshun.get_min_eff_tsys_factor() or 1.0
           , "el_limit"   : self.sesshun.get_elevation_limit() or None # None is default 
           , "solar_avoid": solarAvoid 
           , "trk_err_threshold"   : self.sesshun.get_tracking_error_threshold()
           , "src_size"   : self.sesshun.get_source_size()
           , "keyhole"    : self.sesshun.keyhole()
           , "irradiance" : 300 if irradiance is None and 
                                   self.sesshun.observing_type.type == 'continuum' 
                                else irradiance
            }
        try:
            target = self.sesshun.target
        except Target.DoesNotExist:
            pass
        else:
            d.update({"source"     : target.source
                    , "coord_mode" : target.system.name
                    , "source_h"   : TimeAgent.rad2deg(target.horizontal) \
                                       if target.system.name == 'Galactic' \
                                       else TimeAgent.rad2hr(target.horizontal)
                    , "source_v"   : TimeAgent.rad2deg(target.vertical) 
                    })

        #  Remove all None values
        for k, v in d.items():
            if v is None:
                _ = d.pop(k)

        return d