Wróć do katalogu
Season 12 12 Odcinki 46 min 2026

SunPy: Solar Data Analysis

Wersja 7.1 — Edycja 2026. Dogłębne spojrzenie na SunPy v7.1 (2026), rozwijane przez społeczność środowisko open-source do analizy danych słonecznych dla języka Python. Opanuj wszystko, od Maps i Coordinates po wyszukiwania Fido i TimeSeries.

Obliczenia naukowe Fizyka Słońca
SunPy: Solar Data Analysis
Teraz odtwarzane
Click play to start
0:00
0:00
1
Podstawowa tożsamość: Quantities i jednostki
Odkryj, dlaczego SunPy wymaga jednostek fizycznych do wszystkich obliczeń. Dowiedz się, jak używać Astropy Quantities, aby zapobiec krytycznym błędom konwersji jednostek w twoim potoku analizy słonecznej.
3m 39s
2
Abstrakcja Map
Zanurz się w podstawową strukturę danych SunPy: Map. Dowiedz się, jak wczytywać pliki FITS i łączyć dwuwymiarowe tablice danych z ich bazowymi metadanymi z obserwatorium.
3m 42s
3
Precyzyjny pomiar czasu
Opanuj reprezentację czasu w fizyce słonecznej za pomocą Astropy Time i SunPy TimeRange. Odkryj, dlaczego standardowe datetimes w języku Python zawodzą w astrofizyce wysokich energii.
3m 54s
4
Coordinate Frames i obserwatorzy
Naucz się nawigować po powierzchni Słońca za pomocą Astropy SkyCoord i wyspecjalizowanych układów słonecznych w SunPy. Zrozum kluczową rolę lokalizacji obserwatora i czasu obserwacji.
4m 02s
5
Łączenie pikseli z przestrzenią fizyczną
Połącz piksele obrazu ze współrzędnymi fizycznymi za pomocą World Coordinate System. Naucz się bezbłędnie konwertować między indeksami pikseli a SkyCoords bez ręcznego skalowania.
3m 45s
6
Zunifikowane wyszukiwanie danych z Fido
Przestań pisać niestandardowe skrapery dla każdego archiwum słonecznego. Dowiedz się, jak używać Fido do wykonywania złożonych, zunifikowanych wyszukiwań w wielu instrumentach i długościach fal jednocześnie.
3m 49s
7
Głębokie zapytania: JSOC i HEK
Wykonywaj zaawansowane zapytania do Joint Science Operations Center oraz Heliophysics Event Knowledgebase. Pobieraj określone metadane zdarzeń i wycinki obszarów aktywnych.
3m 21s
8
Wizualizacja Map w jakości publikacyjnej
Przekształć ciemne tablice FITS w oszałamiające, gotowe do publikacji wizualizacje. Dowiedz się, jak konfigurować colormaps, normalizacje logarytmiczne i przedziały przycinania.
4m 56s
9
Przycinanie z uwzględnieniem współrzędnych
Bezpiecznie przycinaj swoje Maps bez uszkadzania metadanych przestrzennych. Dowiedz się, dlaczego powinieneś używać submaps zamiast standardowego krojenia w NumPy.
3m 31s
10
Wyrównywanie i reprojekcja Map
Płynnie łącz dane z różnych instrumentów. Dowiedz się, jak matematycznie zreprojektować mapę z jednego układu współrzędnych na dokładną siatkę pikseli innego.
4m 00s
11
Jednowymiarowe dane czasowe z TimeSeries
Przejdź od obrazowania przestrzennego do czasowych krzywych blasku. Poznaj obiekt TimeSeries, aby ładować, przycinać i łączyć dane strumienia promieniowania rentgenowskiego GOES.
3m 53s
12
Modelowanie rotacji różnicowej
Uwzględnij płynną naturę powierzchni Słońca. Dowiedz się, jak używać RotatedSunFrame do przewidywania przyszłych współrzędnych obszaru aktywnego w miarę obrotu Słońca.
4m 10s

Odcinki

1

Podstawowa tożsamość: Quantities i jednostki

3m 39s

Odkryj, dlaczego SunPy wymaga jednostek fizycznych do wszystkich obliczeń. Dowiedz się, jak używać Astropy Quantities, aby zapobiec krytycznym błędom konwersji jednostek w twoim potoku analizy słonecznej.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 1 z 12. Być może jesteś przyzwyczajony do wrzucania gołych arrayów liczbowych do funkcji i ufania, że matematyka sama się ułoży. Ale w fizyce słonecznej, zakładanie wymiarów twoich danych w ciemno może po cichu zepsuć twój cały pipeline analityczny. Zabezpieczenie przed tym to temat tego odcinka: Główna tożsamość: Wielkości i jednostki. Jeśli próbowałeś przekazać standardowy numpy array do funkcji SunPy, prawdopodobnie od razu dostałeś exception. To nie jest bug. SunPy celowo odrzuca gołe liczby. W wielu dziedzinach nauki sama liczba jest niebezpieczna. Dziesięć może oznaczać dziesięć stopni, dziesięć sekund kątowych albo dziesięć metrów. Jeśli funkcja matematycznie oczekuje radianów, a ty przekażesz stopnie, standardowy Python z radością wyliczy błędny wynik. SunPy zapobiega temu silent failure, wymagając jawnego śledzenia jednostek w całym ekosystemie. Robimy to używając obiektów Astropy Quantity. Quantity to po prostu liczba, albo cały array liczb, bezpiecznie powiązany z fizyczną jednostką. Tworzysz go, mnożąc swoje surowe dane przez obiekt unit. Na przykład, bierzesz liczbę piętnaście i mnożysz ją przez unit reprezentujący sekundy kątowe. Wynikowy obiekt niesie ze sobą obie te informacje. Ponieważ obiekty Quantity są zbudowane na bazie standardowych arrayów, nadal możesz wykonywać wszystkie swoje zwykłe operacje matematyczne. Możesz je slice'ować, obliczać średnią albo szukać wartości maksymalnej, a poprawna jednostka pozostanie przypięta do wyniku. Jeśli kiedykolwiek będziesz musiał je rozdzielić, możesz dostać się do surowej liczby używając atrybutu kropka value, a do samej jednostki używając atrybutu kropka unit. Zazwyczaj trzymasz je razem, ponieważ obiekt sam wie, jak ogarnąć swoją matematykę. Jeśli dodasz metry do kilometrów, obiekt Quantity automatycznie je przeskaluje, więc dodawanie będzie matematycznie poprawne. Możesz też ręcznie konwertować między kompatybilnymi jednostkami używając metody kropka to. Konwersja metrów na kilometry jest prosta, bo obie jednostki mierzą długość. Ale wyobraź sobie scenariusz, w którym musisz przekonwertować odległość kątową mierzoną w płaszczyźnie nieba na fizyczną odległość na powierzchni Słońca. Ściśle rzecz biorąc, kąt to nie długość. Domyślnie system zablokuje taką konwersję. I tu pojawia się kluczowa sprawa. Możesz nadpisać to ścisłe sprawdzanie wymiarów używając equivalency. SunPy dostarcza do tego specjalne narzędzie zwane solar angle equivalency. Kiedy przekażesz to do swojej metody konwersji, dostarczy to brakujący kontekst fizyczny. Używa odległości między obserwatorem a Słońcem, żeby przetłumaczyć kąt pozorny na dosłowną fizyczną odległość, na przykład kilometry na tarczy słonecznej. Wypełnia to lukę między geometrią obserwacyjną a fizyczną rzeczywistością. Aby wymusić ten rodzaj bezpieczeństwa we własnym kodzie, używasz dekoratora quantity input. Umieszczasz go nad definicją swojej funkcji, żeby określić, jakie fizyczne wymiary akceptuje twoja funkcja. Nie zmuszasz użytkownika do przekazywania konkretnie stopni czy radianów. Zamiast tego określasz, że input musi być kątem. Jeśli ktoś spróbuje przekazać jednostkę czasu albo długości, dekorator to wyłapie i wyrzuci błąd, zanim funkcja w ogóle się uruchomi. To rygorystyczne śledzenie fizycznych wymiarów sprawia, że twój kod wywala się głośno, gdy jest matematycznie niepoprawny, zamiast po cichu zwracać śmieciowe dane. Jeśli podobają ci się takie deep dive'y, możesz wesprzeć podcast, szukając DevStoriesEU na Patreonie. To wszystko w tym odcinku. Dzięki za słuchanie i koduj dalej!
2

Abstrakcja Map

3m 42s

Zanurz się w podstawową strukturę danych SunPy: Map. Dowiedz się, jak wczytywać pliki FITS i łączyć dwuwymiarowe tablice danych z ich bazowymi metadanymi z obserwatorium.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 2 z 12. Ogromna, dwuwymiarowa tablica liczb reprezentujących piksele słoneczne jest całkowicie bezużyteczna, jeśli nie znasz instrumentu, który ją zarejestrował, długości fali ani dokładnej daty. Aby prowadzić prawdziwe badania naukowe, te piksele muszą pozostać trwale połączone ze swoim kontekstem. Właśnie ten problem rozwiązuje abstrakcja Map. Bardzo częstym błędem jest założenie, że obiekt Map w SunPy to tylko wygodny wrapper do tworzenia wykresów. Wcale tak nie jest. Chociaż oczywiście potrafi rysować obrazy, w swojej istocie Map to kontener danych świadomy współrzędnych. Działa jak główny klej, który zapobiega utracie metadanych, gdy manipulujesz pikselami pod spodem. Przyjrzyjmy się, jak to działa w praktyce. Załóżmy, że pobrałeś plik FITS zawierający obserwację AIA w 171 angstremach. FITS to standardowy format plików dla danych astronomicznych, który przechowuje zarówno surową tablicę obrazu, jak i header pełen szczegółów obserwacji. Aby załadować to do swojego środowiska, przekazujesz ścieżkę do pliku do funkcji sunpy dot map dot Map. Ta funkcja w rzeczywistości działa jak factory. Czyta plik, automatycznie wykrywa, który instrument zrobił zdjęcie, i zwraca wyspecjalizowany obiekt Map. Nasz nowy obiekt nazwiemy po prostu my_map. Kiedy masz już swój obiekt Map, pierwszym głównym komponentem do zbadania są metadane. Obserwatoria słoneczne pakują ogromną ilość szczegółów w header FITS, a SunPy wyciąga to wszystko do atrybutu o nazwie my_map dot meta. Ten atrybut zachowuje się dokładnie tak samo, jak standardowy dictionary w Pythonie. Oznacza to, że możesz programowo odczytywać konkretne klucze, aby sterować swoją analizą. Na przykład, jeśli twój skrypt musi wyciągnąć dokładną datę obserwacji, po prostu odwołujesz się do klucza date bezpośrednio z dictionary meta. SunPy normalizuje również wiele z tych kluczy w headerze, niwelując różnice w tym, jak różne instrumenty słoneczne nazywają swoje pola metadanych. Teraz, drugą częścią tego jest sam obraz. Oto kluczowa sprawa. Obiekt Map nie próbuje wymyślać na nowo, jak działają tablice numeryczne. Właściwe dane pikseli są przechowywane w atrybucie o nazwie my_map dot data, i jest to nic innego jak standardowa, dwuwymiarowa tablica NumPy. Ponieważ to po prostu NumPy, nie musisz uczyć się nowej składni, żeby wykonywać swoje obliczenia matematyczne. Jeśli chcesz znaleźć absolutnie najjaśniejszy punkt na swoim obrazie AIA, wyciągasz my_map dot data i uruchamiasz na nim standardową funkcję maximum. Błyskawicznie otrzymujesz swoją surową wartość piksela. Trzymając dictionary meta i tablicę danych ściśle opakowane razem wewnątrz pojedynczego obiektu Map, SunPy upewnia się, że twoje jednostki fizyczne i kontekst instrumentu nigdy nie zostaną oddzielone od surowych liczb. Tworzy to jedną granicę wokół wszystkiego, co nadaje tym pikselom znaczenie. Prawdziwa moc abstrakcji Map nie polega na tym, że rysuje słońce, ale na tym, że wymusza, aby surowa tablica obrazu i kontekst obserwacyjny podróżowały przez twój codebase jako pojedyncza, nierozłączna jednostka. To wszystko w tym odcinku. Dzięki za wysłuchanie i twórz dalej!
3

Precyzyjny pomiar czasu

3m 54s

Opanuj reprezentację czasu w fizyce słonecznej za pomocą Astropy Time i SunPy TimeRange. Odkryj, dlaczego standardowe datetimes w języku Python zawodzą w astrofizyce wysokich energii.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 3 z 12. Standardowe obiekty datetime w Pythonie nie wiedzą, czym jest sekunda przestępna. Kiedy mierzysz czas wysokoenergetycznych zjawisk przejściowych na Słońcu, pominięta sekunda oznacza, że twoje dane zrównają się z pustą przestrzenią zamiast ze szczytem rozbłysku. Dlatego SunPy polega na precyzyjnym pomiarze czasu. Wielu programistów z przyzwyczajenia domyślnie korzysta ze standardowego modułu datetime w Pythonie. Datetime nie jest precyzyjnym narzędziem. Brakuje mu astrofizycznej precyzji i obsługi formatów czasu słonecznego, których wymaga SunPy. Ignoruje sekundy przestępne i nie radzi sobie ze specjalistycznymi skalami czasu, takimi jak utime. Zamiast tego, SunPy wymaga od ciebie użycia obiektów Astropy Time. Aby wprowadzić twoje zróżnicowane dane do tego rygorystycznego ekosystemu, używasz funkcji o nazwie parse time. Parse time działa jak uniwersalny translator dla timestampów. Przekazujesz do niej string w niemal dowolnym formacie, niezależnie od tego, czy jest to string w formacie ISO, data w niestandardowym formacie, czy timestamp wyciągnięty bezpośrednio ze starego nagłówka metadanych satelity. Funkcja ta interpretuje input i zwraca solidny obiekt Astropy Time. To kluczowe, ponieważ różne obserwatoria słoneczne różnie formatują swoje zegary. Parse time normalizuje wszystko do standardowego obiektu, który dokładnie wie, gdzie znajduje się na uniwersalnej osi czasu, uwzględniając po drodze każdą sekundę przestępną. Kiedy twoje pojedyncze timestampy są już precyzyjne, musisz zająć się czasem trwania. Analiza zjawiska słonecznego wymaga zamknięcia twoich danych w oknie obserwacyjnym. Właśnie do tego służy obiekt Time Range. Time Range reprezentuje ciągły przedział między dwoma dokładnymi punktami. Możesz go zdefiniować, podając czas początkowy i końcowy, ale często bardziej praktyczne jest podanie czasu początkowego i czasu trwania. Wyobraź sobie, że ustawiasz okno obserwacyjne dla rozbłysku słonecznego. Tworzysz Time Range, przekazując początkowy string, na przykład rok 2010, 3 miesiąc, 4 dzień, dziesięć minut po północy. Jako drugi argument, zamiast samodzielnie obliczać dokładny czas końcowy, przekazujesz wartość z jednostką Astropy równą czterysta sekund. Obiekt Time Range absorbuje te inputy, stosuje odpowiednią skalę czasu i ustala sztywną granicę dla twojego zdarzenia. I tu robi się ciekawie. Teraz musisz przeanalizować fazę wzrostu i spadku tego rozbłysku, co oznacza, że chcesz porównać pierwszą połowę zdarzenia z drugą. Obiekt Time Range ma wbudowaną metodę o nazwie split. Wywołujesz split i podajesz integer dwa. Metoda natychmiast oblicza dokładny środek i zwraca listę zawierającą dwa nowe obiekty Time Range. Twoje oryginalne, czterystusekundowe okno zostaje idealnie podzielone na dwa dwustusekundowe podprzedziały. Nie ma tu ręcznej matematyki na datach i absolutnie żadnego ryzyka zgubienia ułamka sekundy podczas dzielenia. Wbudowany w Pythona moduł datetime jest przeznaczony do planowania, ale obiekt Astropy Time to instrument naukowy. Twoje granice czasowe wymagają dokładnie takiego samego, rygorystycznego śledzenia jednostek jak twoje dane przestrzenne, a poleganie na tych wyspecjalizowanych obiektach gwarantuje, że twoje okna pozostaną fizycznie dokładne w całym twoim pipeline. To tyle na dzisiaj. Do usłyszenia następnym razem!
4

Coordinate Frames i obserwatorzy

4m 02s

Naucz się nawigować po powierzchni Słońca za pomocą Astropy SkyCoord i wyspecjalizowanych układów słonecznych w SunPy. Zrozum kluczową rolę lokalizacji obserwatora i czasu obserwacji.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 4 z 12. Zauważasz potężny rozbłysk na Słońcu, zapisujesz jego współrzędne poziome i pionowe, i wysyłasz je do kolegi. Ale jego teleskop jest zaparkowany na satelicie lecącym gdzieś w połowie drogi za Ziemią, a twoje liczby ze współrzędnymi absolutnie nic dla niego nie znaczą. To dlatego, że punkt na Słońcu nie jest statyczną kropką na płaskiej siatce. Jego pozycja zależy całkowicie od tego, gdzie w Układzie Słonecznym zaparkowany jest twój teleskop i jaka dokładnie jest godzina. Sposób, w jaki rozwiązujemy tę niejednoznaczność, to Coordinate Frames i Observers. Częstym błędem jest definiowanie punktu na powierzchni Słońca po prostu przez przekazanie dwóch wartości liczbowych do zmiennej. Musisz jawnie określić kontekst. Bez podania lokalizacji obserwatora i czasu obserwacji, współrzędna słoneczna nie ma fizycznego sensu. Układ Słoneczny jest w ciągłym ruchu. Ziemia krąży po orbicie, sondy dryfują po swoich trajektoriach, a samo Słońce się obraca. Aby bezpiecznie zdefiniować lokalizację w tym dynamicznym środowisku, SunPy używa obiektu o nazwie SkyCoord, dziedziczącego z biblioteki Astropy. SkyCoord działa jak restrykcyjny kontener. Bierze twoje surowe liczby i wiąże je z konkretnym fizycznym układem odniesienia, wymuszając na tobie zdefiniowanie zarówno przestrzeni, jak i czasu. Najczęstszym frame'em, z jakim się spotkasz, jest Helioprojective. Ten frame opisuje Słońce dokładnie tak, jak widzi je konkretny obiektyw kamery. To dwuwymiarowa projekcja trójwymiarowej sfery, mierzona w kątach, na przykład w sekundach łukowych. W gruncie rzeczy mierzy linie widzenia od obserwatora do tarczy słonecznej. Ponieważ jest on fundamentalnie powiązany z punktem widzenia obserwatora, utworzenie współrzędnej Helioprojective wymaga od ciebie podania parametru observer, który definiuje, gdzie znajduje się teleskop, oraz parametru obstime, który blokuje dokładny moment kliknięcia migawki. Zestaw to z frame'em HeliographicStonyhurst. To prawdziwy, trójwymiarowy układ współrzędnych, który wykorzystuje słoneczną długość i szerokość geograficzną. Jest on wewnętrznie związany ze Słońcem, ale przestrzennie przypięty do rozkładu Układu Słonecznego. Linia zerowego stopnia długości geograficznej we frame'ie HeliographicStonyhurst jest zablokowana tak, aby zawsze wskazywała bezpośrednio na Ziemię. Daje ci to absolutną, fizyczną lokalizację na powierzchni Słońca, a nie tylko zlokalizowany kąt widzenia. I tu robi się ciekawie. Prześledźmy, jak możesz przeliczać te perspektywy między sobą. Załóżmy, że masz obiekt SkyCoord dla tego rozbłysku słonecznego, zarejestrowanego z Ziemi przy użyciu frame'a Helioprojective. Chcesz dokładnie obliczyć, gdzie statek kosmiczny orbitujący wokół Wenus zobaczyłby ten sam rozbłysk w swoich kamerach. Najpierw tworzysz instancję swojego oryginalnego SkyCoord z obserwatorem na Ziemi, czasem obserwacji i sekundami łukowymi. Następnie pobierasz fizyczną lokalizację Wenus. SunPy zawiera wbudowane funkcje do sprawdzania trajektorii planet dla danego timestampu. Kiedy masz już współrzędną dla Wenus w tym konkretnym czasie obserwacji, wywołujesz metodę transform na swojej oryginalnej współrzędnej ziemskiej. Przekazujesz do tej metody zupełnie nowy frame Helioprojective, ale ustawiasz parametr observer tego nowego frame'a na Wenus. SunPy odpala wtedy pod spodem złożoną, trójwymiarową geometrię. Oblicza fizyczne linie widzenia i zwraca nowy SkyCoord. Ten wynikowy obiekt zawiera dokładne współrzędne kątowe, pod jakimi rozbłysk pojawił się z punktu widzenia Wenus. Najważniejszy wniosek do zapamiętania jest taki, że współrzędna słoneczna nigdy nie jest tylko lokalizacją; to ścisła relacja między celem a obserwatorem, zamrożona w konkretnej milisekundzie. To wszystko w tym odcinku. Dzięki za wysłuchanie i buduj dalej!
5

Łączenie pikseli z przestrzenią fizyczną

3m 45s

Połącz piksele obrazu ze współrzędnymi fizycznymi za pomocą World Coordinate System. Naucz się bezbłędnie konwertować między indeksami pikseli a SkyCoords bez ręcznego skalowania.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 5 z 12. Masz konkretną lokalizację na Słońcu, na przykład aktywny rozbłysk, i musisz wyciągnąć jej dokładne wartości z macierzy obrazu. Przeliczenie fizycznego punktu w przestrzeni sferycznej na wiersz i kolumnę w płaskiej macierzy zazwyczaj wymaga bolesnej trygonometrii. Połączenie pikseli i przestrzeni fizycznej robi to za ciebie błyskawicznie, wykorzystując World Coordinate System. Mapa SunPy to dwuwymiarowy array pikseli NumPy połączony z rozbudowanymi metadanymi. Te metadane definiują, gdzie był skierowany teleskop, fizyczny rozmiar każdego piksela oraz konkretną projekcję sferyczną użytą do spłaszczenia obrazu. SunPy pakuje wszystkie te geometryczne reguły w obiekt, do którego masz dostęp przez property WCS mapy. WCS to skrót od World Coordinate System. Ten obiekt działa jako warstwa translacyjna między twoją płaską siatką danych a fizycznym niebem. Oto kluczowa sprawa. Musisz pilnować kolejności współrzędnych w zależności od tego, w jakiej domenie się znajdujesz. Ponieważ pod spodem dane obrazu to array NumPy, oczekuje on dostępu do danych w kolejności wiersz, a potem kolumna. To oznacza, że oś Y jest przed osią X. World Coordinate System operuje na przestrzeni fizycznej, używając standardowej geometrii kartezjańskiej, gdzie X jest przed Y. Wejściowe współrzędne fizyczne podaje się w kolejności X, a potem Y. Bezpośrednie indeksowanie arraya wymaga kolejności Y, a potem X. Pomylenie ich to częste źródło bugów. Przejdźmy teraz od fizycznego nieba do siatki pikseli. Załóżmy, że chcesz znaleźć dokładną, ułamkową lokalizację piksela, która odpowiada fizycznemu środkowi twojej mapy. Mapa udostępnia property o nazwie center. Reprezentuje ono fizyczną współrzędną helioprojekcyjną w przestrzeni. Możesz przekazać tę współrzędną środka bezpośrednio do metody world to pixel mapy. World Coordinate System przetwarza matematykę projekcji i zwraca obiekt zawierający dokładne wartości pikseli X i Y. Te zwrócone wartości to liczby zmiennoprzecinkowe. Fizyczna współrzędna prawie nigdy nie trafia idealnie w sam środek dyskretnego piksela o wartościach całkowitych. To tyle, jeśli chodzi o schodzenie w głąb danych. A co z ruchem na zewnątrz, w kierunku nieba? Możesz znaleźć jakiś obiekt za pomocą algorytmu computer vision na swoim płaskim arrayu, na przykład w kolumnie czterysta i wierszu pięćset. Musisz poznać jego rzeczywistą, fizyczną lokalizację na Słońcu. Aby to zrobić, używasz metody pixel to world mapy. Podajesz lokalizację piksela używając Astropy Quantities, aby zdefiniować dokładne jednostki pikseli. Metoda ta przepuszcza te wartości pikseli przez odwrotną matematykę World Coordinate System i zwraca precyzyjny obiekt Astropy SkyCoord. Ten obiekt mówi ci dokładnie, gdzie ten konkretny piksel znajduje się w przestrzeni helioprojekcyjnej, w komplecie z odpowiednimi jednostkami fizycznymi. World Coordinate System ogarnia tę całą brudną trygonometrię sferycznych projekcji, dzięki czemu możesz przestać martwić się surowymi indeksami macierzy i zacząć analizować rzeczywiste fizyczne lokalizacje na tarczy słonecznej. Dzięki za wysłuchanie. Trzymajcie się!
6

Zunifikowane wyszukiwanie danych z Fido

3m 49s

Przestań pisać niestandardowe skrapery dla każdego archiwum słonecznego. Dowiedz się, jak używać Fido do wykonywania złożonych, zunifikowanych wyszukiwań w wielu instrumentach i długościach fal jednocześnie.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 6 z 12. Istnieją dziesiątki obserwatoriów słonecznych i archiwów danych, a każde z nich ma swoje dziwactwa. Zamiast uczyć się dziesięciu różnych web API, żeby dowiedzieć się, jakie obserwacje istnieją dla konkretnego rozbłysku słonecznego, wystarczy, że poznasz jedno narzędzie. Tym narzędziem jest Unified Data Search with Fido. Fido to skrót od Federated Internet Data Obtainer. Działa jak uniwersalny tłumacz dla API danych słonecznych, drastycznie redukując ilość kodu boilerplate potrzebnego do znalezienia obserwacji. Podajesz mu swoje parametry naukowe, a Fido w tle obsługuje requesty sieciowe do wielu centrów danych. Częstym błędem jest myślenie, że uruchomienie wyszukiwania w Fido automatycznie pobiera dane. Wcale tak nie jest. Funkcja search zwraca wyłącznie tabelę metadanych o nazwie UnifiedResponse. Pozwala ci to sprawdzić liczbę plików, ich rozmiary i źródła, zanim zdecydujesz się na pobranie czegokolwiek na swoją lokalną maszynę. Aby wykonać wyszukiwanie, używasz funkcji Fido dot search. Konstruujesz swoje query, przekazując do niej atrybuty wyszukiwania. W SunPy te atrybuty żyją w module sunpy dot net dot attrs, który prawie zawsze jest importowany po prostu jako litera a. Każde wyszukiwanie wymaga zakresu czasu. Definiujesz to używając a dot Time, przekazując mu startowy string i końcowy string. Następnie zawężasz wyniki używając innych atrybutów, najczęściej a dot Instrument. I tu jest kluczowa sprawa. Fido pozwala ci konstruować złożone, wieloinstrumentowe query w jednym wywołaniu funkcji, używając standardowych operatorów logicznych. Dokładniej mówiąc, używasz znaku pipe, aby reprezentować logiczne OR. Załóżmy, że analizujesz jakieś zdarzenie i potrzebujesz danych obejmujących konkretne, dwugodzinne okno czasowe. Chcesz obserwacji z instrumentu LYRA albo z instrumentu RHESSI. Bez Fido musiałbyś napisać jeden request do API dla LYRA, zupełnie inny request dla RHESSI, a potem ręcznie zmergować wynikowe odpowiedzi JSON. Z Fido budujesz to natywnie. Definiujesz swoje dwugodzinne okno czasowe używając a dot Time. Następnie definiujesz swoje docelowe instrumenty: a dot Instrument z LYRA i a dot Instrument z RHESSI. Wstawiasz znak pipe między te dwie definicje instrumentów. Kiedy przekazujesz to do Fido dot search, podajesz atrybut czasu, przecinek, a potem połączone atrybuty instrumentów zgrupowane w nawiasach. Fido czyta operator pipe, dzieli request, odpytuje odpowiednie bazy danych dla obu instrumentów w tym samym przedziale czasowym i merguje wszystko z powrotem. UnifiedResponse, który dostajesz z powrotem, jest intuicyjnie zorganizowany. Jeśli twoje query uderzyło do wielu dostawców danych, wyniki są pogrupowane według dostawcy. Możesz slajsować i printować tę tabelę prosto w swoim terminalu, żeby dokładnie zobaczyć, które obserwatorium ma dane, których potrzebujesz. Prawdziwa moc Fido to nie tylko to, że znajduje dane słoneczne, ale to, że normalizuje chaos rozproszonych archiwów w jedną, przewidywalną składnię Pythona. Jeśli chciałbyś pomóc nam dalej tworzyć te odcinki, możesz wesprzeć nasz podcast, wyszukując DevStoriesEU na Patreonie. To wszystko w tym odcinku. Dzięki za słuchanie i buduj dalej!
7

Głębokie zapytania: JSOC i HEK

3m 21s

Wykonywaj zaawansowane zapytania do Joint Science Operations Center oraz Heliophysics Event Knowledgebase. Pobieraj określone metadane zdarzeń i wycinki obszarów aktywnych.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 7 z 12. Czasami nie znasz dokładnego czasu wystąpienia zdarzenia słonecznego. Chcesz po prostu odpytać bazę danych, żeby pokazała ci wszystkie koronalne wyrzuty masy z zeszłego miesiąca. Jeśli spróbujesz pobrać to bezpośrednio z archiwum obrazów, dostaniesz miliony plików albo zupełnie nic. Aby wypełnić lukę między abstrakcyjnymi zdarzeniami a rzeczywistymi pikselami, używamy dwóch konkretnych narzędzi: Heliophysics Event Knowledgebase, czyli HEK, oraz Joint Science Operations Center, czyli JSOC. HEK to katalog fizycznych zjawisk słonecznych. Rejestruje rozbłyski, obszary aktywne i koronalne wyrzuty masy wykrywane przez różne algorytmy i ludzkich obserwatorów. Wielu użytkowników wysyła query do HEK, oczekując w odpowiedzi plików z obrazami. Nie dostają ich. HEK zwraca metadane zdarzeń. Kiedy go przeszukujesz, dostajesz tabelę danych zawierającą czasy rozpoczęcia, czasy szczytowe, bounding polygons i notatki z obserwacji. Aby przeszukać HEK, używasz standardowej funkcji wyszukiwania Fido. Podajesz zakres czasu, a następnie dodajesz konkretny atrybut zdarzenia HEK. Jeśli szukasz koronalnego wyrzutu masy, przekazujesz atrybut HEK CME. Baza danych przetwarza to i zwraca listę pasujących zdarzeń. Z tej listy izolujesz konkretne zdarzenie, którego potrzebujesz, i wyciągasz jego czas szczytowy. Masz teraz precyzyjną współrzędną czasową dla swojego zjawiska. Mając w ręku ten dokładny czas, przechodzisz do drugiego kroku: pobrania właściwych obrazów. Aby uzyskać szczegółowe dane z Solar Dynamics Observatory, wysyłasz query do JSOC. JSOC to główne archiwum dla instrumentów takich jak AIA i HMI. Przechowuje ciężkie serie danych zawierające właściwe piksele. Konstruujesz nowe wyszukiwanie Fido, używając czasu szczytowego wyciągniętego z HEK. Tym razem przekazujesz atrybut JSOC Series. To mówi archiwum dokładnie, jakiego instrumentu i produktu danych potrzebujesz. Możesz to dodatkowo doprecyzować za pomocą atrybutu JSOC Segment, aby pobrać tylko określone pliki danych, a nie cały data cube. Oto kluczowa sprawa. W przeciwieństwie do zwykłych queries, JSOC przetwarza eksporty danych na żądanie i wymaga identyfikacji użytkownika. Musisz dołączyć atrybut JSOC Notify, zawierający twój zarejestrowany adres e-mail, w swoim wyszukiwaniu Fido. Jeśli pominiesz adres e-mail, query zakończy się błędem. Serwery JSOC kolejkują twój request, przygotowują dokładny wycinek danych, o który prosiłeś, i wystawiają go do pobrania. Łącząc te dwa systemy w chain, całkowicie automatyzujesz proces wyszukiwania. Zaczynasz od szerokiego przedziału czasowego, prosisz HEK o dokładne określenie momentu wystąpienia konkretnego zdarzenia i przekazujesz te precyzyjne timestamps do JSOC, aby pobrać surowe obrazy. Baza wiedzy daje ci mapę, a centrum operacyjne daje ci terytorium. To wszystko w tym odcinku. Dzięki za wysłuchanie i twórz dalej!
8

Wizualizacja Map w jakości publikacyjnej

4m 56s

Przekształć ciemne tablice FITS w oszałamiające, gotowe do publikacji wizualizacje. Dowiedz się, jak konfigurować colormaps, normalizacje logarytmiczne i przedziały przycinania.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 8 z 12. Wczytujesz piękny fragment danych słonecznych, renderujesz obraz i w efekcie patrzysz na całkowicie czarny kwadrat z dokładnie jednym, jasnym, białym pikselem w rogu. Twoje dane są w porządku, ale zakres dynamiczny całkowicie je ukrywa. Rozwiązanie tego problemu to właśnie sedno wizualizacji map o jakości publikacyjnej. Kiedy programiści po raz pierwszy próbują zwizualizować mapę w SunPy, często wyciągają surowy array danych i wrzucają go bezpośrednio do standardowej komendy image show z matplotlib. To wyrenderuje piksele, ale gubi cały fizyczny kontekst. Całkowicie tracisz układ współrzędnych, a osie domyślnie przyjmują wartości zwykłych indeksów arraya. SunPy rozwiązuje ten problem za pomocą wbudowanej metody plot dostępnej bezpośrednio na obiekcie mapy. Kiedy wywołasz plot na swojej mapie, SunPy automatycznie przygotowuje oś World Coordinate System, znaną jako oś WCS. Dzięki temu znaczniki osi precyzyjnie reprezentują fizyczne jednostki na niebie, takie jak sekundy kątowe. Nie musisz rezygnować z layoutów matplotlib, żeby z tego skorzystać. Możesz utworzyć standardową figurę matplotlib i dodać subplot. Sztuczka polega na przekazaniu obiektu WCS mapy do argumentu projection tego subplota. Następnie po prostu przekazujesz tę konkretną oś z powrotem do metody plot na mapie. Ta integracja daje ci precyzyjną kontrolę nad formatowaniem z matplotlib, zachowując jednocześnie ścisłą świadomość przestrzenną z SunPy. A teraz wróćmy do tego czarnego kwadratu z jednym jasnym pikselem. Obrazy Słońca mają ekstremalny kontrast. Rozbłysk słoneczny może być dziesiątki tysięcy razy jaśniejszy niż blade pętle koronalne tuż obok. Jeśli zmapujesz surowe wartości danych liniowo na wizualną skalę kolorów, rozbłysk przejmie górny koniec skali, a cała reszta zostanie zmiażdżona w cieniu. Oto kluczowa sprawa. Musisz skompresować zakres dynamiczny przed renderowaniem. Zrobisz to w dwóch krokach, używając clippingu i normalizacji. Najpierw użyj keyword argumentu clip interval w metodzie plot na mapie. Zamiast pozwalać, by jeden ultrajasny outlier definiował maksymalną wartość twojej skali kolorów, możesz podać tuplę reprezentującą percentyle. Ustawienie clip interval od jednego procenta do dziewięćdziesięciu dziewięciu i pół procenta wymusza na metodzie plot zignorowanie najciemniejszego jednego procenta i najjaśniejszego pół procenta pikseli podczas obliczania granic kolorów. Clipping natychmiast przebija się przez blask skrajnych outlierów. Po drugie, nawet po zastosowaniu clippingu, liniowa skala zazwyczaj zostawia spokojne obszary zbyt ciemnymi. Aby to naprawić, zaimportuj klasę LogNorm z matplotlib colors. Przekazujesz instancję LogNorm do keywordu norm w metodzie plot mapy. Zastosowanie logarytmicznego rozciągnięcia matematycznie wzmacnia blade struktury w ciemnych obszarach obrazu, jednocześnie kompresując wizualne różnice w tych jaśniejszych. Kiedy zastosujesz LogNorm, te blade, rozległe pętle koronalne wyraźnie wyłonią się z tła. Na koniec ustaw odpowiednią paletę wizualną. SunPy automatycznie rejestruje standardowe słoneczne colormapy wewnątrz matplotlib. Przekazując keyword argument cmap do metody plot, możesz określić dokładny kanał instrumentu. Przekazanie stringa takiego jak sdoaia171 aplikuje precyzyjną, złotą paletę, której społeczność naukowa używa dla tej konkretnej długości fali. Połączenie wbudowanej metody plot dla dokładności współrzędnych, clip intervals do obsługi outlierów, logarytmicznej normalizacji dla zakresu dynamicznego oraz specyficznej dla instrumentu colormapy, przekształca niemal całkowicie ciemny array w szczegółową, gotową do publikacji naukową figurę. Chciałbym poświęcić chwilę, by podziękować ci za słuchanie — to bardzo nam pomaga. Miłego dnia!
9

Przycinanie z uwzględnieniem współrzędnych

3m 31s

Bezpiecznie przycinaj swoje Maps bez uszkadzania metadanych przestrzennych. Dowiedz się, dlaczego powinieneś używać submaps zamiast standardowego krojenia w NumPy.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 9 z 12. Slicowanie arraya NumPy jest szybkie i łatwe. Jeśli jednak zrobisz to na obrazie Słońca, twoje współrzędne przestrzenne natychmiast zamienią się w śmieci. Mechanizmem, który temu zapobiega, jest Coordinate-Aware Cropping. Kiedy developerzy Pythona muszą wyizolować konkretny aktywny obszar na obrazie całego dysku słonecznego, ich pierwszym odruchem jest często bezpośrednie slicowanie data arraya. Biorą wiersze od zera do stu i kolumny od zera do stu. To wyciąga wizualne piksele, których potrzebujesz, ale całkowicie psuje World Coordinate System dołączony do pliku. Metadata nadal zakłada oryginalne wymiary obrazu. Ponieważ WCS opiera się na konkretnym indeksie piksela referencyjnego, aby zakotwiczyć siatkę współrzędnych, slicowanie arraya bez aktualizacji headera oznacza, że twoje piksele nie mapują się już na poprawne fizyczne lokalizacje na Słońcu. Każdy overlay lub pomiar, który spróbujesz potem wykonać, nie uda się, ponieważ matematyka się rozjeżdża. Aby bezpiecznie wyekstrahować region of interest, SunPy udostępnia metodę submap. Wykonuje ona Coordinate-Aware Cropping bezpośrednio na samym obiekcie map. Zapewnia to, że image array i przestrzenna metadata pozostają idealnie zsynchronizowane przez cały czas. Załóżmy, że chcesz mieć ciasny bounding box wokół rozbłysku słonecznego. Zamiast zgadywać indeksy arraya, definiujesz granicę używając przestrzeni fizycznej. Najpierw tworzysz obiekt coordinate reprezentujący lewy dolny róg twojego docelowego obszaru. Określasz lokalizację w jednostkach fizycznych, zazwyczaj w sekundach kątowych, i używasz coordinate frame z twojej oryginalnej mapy, aby wszystko dzieliło ten sam punkt odniesienia. Następnie tworzysz drugi obiekt coordinate dla prawego górnego rogu twojego boxa. Mając zdefiniowane te dwa punkty, wywołujesz metodę submap na swojej oryginalnej mapie i przekazujesz współrzędne lewego dolnego i prawego górnego rogu jako argumenty. Metoda odczytuje fizyczny bounding box, tłumaczy te fizyczne współrzędne na dokładne indeksy pikseli i slicuje data arraya za ciebie. Nigdy nie musisz samemu obliczać numerów wierszy czy kolumn. Oto kluczowa sprawa. Metoda submap nie tylko zwraca mniejszy obrazek. Aktywnie przepisuje header WCS dla nowej mapy. Oblicza nową pozycję piksela referencyjnego względem twoich wykadrowanych wymiarów. Nawet jeśli oryginalny piksel referencyjny znajdował się całkowicie poza twoim nowym bounding boxem, matematyka WCS jest automatycznie dostosowywana, dzięki czemu siatka współrzędnych pozostaje idealnie dokładna. Piksel referencyjny się przesuwa, array się kurczy, a wynikowa submapa jest w pełni poprawnym obiektem map, który nadal dokładnie wie, gdzie znajduje się w fizycznym wszechświecie. Jeśli pominiesz obiekt map i zrobisz slice na surowym arrayu, zerwiesz połączenie między swoimi danymi a fizycznym niebem; zawsze pozwól metodzie submap zająć się matematyką współrzędnych za ciebie. To wszystko w tym odcinku. Dzięki za słuchanie i budujcie dalej!
10

Wyrównywanie i reprojekcja Map

4m 00s

Płynnie łącz dane z różnych instrumentów. Dowiedz się, jak matematycznie zreprojektować mapę z jednego układu współrzędnych na dokładną siatkę pikseli innego.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 10 z 12. To, że dwa różne instrumenty robią zdjęcie Słońca dokładnie w tej samej sekundzie, wcale nie oznacza, że ich piksele się pokrywają. Nałożenie ich bezpośrednio na siebie da ci po prostu rozjechany bałagan. Wyrównywanie i reprojekcja map rozwiązuje ten problem. Kiedy porównujesz dane z Atmospheric Imaging Assembly, czyli AIA, oraz Helioseismic and Magnetic Imager, czyli HMI, oba instrumenty znajdują się na tym samym satelicie. Rejestrują obrazy jednocześnie. Częstym błędem jest zakładanie, że te dwa obrazy całego dysku można bezpośrednio na siebie nałożyć tylko dlatego, że zgadza się czas. Ale instrumenty mają różne plate scales, co oznacza, że ich pojedyncze piksele pokrywają różne obszary fizyczne. Mają też delikatne pointing offsets. Jeśli weźmiesz obraz w ekstremalnym ultrafiolecie o wysokiej rozdzielczości z AIA i magnetogram o niższej rozdzielczości z HMI, ich gridy po prostu się nie pokryją. Załóżmy, że chcesz idealnie wyplotować kontury magnetyczne z danych HMI na pętle koronalne na obrazie AIA. Aby to zrobić, musisz rzutować dane HMI na World Coordinate System, czyli WCS, mapy AIA. WCS to matematyczny framework osadzony w mapie, który tłumaczy położenie piksela na rzeczywistą fizyczną współrzędną na niebie. SunPy obsługuje tę transformację za pomocą zewnętrznej paczki o nazwie reproject. Używasz do tego funkcji o nazwie reproject underscore interp. Funkcja ta wykonuje szybką interpolację przestrzenną, co jest niezbędnym podejściem, kiedy wyrównujesz standardowe dane z obrazowania Słońca. Najpierw definiujesz swój target. W tym scenariuszu targetem jest mapa AIA, więc wyciągasz z niej obiekt WCS. Następnie przekazujesz swoją mapę źródłową, magnetogram HMI i ten docelowy WCS do funkcji interpolacji. Funkcja rzutuje docelowego grida na dane źródłowe. Oblicza, gdzie nowe piksele znajdują się w przestrzeni fizycznej, odpytuje oryginalną mapę HMI pod tymi dokładnymi współrzędnymi i interpoluje wartości pikseli. Domyślnie funkcja zwraca ci nowy array surowych danych o kształcie dokładnie takim samym jak obraz docelowy, wraz z arrayem footprint. Footprint wskazuje, które piksele znalazły się poza pierwotnym polem widzenia. Ponieważ potrzebujesz tych danych tylko do nakładki, możesz przekazać parametr, aby całkowicie zignorować footprint, co zwróci tylko interpolowany array. Aby ten surowy array był użyteczny, tworzysz nową mapę SunPy. Parujesz swój nowo interpolowany array danych HMI z headerem metadanych z twojej docelowej mapy AIA. Oto kluczowa sprawa. Reprojekcja matematycznie gwarantuje identyczne gridy przestrzenne. Twoja nowa mapa HMI ma teraz dokładnie takie same wymiary i plate scale jak mapa AIA. Indeks pięćset na pięćset na nowo wyrównanej mapie odpowiada dokładnie temu samemu fizycznemu elementowi na Słońcu, co indeks pięćset na pięćset na mapie AIA. Możesz teraz wyplotować obraz AIA na zestawie osi i pewnie narysować kontury magnetyczne z twojej wyrównanej mapy bezpośrednio na nim. Ponieważ reprojekcja trwale zmienia twoje oryginalne wartości danych poprzez interpolację, aby wymusić dopasowanie współrzędnych, zawsze wykonuj ten krok wyrównywania na samym końcu, tuż przed ostateczną wizualizacją lub operacjami matematycznymi na arrayach. Dzięki za spędzenie ze mną tych kilku minut. Do usłyszenia następnym razem, trzymaj się.
11

Jednowymiarowe dane czasowe z TimeSeries

3m 53s

Przejdź od obrazowania przestrzennego do czasowych krzywych blasku. Poznaj obiekt TimeSeries, aby ładować, przycinać i łączyć dane strumienia promieniowania rentgenowskiego GOES.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 11 z 12. Zdjęcia Słońca są oszałamiające wizualnie, ale czasami najważniejszą informacją jest pojedyncza skalarna wartość strumienia mierzona tysiąc razy na sekundę. Kiedy śledzisz intensywność rozbłysku słonecznego przez cały tydzień, dwuwymiarowa macierz przestrzenna jest po prostu niewłaściwym narzędziem. Potrzebujesz jednowymiarowych danych czasowych i obiektu TimeSeries. Częstym błędem jest sięganie domyślnie po obiekt Map na początku pracy z SunPy. Jednak Map jest przeznaczony wyłącznie do dwuwymiarowych danych przestrzennych. W przypadku jednowymiarowych danych czasowych — takich jak rentgenowska krzywa blasku obejmująca kilka dni w wielu kanałach długości fali — używasz obiektu TimeSeries. Działa on jako jednowymiarowy odpowiednik obiektu Map, zaprojektowany specjalnie do obsługi pomiarów indeksowanych czasem, przy jednoczesnym bezpiecznym zachowaniu metadanych obserwacji i jednostek fizycznych. Pod maską obiekt TimeSeries wykorzystuje pandas DataFrame do strukturyzowania twoich timestampów i kolumn danych. Problem z pracą bezpośrednio na surowym pandasie polega na tym, że standardowe dataframe'y nie rozumieją jednostek naukowych. TimeSeries opakowuje tę strukturę danych, aby zapewnić, że jednostki fizyczne i metadane instrumentu pozostaną trwale powiązane podczas operacji. Wyobraź sobie ładowanie rentgenowskiej krzywej blasku z pliku satelity GOES-15. Przekazujesz ścieżkę do pliku do funkcji TimeSeries, a ona zwraca obiekt zawierający wiele kanałów obserwacyjnych jako kolumny. Możesz przeglądać te kolumny po nazwach, na przykład kanały krótkofalowe i długofalowe. I tu pojawia się kluczowa kwestia. Zamiast wyciągać surowe tablice liczbowe bezpośrednio z bazowego dataframe'u, wyciągasz kolumny za pomocą metody quantity. Wywołujesz quantity i przekazujesz jej konkretną nazwę kolumny, której potrzebujesz. Ta metoda zwraca dane jako obiekt Astropy Quantity. Oznacza to, że surowe wartości liczbowe strumienia są ściśle powiązane z jednostkami fizycznymi, takimi jak waty na metr kwadratowy. Wyciąganie danych w ten sposób całkowicie zapobiega cichym błędom konwersji jednostek na dalszych etapach twoich obliczeń matematycznych. Kiedy już załadujesz dane, rzadko potrzebujesz całego pliku z obserwacjami. Możesz chcieć wyizolować tylko tę konkretną godzinę, w której rozbłysk słoneczny osiągnął maksimum. Osiągniesz to, przycinając obiekt TimeSeries. Najpierw definiujesz obiekt TimeRange, podając string z czasem początkowym i string z czasem końcowym. Następnie przekazujesz ten TimeRange bezpośrednio do metody truncate twojego obiektu TimeSeries. To przycina bazowy dataframe i zwraca zupełnie nowy obiekt TimeSeries. Dane są czysto przycięte do interesującego cię okna czasowego, a wszystkie powiązane metadane przetrwają to cięcie. Często twoja analiza wymaga danych, które rozciągają się na wiele oddzielnych plików z obserwacjami. Jeśli twoim celem jest zbudowanie ciągłego, tygodniowego datasetu, ładujesz drugi plik do jego własnego obiektu TimeSeries. Następnie po prostu wywołujesz metodę concatenate na pierwszym obiekcie TimeSeries, przekazując drugi jako argument. SunPy wyrównuje indeksy czasowe i scala wiersze danych. Dopóki metadane instrumentu z obu plików są kompatybilne, otrzymujesz z powrotem pojedynczy, zunifikowany obiekt TimeSeries, gotowy do ciągłej analizy w tym rozszerzonym przedziale czasowym. Podczas przetwarzania danych czasowych, ścisłe powiązanie twoich timestampów i wartości liczbowych z ich jednostkami fizycznymi jest tym, co odróżnia rzetelną analizę naukową od cichego błędu w obliczeniach. To wszystko w tym odcinku. Dzięki za wysłuchanie i twórz dalej!
12

Modelowanie rotacji różnicowej

4m 10s

Uwzględnij płynną naturę powierzchni Słońca. Dowiedz się, jak używać RotatedSunFrame do przewidywania przyszłych współrzędnych obszaru aktywnego w miarę obrotu Słońca.

Pobierz
Cześć, tu Alex z DEV STORIES DOT EU. SunPy: Analiza danych słonecznych, odcinek 12 z 12. Słońce nie jest litą skałą. Jego równik obraca się znacznie szybciej niż bieguny, co oznacza, że każda siatka współrzędnych, którą na nim naniesiesz, powoli się rozrywa. Jeśli śledzisz aktywny region we wtorek, te same wartości szerokości i długości geograficznej w czwartek będą wskazywać na pustą przestrzeń. Aby śledzić rzeczywistą plazmę, potrzebujesz mechanizmu zwanego modelowaniem rotacji różnicowej. Ludzie często traktują ciała niebieskie jak stałe sfery. Na Ziemi współrzędna geograficzna pozostaje w miejscu. Na Słońcu powierzchnia jest płynna. Plazma na równiku słonecznym wykonuje pełny obrót w ciągu około dwudziestu pięciu dni, podczas gdy plazma w pobliżu biegunów potrzebuje na to ponad trzydziestu czterech dni. Ponieważ współrzędne są z natury zależne od czasu, nie możesz po prostu przenieść pozycji przestrzennej z jednego dnia na następny. Musisz uwzględnić fizyczne przesunięcie materii słonecznej w czasie. SunPy obsługuje to zależne od czasu przesunięcie za pomocą coordinate frame o nazwie Rotated Sun Frame. Ten frame pozwala ci wziąć współrzędną zmierzoną w czasie początkowym i wyliczyć, gdzie dokładnie ta sama partia materii słonecznej będzie znajdować się w nowym czasie. Oto kluczowa sprawa. Rotated Sun Frame działa jak wrapper wokół istniejącego coordinate frame. Nie obliczasz ręcznie nowej szerokości i długości geograficznej. Zamiast tego definiujesz frame, który jawnie koduje różnicę czasu, i pozwalasz, aby silnik transformacji współrzędnych wykonał obliczenia. Załóżmy, że masz współrzędne aktywnego regionu obserwowanego we wtorek. To twój punkt początkowy, reprezentowany jako obiekt SkyCoord. Ma on pozycję przestrzenną i czas obserwacji. Aby dowiedzieć się, gdzie ten aktywny region będzie w czwartek, konfigurujesz nowy Rotated Sun Frame. Najpierw podajesz base frame, który wyciągasz bezpośrednio ze swojej wtorkowej współrzędnej. Następnie podajesz czas docelowy. Możesz podać dokładny timestamp dla czwartku, albo przekazać czas trwania, na przykład dwudniowy time delta. SunPy ma teraz docelowy coordinate frame, który rozumie model rotacji Słońca. Na koniec bierzesz swoją wtorkową współrzędną i transformujesz ją do tego nowego Rotated Sun Frame. Kiedy odpalasz tę transformację, SunPy stosuje standardowy profil rotacji różnicowej. Odczytuje szerokość geograficzną twojej współrzędnej początkowej, oblicza prawidłową prędkość kątową dla tej konkretnej szerokości, mnoży ją przez twój dwudniowy czas trwania i przesuwa długość geograficzną. Na wyjściu otrzymujesz nowy obiekt współrzędnej. Jego szerokość i długość geograficzna są zaktualizowane, aby odzwierciedlić dwa dni rotacji różnicowej, wskazując dokładnie, dokąd przemieściła się plazma twojego aktywnego regionu do czwartku. Jeśli region znajdował się blisko równika, przesunął się o sporą wartość. Jeśli był blisko bieguna, przesunął się znacznie mniej. Takie podejście pozwala ci płynnie przesuwać współrzędne w czasie do przodu lub do tyłu. Ponieważ rotacja różnicowa zmienia fizyczną lokalizację danych, które badasz, powiązanie każdej współrzędnej z konkretnym czasem obserwacji i przesunięcie jej przez model rotacji to jedyny sposób na zachowanie dokładności przy wielu obserwacjach. To już koniec naszej serii o analizie danych słonecznych. Zachęcam cię do przejrzenia oficjalnej dokumentacji SunPy, wypróbowania tych narzędzi w praktyce, lub odwiedzenia devstories dot eu, aby zasugerować tematy do przyszłych serii. To wszystko w tym odcinku. Dzięki za słuchanie i twórz dalej!