Wykorzystanie wolnego oprogramowania w nauce

Transkrypt

Wykorzystanie wolnego oprogramowania w nauce
Wykorzystanie wolnego oprogramowania w nauce
Piotr Gawron, Jarek Miszczak
24 stycznia 2007
Streszczenie
Celem pracy jest porównanie komercyjnych pakietów służących do
prac naukowych z ich wolnymi odpowiednikami. Postaramy się porównać cechy dużych pakietów pogrupowanych w trzy kategorie: obliczenia
numeryczne, statystyka i obliczenia symboliczne.
1
Wstęp
Skupimy się na kilku dużych komercyjnych pakietach oprogramowania
i ich wolnych odpowiednikach. Postaramy się dokonać przeglądu i ocenić
jakość tych produktów z punktu widzenia studenta czy pracownika naukowego.
Szczególną uwagę zwrócimy na wachlarz możliwości (ilość dostępnych
funkcji, łatwość pisania rozszerzeń) oraz wygodę użytkowania i interfejs
użytkownika.
2
Obliczenia numeryczne
W tej kategorii omówimy trzy duże pakiety oprogramowania: komercyjny Matlab oraz dwa darmowe pakiety, które starają się go zastąpic: GNU
Octave oraz Scilab.
2.1
Matlab
Produkt firmy MathSoft jest jedym z najbardziej zaawansowanych narzędzi przeznaczonych do zastosowań inżynierskich. Matlab jest rozwijany od
przełomu lat siedemdziesiątych i osiemdziesiątych. Cleve Moler, wykładowca algebry na Uniwersytecie Nowy Meksyk, napisał w Fortranie prosty język
skryptowy umożliwiający studentom korzystanie z bibliotek numerycznych
1
bez konieczności pisania w Fortranie. Co ciekawe język ten był rozprowadzany na zasadach public domain. W roku 1983 powstała firma MathWorks,
która zastąpiła Fortrana językiem C i dodała zintegrowana grafikę i zaczeła
sprzedawać Matlaba.
Matlab jest dostępny na systemy operacyjne Windows, Linux oraz Macintosh. Wersja dla studentów kosztuje 99 $, wersja do użytku akademickiego
dla uczelni to wydatek 500 $ za jedno stanowisko, natomiast wersja komercyjna kosztuje 1900 $. Jest to spory koszt, ale Matlab to de facto standard
jeżeli chodzi o obliczenia numeryczne. Porównanie wydajności [7] z Octavem
i Scilabem wskazuje też na przewagę Matlaba.
Niestety dokupienie dodatkowych pakietów jest bardzo kosztowne – dla
studentów jeden toolbox kosztuje od 50 do 90 $, natomiast dla instytucji
komercyjnych dodatkowe pakiety kosztują od 700 do 4000 $ każdy.
2.2
GNU Octave
Octave powstał pod koniec lat osiemdziesiątych XX wieku jako specialistyczne narzędzie przeznaczone do obliczeń chemicznych. Od tamtej pory
został rozwinięty w narzędzie pozwalające na elastyczne operowanie na danych. Jest rozprowadzany na licencji GPL.
Podstawową strukturą danych w GNU Octave jest macierz – bez problemu można wykonywać dodawanie, mnożenie i odwracanie macierzy. Przykładowo
octave:1> a = [1,2;3,4];
octave:2> a
a =
1
3
2
4
octave:3> a**-1
ans =
-2.00000
1.50000
1.00000
-0.50000
Można też łatwo definiować funkcje, operować na strukturach, napisach
i tablicach. Język GNU Octave jest bardzo prosty, przypominający nieco
fortrana i nie wymaga od użytkownika zbyt wielkiej dbałości o szczegóły.
2
Jedną z największych zalet Octava jest możliwość rozszerzania języka.
Wykorzystując bibliotekę liboctave można pisać moduły, które mogą być
następnie wykorzystywane identycznie jak wbudowane funkcje. Działają one
przy tym znacznie szybciej niż funkcje napisane w języku GNU Octave.
Jeżeli chodzi o pakiety rozszerzeń to projekt GNU Octave Repository
[3] skupia wiele użytecznych dodatków do GNU Octave. Teoretycznie Octave może wykorzystywać skrypty napisana dla Matlaba, ale w praktyce nie
zawsze to działa.
2.3
Scilab
Konkurencją dla GNU Octava jest Scilab [8]. Zosał on stworzony przez
Institut National de Recherche en Informatique et en Automatique i Ecole
Nationale des Ponts et Chaussées jako zastępstwo Matlaba. Program ten jest
zaopatrzony w interfejs użytkownika, który nie jest może zbyt estetyczny,
ale wystarczająco funkcjonalny.
Ze Scilabem powiązany jest pakiet Scicos, który przeznaczony jest do modelowania i symulacji układów dynamicznych. Scilab posiada silne wsparcie
dla importu programów z Matlaba.
Rysunek 1: Scilab w pracy
Składnia Scilaba jest bardzo podobna do składni Octava.
-->a = [1,2;3,4]
3
a
!
!
=
1.
3.
2. !
4. !
-->a**(-1)
ans =
! - 2.
!
1.5
1. !
- 0.5 !
Najsłabszą stroną Scilaba jest jego wydajność. Nieco poprawiła się ona
w nowo wydanej wersji 3.0 pakietu.
3
Pakiety statystyczne
Niestety nie istnieje zbyt wiele wolnych pakietów z oprogramowaniem
dedykowanym do badań statystycznych. Najbardziej rozbudowany wolny
pakiet to GNU R. Dorównuje on pod względem możliwości komercyjnej Statistice. Scilab i Octave posiadają szeroką gamę funkcji statystycznych, jednakże nie są one przeznaczone ściśle do obrabiania danych statystycznych.
Wyraźnie brakuje wolnego oprogramowania, które posiadałoby przyjazny
użytkownikowi interfejs graficzny.
3.1
Statistica firmy StatSoft
Statistica jest pakietem przeznaczonym do prowadzenia obliczeń statystycznych. Pakiet programów z tej rodziny jest bardzo rozbudowany, jednakże my skupimy się tylko na możliwości zastosowania go do obliczeń naukowych, a w szczególności medycznych.
Statistica została zaimplementowana jedynie dla systemów operacyjnych
z rodziny Windows. Zawiera wsparcie dla mechanizmu OLE, własny interepreter języka Visual Basic oraz możliwość komunikacji z bazami danych.
Do zalet programu można zaliczyć to, iż wszystkie opcje dostępne są
z poziomu GUI oraz z poziomu Visual Basica. Ta druga możliwość jednak nie jest przydatna przeciętnemu użytkownikowi. Program posiada wiele
zaimplementowanych testów i algorytmów, które dodatkowo są dobrze udokumentowane. Interefejs graficzny niestety pozostawia wiele do życzenia.
Na pierwszy rzut oka jest on przyjazny, jednakże wykonanie jakichkolwiek
trochę bardziej zaawansowanych obliczeń wymaga przedzierania się przez
4
Rysunek 2: Prezentacji wyników obliczeń w Statistice
dziesiątki okienek, które zostały bardzo źle zaprojektowane. Początkujący
użytkownik nie ma szans na wykonanie obliczeń w szybkim czasie.
Program udostępnia możliwość automatycznego generowania raportów,
jednkaże często się zdarza, że trzeba dokonywać wielu poprawek ręcznie, aby
raport nadawał się do odczytania lub wydruku.
W zakresie podstawowych operacji pakiet sprawuje się dobrze, jeżeli pozna się szereg sztuczek, które omijają błędy i niedociągnięcia programu.
Program jest też stosunkowo niestabilny i trzeba być przygotowanym na
utratę wyników.
Koszty zakupu pakietu Statistica w wersji jednostanowiskowej wynoszą
około 6000 złotych. Przy zakupie tego oprogramowania dla laboratorium
dydaktycznego (25 stanowisk) należy się liczyć z koszami w granicy 10000
złotych. Warto zauważyć, że mimo swojej bardzo wysokiej ceny, Statistica
jest standardem na polskich uczelniach.
3.2
GNU R
GNU R jest to zarazem pakiet jak i język stworzony na potrzeby obliczeń statystycznych. Pierwowzorem języka i środowiska był rozwijany przez
5
AT&T język S. Komercyjnym odpowiednikiem GNU R jest S-PLUS firmy
Insightful1 . Zarówno GNU R jaki i S-PLUS są dostępne na systemy UNIXowe i Windows.
R jest językiem wysokiego poziomu. Użytkownik może operować na zaawansowanych strukturach danych takich jak: lista, wektor, tablica wielowymiarowa. Pakiet R pozwala także na operowanie na typach takich jak
dataframe, który umożliwia łatwe obrabianie danych statystycznych.
Zawansowany przykład użycia pakietu R – krzywa Kaplana-Meyera:
# załaduj bibliotekę -- analiza przeżycia
library(survival);
# utwórz obiekt z danymi na podstawie pliku CSV
datasheet <- read.csv2("2004LAST1.csv");
# wybierz podzbiór danych
datasheet <- subset(datasheet, datasheet["CZASCADO"]>60);
# utwórz obiekt przeżycia
surv1 <- Surv(data.matrix(datasheet["CZASCADO"]),
data.matrix(datasheet["LOS.CADO"]));
# wykonaj analizę przeżycia
sf <- survfit(surv1);
# przygotuj wyjście do pliku PDF
pdf(encoding="ISOLatin2", file="R.pdf");
# narysuj wykres
plot(sf, xlab="Dni", ylab="Procent przeżywających");
# opatrz go stosownym komentarzem
title(paste("Krzywa Kaplana-Meyera dla osób poddanych dializie"))
# deaktywuj wyjście graficzne
dev.off()
Wynik działania tego programu jest przedstawiony na Rys.3.
Istnieje kilka projektów mających na celu stworzenie GUI ułatwiającego
pracę. Są to między innymi: R Commander, RGtk czy świeżo powstający i
rokujący duże nadzieje RKward.
R jest bardzo aktywnie rozwijany. Odznacza się bardzo dużą ilością dostępnych pakietów dodatkowych. Mogą one być w prosty sposób zainstalowane z jednego z wielu serwerów lustrzanych CRAN (Comprehensive R
Archive Network).
1
http://www.insightful.com/
6
0.6
0.4
0.0
0.2
Procent przeżywających
0.8
1.0
Krzywa Kaplana−Meyera dla osób poddanych dializie
0
500
1000
1500
2000
2500
3000
3500
Dni
Rysunek 3: Wynik działania programu w R
4
4.1
Obliczenia symboliczne
Mathematica
Pakiet Mathematica został stworzony w latach osiemdziesiątych przez
S. Wolframa [5] – ma już 15 lat. Program dostępny jest na wiele systemów
operacyjnych, m.in. MS Windows, Linux 32 i 64 bitowy, HP Tru64 Unix 5.1,
HP-UX 11, IBM AIX 5.1, SGI IRIX 6.5, Mac OS X 10.2 oraz 10.3.
Matematica umożliwia symboliczne i numeryczne rozwiązywanie układów równań, całkowanie i rozwiązywanie układów równań różniczkowych.
Wraz z programem dostarczanych jest wiele wyspecjalizowanych pakietów,
przykładowo do operacji na grafach czy definujących stałe fizyczne. Bardzo
silną stroną pakietu jest zintegrowana grafika.
Przykład wykorzystania jest przedstawiony poniżej:
In[1]:= a = {{1,2}, {3,4}}
Out[1]= {{1, 2}, {3, 4}}
In[2]:= Det[a]
Out[2]= -2
(** Operacja na poszczególnych elementach **)
In[3]:= a^-1
7
1
1 1
Out[3]= {{1, -}, {-, -}}
2
3 4
(** Odwrócenie macierzy**)
In[4]:= Inverse[a]
3
1
Out[4]= {{-2, 1}, {-, -(-)}}
2
2
(** Rozwiązanie równania logarytmicznego **)
In[5]:= Solve[Log[x]*x==Log[y],{y}]
x
Out[5]= {{y -> x }}
Interfejs użytkownika nie jest zbyt przyjazny, ale na pewno jest lepszy
niż w przypadku programu Maxima. Możliwa też jest praca pod konsolą.
Mathematica dostarcza doskonałego systemu pomocy, który może służyć za
encyklopedię matematyki. Zaletą programu jest także dostępność literatury
w języku polskim opisującej możliwości programu.
Pakiety MathLink i J/Link dają możliwość pisania rozszerzeń przy użyciu C++ czy interfejsu użytkownika w Javie.
Cechą, która odstrasza, jest cena pakietu. Według strony firmy Gambit,
polskiego dystrybutora programu, Mathematica 5.0.1 Win + Premier Service wersja jednostanowiskowa edukacyjna po rabacie 20%: kosztuje 4517,14 zł
+ 22% VAT, natomiast wersja komercyjna z rabatem 20% kosztuje 7733,95
zł + 22% VAT.
4.2
Maxima
Wśród wolnego oprogramowania za odpowiednika pakietu Mathematica
uważana jest Maxima. Jest to następca programu Macsyma rozwijanego od
lat 60-tych w MIT. W 1998 roku kod programu został opublikowany dzięki
staraniom Williama Scheltera na licencji GPL.
Możliwości programu są spore, ale jak piszą sami twórcy, jest jeszcze
sporo do zrobienia.
Program może pracować zarówno w środowisku graficznym, jak i pod
konsolą. Graficzny interfejs użytkwnika nie jest zbyt przyjazny – jest nieco
podoby do interfejsu programu Mathematica, ale przy tym znacznie uboższy.
System pomocy jest dostępny poprzez wbudowaną w program przeglądarkę
WWW.
Z naszego punktu widzenia najważniejsze zalety to możliwość symblicznego rozwiązywania równań różniczkowych oraz różniczkowanie i całkowanie
8
symboliczne. Program umożliwia programowanie w języku LISP, wykonywanie operacji na macierzach oraz wykonywanie wykresów.
Program pozwala na zapis wyników pracy w TEX-u, a wykresów w PostScripcie. Możliwa jest także współpraca Maximy z TEXmacsem.
Rysunek 4: Maxima w pracy
4.3
GiNaC
Na zakończenie tego rozdziału opiszemy pokrótce pakiet GiNaC (GiNaC
is Not a CAS2 ). Jest to biblioteka, która pozwala na wykonywanie obliczeń
symbolicznych bezpośrednio z poziomu języka C++. Może być ona alternatywą dla dwóch wcześniej opisanych pakietów, chociaż jego możliwości są
uboższe.
Poniżej podany jest za tutorialem przykład wykorzystania GiNaCa do
generowania współczynników wielomianu.
#include <iostream>
#include <ginac/ginac.h>
using namespace std;
2
CAS - Computer Algebra System
9
using namespace GiNaC;
int main()
{
symbol x("x"), y("y");
ex poly;
for (int i=0; i<3; ++i)
poly += factorial(i+16)*pow(x,i)*pow(y,2-i);
cout << poly << endl;
return 0;
}
Minimalistyczna powłoka ginsh rozprowadzana z biblioteką pozwala na
wykorzystanie niektórych dostępnych funkcji. GiNaC dostarcza także skryptów do wykorzystania w trakcie zarządzania projektem narzędzi GNU autotools.
GiNaC bazuje na bibliotece CLN (ang. Class Library for Numbers) zawierającej klasy C++ do operacji na wielu rodzajach liczb.
5
Podsumowanie
Przedstawiony opis nie wyczerpuje bogactwa oprogramowania dostępnego dla naukowców i studentów – nie opisaliśmy chociażby dość popularnych
programów Maple3 czy MathCAD4 . Istnieje też cała gama wolnych programów i bibliotek, które mogą być przydatne w zależności od celów jakie
przyświecają użytkownikowi. Warto wspomnieć tu dwa rozwiązania oparte
na popularnych językach programowania – są to Perl Data Language5 oraz
ScientificPython6 .
Największą zaletą pakietów komercyjnych jest spójność dostarczanych
środowisk. W zakresie wolnego oprogramowania ciekawym rozwiązaniem jest
TEXmacs. Pozwala on na intergrację wielu pakietów wraz ze środowiskiem
do tworzenia publikacji opartych na TEX-u.
3
http://www.maplesoft.com/
http://www.mathsoft.com
5
http://pde.perl.org/
6
http://starship.python.net/ hinsen/ScientificPython/
4
10
Literatura
[1] J. Eaton, GNU Octave Manual, Network Theory Ltd., 2002.
[2] W. N. Venables, D. M. Smith oraz R Development Core Team, An
Introduction to R, Network Theory Ltd, 2002.
[3] http://octave-forge.sourceforge.net/
[4] M. Murphy, Octave: A Free, High-Level Language for Mathematics,
Linux Journal, Issue 39.
[5] S. Wolfram, The Mathematica Book, Wolfram Media/Cambridge University Press, 1999.
[6] http://www.ginac.de/, http://www.ginac.de/CLN
[7] http://www.sciviews.org/other/benchmark.htm
[8] http://www.scilab.org/
11

Podobne dokumenty