dust devils

All posts tagged dust devils

Using an Instrumented Drone to Sample Dust Devils

Dust devils are low-pressure, small (many to tens of meters) convective vortices powered by surface heating and rendered visible by lofted dust. The dust-lifting capacity of a devil likely depends sensitively on its structure, particularly the wind and pressure profiles, but the exact dependencies are poorly constrained. In this pilot study, we flew an instrumented quadcopter through several dust devils to probe their structures.


From https://www.nasa.gov/mission_pages/MRO/multimedia/pia15545.html.

Dust devils occur ubiquitously on Mars, where they have been observed from space and from landed spacecraft. Martian dust devils may present a hazard to exploration of the planet, but they have also lengthened the lifetime of the Mars rovers.

Join the Physics Department on Friday, Sep 1 at 7:30p in the Multi-Purpose Classroom Building, room 101 to hear about research on terrestrial analog dust devils conducted by Boise State’s own Prof. Brian Jackson. He will discuss a recent pilot study using an instrumented quadcopter to sample active dust devils and will present encounter footage collected onboard the drone.

After the presentation at 8:30p, we will stargaze on the roof of the Brady Street Parking Garage.

The entire event is free and open to the public. Contact Prof. Brian Jackson (bjackson@boisestate.eduastrojack.com – @decaelus) with any questions.

A friend and colleague, Prof. Hannah Jang-Condell, invited me to visit her home department, the Physics and Astronomy Dept. at University of Wyoming. Having never been to Laramie, I was happy to accept.

I gave two presentations while at Wyoming, one to the geology dept. about our work on martian dust devils and another our SuPerPiG’s work looking for ultra-short-period planets. I’ve included my presentations below.

Geology Talk

Physics/Astronomy Talk

IMG_3637Had a wonderful visit to London, Ontario last week, home of the University of Western Ontario. Weather wasn’t quite as nice as here in Boise, but the city was just as beautiful.

My friend and colleague Catherine Neish arranged for me to give three talks while there — one on our crowd-funding effort, one on my exoplanet research, and one on our dust devil work.

I’ve posted two of the talks and abbreviated abstracts below. The dust devil talk, “Summoning Devils in the Desert”, is a reprise of a previous talk, so I didn’t include it below.

Crowdfunding To Support University Research and Public Outreach
In this presentation, I discussed my own crowdfunding project to support the rehabilitation of Boise State’s on-campus observatory. As the first project launched on PonyUp, it was an enormous success — we met our original donation goal of $8k just two weeks into the four-week campaign and so upped the goal to $10k, which we achieved two weeks later. In addition to the very gratifying monetary support of the broader Boise community, we received personal stories from many of our donors about their connections to Boise State and the observatory. I’ll talk about our approach to social and traditional media platforms and discuss how we leveraged an unlikely cosmic syzygy to boost the campaign.

On the Edge: Exoplanets with Orbital Periods Shorter Than a Peter Jackson Movie
In this presentation, I discussed the work of our Short-Period Planets Group (SuPerPiG), focused on finding and understanding this surprising new class of exoplanets. We are sifting data from the reincarnated Kepler Mission, K2, to search for additional short-period planets and have found several new candidates. We are also modeling the tidal decay and disruption of close-in gaseous planets to determine how we could identify their remnants, and preliminary results suggest the cores have a distinctive mass-period relationship that may be apparent in the observed population. Whatever their origins, short-period planets are particularly amenable to discovery and detailed follow-up by ongoing and future surveys, including the TESS mission.

I gave a presentation at University of Maryland’s Astronomy Department today, Jun 26 on my dust devil work. Here it is. Abstract below.

Summoning Devils in the Desert
Brian Jackson (bjackson@boisestate.edu)
Dept. of Physics, Boise State University, Boise ID

Dust devils are small-scale (few to many tens of meters) low-pressure vortices rendered visible by dust lofted in moderate to high (> 10 m/s) winds. They persist for minutes to hours and can travel kilometers, usually carried by the ambient wind. On Earth, they occur primarily in arid locations and can reduce air quality and endanger small aircraft. On Mars, they occur ubiquitously and likely dominate the supply of atmospheric dust, influence climate, and even lengthen the operating lifetimes of solar-powered landers. Studied for decades, the underlying formation, dynamics, and statistics of dust devils remain poorly understood, but the same technology revolution that brought us stealth drones and iPhones is helping to change that. In this presentation, I’ll discuss on-going field surveys involving miniature, autonomous instrumentation deployed at sites known for dust devil activity. Using a combination of pressure loggers and photovoltaic cells, these surveys are helping to reveal the underlying natures and structure of dust devils in a totally novel way. We’ve found, for example, that not all devils are dusty, but the dustiest devils are also probably the biggest. The most vigorous dust devils occur most frequently during the middle of the day in the summer, when convection driven by insolation is the most active, but low-pressure vortices apparently occur year-round, throughout the day and night. As in astronomical surveys, statistical inference using these results requires assessing important biases, including selection and detection biases, largely unconsidered in previous surveys. Accurately assessing the role of dust devils requires a complete knowledge of their population statistics since the influence of the largest and most rare devils may drastically outweigh that of smaller, more common devils.

Trying again to dip my toes into advanced data science, I decided to experiment with the Gaussian processes module in sci-kit learn. I’ve been working with barometric data to study dust devils, and that work involves spotting short dips in otherwise slowly varying time series.

In principle, Gaussian processes provides a way to model the slowly varying portion of the time series. Basically, such an analysis assumes the noise infesting each data point depends a little bit on the value of other nearby data points. The technical way to say this is that the covariance matrix for the data stream is non-diagonal.

So I loaded one data file into an ipython notebook and applied the sci-kit learn Gaussian processes module to model out background oscillations. Here’s the notebook.

In [32]:
<span class="o">%</span><span class="k">matplotlib</span> <span class="n">inline</span>
<span class="c">#2015 Feb 15 -- A lot of this code was adapted from </span>
<span class="c">#  http://scikit-learn.org/stable/auto_examples/gaussian_process/plot_gp_regression.html.</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
<span class="kn">from</span> <span class="nn">sklearn.gaussian_process</span> <span class="kn">import</span> <span class="n">GaussianProcess</span>
<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">pyplot</span> <span class="k">as</span> <span class="n">pl</span>
<span class="kn">import</span> <span class="nn">seaborn</span> <span class="kn">as</span> <span class="nn">sns</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
<span class="n">sns</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">palette</span><span class="o">=</span><span class="s">"Set2"</span><span class="p">)</span>

<span class="c">#from numpy import genfromtxt</span>

<span class="n">my_data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">genfromtxt</span><span class="p">(</span><span class="s">'Location-A_P28_DATA-003.CSV'</span><span class="p">,</span> <span class="n">delimiter</span><span class="o">=</span><span class="s">','</span><span class="p">,</span> <span class="n">skip_header</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">usecols</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">names</span><span class="o">=</span><span class="p">[</span><span class="s">'time'</span><span class="p">,</span> <span class="s">'pressure'</span><span class="p">])</span>

<span class="n">X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">atleast_2d</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">my_data</span><span class="p">[</span><span class="s">'time'</span><span class="p">])[</span><span class="mi">0</span><span class="p">:</span><span class="mi">1000</span><span class="p">])</span><span class="o">.</span><span class="n">T</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">atleast_2d</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">my_data</span><span class="p">[</span><span class="s">'pressure'</span><span class="p">])[</span><span class="mi">0</span><span class="p">:</span><span class="mi">1000</span><span class="p">])</span><span class="o">.</span><span class="n">T</span>
<span class="n">y</span> <span class="o">-=</span> <span class="n">np</span><span class="o">.</span><span class="n">median</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>

<span class="c"># Instanciate a Gaussian Process model</span>
<span class="n">gp</span> <span class="o">=</span> <span class="n">GaussianProcess</span><span class="p">(</span><span class="n">theta0</span><span class="o">=</span><span class="mf">1e-2</span><span class="p">,</span> <span class="n">thetaL</span><span class="o">=</span><span class="nb">abs</span><span class="p">(</span><span class="n">y</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">y</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">thetaU</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">nugget</span><span class="o">=</span><span class="mf">1e-3</span><span class="p">)</span>

<span class="c"># Fit to data using Maximum Likelihood Estimation of the parameters</span>
<span class="n">gp</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>

<span class="c"># Make the prediction on the meshed x-axis (ask for MSE as well)</span>
<span class="n">y_pred</span><span class="p">,</span> <span class="n">MSE</span> <span class="o">=</span> <span class="n">gp</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">eval_MSE</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="n">sigma</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">MSE</span><span class="p">)</span>

<span class="n">data</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">time</span><span class="o">=</span><span class="n">X</span><span class="p">[:,</span><span class="mi">0</span><span class="p">],</span> <span class="n">pres</span><span class="o">=</span><span class="n">y</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]))</span>
<span class="n">sns</span><span class="o">.</span><span class="n">lmplot</span><span class="p">(</span><span class="s">"time"</span><span class="p">,</span> <span class="s">"pres"</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'red'</span><span class="p">,</span> <span class="n">fit_reg</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>

<span class="n">predicted_data</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">time</span><span class="o">=</span><span class="n">X</span><span class="p">[:,</span><span class="mi">0</span><span class="p">],</span> <span class="n">pres</span><span class="o">=</span><span class="n">y_pred</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]))</span>
<span class="n">pl</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">'blue'</span><span class="p">)</span>
Barometric time series. Pressure in hPa, and time in seconds.

Barometric time series. Pressure in hPa, and time in seconds. The red dots show the original data, and the blue line the fit from the Gaussian process.

Unfortunately, the time series has some large jumps in it, and these are not well described by the slowly varying Gaussian process. What causes these jumps is a good question, but for the purposes of this little analysis, they are a source of trouble.

Probably need to pursue some other technique. Not to mention that the time required to perform a Gaussian process analysis scales with the third power of the number of data points, so it will get very slow very fast.

Pressure variations (in hectoPascal, hPa) vs. local time for one dust devil pressure dip. The blue curve shows our model fit.

Pressure variations (in hectoPascal, hPa) vs. local time for one dust devil pressure dip. The blue curve shows our model fit.

Dust devils occur in arid climates on the Earth and ubiquitously on Mars. Martian dust devils have been studied with orbiting and landed spacecraft, while most studies of terrestrial dust devils have involved manned monitoring of field sites, which can be costly both in time and personnel. As an alternative approach, my colleague Ralph Lorenz and I performed a multi-year in-situ survey of terrestrial dust devils using pressure loggers deployed at El Dorado Playa in Nevada, USA, a site known for dust devil activity.

When a dust devil passed over our pressure sensors, it appeared as a pressure dip in the time series, as illustrated in the figure. By modeling these signals, we learned a lot of about dust devils. For instance, in spite of expectations, we found signals that looked a lot like dust devils that occurred at night and even in the winter. So do dust devils happen year-round, day and night? More work will help us figure it out.

Our paper on this study will appear soon in the Journal of Geophysical Research Planets.