Moduł Python umożliwia wykorzystanie języka i środowiska Python do rozszerzenia możliwości SWIP5. W szczególności bibliotek sejsmicznych m.in ObsPy. Można tworzyć własne skrypty Pythona, które zachowują się jak wtyczki programu SWIP5, m.in rozbudowują menu programu i mogą być z menu wywoływane.

Wszelkie komunikaty i uwagi z Pythona powstałe w trakcie pracy skryptu są wyświetlane w oknie Rapotu po zakończeniu pracy wtyczki.

Wymagania: Python 3.6, ObsPy

Wtyczkami napisanymi w Python, są odpowiednie skrypty napisane w języku Python, zawierające informacje potrzebne do rozpoznania ich jak moduły dla SWIP5  i umieszczone w podkatalogu Python. Skrypty te będą widoczne, jako pozycje w menu programu SWIP5, których wybranie powoduje przesłanie odpowiednich danych do programu Python, wykonanie zadanego programu i przekazanie odpowiednich danych z powrotem do programu SWIP5. Są to typowe skrypty Pythona poprzedzone definicjami dla SWIP, które są odpowiednimi liniami na początku skryptu traktowanymi przez Python, jako komentarze. Linie te są poprzedzone znakami "# !"Na ich podstawie program SWIP5 rozpoznaje je, jako funkcje dla programu SWIP5, umieszcza w odpowiednich pozycjach menu, przekazuje i odbiera odpowiednie dane z programu Python.Skrypty te mogą być wywoływane w programie Python bez pośrednictwa SWIP-a, co pozwala je testować przed dodaniem do programu.

Skrypt taki musi zaczynać się linią:

# !SWIP5

informującą program, że jest to skrypt przeznaczony dla programu SWIP5. Następnie musi wystąpić jedna, lub kilka linii opisujących menu:

# !MENU …

a następnie kilka linii opisujących sposób przekazywania danych miedzy SWIP5 a Python . Oczywiście w przypadku testowania skryptów w samym Pythonie dane trzeba wczytać przed wywołaniem skryptu. Można korzystać w skryptach z innych bibliotek, ale trzeba zdefiniować do nich dostęp.

Poniżej dwa przykładowe skrypty:

1. Skrypt rysujący w ObsPy sejsmogramy z okna powiększenia:

# !SWIP5
# !MENU Test plot
# !DATA FROM ZOOM WINDOW
streamSWIP5.spectrogram(log=True, title='PL network ' + str(st[0].stats.starttime))

2. Skrypt generujący NORDIC katalog (wcześniej, należy wczytać wszystkie zjawiska do SWIP):

# !SWIP5
# !MENU Create IS-EPOS catalog
# !QUAKEML
catalogSWIP5.write("example.dat", format="NORDIC")

Konfiguracja menu w skryptach Python

Menu definiowane jest przez jedną, lub kilka linii opisujących menu w skrypcie, w postaci:

# !MENU …

gdzie „…” oznaczają hasło menu programu SWIP5. Jeżeli występuje jedna linia opisująca menu, pozycja ta zostanie dopisana bezpośrednio do podmenu Python. Jeżeli występuje kilka linii opisujących menu, zostanie stworzone odpowiednie drzewo od podmenu Python. Istnieje możliwość dopisania wywołania funkcji poza podmenu Python. W tym celu pierwsza i tylko pierwsza pozycja menu powinna być:

# !TOP MENU …

Wtedy nazwa „…” będzie traktowana, jako pozycja na belce głównej menu programu SWIP5 np.

# !TOP MENU OBSPY

Powyższe definicje muszą wystąpić na początku skryptu po linii

# !SWIP5

W przeciwnym wypadku program SWIP5 ignoruje ten skrypt.

Poniżej przedstawione są przykładowe definicje w skrypcie i odpowiadające im pozycje w menu:

# !SWIP5
# !MENU Create IS-EPOS catalog

Python→Create IS-EPOS catalog

# !SWIP5
# !MENU Create catalogs
# !MENU IS-EPOS catalog

Python→Create catalogs→

# !SWIP5
# !TOP MENU Filters
# !MENU Python filter


Konfiguracja przekazywania danych w skryptach Python

Linie definiujące sposób przekazywania danych do Pythona muszą znajdować się poniżej linii definiujących menu. W zależności od odpowiednich linii na początku skryptu odpowiednie dane są przekazane do programu Python. Przedstawia to poniższa tabela:


Dane eksportowane do Pythona

Linie skryptu Python

1

Bieżące zjawisko. Jeżeli SWIP wczytał wiele zjawisk, tylko bieżąco opracowywane (zaznaczone) zjawisko jest przekazywane (patrz Praca na wielu wstrząsach). Opracowanie zjawiska jest dostępne w skrypcie jako zmienna globalna catalogSWIP5 typu QuakeML.

# !CURRENT EVENT

2

EventParameters QuakeML – cała struktura QuakeML, w tym wszystkie wczytane zjawiska, jest przekazywana do programu Python. Jest to przydatne np. gdy w Pythonie mamy funkcje do tworzenia katalogu lub chcemy w Pythonie padać sejsmiczność danego obszaru, badać statystyki itp. Katalog jest dostępny w skrypcie jako zmienna globalna catalogSWIP5 typu QuakeML.

# !QUAKEML

3

Wszystkie kanały widoczne w oknie głównym programu SWIP5 obcinane czasowo do sygnału widocznego w oknie głównym są wysyłane do Pythona. Kanały sejsmiczne są dostępne w skrypcie jako zmienna globalna streamSWIP5 typu Stream.

# !DATA FROM MAIN WINDOW

4

Wszystkie kanały widoczne w oknie powiększenia programu SWIP5 obcinane czasowo do sygnału widocznego w oknie powiększenia są wysyłane do Pythona. Kanały sejsmiczne są dostępne w skrypcie jako zmienna globalna streamSWIP5 typu Stream.

# !DATA FROM ZOOM WINDOW

5

Kanały zaznaczone (widoczne, jako niebieskie w oknie głównym) nieobcinane czasowo są wysyłane do Pythona. Kanały sejsmiczne są dostępne w skrypcie jako zmienna globalna streamSWIP5 typu Stream.

# !DATA FROM SELECTION


Dane importowane z Pythona


6Opracowanie zjawiska trzymane w zmiennej catalogSWIP5 zostaje zaimportowane do SWIP5 zastępując istniejące opracowanie lub katalog# !REPLACE QUAKEML
7Opracowanie zjawiska trzymane w zmiennej catalogSWIP5 zostaje zaimportowane do SWIP5. Dodawane są do bieżącego opracowania zjawiska nowe wartości: originu, magnitudy, magnitudy stacyjnej, amplitudy, mechanizmy lub piku. Dodawane są tylko nowe wartości. Nie zmienia się  już istniejących. W opracowaniu eksportowanym z pythona musi być zjawisko z ID takim samym jak bieżące zjawisko w SWIP5. W przeciwnym wypadku dane są ignorowane.# !INSERT TO QUAKEML
8Wczytywany jest do SWIP5 plik zapisywany przez skrypt Pythona. W skrypcie musi być komenda zapisu do pliku, którego nazwa jest w zbiorze konfiguracyjnym.# !READ MINISEED
9Dodawane są do sejsmogramu w SWIP5 kanały z pliku zapisanego przez skrypt Pythona. W skrypcie musi być komenda zapisu do pliku, którego nazwa jest w zbiorze konfiguracyjnym.# !ADD MINISEED

Parametry zjawisk lub całych biuletynów z QuakeML są przekazywane do Pythona w formacie QuakeML i widziane są jako zmienna catalogSWIP5 bez względu ile kanałów jest przekazywanych, natomiast zapisy sejsmiczne w formacie MiniSEED i widziane są jako zmienna streamSWIP5. W skrypcie może wystąpić jedna linia opisująca sposób przekazania QuakeML i jedna linia opisująca sposób przekazania zapisów sejsmicznych.


  • No labels