astropy / astropy/astroplan

Error in obtaining twilight time for site

Open
#608 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
225
Forks
121
Avg merge
28m
Merged PRs (30d)
1

Description

I've found that issues #464 and #533 present a similar problem.
I'm using astroplan version `0.10.1`
I'm running the following code for testing:

```python
import astropy.units as u
from astropy.time import Time
from astropy.coordinates import EarthLocation
from astroplan import Observer

observatory = 'SOAR Telescope'

geodetic_location = ['-70d44m01.11s', '-30d14m16.41s', 2748]

longitude = geodetic_location[0]
latitude = geodetic_location[1]
elevation = geodetic_location[2]

timezone = 'UTC'

description = 'Soar Telescope on Cerro Pachon, Chile'

soar_loc = EarthLocation.from_geodetic(
longitude,
latitude,
elevation * u.m,
ellipsoid='WGS84')

soar = Observer(name=observatory,
location=soar_loc,
timezone=timezone,
description=description)

date_obs = [
'2024-12-08T19:12:58.281',
'2024-12-08T19:14:00.814',
'2024-12-08T19:14:13.016',
'2024-12-08T19:14:25.218',
'2024-12-08T19:14:37.423',
'2024-12-08T19:14:49.627',
'2024-12-08T19:15:01.826',
'2024-12-08T19:15:14.025',
'2024-12-08T19:15:26.223',
'2024-12-08T19:15:38.421',
'2024-12-08T19:15:50.620',
'2024-12-08T19:16:02.819',
'2024-12-08T19:26:51.024',
'2024-12-08T19:27:01.016',
'2024-12-08T19:27:10.980',
'2024-12-08T19:27:20.945',
'2024-12-08T19:27:30.939',
'2024-12-08T19:27:40.904',
'2024-12-08T19:27:50.873',
'2024-12-08T19:28:00.841',
'2024-12-08T19:28:10.807',
'2024-12-08T19:28:20.773',
'2024-12-08T19:31:11.133',
'2024-12-08T19:32:03.088',
'2024-12-08T19:32:14.580',
'2024-12-08T19:32:26.074',
'2024-12-08T19:32:37.592',
'2024-12-08T19:32:49.092',
'2024-12-08T19:33:00.585',
'2024-12-08T19:33:12.073',
'2024-12-08T19:33:23.569',
'2024-12-08T19:33:35.067',
'2024-12-08T19:35:16.249',
'2024-12-08T19:37:07.451',
'2024-12-08T19:39:44.707',
'2024-12-08T19:41:30.004',
'2024-12-08T19:41:55.606',
'2024-12-08T19:44:42.483',
'2024-12-08T19:45:43.977',
'2024-12-08T19:45:59.987',
'2024-12-08T19:46:15.949',
'2024-12-08T19:46:31.938',
'2024-12-08T19:46:47.928',
'2024-12-08T19:47:03.930',
'2024-12-08T19:47:19.913',
'2024-12-08T19:47:35.907',
'2024-12-08T19:47:51.902',
'2024-12-08T19:48:07.926',
'2024-12-09T00:36:05.258',
'2024-12-09T00:42:48.890',
'2024-12-09T00:45:59.575',
'2024-12-09T00:49:47.609',
'2024-12-09T00:51:15.288',
'2024-12-09T00:54:38.605',
'2024-12-09T01:02:21.778',
'2024-12-09T01:13:07.968',
'2024-12-09T01:23:34.241',
'2024-12-09T01:35:06.785',
'2024-12-09T01:43:37.992',
'2024-12-09T01:45:02.019',
'2024-12-09T02:04:56.958',
'2024-12-09T02:15:06.920',
'2024-12-09T02:26:06.814',
'2024-12-09T02:32:23.438',
'2024-12-09T02:42:33.399',
'2024-12-09T02:52:43.364',
'2024-12-09T03:03:35.575',
'2024-12-09T03:09:17.902',
'2024-12-09T03:15:02.153',
'2024-12-09T03:20:44.887',
'2024-12-09T03:32:59.756',
'2024-12-09T03:38:22.151',
'2024-12-09T03:44:21.035',
'2024-12-09T03:50:33.126',
'2024-12-09T03:55:54.897',
'2024-12-09T04:01:39.901',
'2024-12-09T04:07:31.277',
'2024-12-09T04:17:57.604',
'2024-12-09T04:19:47.582',
'2024-12-09T04:22:57.544',
'2024-12-09T04:31:11.036',
'2024-12-09T04:41:21.359',
'2024-12-09T04:51:37.185',
'2024-12-09T05:02:19.628',
'2024-12-09T05:08:44.461',
'2024-12-09T05:18:54.425',
'2024-12-09T05:29:43.797',
'2024-12-09T05:35:50.238',
'2024-12-09T05:46:00.214',
'2024-12-09T05:56:16.908',
'2024-12-09T06:07:08.788',
'2024-12-09T06:10:44.439',
'2024-12-09T06:11:54.360',
'2024-12-09T06:12:44.865',
'2024-12-09T06:21:21.403',
'2024-12-09T06:26:31.429',
'2024-12-09T06:32:43.745',
'2024-12-09T06:38:25.124',
'2024-12-09T06:43:51.164',
'2024-12-09T06:49:01.142',
'2024-12-09T06:54:58.791',
'2024-12-09T07:03:49.460',
'2024-12-09T07:08:59.467',
'2024-12-09T07:14:41.059',
'2024-12-09T07:25:59.400',
'2024-12-09T07:36:09.377',
'2024-12-09T07:46:19.382',
'2024-12-09T07:58:00.468',
'2024-12-09T07:59:00.468']

for _t in date_obs:
print(f"{Time(_t)} Evening: {soar.twilight_evening_astronomical(Time(_t), which='nearest').isot} Morning: {soar.twilight_morning_astronomical(Time(_t), which='nearest').isot}")

```

And I obtain the following output, I removed some of them for brevity:

```
2024-12-08T19:12:58.281 Evening: 2024-12-09T01:12:33.691 Morning: 2024-12-08T07:57:58.333
2024-12-08T19:14:00.814 Evening: 2024-12-09T01:12:33.739 Morning: 2024-12-08T07:57:58.146
...
...
2024-12-09T00:51:15.288 Evening: 2024-12-09T01:12:33.764 Morning: 2024-12-09T07:57:59.287
2024-12-09T00:54:38.605 Evening: 2024-12-09T01:12:33.682 Morning: 2024-12-09T07:57:59.567
2024-12-09T01:02:21.778 Evening: 2024-12-09T01:12:33.505 Morning: 2024-12-09T07:57:59.343
2024-12-09T01:13:07.968 Evening: ——— Morning: 2024-12-09T07:57:59.620
2024-12-09T01:23:34.241 Evening: 2024-12-09T01:12:33.691 Morning: 2024-12-09T07:57:59.560
2024-12-09T01:35:06.785 Evening: 2024-12-09T01:12:33.718 Morning: 2024-12-09T07:57:59.270
2024-12-09T01:43:37.992 Evening: 2024-12-09T01:12:33.774 Morning: 2024-12-09T07:57:59.368
2024-12-09T01:45:02.019 Evening: 2024-12-09T01:12:33.672 Morning: 2024-12-09T07:57:59.278
...
...
2024-12-09T07:36:09.377 Evening: 2024-12-09T01:12:33.771 Morning: 2024-12-09T07:57:59.298
2024-12-09T07:46:19.382 Evening: 2024-12-09T01:12:33.689 Morning: 2024-12-09T07:57:59.309
2024-12-09T07:58:00.468 Evening: 2024-12-09T01:12:33.629 Morning: ———
2024-12-09T07:59:00.468 Evening: 2024-12-09T01:12:33.791 Morning: 2024-12-09T07:57:59.451
```

There are these two points where the output is not correct, they seem to be random, in my application I use the first and the last value to get the corresponding twilight for evening and morning. In this case the last value was failing so I just copied it and added one minute and a a proper value is obtained.

Thanks in advance!

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by running the supplied reproducer with astroplan 0.10.1 and inspect Observer.twilight_evening_astronomical and Observer.twilight_morning_astronomical, especially with which='nearest'. Compare the boundary timestamps that produce a missing value or an apparently wrong date with nearby inputs. Done means these twilight lookups return consistent, correct results at the reported evening and morning boundaries.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.