Introduction
The Washington Double Star (WDS) Catalog, maintained by the United States Naval Observatory (USNO), is a treasure trove of data for astronomers interested in the behavior of binary and multiple star systems. This database contains observations going back centuries, with records of position angles, separations, magnitudes, epochs, proper motions, and more. By studying these parameters over time, researchers can trace the motion of stars and, in some cases, infer their physical relationships.
In my research for two astrometry-focused projects—
- An Astrometric Measurement of Triple Star System WDS 04387+1546 KOH 19, and
- An Astrometric Measurement of Physical Binary WDS 10382+2636 STF1454 Using Speckle Interferometry—
my team and I relied heavily on the WDS Catalog to extract and analyze historical data.
The Problem
The WDS stores data in plain text files, organized into columns for each observation attribute. While the format is compact, it isn't always consistent—some rows are missing key values, such as the year of observation, position angle, or separation. Since these three parameters were essential for our analysis, we had to manually comb through the files, extracting only the complete entries.
We initially used an Excel-based plotting tool that accepted position angle and separation values to visualize the motion of double stars over time. While this worked for binary systems, we quickly hit a wall with KOH 19, a more complex triple system. The Excel sheet wasn’t designed to handle three-star configurations and lacked the flexibility needed for our analysis.
When I brought this up with my mentor, he noted that other students had run into similar roadblocks. He mentioned offhandedly, "I wish someone would just write a better tool."
Naturally, I replied, "I code. Want me to give it a shot?"
The Solution
I turned to Google Colab, a cloud-based Python environment that supports interactive coding and easy data visualization. My goal was simple: create a script that would parse WDS data files, filter out incomplete rows, and generate polar plots to show how the position of each component evolved over time.
This script:
- Reads raw WDS data from
.txt
files - Extracts only the relevant observations (with complete data)
- Groups data by component (AB, AC, etc.)
- Plots each component’s motion using matplotlib in polar coordinates
- Allows for customization and reuse across different star systems
The resulting plots clearly visualize the motion of stellar companions—whether binary or triple—over time, with far more clarity and flexibility than the original spreadsheet.
Takeaways
This small coding project turned out to be incredibly useful—not just for our papers, but for others in the program who were struggling with similar issues. It’s a great example of how even basic programming skills can be leveraged to overcome technical limitations in existing tools and improve the efficiency of research workflows.
If you're interested, you can view the notebook [here]. (Insert link)
Acknowledgments
Special thanks to Pat Boyce for his mentorship throughout the project.