Plot the lightcurve of a spotted star#

This example plots the lightcurve caused by a spotted photosphere.

from pathlib import Path
from astropy import units as u
import matplotlib.pyplot as plt
import pypsg

from VSPEC import ObservationModel,PhaseAnalyzer

try:
    CFG_PATH = Path(__file__).parent / 'spot_lightcurve.yaml'
except NameError:
    CFG_PATH = 'spot_lightcurve.yaml'

pypsg.docker.set_url_and_run()
Saved settings to /home/ted/.pypsg/settings.json
Reloading settings...

Initialize the VSPEC run#

We read in the config file and run the model.

model = ObservationModel.from_yaml(CFG_PATH)
model.build_planet()
model.build_spectra()
Starting at phase 0.0 deg, observe for 40.0 d in 10 steps
Phases = [  0. 144. 288.  72. 216.   0. 144. 288.  72. 216.   0.] deg

Build Planet:   0%|          | 0/10 [00:00<?, ?it/s]
Build Planet:  10%|█         | 1/10 [00:00<00:01,  5.08it/s]
Build Planet:  20%|██        | 2/10 [00:00<00:01,  6.85it/s]
Build Planet:  30%|███       | 3/10 [00:00<00:00,  7.56it/s]
Build Planet:  40%|████      | 4/10 [00:00<00:00,  7.99it/s]
Build Planet:  50%|█████     | 5/10 [00:00<00:00,  8.12it/s]
Build Planet:  60%|██████    | 6/10 [00:00<00:00,  8.24it/s]
Build Planet:  70%|███████   | 7/10 [00:00<00:00,  8.19it/s]
Build Planet:  80%|████████  | 8/10 [00:01<00:00,  8.02it/s]
Build Planet:  90%|█████████ | 9/10 [00:01<00:00,  8.31it/s]
Build Planet: 100%|██████████| 10/10 [00:01<00:00,  8.34it/s]
Build Planet: 11it [00:01,  8.43it/s]
Build Planet: 11it [00:01,  8.00it/s]
Generated 2 mature spots

Build Spectra:   0%|          | 0/40 [00:00<?, ?it/s]

Loading Spectra:   0%|          | 0/17 [00:00<?, ?it/s]

Loading Spectra:   6%|▌         | 1/17 [00:00<00:05,  2.96it/s]

Loading Spectra:  12%|█▏        | 2/17 [00:00<00:04,  3.09it/s]

Loading Spectra:  18%|█▊        | 3/17 [00:00<00:04,  3.14it/s]

Loading Spectra:  24%|██▎       | 4/17 [00:01<00:04,  3.09it/s]

Loading Spectra:  29%|██▉       | 5/17 [00:01<00:03,  3.08it/s]

Loading Spectra:  35%|███▌      | 6/17 [00:01<00:03,  3.13it/s]

Loading Spectra:  41%|████      | 7/17 [00:02<00:03,  3.15it/s]

Loading Spectra:  47%|████▋     | 8/17 [00:02<00:02,  3.13it/s]

Loading Spectra:  53%|█████▎    | 9/17 [00:02<00:02,  3.17it/s]

Loading Spectra:  59%|█████▉    | 10/17 [00:03<00:02,  3.26it/s]

Loading Spectra:  65%|██████▍   | 11/17 [00:03<00:01,  3.33it/s]

Loading Spectra:  71%|███████   | 12/17 [00:03<00:01,  3.37it/s]

Loading Spectra:  76%|███████▋  | 13/17 [00:04<00:01,  3.31it/s]

Loading Spectra:  82%|████████▏ | 14/17 [00:04<00:00,  3.28it/s]

Loading Spectra:  88%|████████▊ | 15/17 [00:04<00:00,  3.25it/s]

Loading Spectra:  94%|█████████▍| 16/17 [00:04<00:00,  3.28it/s]

Loading Spectra: 100%|██████████| 17/17 [00:05<00:00,  3.20it/s]
Loading Spectra: 100%|██████████| 17/17 [00:05<00:00,  3.20it/s]

Build Spectra:   2%|▎         | 1/40 [00:05<03:47,  5.82s/it]
Build Spectra:   5%|▌         | 2/40 [00:06<01:41,  2.66s/it]
Build Spectra:   8%|▊         | 3/40 [00:06<01:01,  1.65s/it]
Build Spectra:  10%|█         | 4/40 [00:07<00:42,  1.18s/it]
Build Spectra:  12%|█▎        | 5/40 [00:07<00:32,  1.09it/s]
Build Spectra:  15%|█▌        | 6/40 [00:08<00:25,  1.32it/s]
Build Spectra:  18%|█▊        | 7/40 [00:08<00:21,  1.52it/s]
Build Spectra:  20%|██        | 8/40 [00:08<00:18,  1.69it/s]
Build Spectra:  22%|██▎       | 9/40 [00:09<00:16,  1.83it/s]
Build Spectra:  25%|██▌       | 10/40 [00:09<00:15,  1.93it/s]
Build Spectra:  28%|██▊       | 11/40 [00:10<00:14,  2.01it/s]
Build Spectra:  30%|███       | 12/40 [00:10<00:13,  2.07it/s]
Build Spectra:  32%|███▎      | 13/40 [00:11<00:12,  2.12it/s]
Build Spectra:  35%|███▌      | 14/40 [00:11<00:12,  2.15it/s]
Build Spectra:  38%|███▊      | 15/40 [00:12<00:11,  2.17it/s]
Build Spectra:  40%|████      | 16/40 [00:12<00:10,  2.18it/s]
Build Spectra:  42%|████▎     | 17/40 [00:13<00:10,  2.19it/s]
Build Spectra:  45%|████▌     | 18/40 [00:13<00:09,  2.20it/s]
Build Spectra:  48%|████▊     | 19/40 [00:13<00:09,  2.21it/s]
Build Spectra:  50%|█████     | 20/40 [00:14<00:09,  2.21it/s]
Build Spectra:  52%|█████▎    | 21/40 [00:14<00:08,  2.21it/s]
Build Spectra:  55%|█████▌    | 22/40 [00:15<00:08,  2.21it/s]
Build Spectra:  57%|█████▊    | 23/40 [00:15<00:07,  2.21it/s]
Build Spectra:  60%|██████    | 24/40 [00:16<00:07,  2.21it/s]
Build Spectra:  62%|██████▎   | 25/40 [00:16<00:06,  2.21it/s]
Build Spectra:  65%|██████▌   | 26/40 [00:17<00:06,  2.21it/s]
Build Spectra:  68%|██████▊   | 27/40 [00:17<00:05,  2.21it/s]
Build Spectra:  70%|███████   | 28/40 [00:17<00:05,  2.21it/s]
Build Spectra:  72%|███████▎  | 29/40 [00:18<00:04,  2.21it/s]
Build Spectra:  75%|███████▌  | 30/40 [00:18<00:04,  2.22it/s]
Build Spectra:  78%|███████▊  | 31/40 [00:19<00:04,  2.22it/s]
Build Spectra:  80%|████████  | 32/40 [00:19<00:03,  2.22it/s]
Build Spectra:  82%|████████▎ | 33/40 [00:20<00:03,  2.22it/s]
Build Spectra:  85%|████████▌ | 34/40 [00:20<00:02,  2.22it/s]
Build Spectra:  88%|████████▊ | 35/40 [00:21<00:02,  2.22it/s]
Build Spectra:  90%|█████████ | 36/40 [00:21<00:01,  2.22it/s]
Build Spectra:  92%|█████████▎| 37/40 [00:22<00:01,  2.21it/s]
Build Spectra:  95%|█████████▌| 38/40 [00:22<00:00,  2.22it/s]
Build Spectra:  98%|█████████▊| 39/40 [00:22<00:00,  2.21it/s]
Build Spectra: 100%|██████████| 40/40 [00:23<00:00,  2.22it/s]
Build Spectra: 100%|██████████| 40/40 [00:23<00:00,  1.71it/s]

Load in the data#

We can use VSPEC to read in the synthetic data we just created.

data = PhaseAnalyzer(model.directories['all_model'])
/home/ted/github/VSPEC/VSPEC/analysis.py:115: RuntimeWarning: No Layer info, maybe globes or molecular signatures are off
  warnings.warn(

Get the lightcurve#

We will look in a few different wavelengths.

wl_pixels = [0,300,500,700]
time = data.time.to(u.day)
for i in wl_pixels:
    wl = data.wavelength[i]
    lc = data.lightcurve(
        source='star',
        pixel=i,
        normalize=0
    )
    plt.plot(time,lc,label=f'{wl:.1f}')
plt.legend()
plt.xlabel(f'time ({time.unit})')
_=plt.ylabel('Flux (normalized)')
plot spot lightcurve

Total running time of the script: (0 minutes 28.031 seconds)

Gallery generated by Sphinx-Gallery