• Nie Znaleziono Wyników

4 Przegląd formatów reprezentacji modeli biologicznych

4.3 Języki specjalizowane

Języki specjalizowane zgodnie z nazwą są zaprojektowane pod kątem realizacji konkretnych po-trzeb technologicznych. Najczęściej są dedykowanymi językami dla programów, które służą do mode-lowania. Powstały w celu realizacji potrzeb, których ogólne formaty zapisu zrealizować nie mogły i w związku z tym mają pewne cechy charakterystyczne.

Po pierwsze wymagają wdrożenia, żeby móc je zacząć stosować, ponieważ ze względu na wąską specjalizację ich wykorzystania nie są najprawdopodobniej znane z innych doświadczeń użytkowników.

Wyjątkiem są języki programowania, które wykorzystane są do różnych zastosowań, dla których po-wstały specjalizowane biblioteki. Takie rozwiązanie pozwala na wykorzystanie powszechniejszej wie-dzy i oparcie się na znanym i sprawdzonym standardzie.

Po drugie są bezpośrednio zaprojektowane dla konkretnego oprogramowania. Wiąże się to z umożliwieniem ich edycji i wsparcia poprzez programy, dla których zostały zaprojektowane.

Po trzecie są zaprojektowane dla konkretnych zastosowań. Przykładem takich zastosowań jest modelowanie systemów dynamicznych w biologii. Popularne jest wykorzystanie do takiego modelo-wania zapisów kinetycznych, przytoczonych już na przykładzie formatu SBML, do opisymodelo-wania reakcji pomiędzy agentami. Stworzenie zatem języka, który pozwoli w sposób intuicyjny zapisać reakcje znane z praw kinetycznych podobnie, jak zapisuje się reakcje chemiczne stanowić może spore uproszczenie nie tylko dla zapisu, ale i dla odczytu, interpretacji i wprowadzania zmian w modelach.

W tym rozdziale, poza przeglądem dostępnych przykładów języków specjalizowanych znajduje się również przykład zapisu modelu, znanego z poprzedniego podrozdziału, czyli modelu infekcji HCV.

Zapisany jest on z wykorzystaniem jednego z języków specjalizowanych, a mianowicie Antimony. Opi-sane są również w sposób bardziej szczegółowy zalety i wady stosowania języków specjalizowanych.

4.3.1 Przegląd

Druga klasa formatów składa się ze specjalizowanych języków programowania i narzędzi je wspierających. Zawiera dedykowane języki programowania, które zostały zaprojektowane na potrzeby definiowania modeli bioinformatycznych i ich rozszerzeń. Są to formaty tekstowe, które zostały zdefi-niowane w oparciu o gramatyki formalne. Liczba reprezentantów tej klasy formatów jest mniejsza niż w przypadku języków z niejawną strukturą, nie mniej jednak również jest to popularna klasa formatów.

Antimony, czyli język, który został oparty na Jarnac. Dla symulatora JSim (Raymond et al. 2003) powstał skryptowy język programowania zwany Mathematical Model Language. PySCeS (Olivier et al. 2005) to oparty na Pythonie symulator systemów komórkowych, który zawiera własny wbudowany język Model Description Language. Istnieje ponadto framework symulacyjny NetLogo (Tisue and Wilensky 2004), który poza wizualnym narzędziem projektowym posiada również wbudowany język programowania oparty o Logo, który można wykorzystać do zdefiniowania bardziej złożonych symulacji.

Istnieją również frameworki, które pozwalają na tworzenie modelu w oparciu o znane impera-tywne języki programistyczne. Przykładem jest RePast (Recursive Porous Agent Sumlation Toolkit) (Col-lier 2001), który oparty jest między innymi na Javie.

Kolejne przykłady języków formalnych to SPiM (Stochastic Pi Machine language) (Phillips and Cardelli 2007), Bio-PEPA (Ciocchetta and Hillston 2009), czyli framework do modelowania i analizy sys-temów biologicznych, Cyto-Sim (Sedwards and Mazza 2007), który jest językiem i symulatorem proce-sów biochemicznych, czy też Kappa (Danos et al. 2008), czyli język oparty o reguły, służący do modelo-wania białek i sieci interakcji. Istnieją również możliwości definiomodelo-wania układów równań różniczko-wych, które często są używane w bioinformatyce. Zaliczyć można do nich język wykorzystywany przez Berkley Madonna (Macey et al. 2000), czy MathWorks MATLAB, a także alternatywę open source dla nich, czyli Octave (Leros et al. 2010). Ponadto VCell (Loew and Schaff 2001) pozwala na wpisywanie opisów układów równań różniczkowych bezpośrednio, zamiast robić to za pomocą graficznego inter-fejsu użytkownika.

Dobrym przykładem użycia języka specjalizowanego jest RePast, który jest frameworkiem, który umożliwia skryptowanie modeli z wykorzystaniem programowania imperatywnego. Został on wykorzystany w pracy Yanga i jego współpracowników (Yang Yong et al. 2007) do symulowania roz-przestrzeniania się infekcji w populacji. W tym celu, naukowcy wykorzystali indywidualny oparty o czynności model czasoprzestrzenny. Możliwe było osiągnięcie tego poprzez integrację RePast z Java Topology Suite. Integracja dwóch różnych narzędzi na poziomie programistycznym zapewniła kontrolę nad procesem modelowania, który był jedynie ograniczony przez możliwości API i frameworków, które zostały wykorzystane. Przygotowanie modelu na poziomie programistycznym i niezależność od kon-kretnych narzędzi pozwoliła autorom na przygotowanie bardzo elastycznego modelu, z wieloma moż-liwościami adaptacyjnymi. Wymagało to jednak dodatkowego nakładu związanego z wykonaniem prac programistycznych.

4.3.2 Przykład

W tym rozdziale zaprezentowany jest zapis modelu w języku Antimony, który jest przykładem języka specjalizowanego.

BC_Upgrade: Blastic_cells -> Healthy_hepatocytes; s;

HH_Death: Healthy_hepatocytes -> Dead_hepatocytes; dHU;

//.

Healthy_hepatocytes =;

Infected_hepatocytes =;

Listing 3. Fragment modelu infekcji wirusa HCV zapisany w języku Antimony.

Listing 3 przedstawia fragment modelu opisującego infekcję wirusa HCV, zapisanego w języku Antimony. Na modelu widać, że zapis składa się z trzech sekcji.

Pierwsza sekcja opisuje deklaracje agentów, które są wykorzystane następnie w modelu. Po-przedza go słowo kluczowe species, które rozpoczyna opis wykorzystanych modeli.

Kolejna sekcja przedstawia opisy reakcji. Każdą reakcję poprzedza etykieta, która ją opisuje, następnie przedstawiona jest składnia reakcji, czyli reagenty i produkty. Ostatnim elementem są para-metry, które wpływają na przebieg reakcji. W trzeciej sekcji przedstawione są wartości początkowe parametrów oraz początkowe rozmiary populacji poszczególnych agentów.

4.3.3 Zalety i wady

Kluczową zaletą języków specjalizowanych jest możliwość edycji modelu bez konieczności wy-korzystania dodatkowego oprogramowania. Bezpośrednia kontrola nad modelem na poziomie jego tworzenia może być bardzo pomocna, ponieważ modyfikowanie ustawień ręcznie może być sprawniej-sze i dawać większą kontrolę nad efektem końcowym. Dla prostych formatów tekstowych jest zdecy-dowanie łatwiej zaimplementować skrypty do automatycznego testowania zmian w modelu.

Kolejnym istotnym argumentem jest fakt, że modele, które zostały zapisane z wykorzystaniem języków specjalizowanych są prostsze do odczytu i mogą być zrozumiane bez konieczności wykorzysty-wania dodatkowego oprogramowykorzysty-wania. Jest to ważna zaleta, w porównaniu na przykład do aplikacji języka XML, które są wykorzystywane w większości języków z niejawną strukturą. XML jest językiem opartym o znaczniki, które stanowią znaczną część jego treści, co powoduje w konsekwencji, że duże modele są trudne do zrozumienia. Dzięki temu, że języki specjalizowane są bardziej czytelne, możliwe jest ręczne modyfikowanie modeli przez naukowców, nawet, jeżeli posiadają one przeznaczony do tego graficzny interfejs użytkownika.

Modele, które są przygotowane z wykorzystaniem języków programowania, których struktura jest bardziej uproszczona niż w przypadku XML, są lepiej zintegrowane z systemami kontroli wersji, co jest kluczowe w przypadku współpracy w dużych zespołach (Prejzendanc et al. 2016). Pomimo, że są rozwiązania integrujące XML z systemami kontroli wersji, jest to zwykle zdecydowanie bardziej utrud-nione, ponieważ wiele formatów opartych o XML przechowuje wiele istotnych informacji (na przykład w postaci atrybutów elementu) w jednym wierszu. Niektóre platformy zaniedbują ponadto dodawanie oznaczeń nowego wiersza po znacznikach XML.

Istnieje cały szereg zalet tworzenia modeli od początku w językach specjalizowanych. Po

pierw-zmodyfikować fragmenty, które nas interesują. Ponadto, jeżeli użytkownik chce zamodelować wiele podobnych komponentów lub reakcji, może wykorzystać prostą metodę kopiowania bloków tekstu lub w przypadku języka proceduralnego przygotować nową funkcję, która będzie mogła być ponownie użyta. Może to zaoszczędzić wiele czasu, który w innym razie musiałby zostać spędzony na budowaniu takiego modelu z wykorzystaniem graficznego interfejsu użytkownika.

Główny problem w ręcznym edytowaniu modelu w językach specjalizowanych, to sytuacja, w której kod jest słabo udokumentowany. Może to przybrać postać braku dokumentacji dla pewnych aspektów lub jej nieaktualność, w najgorszym przypadku wprowadzającą w błąd nowego użytkownika.

Wprowadzenie nowego specjalisty do pracy nad złożonym modelem, wymaga ponadto doświadczenia w programowaniu.

Ta klasa formatów jest zdecydowanie mniej intuicyjna niż języki z niejawną strukturą, które są zawsze zarządzanie za pomocą graficznego interfejsu użytkownika. Ponadto, ręczne edytowanie niesie za sobą ryzyko błędów, które mogą powodować problem ze strukturą modelu, co może prowadzić do błędów jego odczytu lub błędów symulacyjnych. Ważne jest również, że stosowanie języków specjali-zowanych do dużych modeli, składających się z tysięcy interakcji, które nie mogą być zmodyfikowane z wykorzystaniem graficznego interfejsu użytkownika może okazać się praktycznie niemożliwe.

4.4 Kontrolowane języki naturalne

W tym podrozdziale opisane są kontrolowane języki naturalne. Zgodnie z nazwą są one podzbio-rem języka naturalnego, który podlega pewnym regułom, jest ograniczony na potrzeby konkretnych zastosowań w taki sposób, aby móc go w sposób jednoznaczny zinterpretować przez oprogramowanie komputerowe. Zastosowanie kontrolowanych języków naturalnych jest zróżnicowane. Przykłady, które zostaną przytoczone w dalszej części rozdziału stosowane są między innymi do opisywania doku-mentacji.

Sekcja 4.4.1 opisuje przegląd dostępnych rozwiązań, a także przedstawia krótkie omówienie przebiegu modelowania, z wykorzystaniem kontrolowanych języków naturalnych. Sekcja 4.4.2 przed-stawia przykład kontrolowanego języka naturalnego ModeLang, który jest przedmiotem tej rozprawy.

W przykładzie tym zamodelowana jest infekcja wirusa HCV.

4.4.1 Przegląd

Trzecia klasa formatów to kontrolowane języki naturalne. Jest to nowe i coraz szerzej stoso-wane podejście bioinformatyce. Modelowanie z wykorzystaniem kontrolowanych języków naturalnych polega na pisaniu tekstu w oparciu o podzbiór języka naturalnego, najczęściej języka angielskiego. Jest to podejście zdecydowanie bardziej elastyczne, niż w przypadku poprzednich klas, ze względu na to, że reguły języka są zdecydowanie mniej restrykcyjne, niż w przypadku poprzednio omawianych klas for-matów. Kiedy model jest przygotowany, może zostać odczytany przez dedykowane do tego oprogra-mowanie. Aby zrozumieć opis modelu, oprogramowanie musi zawierać specjalistyczną bazę wiedzy, na temat pojęć, które są używane w opisie modelu. Jest to najczęściej zdefiniowane w postaci ontolo-gii, czyli formalnej reprezentacji wiedzy. Większość istniejących kontrolowanych języków naturalnych może zostać użyta do przygotowania modeli bioinformatycznych. Jedynym wymaganiem jest pozyska-nie lub przygotowapozyska-nie właściwych ontologii.

Do istniejących rozwiązań zaliczamy ACE (Fuchs and Schwitter 1996), który w dużym stopniu ogranicza wykorzystanie języka angielskiego i ma już zastosowania bioinformatyczne. Innym kontrolo-wanym językiem naturalnym jest PENG (White and Schwitter 2009), którego ograniczenia są jeszcze

większe niż w przypadku ACE. Ograniczenie możliwości wykorzystania języka naturalnego ma na celu zmniejszenie trudności w procesie parsowania tekstu, który jest wczytywany. Innym rozwiązaniem jest CPL (Clark et al. 2010), który jest mniej restrykcyjny i stosuje zróżnicowane metody heurystyczne, aby wspierać proces parsowania. ModeLang (Wasik et al. 2013), który jest nowym rozwiązaniem stosuje słowniki wiedzy, aby wspierać modelowanie systemów dynamicznych.

Narzędziem, które ułatwia pracę nad kontrolowanymi językami naturalnymi jest dedykowany edytor, który pozwala weryfikować pracę użytkownika i dostarcza wskazówek, związanych z pracą użytkownika. Narzędzie takie pomaga w nauce języka i pracy z nim, w tym pomaga w poznawaniu możliwości, które wynikają z wykorzystania kontrolowanego języka naturalnego. Wspomagać może również wykrywanie błędów, na wzór zintegrowanych narzędzi programistycznych. Przykładem ta-kiego narzędzia, które wspomaga pracę nad kontrolowanym językiem naturalnym jest ACE View (Ka-ljurand 2008).

4.4.2 Przykład

W tej sekcji zaprezentowany został zapis w języku ModeLang, który jest przykładem kontrolo-wanego języka naturalnego. Jest to język, który jest przedmiotem niniejszej rozprawy, dlatego został szczegółowo omówiony w dalszej jej części. Tutaj posłużył jedynie do zaprezentowania koncepcji kon-trolowanych języków naturalnych.

Healthy hepatocytes are created by Healthy hepatocytes at speed rHU Infected hepatocytes are created by Infected hepatocytes at speed rHI

The number of Healthy hepatocytes and Infected hepatocytes is less than Umax

Blastic cells change into Healthy hepatocytes at speed s Healthy hepatocytes die with mean time dHU

Infected hepatocytes die with mean time dHI

Healthy hepatocytes and Virions generate Infected hepatocytes with probability beta

Virions are emitted by Infected hepatocytes at rate pH Virions die with probability cv

Infected hepatocytes change into Healthy hepatocytes with probabil-ity Ci

Listing 4. Fragment modelu infekcji wirusa HCV zapisany w języku ModeLang.

Listing 4 prezentuje przykład, który przedstawia model infekcji wirusa HCV, który został zapre-zentowany w poprzednich rozdziałach w zapisach w formacie SBML i języku Antimony. Każde ze zdań, które jest widoczne powyżej opisuje reakcję agentów lub w szczególnym przypadku pojemność środo-wiskową modelu. Kolorowana składnia pozwala na rozróżnienie poszczególnych elementów zdania. Na fioletowo wyróżnione zostały nazwy agentów, które biorą udział w reakcji, na czerwono parametry, które opisują tempo wykonywania reakcji, natomiast na czarno zapisane są słowa kluczowe, które w języku ModeLang wraz ze składnią pozwalają na jednoznaczne identyfikowanie typów reguł.

4.4.3 Zalety i wady

Najważniejszymi zaletami kontrolowanych języków naturalnych są ich elastyczność i możli-wość opisu tego samego modelu z wykorzystaniem różnych słów i różnych składni. W rezultacie eks-pert, który zajmuje się projektowaniem modelu ma dowolność związaną z doborem słownictwa i składni i może skupić się na wyrażeniu odpowiednich charakterystyk, zamiast skupiać się na zrozumie-niu struktury kodu i reguł, które go defizrozumie-niują. Jest to jednak jednocześnie ich wada, ponieważ może to sprawić na przykład, że trudniej jest rozpoznać podobieństwa dwóch różnych modeli.

Inną istotną zaletą jest ułatwienie współpracy pomiędzy specjalistami różnych dziedzin. Z jed-nej strony kontrolowane języki naturalne są ograniczone, aby zebrać zamknięty zbiór reguł, który może być rozumiany jednoznacznie. Z drugiej strony, reguły są napisane w podzbiorze języka naturalnego, co powoduje, że są intuicyjne i łatwe do zinterpretowania.

Kolejną zaletą kontrolowanych języków naturalnych jest ich zdolność do samodokumentowa-nia. Ta cecha kodu jest bardzo mocno doceniana przez programistów i jest jedną z kluczowych cech kontrolowanych języków naturalnych. Czytając model zapisany z wykorzystaniem kontrolowanego ję-zyka naturalnego, naukowcy mogą w łatwy sposób zrozumieć jego treść, co powoduje, że modele są bardziej przystępne dla użytkowników, którzy nie są programistami. Potrzebnych jest zdecydowanie mniej komentarzy i dokumentacji, ponieważ w treści modelu można znaleźć jego opis w podzbiorze języka naturalnego.

Ze względu na to, że kontrolowane języki naturalne są formatem związanym z ręczną edycją tekstu, mają większość zalet, które mają języki specjalizowane. Do zalet tych należy zaliczyć elastycz-ność, która jest najważniejsza w kontrolowanych języków naturalnych. Jest jednak ona jednocześnie źródłem większości problemów. Wykorzystanie kontrolowanych języków naturalnych powoduje kom-plikacje, kiedy eksperci wykorzystują wyrażenia, które mają zgodnie z bazą wiedzy języka inne znacze-nie, niż przewidziane przez użytkownika. Taka sytuacja może prowadzić do poważnych problemów związanych z procedurą parsowania lub co gorsza nieoczekiwanej zmiany działania modelu, która może przy dużych modelach być trudna do zidentyfikowania. Ponadto kontrolowane języki naturalne nie są obecnie popularnym rozwiązaniem i w związku z tym powstało niewiele narzędzi i rozwiązań, które wspierają ich wykorzystanie.