University Astrophysics & Python for Astronomy Tutoring
Learn astrophysics the way researchers use it: derive the key results, then test them on real data with Python.
Who it's for
Undergraduates taking introductory or intermediate astrophysics, and students in physics, data science or related fields who want to analyse astronomical data with Python.
What we cover
- Radiative processes basics
- Stellar structure overview
- Exoplanet detection: transits and radial velocity
- Python with NumPy, Matplotlib and Astropy
- Analysing real light curves and spectra
- Uncertainties and model fitting
How lessons work
Bring your course notes, a problem set or a dataset. In live lessons we work through the physics on a shared whiteboard and write code together, so you understand every line. You keep the notes and the code, and get follow-up exercises after each lesson.
Worked example: fold a light curve and measure a transit depth
Task. Fold a light curve on a known period and measure the transit depth. Here we simulate one TESS-like sector so the answer is known in advance: a 5000 ppm transit every 3.2 days, with 1000 ppm of white noise.
import numpy as np
# Simulated light curve: 27 days of 2-minute cadence, like one TESS sector
rng = np.random.default_rng(42)
t = np.arange(0, 27, 2 / 1440) # time [days]
P, t0, dur, depth = 3.2, 1.1, 0.12, 0.0050 # period, mid-transit, duration [d], depth
flux = 1 + rng.normal(0, 0.001, t.size) # 1000 ppm white noise
phase = (t - t0 + 0.5 * P) % P - 0.5 * P # days from the nearest mid-transit
flux[np.abs(phase) < dur / 2] -= depth # box-shaped transit
# Fold on the known period and compare in-transit with out-of-transit flux
in_tr = np.abs(phase) < dur / 4 # central half of the transit
out_tr = np.abs(phase) > dur # well away from the transit
measured = flux[out_tr].mean() - flux[in_tr].mean()
err = np.std(flux[out_tr]) / np.sqrt(in_tr.sum())
print(f"depth = {measured * 1e6:.0f} ± {err * 1e6:.0f} ppm")
print(f"Rp/R* = {np.sqrt(measured):.4f}")
Output:
depth = 4934 ± 51 ppm
Rp/R* = 0.0702
Reading the result. The measured depth agrees with the injected 5000 ppm to within about 1.3 standard errors. Since , a Sun-like host would make this planet about Earth radii. With real data you would first remove stellar variability and instrumental trends, and fit a limb-darkened transit model instead of a box.
Start with a trial lesson
A 30-minute trial costs €10. We set goals and you see how I teach. After that, lessons are €30 for 60 minutes, or less with a pack.
Questions
Which university courses can you help with?
Introductory and intermediate astrophysics: radiative processes, stellar structure, stellar atmospheres, exoplanets, and observational astronomy. Bring your course notes and problem sets.
Do I need to know Python already?
No. We can start from the basics and build up to loading, plotting and analysing real data with NumPy, Matplotlib and Astropy.
Will you write my code for an assignment?
No. I teach concepts, methods and problem-solving. I don't complete graded assignments, exams or theses on anyone's behalf. I will help you understand the method and debug your own code.
Do we use real data?
Yes. Public archives such as NASA's TESS and Kepler data are a great way to learn. Working with real light curves teaches you about noise, systematics and honest error bars.