Wszystkie wbudowane polecenia programu Mathematica zaczynają się z wielkiej litery. Argumenty funkcji podajemy w nawiasach kwadratowych; w szczególności (przykład poniżej) może nie być żadnych argumentów, wstawiamy wtedy puste nawiasy. Funkcja ChemicalData poniżej wyświetla listę związków chemiczynych wprowadzonych do wewnętrznej bazy danych. Polecenia uruchamiamy naciskając równocześnie Shift+Enter:
Pomoc uzyskujemy wstawiając pytajnik (?) przed nazwą polecenia:
Naciskając strzałkę >> wchodzimy w pełną dokumentację polecenia. Inne sposób to wybranie z menu Help->DocumentationCenter. Dokumentacja jest też dostępna w internecie pod adresem reference.wolfram.com
Zmienne pozwalają przechowywać różne wyniki i dane pod dogodnymi nazwami. Np. lista związków powyżej jest bardzo długa i jej przeglądanie jest mozolnym zadaniem. Aby nie zapychać ekranu i nie doprowadzić do zawieszenia się komputera w przypadku bardzo dużych zbiorów symboli, Mathematica automatycznie skraca listę wyników (patrz wyżej, spróbuj nacisnąć np. ShowMore). Jako przykład zapiszemy listę związków chemicznych pod zmienną o nazwie chem:
Aby uniknąć wyświetlania dużych zbiorów na ekranie dodajemy na końcu wiersza średnik. Lista związków z bazy danych jest wczytana i zapisana, ale nie jest wyświetlana na ekranie:
Pod zmienną o nazwie chem zapisana jest lista nazw związków chemicznych. Lista jest jedną z podstawowych struktur używanych w Mathematice . Może one być wynikiem działania pewnych funkcji (np. ChemicalData[] w przykładzie powyżej produkuje listę), lub może być wprowadzona ręcznie, za pomocą nawiasów wąsatych { } i przecinków :
Aby ,,wyjąć’’ z listy pojedynczy jej element, używamy podwójnych nawiasów kwadratowych [[ ]]. Na przykład pierwszy element, o numerze 1:
Element o numerze 2:
Element ostatni na liście, ujemne indeksy pozwalają na odczytywanie list w odwrotnym kierunku:
Inny sposób na wybranie elementu pierwszego (First) lub ostatniego (Last):
Lub inaczej:
W ten sposób (dwa średniki ;;) wybieramy z listy elementy o numerach od 10 do 20:
Długość listy sprawdzamy poleceniem Length:
W przypadku list o bardziej skomplikowanej strukturze nalezy uzyć w tym celu Dimensions:
Zwróćmy uwagę na istotny fakt, iż powyżej wynikiem działania jest lista wymiarów (w tym przypadku jednoelementowa). Dlatego ilość elementów listy jest równa n, gdzie:
Własności dostępne w bazie danych wypisujemy (do listy) używając argumentu ”Properties”:
Listę własności wygodnie jest zapisać do zmiennej, np. o nazwie w. Na końcu stawiam średnik, gdyż lista została już wyświetlona powyżej:
Teraz jesteśmy przygotowani, aby uzyskać informację na temat własności o numerze powiedzmy 21 dla związku o numerze 26:
Powyżej uzyskaliśmy informację, że gęstość (Density) wody (Water) wynosi 1000 Operacje podobne do powyższej można zautomatyzować poleceniami Table lub Manipulate. Np. chcemy poznać gęstość co setnego związku z bazy banych, zaczynając od pierwszego (przypominam, że n to liczba wszystkich związków w bazie):
Polecenie Manipulate robi prawie to samo, ale w sposób interaktywny:
Nieco bardziej elegancki, ale też nieco złożony przykład:
Związek chemiczny | Wzór strukturalny | |
LiquidHydrogen | 70.8 | |
DeuteriumHydride | 0.123. | |
Helium | 0.1785. | |
Deuterium | 0.164. | |
Lithium | 534. | |
LithiumDeuteride | Missing[NotAvailable] | |
Boron | 2340. | |
Diamond | 3500. | |
Graphite | Missing[NotAvailable] | |
LiquidMethane | 422.4 | |
Ammonia | 0.696. | |
MethaneD1 | Missing[NotAvailable] | |
Ice | 916.7 | |
Ammonia15N1 | 814. | |
MethaneD3 | Missing[NotAvailable] |
To samo, ale z użyciem Manipulate:
Przydatne polecenie to Position, które wskazuje nan jakiej pozycji listy znajdyje się dany element”
Dla zachęty do dalszego studiowania możliwości Mathematici, bardziej złozony przykład: wyszukaj pozycje wszystkich związków zaczynajacych się od “Leu”:
Powyżej użyto przydatnego symbolu %, oznaczającego ostatni uzyskany wynik.
Kolejną istotną do zastosowań bioinformatycznych jest format tekstowy, czyli String. Można operować tekstem przy pomocy róznych poleceń, zwykle zaczynających się od słowa String:
Łańcuchy tekstowe sklejamy symbolem <>, konwersji na tekst dokonujemy poleceniem ToString, np:
Łańcuch tekstowy można podzielić na pojedyncze słowa poleceniem StringSplit:
W ten sposób można znaleźć pozycję na której znajduje się dana sekwencja znaków:
W ten sposób generujemy wszystkie mozliwe kombinacje trójek nukleotydów i zamieniamy “T” na “U”
Jest ich oczywiście 64:
Sklejamy znaki i otrzymujemy listę kodonów:
Pobieramy listę aminokwasów z bazy danych:
Baza danych zawiera kodony RNA:
Polecenie Flatten redukuje listy złożone do prostej:
Sprawdzamy które z elementów są na liście 1, a nie ma ich na liscie 2 poleceniem
Complement (różnica zbiorów). Wynikiem są kodony niekodujące aminokwasów, czyli “STOP”:
Wszystkich kodonów jest :
a kodujących :