You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

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  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 Maltabie sejsmogramy z okna powiększenia:

# !SWIP5
# !MENU Test plot
# !DATA FROM ZOOM WINDOW
for i=1:numel(WaveForms)
    subplot(numel(WaveForms),1,i)
    plot(WaveForms(i).data.data)
    title(WaveForms(i).name)
end

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

# !SWIP5
# !MENU Create IS-EPOS catalog
# !QUAKEML
addpath 'c:\Users\jwisz\Documents\Python'
addpath 'c:\Users\jwisz\Documents\Python\SWIDB'
Catalog = QuakeML2Catalog(QuakeML);
save('Catalog_VERIS.mat','Catalog','-v6');

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.

# !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


# !SWIP5

# !MENU Create catalogs

# !MENU IS-EPOS catalog


# !SWIP5

# !TOP MENU Filters

# !MENU Python filter


Konfiguracja menu 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)

# !CURRENT EVENT

2

EventParameters QuakeML – cała struktura QuakeML, w tym wszystkie wczytane zjawiska, jest przekazywana do programu Maltab. Jest to przydatne np. gdy w Pythonie mamy funkcje do tworzenia katalogu lub chcemy w Pythonie padać sejsmiczność danego obszaru, badać statystyki itp.

# !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.

# !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.

# !DATA FROM ZOOM WINDOW

5

Kanały zaznaczone (widoczne, jako niebieskie w oknie głównym) nieobcinane czasowo są wysyłane do Pythona.

# !DATA FROM SELECTION


Dane importowane z Pythona


6
# !REPLACE QUAKEML
7
# !INSERT TO QUAKEML
8
# !READ MINISEED
9
# !ADD MINISEED

Parametry zjawisk lub całych biuletynów z QuakeML są przekazywane do Pythona w formacie QuakeML, natomiast zapisy sejsmiczne w formacie MiniSEED.

Bieżące zjawiska lub cały biuletyn w QuakeML (tabela, linie 1,2) są widziane w skrypcie jako zmienna QuakeML, natomiast zapisy sejsmiczne (tabela linie 3-5) są widziane jak zmienna WaveForms. 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