mirror of
https://codeberg.org/Yael-II/MSc1-Internship-Stellar-Cluster.git
synced 2026-03-15 11:16:27 +01:00
74 lines
3.2 KiB
Python
74 lines
3.2 KiB
Python
"""
|
|
* SCOPE : Sky Coordinates for Observations Python Estimator
|
|
* Version 1 - 2024-02-09
|
|
@ Yaël Moussouni
|
|
@ Unistra, P&E, MSc1-MoFP
|
|
@ Observatory of Strasbourg (Intern)
|
|
"""
|
|
import astropy.time as time
|
|
import astropy.coordinates as coord
|
|
import astropy.units as u
|
|
|
|
# * Params
|
|
eps = coord.Angle("0d0m1s")
|
|
# * Location
|
|
obs_name = "Strasbourg Observatory"
|
|
obs_lat = coord.Latitude("""48d34m59s""") # @ 48°34'59" N
|
|
obs_lon = coord.Longitude("""07d46m07s""") # @ 07°46'07" E
|
|
|
|
# * User input
|
|
print("")
|
|
print("\033[94m"+"Info: Location is manually set."+"\033[0m")
|
|
print("")
|
|
min_alt = coord.Angle(input("\033[32m"+"Minimum altitude above horizon (deg): "+"\033[0m")+"d")
|
|
min_dec = coord.Angle(input("\033[32m"+"Minimum declination around the north (deg): "+"\033[0m")+"d")
|
|
window_east = coord.Angle(input("\033[32m"+"Observation window before crossing meridian (h): "+"\033[0m")+" hours")
|
|
window_west = coord.Angle(input("\033[32m"+"Observation window after crossing meridian (h): "+"\033[0m")+" hours")
|
|
obs_date = input("\033[32m"+"Date of observation (YYYY-MM-DD format): "+"\033[0m")
|
|
obs_utc = input("\033[32m"+"Time of observation (hh:mm or hh:mm:ss formats - UTC): "+"\033[0m")
|
|
obs_duration = coord.Angle(input("\033[32m"+"Observation duration (h): "+"\033[0m")+" hours")
|
|
obs_sky_rotation = obs_duration * (1*u.sday/u.day).decompose()
|
|
|
|
# * Manual input
|
|
# min_alt = coord.Angle("45"+"d")
|
|
# min_dec = coord.Angle("30"+"d")
|
|
# window_east = coord.Angle("3"+" hours")
|
|
# window_west = coord.Angle("1"+" hours")
|
|
# obs_date ="2024-02-08"
|
|
# obs_utc = "20:00"
|
|
# obs_duration = coord.Angle("1"+" hours")
|
|
|
|
# * Date/time/location objects
|
|
obs_loc = coord.EarthLocation(lon=obs_lon, lat=obs_lat)
|
|
obs_utc = time.Time(obs_date + " " + obs_utc, scale='utc')
|
|
obs = time.Time(obs_utc, location=obs_loc)
|
|
|
|
# * Local sidereal time
|
|
st = obs.sidereal_time("apparent") # ? apparent or absolute
|
|
|
|
# * Borders and corners coordinates
|
|
dec_upper = min_dec
|
|
dec_lower = + min_alt + obs_loc.lat - coord.Angle("90d")
|
|
a_west = st + obs_sky_rotation + window_west
|
|
a_east = st - window_east
|
|
|
|
# * Output
|
|
print("")
|
|
print("\033[36m"+"Location: "+"\033[0m"+ obs_name)
|
|
print("\033[36m"+"\tlat: "+"\033[0m" + obs_lat.to_string())
|
|
print("\033[36m"+"\tlon: "+"\033[0m" + obs_lon.to_string())
|
|
print("\033[36m"+"Observation "+"\033[0m")
|
|
print("\033[36m"+"\tdate and time: "+"\033[0m"+ obs_utc.to_string())
|
|
print("\033[36m"+"\tsidereal time: "+"\033[0m"+ st.to_string(unit=u.hour))
|
|
print("\033[36m"+"\tduration: "+"\033[0m"+ obs_duration.to_string(unit=u.hour))
|
|
print("\033[36m"+"\tsky rotation: "+"\033[0m"+ obs_sky_rotation.to_string(unit=u.hour))
|
|
print("\033[36m"+"Sky coordinates window:")
|
|
print("\033[36m"+"\teast ra: "+"\033[0m" + a_east.to_string(unit=u.hour))
|
|
print("\033[36m"+"\twest ra: "+"\033[0m" + a_west.to_string(unit=u.hour))
|
|
print("\033[36m"+"\tupper dec: "+"\033[0m" + dec_upper.to_string(unit=u.degree))
|
|
print("\033[36m"+"\tlower dec: "+"\033[0m" + dec_lower.to_string(unit=u.degree))
|
|
|
|
print("\033[36m"+"Simbad constraints:"+"\033[0m")
|
|
print("\033[36m"+"\tRA: "+"\033[0m" + "<" + a_west.to_string(unit=u.hour, sep=":") + " && " + ">" + a_east.to_string(unit=u.hour, sep=":"))
|
|
print("\033[36m"+"\tDE: "+"\033[0m" + "<" + dec_upper.to_string(unit=u.degree, sep=":") + " && " + ">" + dec_lower.to_string(unit=u.degree, sep=":"))
|