Awards & Nominations

Nucleosynthesis has received the following awards and nominations. Way to go!

Global Nominee

Deuterium

High-Level Project Summary

We developed a web app that takes an Earth location and maps it onto the sun. We then used various data sources to calculate the temperature and solar weather events in a equivalent location on the sun, and then present this back to the user alongside earth weather data for comparison. The end result is a tool that contextualises solar weather and encourages interest in solar science.

Link to Final Project

Detailed Project Description

While we were originally planning to write the backend in Rust, we opted for Python a few hours in due to its faster prototyping speed and ease of working with external datasets without a fixed spec. This has some tradeoffs, particularly in performance and reliability, but those are less important in a hackathon environment than the average project.


The frontend was initially written in Svelte with Tailwind CSS, but when the most knowledgeable Svelte and Tailwind dev became ill with COVID we quickly switched to raw HTML, CSS, and JS as we were more familiar with it.


At its core, the project takes data from various NASA sources for solar weather, as well as the Met Office for real world weather data, carries out data processing, and then displays them side by side for wherever you choose in the world.


To map real-world latitude/longitude coordinates to coordinates on the sun we first halve the longitude so that the equivalent coordinates are always on the part of the sun we have data for.


For solar flare and sunspot data, we initially planned to use the solar.stanford.edu API. However, the API returned data in heliographic carrington coordinate system, which is an extremely complicated and niche coordinate system that includes things like adapting for the speed of light and a time axes. This was far too complicated for our GCSE maths knowledge, so we switched to the NOAA API - https://services.swpc.noaa.gov/products . This gives positions in heliographic stonyhurst coordinates, AKA normal lat/lon. We also used the NOAA API for the solar wind speed.


For temperature data, we converted our latitude/longitude coordinates to 2D cartesian coordinates on images of the sun from the Solar Dynamics Observatory. The SDO gives images at various wavelengths, and we know from Wien's displacement law that the peak wavelength is equal to constant of proportionality over the absolute temperature. We ran an algorithm to go through images taken at various wavelengths in descending order until we found the first image where our calculated pixel was above a certain threshold. We then used a weighted average of past samples (which had a luminance above 0, but below the average threshold) to further improve accuracy.


For X-Ray and magnetospheric summaries we pulled data from n3kl's status page, which in turn pulls from sun observation missions. The output was in a changing GIF, so we had to compare the sha256 hash of the downloaded image with that of known possible responses to find the X-ray and magnetospheric status.


To get real-life location data we pulled from the Met Office via the BBC. We also used this API for our search box of named positions on the Earth (towns, cities, etc) to latitude/longitude coordinates.


On the client we use Three.JS to visualise the Earth and show what area you are focusing on.


We hope that our project is able to show just how interesting space weather is by highlighting the difference of magnitude between Earth and Space weather and by contextualising it and bringing it closer to home.


We would really appreciate it if you took a look for yourself - https://deuterium.earth

Space Agency Data

We used images from the Solar Dynamics Observatory (NASA) to calculate the temperature of specific areas of the sun, as well as data from NOAA (US goverment agency) for solar wind, sunspots, and solar flares, presumably taken from NASA sources.

Hackathon Journey

Our space apps experience wasn't flawless, but we got through the challenges as they presented themselves. Our slow progress with Rust, particularly with unknown datasets, taught us that we should prioritise speed of writing over speed of execution and that the language with the most safety guarantees isn't necessarily the best to make something quickly.


One of our team members discovered he had COVID, and began to suffer from the symptoms, before we arrived for the second day of the hackathon. This meant that we had to quickly switch to remote development, as well as moving from Svelte - his area of expertise - to raw HTML/JS/CSS, as we were more familiar with it.


Our team was inspired to choose this challenge because we were interested in the concept of space weather. We also thought it would involve some fun mathematical and programming challenges.


We would like to thank Azurethi, an online friend, for assisting us with heliospheric - cartesian coordinate conversions. While we had developed a method for carrying out those conversions, he gave us a new way of thinking about the problem - as a coordinate shift, instead of a mathematical function - that led to a more elegant solution.

References

Data collected from:


  • National Oceanic and Atmospheric Administration Solar Database API
  • BBC weather API
  • Solar Dynamics Observatory API
  • n3kl.org solar status


Textures from:


  • www.solarsystemscope.com
  • Solar Dynamics Observatory


Programming Packages:


  • flask
  • waitress
  • requests
  • cachetools
  • flask_caching
  • three.js
  • python

Tags

#website, #creative, #sun, #weather, #solarweather