• Nie Znaleziono Wyników

7 Praktyczne wykorzystanie języka ModeLang do modelowania mechanizmu CRISPR/Cas9

7.1 Integracja ModeLang z narzędziami zewnętrznymi

7.1.2 Konwersja języka ModeLang do SBML

Język SBML powstał w 2001 roku w celu zbudowania rozwiązania, które będzie mogło być wy-korzystywane jako format danych stosowany do symulacji komputerowych dla biologii systemowej.

Na przestrzeni lat, dokonano szeregu zmian, które rozwijały format. Powstały trzy główne poziomy SBML. Ponadto SBML umożliwia dodawanie własnych wtyczek na potrzeby rozwiązań niestandardo-wych. W związku z tym, po podjęciu decyzji o przekonwertowaniu ModeLang do SBML oczywistym stał się fakt, że nie będzie można w oparciu o informacje zawarte w ModeLang uzupełnić wszystkich rodza-jów informacji, które możliwe są do uzupełnienia w formacie SBML. Kluczowe było, aby te elementy modelu, które są niezbędne do wykonywania poprawnych obliczeń, znalazły się w przekonwertowa-nym modelu w formacie SBML. Istotne było również, czy wszystkie elementy zapisane w języku Mode-Lang, będzie można konwertować do SBML, czyli czy będzie to konwersja bezstratna w kontekście za-pisanych informacji. Ostatnim z pytań, które było istotne z punktu widzenia prowadzonej analizy przed przystąpieniem do prac nad implementacją konwersji było: czy są elementy po stronie SBML, których brakuje po stronie ModeLang, ale warto je wprowadzić w pierwszej kolejności do języka ModeLang, w celu umożliwienia uzupełniania ich również w języku SBML.

Podstawowe informacje, które były niezbędne do przekonwertowania to informacje o agen-tach, reakcjach pomiędzy agentami i parametrach, które opisywały zachodzące reakcje. Informacje te w sposób bezpośredni mogły zostać przekonwertowane. Za opisanie agenta odpowiada po stronie SBML element „species”. Parametry opisane są poprzez parametr „parameter”. Reguły ModeLang, które opisywały interakcje można było przekonwertować do elementu „Reaction”. Listing 8 przedsta-wia przykładowy model zapisany w języku ModeLang, który został przekonwertowany do SBML.

Healthy hepatocytes = 1e+6 Virions = 1e+7

Infected hepatocytes = 0 beta = 1.4e-6

rHU = 3

Umax = 5e+6 s = 0

dHU = 0.012 dHI = 0.36 pI = 28.7 cV = 6.0 cI = 0

Healthy hepatocytes and Virions generates Infected hepatocytes with probability beta Healthy hepatocytes are created by Healthy hepatocytes at speed rHU

Infected hepatocytes are created from Infected hepatocytes at rate rHI Blastic cells changes into Healthy hepatocytes at speed s

Healthy hepatocytes dies at speed dHU Infected hepatocytes dies at speed dHI

Virions are emitted by Infected hepatocytes at rate pI Virions die with probability cV

Infected hepatocytes changes into Healthy hepatocytes with probability cI

Listing 8. Przykładowy model ModeLang oparty na modelu infekcji HCV.

Listing 9 przedstawia fragment modelu, który odpowiada za definiowanie agentów, po przekonwerto-waniu do SBML. Poza identyfikatorem agenta, informacją, która jest zawarta w SBML jest liczba po-czątkowa jednostek wskazanego agenta. Z tego względu, że ModeLang jako kontrolowany język natu-ralny priorytetowo traktuje elastyczność, nie ma elementów języka, które są wymagane. W związku z tym jeżeli informacja o licznościach początkowych nie zostanie jawnie wskazana w ModeLang, domyśl-nie w SBML zapisana będzie wartość 0.

<listOfSpecies>

<species compartment="default" id="healthy hepatocytes" initialAmount="1000000.0" />

<species compartment="default" id="virions" initialAmount="10000000.0" />

<species compartment="default" id="infected hepatocytes" initialAmount="0.0" />

<species compartment="default" id="blastic cells" initialAmount="0.0" />

</listOfSpecies>

Listing 9. Fragment modelu SBML opisujący agentów.

Listing 10 przedstawia z kolei informację o parametrach, które są wykorzystywane do charakteryzowa-nia reakcji opisywanych w regułach języka ModeLang. Parametry w SBML są opisywane przez element

„parameter”. Poza identyfikatorem definicja zawiera informację o jednostce, która w przypadku kon-wersji z ModeLang została przydzielona jako domyślna oraz o wartości parametru. Jeżeli wartość para-metru nie została jawnie wskazana, jest ona domyślnie ustawiona z wartością 1. Jest to związane z tym, że parametry są wykorzystywane do obliczeń na przykład prędkości reakcji i jako elementy iloczynu mają domyślnie ustawioną wartość, która nie ingeruje w wartości obliczenia. Domyślnie zatem nie mają one żadnego wpływu na wyniki, jeżeli jawnie nie zostały zdefiniowane ich wartości.

<listOfParameters>

<parameter id="beta" units="per_second" value="1.4e-06" />

<parameter id="rhu" units="per_second" value="3.0" />

<parameter id="rhi" units="per_second" value="0.97" />

<parameter id="s" units="per_second" value="0.0" />

<parameter id="dhu" units="per_second" value="0.012" />

<parameter id="dhi" units="per_second" value="0.36" />

<parameter id="pi" units="per_second" value="28.7" />

<parameter id="cv" units="per_second" value="6.0" />

<parameter id="ci" units="per_second" value="0.0" />

</listOfParameters>

Listing 10. Fragment modelu SBML opisujący parametry.

Listing 11 przedstawia fragment modelu SMBL, w którym jest zapisana pierwsza reakcja, która została opisana w ModeLang. Pierwszym elementem, który opisuje reakcję w SBML jest jej identyfikator. Kon-wertowane reakcje mają identyfikatory następującej postaci:

Rule [Numer reguły ModeLang] _ [Liczba porządkowa reakcji SBML]

Powody takiego nazewnictwa były dwa. Po pierwsze wymagane było, aby identyfikatory reguł były unikalne. Po drugie ważne z punktu widzenia weryfikacji poprawności modelu, było przekazywanie informacji jaki typ reguły ModeLang został zapisany w danym elemencie SBML. SBML opisuje model kinetyczny, który składa się z reagentów i produktów. Reakcja, która zachodzi pomiędzy nimi jest sywana przez element „kineticLaw”, który wykorzystuje wstawki MathML (Ion et al. 1999), w celu opi-sania relacji matematycznych pomiędzy elementami modelu. Listing 11 przedstawia element opisujący reakcję zachodzącą w oparciu o regułę 5 języka ModeLang. Widzimy zatem, że w reakcji biorą udział dwa reagenty: „healthy hepatocytes” i „virions”, czyli zdrowe hepatocyty i wiriony (komórki wirusa).

Produktem reakcji są „infected hepatocytes”, czyli zainfekowane hepatocyty. W przykładzie widoczne jest również obliczenie matematyczne, które znajduje się w elemencie apply. Zdefiniowany jest tam iloczyn, który determinuje element times pomiędzy zdrowymi hepatocytami, wirionami i

współczynni-𝑑𝐼

𝑑𝑡= 𝐻 ∗ 𝑉 ∗ 𝛽

Gdzie I oznacza zainfekowane hepatocyty, H zdrowe hepatocyty, a V wiriony.

<listOfReactions>

<reaction id="rule5_1" reversible="false">

<listOfReactants>

<speciesReference species="healthy hepatocytes" />

<speciesReference species="virions" />

</listOfReactants>

<listOfProducts>

<speciesReference species="infected hepatocytes" />

</listOfProducts>

<kineticLaw>

<math xmlns="http://www.w3.org/1998/Math/MathML">

<apply>

<times />

<ci>beta</ci>

<ci>healthy hepatocytes</ci>

<ci>virions</ci>

</apply>

</math>

</kineticLaw>

</reaction>

[...]

</listOfReactions>

Listing 11. Fragment modelu SBML opisujący reakcje.

Druga grupa to informacje, których nie da się zapisać w SBML, a przechowujemy je w Mode-Lang. Najważniejsze są zakresy wartości parametrów. W ModeLang możemy zapisać wartość tru bezpośrednio lub w postaci zakresu wartości. Pozwala to następnie wyznaczyć wartości parame-trów poprzez dopasowanie modelu do danych eksperymentalnych za pomocą oprogramowania ta-kiego jak COPASI (Hoops et al. 2006). SBML nie pozwala na przechowywanie informacji o parametrach

w postaci zakresów wartości. Kolejną informacją, której nie jesteśmy wstanie zapisać jest pojemność środowiskowa. Element typu compartment działa z matematycznego punktu widzenia inaczej, niż mo-dele matematyczne wyrażające pojemność środowiskową. Innym aspektem jest również prawdopo-dobieństwo. W ModeLang istnieje możliwość zdefiniowania prędkości reakcji poprzez podanie praw-dopodobieństwa zdarzenia. Prawdopodobieństwo musi być przekonwertowane do postaci opisującej prędkość reakcji.

Ostatnią grupą są informacje, które znajdują się w SBML i ze względu na konieczność obsługi tego formatu zostały dodane do ModeLang. Oczywiście istnieje spora grupa informacji, które należą do SBML i nie ma ich w ModeLang, jednak ze względu na to, że SBML jest formatem zdecydowanie bardziej uniwersalnym, nie było istotne, aby zajmować się wszystkimi możliwymi aspektami SBML. W związku z tym, że ModeLang jako język został zaprojektowany do definiowania modeli systemów dy-namicznych, nie wymagał podawania szczegółów związanych z samym procesem symulacji. Brakowało zatem możliwości inicjowania wartości początkowych agentów. Podczas prac związanych z konwersją do SBML element ten został dodany do języka ModeLang.