• Nie Znaleziono Wyników

Rozwój technik programistycznych w kontekście modelowania systemów dynamicznych . 37

1 Wstęp

1.1 Rozwój technik programistycznych w kontekście modelowania systemów dynamicznych . 37

Od drugiej połowy XX wieku do dnia dzisiejszego nastąpił rewolucyjny rozwój technik programi-stycznych (Sammet 1972). Zmiana ta jest odczuwalna na wielu płaszczyznach i związana jest z różnymi

komputerów. Programowanie imperatywne, które opiera się na rozkazach, odzwierciedlało przez swój charakter mechanizmy, które faktycznie zachodziły na poziomie sprzętowym. Pierwsze prace progra-mistyczne, które opierały się na technikach niskopoziomowych, uwzględniając prace na kodzie maszy-nowym i języku Assembler, bezpośrednio odzwierciedlały operacje na poziomie pamięci i instrukcje procesora. Rozwój technik programistycznych w tamtym czasie polegał na zwiększeniu poziomu abs-trakcji pisanego kodu, aby programista mógł bardziej skupiać się na sensie logicznym wytwarzanego oprogramowania, a w mniejszym stopniu na tym, jak polecenia, które są wywoływane będą realizo-wane na poziomie sprzętowym. Takie podejście zastosowano na przykład w języku C (Engler et al.

1996). Kolejnym istotnym krokiem w rozwoju technik programistycznych było rozwinięcie programo-wania obiektowego, które pozwalało projektować oprogramowanie z wykorzystaniem struktur, które modelowały rzeczywistość (Pree 1997). Przykładem języka obiektowego, który pozwala na wytwarza-nie oprogramowania w opisany sposób jest Java.

Dużą popularnością w kontekście rozwoju technik programistycznych w ostatnim czasie cieszą się dwa nowatorskie podejścia. Jedno z nich opiera się na programowaniu deklaratywnym, które po-lega na opisowym deklarowaniu tego, jaka jest specyfika budowanych struktur, bez konieczności wska-zywania konkretnych poleceń, które mają być realizowane lub ograniczając konieczność wskawska-zywania realizowanych poleceń do minimum. Jednym z przykładów rozwiązań deklaratywnych jest powiązanie danych, z których budowana jest prezentacja w składni Windows Presentation Foundation (Louridas 2007). Rozwiązanie to polega na wskazaniu obiektów, których wartości będą odwzorowane w postaci zachowań i wyglądu interfejsu użytkownika. Inne deklaratywne rozwiązanie, które jest popularne w ostatnich latach to AngularJS. Jest to framework, który opierając się na języku JavaScript pozwala na realizację wzorca Model-View-Controller z wykorzystaniem zapisów deklaratywnych (Jain et al. 2015).

Drugie podejście to programowanie funkcyjne, które swoją postacią bardziej przypomina definiowanie funkcji matematycznych, niż programistycznych. Zarówno programowanie deklaratywne jak i funk-cyjne pozwala w jeszcze większym stopniu niż dotychczas na zwiększenie poziomu abstrakcji prac zwią-zanych z programowaniem. Przykładami języków funkcyjnych są R (Ihaka and Gentleman 1996) oraz F# (Smith 2009).

W kontekście modelowania systemów biologicznych szczególnie interesujące są techniki pro-gramowania deklaratywnego. Programowanie deklaratywne pozwala na opisywanie dwóch głównych typów struktur. Pierwszy typ, to struktury opisujące obiekty i stan faktyczny środowiska. Są to języki, które pozwalają na przechowywanie informacji, na przykład język XML. Drugi typ struktur opisuje inte-rakcje. Pozwala na przykład na deklarowanie zachowań, które są bezpośrednio powiązane z obiektami interfejsu użytkownika. Możliwe w takiej sytuacji jest na przykład deklaratywne definiowanie jakiego rodzaju reakcje mają mieć miejsce w przypadku specyficznych zachowań użytkownika lub na definio-wanie walidacji wprowadzanych danych. Pozwala to na zdefiniodefinio-wanie w bardzo intuicyjny sposób ocze-kiwanych danych wejściowych bez konieczności pisania ciągu instrukcji, które miałyby na celu weryfi-kację wprowadzanych informacji. Przykładem zapisu, który pozwala na walidację wprowadzonych da-nych jest schemat XSD dla plików XML.

Rozwój technik programistycznych, który został scharakteryzowany w powyższych akapitach, wiąże się jednoznacznie z możliwościami, które powstają dla różnych nowych obszarów zastosowań.

Jednym z takich obszarów zastosowań jest modelowanie systemów dynamicznych. Jest to obszar, który w znaczny sposób korzysta z możliwości, które rozwój technik programistycznych dostarcza od lat. Powstające możliwości mają swoje źródła w rozwoju bardzo różnych aspektów technik programi-stycznych i w związku z tym ich opis wymaga również podziału na kilka kategorii.

Podstawowym obszarem nowych możliwości powstających dla modelowania systemów dyna-micznych, który nie jest jednocześnie bezpośrednio związany z samymi technikami programistycznymi,

jest rozwój sprzętu komputerowego. Skala tego rozwoju nie występuje w żadnym innym obszarze tech-nicznym. Przez kilkanaście lat XXI wieku doszło do zwielokrotnienia możliwości obliczeniowych sprzętu i otwarcia nowych szans w obszarach, które do tej pory nie były obiektami badań. Bezpośrednim efek-tem rozwoju sprzętu jest doskonalenie oprogramowania w obszarze interfejsu użytkownika. Możliwe stało się budowanie dużych zintegrowanych systemów związanych z modelowaniem, które wykorzy-stują graficzny interfejs użytkownika pozwalający zarówno na wygodne budowanie jak i analizowanie powstałych modeli.

Rozwój technik programistycznych doprowadził do powstania wielu języków programowania, które dodatkowo pozwalają na modelowanie jednocześnie w sposób efektywny jak i na przechowywa-nie zapisów modelu w postaci najbardziej czytelnej. Pozwalają one na adoptowaprzechowywa-nie zdolności związa-nych z programowaniem w obszarze modelowania.

Kolejnym istotnym aspektem rozwoju stały się formaty deklaratywne, które pozwalają na prze-chowywanie modelu. Kluczowym z punktu widzenia biologii systemów etapem ich rozwoju było po-wstanie w roku 2001 formatu SBML (Hucka et al. 2003), który jest aplikacją języka XML w obszarze biologii systemowej. Popularność tego formatu pozwoliła na ujednolicenie w istotnym stopniu sposobu zapisu informacji generowanych przez oprogramowanie związane z modelowaniem procesów biolo-gicznych.

Jednocześnie pojawiły się nowe pomysły wykorzystania dostępnych rozwiązań, które integrują różnego rodzaju techniki pozwalając na osiągnięcie oczekiwanych celów. Przykładem takim jest zasto-sowanie w formacie SBML składni MathML (Carlisle 2000) w celu opisu praw kinetycznych, które stoją za stroną obliczeniową opisywanych modeli. Innym przykładem wykorzystania gotowych komponen-tów różnego typu było zintegrowanie framaworku RePast (Collier 2001) z biblioteką wbudowaną w język obiektowy Java, zwaną Java Topology Suite (Johansson and Harrie 2002). Biblioteka ta pozwalała na odzwierciedlenie na poziomie topologicznym stanu modelu, dzięki czemu możliwe jest zbudowanie opartego na czynnościach modelu czasoprzestrzennego.

Pomimo tak licznych sukcesów w zakresie prowadzenia badań naukowych i wykorzystania zróż-nicowanych technik, które są oferowane przez nowoczesne rozwiązania z zakresu inżynierii oprogra-mowania nie nastąpiło jednak spowolnienie w kontekście rozwoju technik programistycznych. Nadal istnieje wiele nowych obszarów, których wykorzystanie w dziedzinie modelowania systemów dyna-micznych jest możliwe i prawdopodobnie w niedalekiej przyszłości możliwe będzie pojawienie się pierwszych gotowych rozwiązań, które będą stosować te nowe możliwości.

Jednym z najpopularniejszych obszarów badawczych jest obecnie uczenie maszynowe (ang. ma-chine learning) (Mjolsness and DeCoste 2001). Jest to płaszczyzna, która dostarcza nowych możliwości w niezliczonych gałęziach nauki. Zastosowanie ucznia maszynowego w narzędziach związanych z mo-delowaniem było tylko kwestią czasu. Zastosowanie uczenia maszynowego było na przykład zapropo-nowane w algorytmach planowania przetwarzania równoległego (Seredyński 2011). Udoskonalanie modeli, a także doboru ich parametrów z wykorzystaniem uczenia maszynowego będzie mogło pozwo-lić na rozwiązanie wielu problemów badawczych w dziedzinach takich jak biologia, gdzie nadal możli-wości i potrzeby rozwoju technik modelowania są duże.

Kolejnym istotnym obszarem jest rozpoznawanie tekstu i jego znaczenia (Sebastiani 2002), któ-rych rezultatem są zbiory informacji, które zostały sklasyfikowane w Internecie przez popularne silniki wyszukiwania. Dają one szansę na osiągnięcie znaczących rezultatów z wykorzystaniem zróżnicowa-nych metod technologiczzróżnicowa-nych. Innym obszarem badawczym związanym z tym tematem są tak zwane

nia jednoznacznej interpretacji zapisów poprzez systemy informatyczne jednocześnie umożliwiając wy-korzystane znajomości języków naturalnych, na bazie których zostały zdefiniowane. Możliwości, które płyną z ich wykorzystania są właśnie kluczowym tematem badawczym opisanym w niniejszej rozpra-wie.

1.2 Cel i zakres pracy

W pracy interdyscyplinarnej, współdziałanie grup specjalizujących się w różnych obszarach wiedzy może być utrudnione. Przykładem może być przypadek, który opisał doktor Wąsik w swojej pracy opi-sującej współpracę pomiędzy informatykami i biologami (Wasik et al. 2014). Biologowie mieli problemy ze zrozumieniem opisów matematycznych modelowanych systemów. W rezultacie nie byli w stanie zweryfikować z wykorzystaniem swojej wiedzy dziedzinowej czy model był poprawny i nie byli w stanie zaproponować żadnych zmian. Jednocześnie informatycy nie mogli pozyskać od biologów precyzyjnych definicji interakcji, których potrzebowali, aby zbudować model w symulatorze komputerowym. Do-świadczenia te były bezpośrednią inspiracją do badań, które zostały opisane w niniejszej rozprawie.

Głównymi celami niniejszej pracy były:

1. Klasyfikacja dostępnych metod modelowania i formatów zapisu modeli systemów dynamicz-nych w bioinformatyce, w celu przeanalizowania możliwości rozwoju nowych technik modelo-wania systemów dynamicznych.

2. Zaprojektowanie i rozwinięcie nowego języka służącego do modelowania systemów dynamicz-nych, który pozwoli na wyeliminowanie braków wynikających z dostępnych rozwiązań i po-zwoli na wykorzystanie nowych możliwości, jakie z takiego rozwiązania mogłyby wynikać.

3. Weryfikacja eksperymentalna przydatności funkcjonalności, które powstają w ramach nowo zaprojektowanego języka, w procesie modelowania systemów dynamicznych.

4. Zbudowanie środowiska pozwalającego na analizę i tłumaczenie zapisów powstających w ra-mach nowego języka do popularnego w biologii systemowej języka SBML.

5. Weryfikacja poprawności konwersji do języka SBML.

6. Opracowanie środowiska, które pozwoliłoby na przechowywanie i współdzielenie dostępnych modeli systemów biologicznych, a także wyników eksperymentów naukowych.

Realizacja postawionych powyżej celów głównych wymagała realizacji następujących zadań szczegóło-wych:

1. Analiza dostępnych formatów zapisów modeli systemów dynamicznych.

2. Analiza i przetestowanie dostępnych rozwiązań związanych z modelowaniem i symulacją sys-temów dynamicznych w bioinformatyce.

3. Porównanie przetestowanych narzędzi w celu zebrania charakterystyk i określenia ich wad oraz zalet.

4. Opracowanie projektu nowego kontrolowanego języka naturalnego.

5. Implementacja środowiska służącego do parsowania i analizy, a także wyświetlania modeli za-pisanych w nowo powstałym języku.

6. Implementacja modułu, który ma za zadanie tłumaczyć zapisy w powstałym języku do formatu SBML.

7. Wybór systemów biologicznych, które posłużą do weryfikacji opracowanego rozwiązania.

8. Przeprowadzenie eksperymentów badawczych weryfikujących użyteczność opracowanego ję-zyka i poprawność naukową zapisów, które powstają w ramach zaimplementowanych rozwią-zań.

9. Projektowanie i implementacja bazy danych, która ma na celu współdzielenie zbieranych wy-ników badań.

W niniejszej pracy opisane zostały popularne metody zapisu i modelowania systemów dynamicz-nych oraz przeanalizowane wady i zalety powyższych rozwiązań. W ramach przeprowadzodynamicz-nych badań powstała również klasyfikacja, która pozwoliła na przypisanie dostępnych rozwiązań do grup charakte-ryzujących się specyficznymi cechami, dzięki czemu możliwe było łatwiejsze przeanalizowanie jakiego typu narzędzi i formatów obecnie brakuje wśród dostępnych rozwiązań. Dostępne narzędzia podzie-lone zostały na trzy klasy: formaty z niejawną strukturą, języki specjalizowane i kontrolowane języki naturalne (Prejzendanc et al. 2016).

W ramach badań powstał również nowy kontrolowany język naturalny – ModeLang (Wasik et al.

2013). Język ten zaprojektowany został z myślą o umożliwieniu lub ułatwieniu modelowania systemów dynamicznych przez specjalistów dziedzinowych, którzy mają mniejsze doświadczenie z językami pro-gramowania. Kontrolowane języki naturalne, które charakteryzują się tym, że są podzbiorem języków naturalnych, pozwalają na wykorzystanie wiedzy niespecjalistycznej do celów badawczych. W ramach prac naukowych powstały w związku z tym narzędzia, które pozwalają na analizę zapisów zaprojekto-wanego języka, a także na pozyskiwanie informacji, które mogą być wykorzystane w ramach prac nau-kowych. Ponadto powstałe narzędzie zostało zintegrowane z narzędziami symulacyjnymi poprzez za-projektowanie i zbudowanie konwertera zapisu w języku ModeLang do formatu SBML, który cieszy się olbrzymią popularnością wśród narzędzi dotyczących biologii systemowej.

W ramach prowadzonych prac badawczych, które miały na celu rozwój nowego formatu zapisu i narzędzi, które implementują zaprojektowany język odbyły się dwa eksperymenty badawcze. Celem przeprowadzonych eksperymentów było potwierdzenie poprawności działania interpretera języka ModeLang, a także poprawności konwersji modeli do formatu SBML oraz weryfikacja użyteczności ję-zyka. W związku z tym istotnym elementem przeprowadzonych eksperymentów było zweryfikowanie poprawności finalnego zapisu.

Ponadto w ramach pracy badawczej rozwinięte zostało rozwiązanie pozwalające na współdzielenie i kontrybucję powstałych modeli i wyników badań w ramach otwartej społeczności naukowej. VirDB jest to baza danych umożliwiająca współdzielenie modeli związanych z wirusologią, a także danych, które dotyczą infekcji wirusowych (Wasik et al. 2019). Rozwój takiego narzędzia był istotnym elemen-tem związanym z dalszą częścią prac badawczych. Narzędzie to pozwala na dalsze kroki związane z klasyfikowaniem i upowszechnianiem dostępu do wiedzy związanej z modelowaniem systemów dyna-micznych. Szczególny nacisk jest tutaj kładziony na istotny z punktu widzenia prowadzonych prac ba-dawczych obszar zastosowań jakim jest bioinformatyka.