2008-10-16

Linux dla chemika, cz. 2 - SciDAVis

SciDAVis, czyli application for Scientific Data Analysis and Visualization, jest zgodnie z nazwą wolnym programem do analizy i wizualizacji danych naukowych.

Po co i dla kogo?

Dla wszystkich którzy potrzebują programu do analizy danych doświadczalnych. Dla naukowców z dziedziny nauk ścisłych i przyrodniczych, dla studentów tychże nauk, i dla innych zainteresowanych.


Aplikacji do analizy i wizualizacji danych naukowych pod GNU/Linuksa jest wiele, ale aplikacji w stylu Origina (chyba najlepszy windowsowy program do analizy naukowej, niestety bardzo drogi) tylko trzy: LabPlot, QtiPlot i SciDAVis. LabPlot, chociaż wydaje się najbardziej rozbudowany i ma polską lokalizację, zraził mnie do siebie tym, iż nie zamierzał współpracować (tj. nie wykrywał) z biblioteką GSL (GNU Scientific Library), mimo tego, że starałem mu się to ułatwić. QtiPlot z kolei zraził mnie zbyt nachalnymi prośbami o wsparcie finansowe dla autorów projektu (przy każdym uruchomieniu programu uruchamiała mi się przeglądarka ze stosowną stroną internetową zawierającą prośbę o datek). SciDAVis, który z kolei powstał jako fork QtiPlot'a pozbawiony jest tych mankamentów, i dzięki temu zyskał moje uznanie. Aktualna wersja programu to 0.1.3 (czyli jest dość ''młody'').
PS. Na dzień 11-11-2011 aktualna wersja programu to 0.2.4

Co SciDAVis potrafi?

A trochę tego jest, a mianowicie:
  • Operacje na tabelach i macierzach
  • Analiza statystyczna i obróbka wstępna wyników
  • Wizualizacja wyników w postaci wykresów 2D i 3D
  • Import danych z plików tekstowych ASCI oraz z plików .opj (Origin Pro 7.5)
  • Dopasowanie krzywych do danych doświadczalnych (tzw. fitowanie)
  • Wygładzanie krzywych
  • Transformacja Fouriera (FFT)
  • Korelacja i autokorelacja danych
  • Konwolucja i dekonwolucja danych
  • Język skryptowy muParser

Jak to zrobić? Czyli krok po kroku.

Dane


Import danych --
Dane doświadczalne można wprowadzać ręcznie z klawiatury, ale jest to robota czasochłonna. Najczęściej mamy doczynienia z danymi zapisanymi przez inny program w pliku tekstowym.
Tak więc wybieramy z menu File -> Import ASCI. Pojawia się okienko jak na rysunku 1.
Rys 1. Import danych z pliku tekstowego.
Rys 1. Import danych z pliku tekstowego.

Następnie musimy wybrać: plik do importu, miejsce gdzie powinny znaleźć się zaimportowane dane (nowa tabela, nowa kolumna w aktywnej tabeli - opcja ''Import each file as''), separator danych (spacja, tabulator, przecinek, średnik, lub ich kombinacje) i separator dziesiętny (polski przecinek lub angielska kropka). Przydatne jest też zaznaczenie opcji ''Simplifity white spaces'' (traktowanie wielu spacji jak jednej) oraz ''Remove white spaces from line ends'' (usuwa dodatkowe spacje z końca linii). Niezaznaczenie tych opcji może spowodować utworzenie w zaimportowanej tabeli z danymi dodatkowych pustych kolumn, a to przecież nikomu nie potrzebne.

Przechowywanie i edycja danych --
SciDAVis w ogólności potrafi przechowywać dane w postaci tabel i macierzy. Nikomu chyba nie muszę tłumaczyć czym się różni tabela od macierzy. W odróżnieniu od tabel, na macierzach można wykonywać pewne specyficzne operacja, jak np. obliczanie wyznacznika, transpozycja i odwracanie macierzy. Możliwa jest konwersja tabeli do macierzy.

SciDAVis wymaga oznaczeń kolumn w tabeli ze względu na to jaki rodzaj informacji zawierają: X (oś odciętych na wykresie), Y (oś rzędnych), Z, X error lub Y error (błędy X lub Y). Należy uważać na oznaczenie rodzaju danych, ponieważ program np. nie pozwoli nam na stworzenie wykresu z dwóch serii danych oznaczonych jako Y. Rodzaj danych ustawia się (jeśli nie odpowiada nam ustawienie domyślne) zaznaczając kolumnę i wybierając odpowiednią opcję z pozycji Set As z menu podręcznego.

Kolumnę można też wypełnić wartościami zależnymi od wartości w innej kolumnie. Robi się to podobnie jak w arkuszu kalkulacyjnym, czyli wpisując odpowiednią formułę. Aby np. w kolumnie 4 znalazły się wartości sinusów liczb znajdujących się w kolumnie 1, to postępujemy następująco: zaznaczamy kolumnę 4 i z menu podręcznego wybieramy ''Set Column Values''. Następnie w odpowiednim polu (rysunek 2) wpisujemy formułę, w naszym przypadku będzie to: col(''4'')=sin(col(''1'')).
Rys 2. Okienko wpisywania formuły do kolumny.
Rys 2. Okienko wpisywania formuły do kolumny.

Dodatkowo można wypełnić kolumnę numerami wierszy (wybieramy z menu podręcznego Fill Column With -> Row Numbers) lub liczbami losowymi (Fill Column With -> Random Values).

Często ważne dane znajdują się w dzienniku zdarzeń (menu View -> Results log). Lądują tam na przykład informacje o współczynniku regresji, wyznaczniku macierzy i inne dodatkowe informacje o naszych działaniach.

Wstępna analiza danych --
Jeśli już wprowadziliśmy dane, to można zacząć je analizować. Często wymagają jednak wstępnej obróbki. Do wstępnych działań może należeć sortowanie danych lub ich normalizacja. Aby dokonać normalizacji wystarczy zaznaczyć kolumnę z interesującymi nas danymi i z menu podręcznego wybrać ''Normalize''. Podobnie można dokonać sortowania danych (pojedynczej kolumny lub też całej tabeli względem danej kolumny), lub też wykonać statystykę dla danej kolumny (średnia, odchylenie standardowe, wariacja, wartość najmniejsza i największa).

Wizualizacja danych --
Danych naukowych nie przedstawia się w postaci surowej, lecz wizualizuje się je w postaci ładnych wykresów. SciDAVis oferuje bogaty zestaw narzędzi do tworzenia i edycji wykresów. Do dyspozycji są wykresy 2D, 3D i statystyczne (histogram, wykres kołowy).
Aby stworzyć wykres należy po prostu zaznaczyć kolumny z seriami danych i następnie z menu Plot (głównego lub podręcznego) wybrać interesujący nas typ wykresu. Wykreowany w ten sposób wykres można edytować. Wszystkie potrzebne opcje znajdują się w menu podręcznym pod prawym przyciskiem myszki lub też dają się aktywować po dwukliku na odpowiedni fragment wykresu (np. dwuklik na oś X otwiera okienko z edycją parametrów tej osi).
Rys 3. Opcje wizualizacji serii danych.
Rys 3. Opcje wizualizacji serii danych.

W menu podręcznym mamy na przykład pozycję Properties odpowiedzialna za ustawienia wizualizacji serii danych (kolorki, kształt i wielkość symboli i tym podobne).

Do wykresu możemy dodać następną serię danych (opcja Add/Remove Curve z menu podręcznego) lub też umieścić na nim wykres funkcji analitycznej (opcja Add Function z menu podręcznego). Problemem nie jest też edycja tytułu wykresu lub jego legendy. Program dobrze obsługuje polskie znaki oraz symbole greckie.

SciDAVis obsługuje warstwy wykresu (coś podobnego do warstw obrazu w programach graficznych), odpowiednie opcje znajdują się w menu Graph (tamże znajduje się też kilka ciekawych pozycji, np. wstawianie obrazów lub strzałek), co pozwala tworzyć naprawdę skomplikowane wykresy.
Rys 4. Przykładowy wykres 2D.
Rys 4. Przykładowy wykres 2D.

W menu podręcznym znajduje się też pozycja Analyze (odpowiada mu menu Analysis w menu głównym), która zawiera wiele opcji analitycznych.
W wypadku przedstawiania danych doświadczalnych często wygładza się je. Aby zrobić to samo w programie SciDAVis należy sięgnąć do podręcznego menu Analyze (lub menu Analysis na pasku głównym) i wybrać opcję Smooth. Znajdują się tam algorytmy wygładzania, na czele z chyba najpopularniejszym algorytmem Savitzky'ego-Golay'a.

Analiza danych


Dopasowanie krzywych do danych doświadczalnych --
Dalej zajmujemy się menu Analyze. Z jego poziomu mamy bowiem możliwość uruchomienia algorytmów odpowiedzialnych za dopasowanie zadanej krzywej analitycznej do danych doświadczalnych (co określane jest krótkim angielskim słówkiem fit, często jednak używanym w Polsce).
Rys 5. Przykład dopasowania krzywej analitycznej do danych doświadczalnych.
Rys 5. Przykład dopasowania krzywej analitycznej do danych doświadczalnych.

Spośród dostępnych opcji dopasowujących mamy do dyspozycji fitowanie liniowe, wielomianowe, funkcją eksponencjalną, funkcją Gaussa i Lorentza. Zaś dla bardziej zaawansowanych dano do dyspozycji moduł o nazwie Fit Wizard, który pozwala na stworzenie własnej funkcji fitującej.

Analiza fourierowska FFT --
Transformata Fouriera jest wykorzystywane w wielu dziedzinach fizyki i informatyki, ale przede wszystkim w teorii analizy i przetwarzania sygnałów. Nie wdając się zbytnio w rozważania matematyczne, za pomocą transformaty Fouriera można na przykład transformować funkcję sygnały zależnego od czasu na funkcję sygnału zależnego od częstotliwości.

FFT to skrót od Fast Fourier Transformation, czyli Szybka Transformacja Fouriera. Jest to algorytm liczenia dyskretnej transformaty Fouriera oraz transformaty do niej odwrotnej.

Ale dość już wstępu. Aby wykonać FFT na serii danych znów wchodzimy do menu Analyze i wybieramy pozycję FFT. Na rysunku nr 6 przedstawiłem przykładowy wynik takiej operacji na funkcji próbnej.
Rys 6. Przykład analizy FFT danych.
Rys 6. Przykład analizy FFT danych.

Podsumowanie

Osobiście uważam SciDAVis za dobry, darmowy program do analizy i wizualizacji danych. Może nie ma tylu opcji co jego komercyjni konkurenci (Origin i SigmaPlot), ale pracuje się z nim wygodnie i do moich zastosowań wystarczy. Program się cały czas rozwija i mam nadzieję, że autorzy wywiążą się ze swoich planów przedstawionych na drogowej mapie rozwoju. Przydałby się przede wszystkim dobry importer plików projektu Origina. Ciekawi mnie też, kiedy powstanie wersja 1.0 programu. Wine czekało z tym aż 15 lat... ;-)

Alternatywy (4)

A oto alternatywne oprogramowanie:
  • Origin \\ Platforma: Windows \\ Cena: 950 USD (Origin 8 ), 1500 USD ( OriginPro 8 )
  • SigmaPlot \\ Platforma: Windows \\ Cena: 749 USD
  • QtiPlot \\ Platforma: Windows, Linux, MacOS, FreeBSD \\ Cena: źródła dla Linuksa - darmowe, binarki - 20 EURO
  • LabPlot \\ Platforma: Linux, MacOS \\ Cena: darmowy


Odnośniki:

Strona domowa SciDAVis
Podręcznik użytkownika (j. angielski)

Artykuł ten, mojego autorstwa, został po raz pierwszy zamieszczony w czasopiśmie Dragonia Magazine

3 komentarze:

  1. Czy scidavis potrafi wyznaczyć FWHM, przy fitowaniu do gaussa?

    OdpowiedzUsuń
  2. O ile pamiętam to potrafi, aczkolwiek do fitowania używałem ostatnio programu fityk, który na pewno to potrafi.

    OdpowiedzUsuń