Ceci est une ancienne révision du document !
Python and Space Weather Greetings again fellow Sentient Lifeforms. Things here at landing pad 2997 on Terra STILL mostly crazy. Trying to handle everything on my plate is somewhat like trying to juggle four chainsaws, and an orange, all at the same time. (A VERY nasty mental picture, I must admit.) I mean, I’m supposed to be at least SEMI retired, but I seem to be busier than I was when I had a full time (read 70+ hours a week) job, a young family, and other professional responsibilities. Oh well, as the Barenaked Ladies once said “I wax poetic as you're waxing your legs”. We’ll move on now to this month’s offering. Here in Texas, we have a saying: “If you don’t like the weather, wait 10 minutes.” That’s because on any given day, the weather is so very volatile. Especially in the summertime. In order to make any plans for outside activities, things like walks, shopping, family trips, heck even walking the dog, can be impacted by the weather. Cold, hot, windy, rainy, foggy, muddy, clear… it all affects how we will spend our day or night.
Python et la météo spatiale
Salutations encore une fois, camarades des formes de vie sensibles. Ici, sur la plate-forme d'atterrissage 2997 de Terra, les choses sont toujours aussi folles. Essayer de gérer tout ce que j'ai dans mon assiette, c'est un peu comme essayer de jongler avec quatre tronçonneuses et une orange en même temps. (Je suis censé être au moins semi-retraité, mais j'ai l'impression d'être plus occupé que lorsque j'avais un emploi à temps plein (plus de 70 heures par semaine), une jeune famille et d'autres responsabilités professionnelles. Comme l'ont dit les Barenaked Ladies, « je parle poétiquement pendant que vous vous épilez les jambes ». Passons maintenant à la proposition de ce mois-ci.
Ici, au Texas, nous avons un dicton : « Si vous n'aimez pas le temps qu'il fait, attendez 10 minutes. » En effet, le temps est très changeant d'un jour à l'autre. Surtout en été. Pour planifier des activités à l'extérieur, comme des promenades, des courses, des voyages en famille, voire même promener le chien, il faut tenir compte du temps qu'il fait. Froid, chaleur, vent, pluie, brouillard, boue, ciel dégagé… tout cela influe sur la façon dont nous allons passer la journée ou la nuit.
So, yes, weather here on Terra is an important thing that we need to take into consideration before we make any decisions about what we will do today, tomorrow or even next week. There is another event that is very weather sensitive. That’s the launching of spacecraft to explore areas not on Terra, and even the return of said spacecraft. Yes, I’m talking about space, the great unknown, the ‘final frontier’. Space doesn’t have rain or thunder or cold fronts or even seasonal changes, but it does have some interesting things like plasma temperatures and densities, solar wind speeds, and when you look at our star, the sun, there are Coronal Mass Ejections and solar flares and other things that can make our lives here on Terra interesting to say the least. Many countries have created space programs that only monitor the space weather. NASA is one of them and that’s where we will concentrate our attention for this article.
Donc, oui, la météo sur Terra est un élément important que nous devons prendre en considération avant de prendre des décisions sur ce que nous ferons aujourd'hui, demain ou même la semaine prochaine. Un autre événement est très sensible aux conditions météorologiques. Il s'agit du lancement d'engins spatiaux pour explorer des zones situées en dehors de Terra, et même du retour de ces engins. Oui, je parle de l'espace, le grand inconnu, la « dernière frontière ».
L'espace n'a pas de pluie, de tonnerre, de fronts froids ou même de changements saisonniers, mais il a des choses intéressantes comme les températures et les densités du plasma, les vitesses du vent solaire, et quand vous regardez notre étoile, le soleil, il y a des éjections de masse coronale et des éruptions solaires et d'autres choses qui peuvent rendre notre vie ici sur Terra pour le moins intéressante.
De nombreux pays ont créé des programmes spatiaux qui surveillent uniquement la météo spatiale. La NASA est l'un d'entre eux et c'est sur elle que nous allons concentrer notre attention dans cet article.
To get started, take a look at https://api.nasa.gov/. This link will give you a list of 17 (as of September 5, 2024) different APIs that are available. Many of the APIs have “sub APIs” associated with them. For example, the DONKI API (Space Weather Database of Notifications, Knowledge, Information) has 11 different sub groups. These include things like Coronal Mass Ejection (CME), Geomagnetic Storms (GST), Solar Flares (FLR), and many more. If you are interested in digging in, you should sign up for an API key at https://api.nasa.gov/#signUp. The API key is FREE, so really there’s no reason to not sign up for one, and the key is delivered in your email within a minute or two. However, if you want to just play before you commit, most of the API calls support an API key of “DEMO_KEY”. You are limited to 50 requests per IP addresses per day, and 30 requests per IP address per hour. So your free testing will be fairly limited. Let’s look at some of the things that DONKI can provide.
Pour commencer, consultez le site https://api.nasa.gov/. Ce lien vous donnera une liste de 17 (au 5 septembre 2024) API différentes qui sont disponibles. De nombreuses API sont associées à des « sous-API ». Par exemple, l'API DONKI (Space Weather Database of Notifications, Knowledge, Information) comporte 11 sous-groupes différents. Il s'agit notamment des éjections de masse coronale (CME), des orages géomagnétiques (GST), des éruptions solaires (FLR) et de bien d'autres choses encore.
Si vous souhaitez approfondir la question, vous devez vous inscrire pour obtenir une clé API à l'adresse suivante : https://api.nasa.gov/#signUp. La clé API est GRATUITE, il n'y a donc aucune raison de ne pas s'inscrire, et la clé est livrée dans votre courrier électronique en une minute ou deux. Toutefois, si vous souhaitez jouer avant de vous engager, la plupart des appels d'API prennent en charge une clé d'API « DEMO_KEY ». Vous êtes limité à 50 requêtes par adresse IP par jour et à 30 requêtes par adresse IP par heure. Vos tests gratuits seront donc assez limités.
Voyons un peu ce que DONKI peut vous apporter.
In your favorite IDE, start a quick python project. Of course, we’ll need to import requests and json. Due to the amount of data that will come down, you’ll want to include pprint in your project as well. Set a variable named mykey to “DEMO_KEY”, then create a formatted string to the API url that you want to use. In this case “https://api.nasa.gov/DONKI/CME?api_key=DEMO_KEY”. You can narrow the amount of data that comes down by including a startDate and endDate in the format YYYY-MM-DD, but if you want to just get a gross overview of what the call will return, leaving out the startDate will default to 30 days prior to the current UTC date, and the endDate will default to the current UTC date. Here’s (top right) what the api call would look like, including the startDate and endDate parameters… https://api.nasa.gov/DONKI/CME?startDate=2024-09-01&endDate=2024-09-30&api_key={mykey}
Dans votre IDE favori, démarrez un projet python rapide. Bien sûr, nous aurons besoin d'importer requests et json. En raison de la quantité de données qui seront envoyées, vous voudrez également inclure pprint dans votre projet. Définissez une variable nommée mykey pour « DEMO_KEY », puis créez une chaîne formatée vers l'url de l'API que vous souhaitez utiliser. Dans ce cas, il s'agit de « https://api.nasa.gov/DONKI/CME?api_key=DEMO_KEY ».
Vous pouvez réduire la quantité de données obtenues en incluant une date de début et une date de fin au format AAAA-MM-JJ, mais si vous souhaitez obtenir une vue d'ensemble de ce que l'appel vous renverra, si vous omettez la date de début, la valeur par défaut sera de 30 jours avant la date UTC actuelle, et la date de fin sera par défaut la valeur de la date UTC actuelle.
Voici (en haut à droite) à quoi ressemblerait l'appel à l'api, y compris les paramètres startDate et endDate… https://api.nasa.gov/DONKI/CME?startDate=2024-09-01&endDate=2024-09-30&api_key={mykey}
Please note, by leaving out the startDate and/or endDate could lead to way more data items than you might want to start with. So use that type of call for when you really need it. From here, you can query the info variable to get the fields you want. I did this very early in the morning on Saturday, September the 7th, and it returned 129 data records with each record containing 12 items, and some of those items were dictionaries themselves. So anyway, in order to get a very gross overview of the data, I decided to query the json response for just the dictionary keys. Here’s what was returned… dict_keys(['activityID', 'catalog', 'startTime', 'instruments', 'sourceLocation', 'activeRegionNum', 'note', 'submissionTime', 'versionId', 'link', 'cmeAnalyses', 'linkedEvents'])
Veuillez noter qu'en omettant la date de début et/ou la date de fin, vous risquez d'obtenir beaucoup plus d'éléments de données que vous ne le souhaiteriez au départ. N'utilisez donc ce type d'appel que lorsque vous en avez vraiment besoin.
À partir de là, vous pouvez interroger la variable info pour obtenir les champs que vous souhaitez.
J'ai fait cela très tôt le matin du samedi 7 septembre, et j'ai obtenu 129 enregistrements de données, chaque enregistrement contenant 12 éléments, et certains de ces éléments étant eux-mêmes des dictionnaires.
Quoi qu'il en soit, afin d'obtenir une vue d'ensemble des données, j'ai décidé d'interroger la réponse json pour les seules clés du dictionnaire. Voici ce qui a été retourné…
dict_keys(['activityID', 'catalog', 'startTime', 'instruments', 'sourceLocation', 'activeRegionNum', 'note', 'submissionTime', 'versionId', 'link', 'cmeAnalyses', 'linkedEvents'])
I then wanted to see what just one record would look like. So I had it dump to the terminal via pprint. I broke the data dump into smaller pieces to make it easier to understand. Some of the data items don’t mean anything to me yet. {'activeRegionNum': None, 'activityID': '2024-08-08T04:48:00-CME-001', 'catalog': 'M2M_CATALOG', For me, the important data item in this small group is the activityID. This contains the date and time of the incident in the id number. Now for the second dictionary item in our json data. The cmeAnalyses field (below): You can see that there are many items that don’t quite compute to me, but there are two items that stand out pretty well right at first glance. Mainly the note field and the link field. If I was really interested in this event, I’d pull that link up. Remember, this is the analysis of the event, so it will be fairly specific.
J'ai ensuite voulu voir à quoi ressemblait un seul enregistrement. J'ai donc envoyé les données au terminal par l'intermédiaire de pprint. J'ai divisé les données en petits morceaux pour les rendre plus faciles à comprendre. Certaines données ne me disent encore rien.
{'activeRegionNum' : None,
'activityID' : '2024-08-08T04:48:00-CME-001',
'catalog' : 'M2M_CATALOG',
Pour moi, l'élément de données important de ce petit groupe est l'identifiant d'activité (activityID). Il contient la date et l'heure de l'incident dans le numéro d'identification.
Passons maintenant au deuxième élément du dictionnaire dans nos données json. Le champ cmeAnalyses (en bas à droite).
Vous pouvez voir qu'il y a beaucoup d'éléments qui ne me semblent pas très clairs, mais il y a deux éléments qui ressortent assez bien au premier coup d'œil. Il s'agit principalement du champ « note » et du champ « link ». Si j'étais vraiment intéressé par cet événement, je trouverais ce lien. N'oubliez pas qu'il s'agit de l'analyse de l'événement, et qu'elle sera donc assez spécifique.
Now we are back at the “general” data, and here we see that there were two devices that were used to look at this event as well as another link, this time a more general web page that will show any related (top right). The note field is usually one of the most important to me, so I can decide to dive deeper into this report or not. 'note': 'Faint CME first seen in the NW by SOHO LASCO C2 beginning at ' '2024-08-08T04:48Z as well as in later frames by STEREO A COR2. This ' 'event is not clearly visible in SOHO LASCO C3 as it may be too faint ' 'or obscured by the pylon. Possible source is wider field line ' 'opening seen beyond the NW limb in SDO AIA 171 and GOES SUVI 284',
Nous revenons maintenant aux données « générales », et nous voyons ici que deux appareils ont été utilisés pour examiner cet événement, ainsi qu'un autre lien, cette fois-ci une page Web plus générale qui affichera tout ce qui s'y rapporte (en haut à droite).
Le champ « note » est généralement l'un des plus importants pour moi, ce qui me permet de décider d'approfondir ou non ce rapport.
'note': 'Faint CME first seen in the NW by SOHO LASCO C2 beginning at '
'2024-08-08T04:48Z as well as in later frames by STEREO A COR2. This ' 'event is not clearly visible in SOHO LASCO C3 as it may be too faint '
'or obscured by the pylon. Possible source is wider field line ' 'opening seen beyond the NW limb in SDO AIA 171 and GOES SUVI 284', (note : CME faiblevu en premier dans le NW par SOHO LASCO C2 commençant à 2024-08-08T04:48Z ainsi que dans des images ultérieures depuis STEREO A COR2. Cet événement n'est pas clairement visible sur SOHO LASCO C3 car il peut être trop faible ou obscurci par le pylône. La source possible est une ouverture de ligne de champ plus large observée au-delà du limbe de NW dans SDO AIA 171 et GOES SUVI 284)
Finally the last batch of data fields. Here, the startTime and submissionTime fields are something I would normally look at.
'sourceLocation': ,
'startTime': '2024-08-08T04:48Z',
'submissionTime': '2024-08-08T13:06Z',
'versionId': 1}
All that having been said, the cmeAnalyses dictionary can contain multiple entries. A very good example of this occurred on May 11 of this year (2024, just in case you read this sometime in the future). I used the same methodology to get a data dump for that day again using DONKI.
url1 = f“https://api.nasa.gov/DONKI/CME?startDate={startDate}&endDate={endDate}&api_key={mykey}“
Enfin, le dernier lot de champs de données. Ici, les champs startTime et submissionTime sont quelque chose que je regarderais en temps normal.
'sourceLocation' : '',
'startTime': '2024-08-08T04:48Z',
'submissionTime': '2024-08-08T13:06Z',
'versionId' : 1}
Ceci étant dit, le dictionnaire cmeAnalyses peut contenir plusieurs entrées. Un très bon exemple de ceci s'est produit le 11 mai de cette année (2024, au cas où vous liriez ceci dans le futur). J'ai utilisé la même méthodologie pour obtenir un dumping de données pour ce jour-là en utilisant DONKI.
url1 = f « https://api.nasa.gov/DONKI/CME?startDate={startDate}&endDate={endDate}&api_key={mykey} »
Then, once I got the data, I saved the data to a local pickle file, so I didn’t have to keep making the call. There were 5 events reported that day. I dug into the json data and near the end of the first report was a link to https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/CME/30719/1, which is a very clear (well sort of) description of the actual event, including other links.
Higher up in the json data for the first report, I found another link which led me to https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/WSA-ENLIL/30726/-1. This site, at the bottom, showed a number of animated .gif files. The first “Inner Planets Link” shows a rather large CME flying off the Sun https://iswa.gsfc.nasa.gov/downloads/20240511_032400_2.0_anim.tim-den.gif.
That big dark purple (to my eyes) is the CME headed for that tiny yellow dot which represents Earth. Since the image is a GIF, I didn’t try to capture it just as it hits, but you can visit the above link to watch it yourself.**
Ensuite, une fois les données obtenues, je les ai sauvegardées dans un fichier local quelconque, ce qui m'a évité d'avoir à appeler à chaque fois. Cinq événements ont été signalés ce jour-là. J'ai creusé dans les données json et vers la fin du premier rapport, il y avait un lien vers https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/CME/30719/1, qui est une description très claire (enfin, une sorte de description) de l'événement réel, y compris d'autres liens.
Plus haut dans les données json du premier rapport, j'ai trouvé un autre lien qui m'a conduit vers https://webtools.ccmc.gsfc.nasa.gov/DONKI/view/WSA-ENLIL/30726/-1. Ce site, en bas, montrait un certain nombre de fichiers .gif animés. Le premier « Inner Planets Link » (lien vers les planètes intérieures) montre une CME assez importante s'échappant du Soleil https://iswa.gsfc.nasa.gov/downloads/20240511_032400_2.0_anim.tim-den.gif.
Ce gros violet foncé (à mes yeux) est la CME qui se dirige vers le petit point jaune qui représente la Terre. Comme l'image est un GIF, je n'ai pas essayé de la capturer au moment où elle frappe, mais vous pouvez visiter le lien ci-dessus pour la regarder vous-même.