Simple Python script to identify DSOs that are up for a given date/time/location with filtering
- 1.0 - 3 April 2025
- Might add filtering on azimuth range
- The
--infieldoption doesn't work yet: there are another ~2000 objects in the database that are "in the field" of other DSOs (the field is set to be about 1/2° around a more prominent DSO); e.g., NGC 205 is "in the field of" M 31.
Just clone the repo, and run it from the command line. The entire code is in native Python -- no external packages are needed!.
There are 3 files:
- whattoobserve.py = the Python script
- dso_list.tsv = the archive of DSOs (about 3500 in total)
- defauts.tsv = the defaults for the settings; see following
There are several defaults - some of them you'll want to reset. Just use your favorite file editor to make the one-time changes.
| Name | type | Default | Info | Notes |
|---|---|---|---|---|
| LATITUDE | float | 42.500000 | (degrees N) | 1 |
| LONGITUDE | float | -72.500000 | (degrees E) | 1 |
| MAGNITUDE_MAX | float | 12.0 | (V band) | 2 |
| ANGSIZE_MIN | float | 2.0 | (arcmin) | 3 |
| PRIORITY_MIN | int | 2 | (medium) | 4 |
| ALTITUDE_MAX | float | 90.0 | (degrees) | 5 |
| ALTITUDE_MIN | float | 20.0 | (degrees) | 5 |
| TIME_DEFAULT | time | 02:00:00 | HH:MM:SS (UT) | 6 |
| OBSERVING_MODE | str | I | [NBSMI] | 7 |
- West longitude is NEGATIVE; these two values you'll almost certainly have to reset.
- Faintest object to include - typically Seestar's have no problem reaching V = 12.0
- Smallest object to include - typically 2' is a decent limit for imaging scopes; for optical observing with mangification you can go smaller. Set to 0. to include everything.
- Priority - ranges from 0 to 4 - these are entirely subjective:
- 4 = Highest (generally the most famous objects)
- 3 = High (some interesting "unknown" objects here!)
- 2 = Medium (not the most interesting, but generally doable) - default
- 1 = Low (either not very interesting, or difficult)
- 0 = Lowest (included for completeness)
- In Alt/Az mode, functionally difficult above ~85°
- All times are in UT:
- 2:00 = 9 PM EST, 10 PM EDT
- There are five observing modes
- N = Naked Eye objects (mostly for very dark skies)
- B = Binoculars
- S = Small Telescope (6" or smaller)
- M = Medium Telescope (larger than 6")
- I = Imaging/"Smart" Telescope (Seestar, eQuinox, Vespera, etc) = default
This is run from the command line (e.g., with Terminal on the Mac).
All of the defaults can be changed on the command line.
The program will create a TSV file of the selected objects.
So python whattoobserve.py --altitude-min 40 --date 2025-07-01 --time 03:00:00 will create a file dso-20250701-030000.tsv with some number of DSOs available.
| Option | Type | Description | Notes |
|---|---|---|---|
--help |
boolean | Show the menu/help | |
--debug |
boolean | Show diagnostics (not generally used) | |
--latitude |
float | Override the default latitude | |
--longitude |
float | Override the default longitude | |
--magnitude |
float | Override the default max magnitude | |
--altitude-min |
float | Override the default minimum altitude | |
--altitude-max |
float | Override the default maximum altitude | |
--angsize-min |
float | Override the default minimum angular size | 1 |
--priority-min |
integer | Override the default lowest priority | 1 |
--observing-mode |
char | One of N, B, S, M, or I | |
--time |
string | Override the default time - HH:MM:SS | |
--date |
string | YYYY-MM-DD | 2 |
--infield |
boolean | (not currently supported - ignore) | |
--file |
string | Set the output file name | 3 |
- Set to 0 to include everything
- If not set with
--dateuses "today" as the date - If not set with
--fileuses "dso-YYYYMMDD-HHMMSS.tsv" as the filename with date/time as set.
The TSV file produces has the filtered results:
Note: DSOs without magnitudes (or sizes) are included regardless of the limits set.
The program mostly copies over the "archive" datafile with some additions (altitude, azimuth, airmass):
- Name (e.g., M 42)
- Nickname (e.g., "Orion Nebula")
- RA and Dec (J2000)
- Altitude, Azimuth (measured from North), Airmass
- Constellation
- Object Type
- Morphology (varies depending on the object type)
- Ang. Size (typically in arcminutes)
- Magnitude (typically V)
- Surface Brightness (magnitudes/arcmin^2)
- Priority (0 to 4)
- Viability (0 to 10) - see below!
- Aliases (Other Catalog entries) - not complete but has all of the major catalogs
This is something I came up with for another project, which (with priority) might aid in picking DSOs:
- 0 - Not Viable: included for completely more than anything else
- 1 - Unlikely Viable: might be really too small, too faint, etc.
- 2 - Extreme Difficulty: possible with exceptional conditions or a very long exposure time
- 3 - (Very) Difficult: results might vary, esp. under brighter skies (higher Bortle)
- 4 - Challenging: doable - worth the effort
- 5 - Requires Patience: might need averted vision visually, or longer exposure times
- 6 - Generally Visible: you should be able to pick it out with little effort
- 7 - Usually Easy: observable under most conditions
- 8 - Easy: findable and generally pleasing optically
- 9 - Very Easy: requires no effort to observe/image even in poor conditions
- 10 - Extremely Easy: novices have no problems
Note that the values for viability differ with observing mode!
- Typically, more aperture or imaging means higher viability
- In a FEW situations, that's not the case!
- Small planetary nebulae might be bright and easier with magnification but not particularly viable with, say, a Seestar
- Likewise very large objects might be well outside the FOV of a wide-field eyepiece or camera frame
- Values are subject to change: I haven't observed all 3500+ objects yet, and have been working under how they appear in atlases (combined with surface brightness, magnitude, etc.) - so some things are a "guess".
- You might want to instruct your spreadsheet program to NOT interpret values in ingest: otherwise some values might have wonky interpretations.
Of course the "source" dso_list.tsv file can also be loaded as a spreadsheet (and all the "in the field of" DSOs will be there).
- The list was compiled by me while working on another project. It is largely complete down to magnitude 13 using:
- Stellarium
- Sky Atlas 2000
- other sources
- Some of the catalogs contained therein are complete:
- Messier
- Caldwell
- Herschel 400 (as "H400")
- Sharpless (as "Sh2")
- Arp Peculiar Galaxies
- Hickson Galaxy Groups