An Operational ETL Workflow for Hubble's Law Validation
This repository contains a professional-grade ETL (Extract, Transform, Load) pipeline designed to process large-scale astronomical data from the Sloan Digital Sky Survey (SDSS). The project demonstrates the ability to handle massive datasets (15M+ records) by implementing memory-efficient chunking and vectorized physics transformations.
The pipeline validates Hubble’s Law, which describes the expansion of the universe:
Where:
-
$v$ : Recessional velocity of a galaxy. -
$H_0$ : The Hubble Constant (rate of expansion). -
$d$ : Proper distance to the galaxy.
-
Redshift-to-Velocity: Calculated using the Doppler approximation for cosmological distances:
$v = c \cdot z$ . -
Distance Modulus: Distances are derived from the relationship between apparent magnitude (
$m$ ) and absolute magnitude ($M$ ):$$d = 10^{\frac{m - M + 5}{5}}$$ -
Statistical Regression: A linear fit is applied to the Velocity-Distance relationship to derive
$H_0$ .
To meet the requirements of an institutional data segment (aligning with KNMI/TROPOMI operational standards), this pipeline includes:
- Memory-Efficient Chunking: Utilizing Python generators and Pandas chunking to process data batches, ensuring stable execution for volumes exceeding available RAM.
- Operational Logging: Implemented the
logginglibrary for robust process monitoring, replacing standard print statements for better traceability. - Data Hygiene: Automated outlier removal using quantile filtering to maintain statistical integrity.
- Interoperability: Outputs standardized CSV formats ready for downstream scientific validation and long-term archiving.
- Language: Python 3.9+
- Libraries:
Pandas(ETL),NumPy(Vectorized Math),SciPy(Physics),Scikit-Learn(Regression),Matplotlib/Seaborn(Visualization),Astroquery(Data Access). - Version Control: Managed via Git with professional repository hygiene (
.gitignore).
- Clone the repository:
git clone [https://github.com/syd311/SDSS-Data-Pipeline.git](https://github.com/syd311/SDSS-Data-Pipeline.git)
- Install the dependencies:
pip install numpy pandas astroquery scikit-learn matplotlib seaborn
3.Execute the pipeline:
python sdss_etl_pipeline.py