Skip to content

Simple Python script to identify DSOs that are up for a given date/time/location with filtering

License

ursomniac/whattoobserve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

whattoobserve

Simple Python script to identify DSOs that are up for a given date/time/location with filtering

Version

  • 1.0 - 3 April 2025

TODO

  • Might add filtering on azimuth range
  • The --infield option 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.

Installation

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

Resetting the defaults

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

Notes

  1. West longitude is NEGATIVE; these two values you'll almost certainly have to reset.
  2. Faintest object to include - typically Seestar's have no problem reaching V = 12.0
  3. 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.
  4. 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)
  5. In Alt/Az mode, functionally difficult above ~85°
  6. All times are in UT:
    • 2:00 = 9 PM EST, 10 PM EDT
  7. 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

Running the Program

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.

Options

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

Notes

  1. Set to 0 to include everything
  2. If not set with --date uses "today" as the date
  3. If not set with --file uses "dso-YYYYMMDD-HHMMSS.tsv" as the filename with date/time as set.

What comes back

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

Viability

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".

Loading the TSV file into a Spreadsheet

  • 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).

Miscellania

  1. 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
  2. Some of the catalogs contained therein are complete:
    • Messier
    • Caldwell
    • Herschel 400 (as "H400")
    • Sharpless (as "Sh2")
    • Arp Peculiar Galaxies
    • Hickson Galaxy Groups

About

Simple Python script to identify DSOs that are up for a given date/time/location with filtering

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages