2019 June

July 23, 2019: Neural net to the rescue

I found a thing!

For the last few days I've been thinking about open science and how best to communicate what I'm working on without giving away all of my interesting targets and ideas. I think there's a healthy balance that can be reached somewhere between sharing everything and sharing nothing, and I'm struggling to find that balance at the moment. But that said, I have a new object to share with you!

In an earlier post (see below), I wrote that I built a convolutional neural network to hunt for transits which contain spot occultations. I generated thousands of realistic Kepler-like light curves with and without spot occultations, and trained the neural net to classify light curves with spot occultations; then applied the network to TESS photometry through Sector 12. At first I didn't find anything notable, save for one potential spot occultation in a single transit, and I was feeling pretty down about the project for only producing a null result. Julianne Dalcanton reminded me:

But then I looked closer at the objects flagged by the neural net and found something exciting. It appears to be a transiting object orbiting a nearby M star with a very short orbital period. What makes this object so interesting is not the transiting object itself, which may be an inflated hot Neptune or similar, but the star it transits. The host star appears to have rotational modulation synchronized to the orbital period of the transiting object, and the eclipse events are dominated by consistent starspot occultations. I can explain the full light curve, including the in- and out-of-transit portions, really well with only a few starspots using Leslie Hebb and Graeme Rohn's starspot photometry software STSP.

If the system is what I think it is, it has the potential to be my next source of obsession like HAT-P-11 was during my dissertation, providing a fascinating window into the stellar dynamo of an M star. If you're interested in collaborating on this target and have access to telescope time in the south, shoot me an email!

July 10, 2019: White Dwarf Planet Hunting

OK, hear me out...

White dwarfs (WDs) are the evolutionary end points of over 95% of all stars. Given the ubiquity of small exoplanets orbiting Sun-like stars, which are progenitors of white dwarfs, a lot of us seek to answer the following question: do rocky planets survive stellar death and continue orbiting their host stars into the white dwarf phase of stellar evolution?

There is clear spectroscopic evidence that rocky planetary material survives into the white dwarf (WD) phase of steller evolution. Spectroscopy reveals that nearly half of all WDs show absorption lines due to metal pollution in their atmospheres. Since metals have a finite lifetime in WD atmospheres before sinking out, the presence of metals indicates recent accretion. Careful consideration of the chemical abundances present in WD spectra have revealed that the accreted material must have been rock- and water-rich. Thus it appears that planetary material survives the stellar death into the WD phase -- but is any of it transiting?

The first photometric observations of disintegrating, likely-rocky bodies orbiting a metal-polluted white dwarf were published by Vanderburg et al. (2015). The authors identified several possible planetesimals orbiting WD 1145+017 with orbital periods between 4 and 5 hours. The transit depths measured as large as 40%, and varied from transit to transit. This system demonstrates the great potential of metal-polluted WD planetary systems -- (1) the spectroscopic detection of metal pollution enhances transit search efficiency by looking at only WDs with recent accretion histories; (2) the S/N of individual transit events can be quite high due to the small radii of white dwarfs; (3) the prototypical orbits are just within the tidal disruption radius of rocky bodies, with periods of several hours; and (4) each transit transmits unique information about the rapidly evolving system, which appears to evolve from one orbit to the next.

It's for these reasons that I created a little research group of undergraduate observers at the University of Washington when I was a graduate student. We called ourselves SPAMS: the Search for Planets Around post-Main sequence Stars. I had the privilege to work with some incredibly talented students, including Aislynn Wallach, Doug Branton, Teagan O'Reilly, Brittany Platt, Ada Beale, Andrew Yetter, and Katie Reil. Taken together, we stayed up more than 80 nights to observe WDs using the ARCSAT 0.5 m Telescope at Apache Point Observatory. We published our findings in a Research Note, where we report null detections for four bright, metal-polluted white dwarfs: G226-29, Wolf 1516, Wolf 28 and SDSS J160401.31+083109.0.

I'm hopeful that one day we'll find a transiting object orbiting a metal-polluted white dwarf, and if we do, it'll be worth the trouble. Because think about it this way: we know the interior composition of the Earth pretty well, but we don't know the interior composition of exoplanets without making loads of assumptions. But for an object transiting a metal-polluted WD, we'll have the guts of its sibling planets smeared out across the surface of the white dwarf host, signalling to us the precise abundances of the metals that make up (the siblings of) the rocky planets that we see transiting. I can't wait for that day.

July 9, 2019: Machine Learning Day 2

What's a convolutional neural network?

Yesterday I wrote that I would explain what a convolutional neural net is, and I'm realizing now that it's hard to explain without figures or animations, so maybe it's not suited well to this blog's format. But I'm going to try to explain in words what I've learned this week, in the hopes that it helps me write up the paper that I'm working on.

A neural network can be thought of as a series of neurons, where a neuron is a function which takes inputs from data or other neurons, and sends outputs to yet more neurons. Neurons are grouped into "layers", i.e. there's first the input signal (your data), then that signal passes onto a layer of neurons (functions), which produce outputs that trigger neurons in the next layer, and so on until the output layer, where the resulting vector typically estimates the ~likelihood that your input data belong to a set of labels on which the model was trained.

This is a supervised learning technique, where you pass pre-labeled data into the model, let it filter through the various layers of neurons and produce an output. Then the predicted output is compared against the true labels of the data. Through iteration and backpropagation (which is somewhat magical), you tweak the weights between each neuron until the "losses" decrease, where we can think of losses like chi-squared or other badness-of-fit metrics. Generally as the losses decrease, the accuracy of your model increases -- in other words, the model predicts the true label for each input more often.

A convolutional neural network is one where the function that's operating within some of the neurons is a convolution of the input data with a kernel. This is a smart operation to choose because convolutions will trigger a neuron when the kernel is convolved with a matching signal, no matter where the signal was detected in your data. So when you're hunting for a planet in photometry, for example, you don't really care at what time the transit occurs, you just care that some of the input signal matches the expected signal (a transit).

I'm using a CNN built with keras, a Python module built on top of lower-level ML packages like TensorFlow. Keras makes it as straightforward as possible to go from "I get what a CNN is and I want to implement one in a few lines of Python" to "oh wow it's actually working". In my experience, getting started wasn't so different from getting to know a new module in scikit-learn -- the API is familiar and Pythonic, the docs are thorough, and the code is fast.

Are you intrigued? I found the following tutorials really helpful:

I hope you find these resources as helpful as I did. Happy hacking!

July 8, 2019: Machine Learning Day 1

In which Brett tutors his laptop

I'm starting this week with a new adventure a deep dive into machine learning, by teaching myself: (a) what machine learning really is, (b) coding up a 1D convolutional neural net, and (c) trying to apply the CNN to real Kepler data.

Unsurprisingly, the goal for this project is to hunt for HAT-P-11-like objects in Kepler and TESS photometry, by hunting for starspot occultations within known transiting systems. I've developed a forward model for starspot occultations called fleck which I'm using to generate thousands of simulated transit light curves with Kepler-like noise, labeling each one as "occults spots" or "occults no spots". The resulting catalog of labelled light curves are then used as a training set for my supervised learning technique of choice for this problem, called convolutional neural networks.

When I make it further along in this project, I'll write a post explaining CNNs in more detail, but for now, suffice it to say: it is a machine learning technique that can be used to classify time-series signals quickly. I'm going to use the rest of this short post to reflect on lessons learned in day one of machine learning bootcamp:

  1. 95% of my effort is likely to be spent constructing a realistic enough training set for the model to produce useful predictions.
  2. I couldn't have made any progress today, or maybe ever, without keras.
  3. Having a training set doesn't make it a realistic or useful one.
  4. The machine learns only what you teach it.
Lots of people preach ML as the hammer to solve your big data problems, but I'm learning that it takes a lot of work to make your data ML-ready.

July 4, 2019: The unbearable whiteness of noise

Hunting for starspot occultations

It's no secret that I'm enamored with systems like HAT-P-11 and Kepler-17, two bright exoplanet host stars which happen to be covered in starspots. During a transit event when the planet passes in front of the dark starspots, less light goes missing than at times when the planet occults bright regions of the star, creating a positive "bump" in the light curves superimposed on the transit signal. These bumps encode the positions and sizes of starspots.

TESS is going to find a bunch of planets orbiting bright stars, and it's my hope that at least one of those planets orbits a star with abundant starspots. I've been periodically downloading the most recent TOI lists, and combing through the light curves for any transiting exoplanet candidates that have extra noise in their residuals. Most of the transits look like this:

Today I looked through >200 light curves of transiting exoplanet candidates from the TESS TOI list brighter than 12 mag, orbiting cool stars, with transit depths >0.5 mmag. I found some quite active exoplanet host stars judging by the apparent rotational modulation of the star out-of-transit, but didn't find any stars that had residual signals in-transit that could best be explained by spot occultations.

I'm not going to give up on this hunt -- after all, there were only two great spotted stars in the original Kepler field out of thousands of planet hosts. But I am starting to wonder about the occurrence rate of spot occultations. I'm going to spend the rest of the day thinking about statistics and generating simulated transits of ensembles of spotted stars in order to determine how many other HAT-P-11-like systems one might expect to discover with TESS. If you've already thought about this, give me a shout!

July 3, 2019: Whose line is it anyway?

Help needed!

This week I'm working on identifying magnetic activity-sensitive spectral features in HARPS spectra, inspired by the TiO molecular band modeling approach in the previous blog post. If you think about spectra of high temperature molecules, this post is for you!

The idea is that we have a wealth of high resolution, high S/N observations of the Sun recorded by HARPS, which should contain information about the magnetic activity of the Sun. While those HARPS spectra were taken, NASA's Solar Dynamics Observatory (SDO) was collecting continuum imaging of the Sun, which can serve as a sort of "answer key" for how much of the solar surface was covered in sunspots during each HARPS observation.

I've come up with a technique for identifying activity sensitive lines by searching for spectral channels whose flux correlates with the total spot coverage of the Sun, which predicts that the spectral features are activity sensitive at the red dashed lines in the following plot:

Does anyone know how to identify these anonymous lines? In the above figure I've plotted the VALD3 line list for the Sun, which identifies most of the atomic features. I've looked at HITEMP databases for water and CO and haven't found correlations with this little suspicious line list.

The lines occur at:

  • 5132.53 Å
  • 5132.55 Å
  • 5138.0 Å
  • 5141.38 Å
  • 5157.01 Å
  • 5174.19 Å
  • 5178.0 Å
If those wavelengths mean anything to you, please let me know!

July 2, 2019: TiO Molecular Band Modeling

The enduring, elusive spectroscopic hunt for TiO molecular bands [paper]


Michael Gully-Santiago is fond of saying

Starspots emit light!
a backhanded acknowledgement that starspots are generally thought of as dark spots, but their true nature is more complicated. I've spent the better part of two years chasing a consequence of this fact, and the paper was just accepted, so I can finally talk about it!

Starspots change the apparent brightness of stars as a function of time, as thousands of Kepler light curves will show you. But a lesser studied phenomenon is the way that starspots affect the spectra of stars.

There's a great series of papers by O'Neal, Neff and Saar from the late 90's and early 00's on using this chromatic decifit of flux to our advantage. The authors studied several absorption bands of TiO, a molecule which forms at temperatures below about 4000 K, as a tracer of starspot coverage. The idea goes: a G or K star with effective temperatures >4000 K should not have any TiO absorption in their spectra, because they are too hot. However, starspots often have \(\Delta T \sim 500\) K and therefore can be cool enough to form TiO! The goal in this series of papers was to measure slight flux deficits in the spectra of active G and K stars which are likely to have substantial starspot coverage by focusing on spectral bands of strong TiO absorption.

Lessons Learned

It has been about 20 years since those initial papers were written, so I got the itch to increment the effort with the ARCES echelle spectrograph on the ARC 3.5 m Telescope at Apache Point Observatory. I collected about 80 hours of spectra of G and K stars, and collaborated with Jason Curtis and Charli Sakari on measuring spectroscopic \(T_\text{eff}\) and \(\log g\)s with SME and MOOG. We found that the spectroscopic temperatures agree really well with the Gaia DR2 Apsis pipeline's two-color (plus parallax) photometric temperatures.

The effort to measure TiO absorption turned out to be really tricky at our resolution \(R\sim31,500\) and S/N. We found significant starspot coverages consistent with previous studies for around a dozen stars, but we only had convincing "by-eye" detections of TiO absorption in systems with spot coverage \(f_S \sim 0.5\). This turns out to be a consequence of flux weighting. At 7054 Å, where there's a strong TiO absorption band, suppose the blackbody flux of a spot is equivalent to a \(T_\text{eff} = 4000\) K source. That spot emits only 56% of the flux of a \(T_\text{eff} = 4500\) K source, a typical temperature for the photosphere of a K star. Thus if you have a K star that is 10% covered in spots, the total contribution of the spot's spectrum to the total spectrum is only 0.1 * 0.56 = 5%, where the other 95% of the flux is coming from the warmer photospheric component. Hunting for the measly missing 5% contribution to the flux centered on TiO bands is therefore tricky business. The flux-weighting effect kills your chances of measuring solar-like spot coverages in modest S/N spectra, but gives you a chance to measure very large starspot coverages like those of RS CVn stars.

Future work

I'm looking forward to trying this technique out with higher S/N, higher resolution spectra, like those from HIRES and HARPS. It'd be especially valuable if we could find a variation on the technique that worked well in the near-infrared, so that we could use the TiO (or other molecular) band modeling to determine starspot coverage during exoplanet transit spectroscopy observations. I'm working with Steve Saar on writing up a state-of-the-field/post-mortem piece on the molecular band modeling technique, laying out the success and challenges and prospects for the future.

July 1, 2019: New Job

First day of postdoc life

Today was my first official day of work as NCCR PlanetS postdoc at the University of Bern, working with Professors Kevin Heng and Brice-Olivier Demory. I look forward to joining the vibrant community that is thriving here in Bern, and making the most of the amazing collaborators that are stuck with me for the next few years.

I submitted a paper to the arXiv last night that I'm excited to share with you tomorrow. If you like starspots, stellar effective temperatures, and Bayesian spectroscopic analysis, you'll like tomorrow's post!