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:

ChemicalData[]

Pomoc uzyskujemy wstawiając pytajnik (?) przed nazwą polecenia:

?ChemicalData

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:

chem=ChemicalData[]

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:

chem=ChemicalData[];

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 :

lista={"Ania", "CCGTAAACAA", 120, π, "CCC"->"Pro"}

Aby ,,wyjąć’’ z listy pojedynczy jej element, używamy podwójnych nawiasów kwadratowych [[ ]]. Na przykład pierwszy element, o numerze 1:

lista[[1]]

chem[[1]]

Element o numerze 2:

chem[[2]]

lista[[2]]

Element ostatni na liście, ujemne indeksy pozwalają na odczytywanie list w odwrotnym kierunku:

lista[[-1]]

chem[[-1]]

Inny sposób na wybranie elementu pierwszego (First) lub ostatniego (Last):

Last[lista]

First[lista]

Lub inaczej:

lista//First

chem//Last

W ten sposób (dwa średniki ;;) wybieramy z listy elementy o numerach od 10 do 20:

chem[[10;;20]]

Długość listy sprawdzamy poleceniem Length:

Length[chem]

W przypadku list o bardziej skomplikowanej strukturze nalezy uzyć w tym celu Dimensions:

Dimensions[chem]

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:

n=Dimensions[chem][[1]]

Własności dostępne w bazie danych wypisujemy (do listy) używając argumentu ”Properties”:

ChemicalData["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:

w=ChemicalData["Properties"];

Teraz jesteśmy przygotowani, aby uzyskać informację na temat własności o numerze powiedzmy 21 dla związku o numerze 26:

ChemicalData[chem[[26]],w[[21]]]

chem[[26]]

w[[21]]

Powyżej uzyskaliśmy informację, że gęstość (Density) wody (Water) wynosi 1000 (kg/(m^3)). 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):

Table[ChemicalData[chem[[i]],"Density"],{i,1,n,1000}]

Polecenie Manipulate robi prawie to samo, ale w sposób interaktywny:

Manipulate[ChemicalData[chem[[i]],"Density"],{i,1,n,1000}]

Nieco bardziej elegancki, ale też nieco złożony przykład:

Join[{{"Związek chemiczny", "Gęstość [kg/(m^3)]","Wzór strukturalny"}},Table[{chem[[i]],ChemicalData[chem[[i]],"Density"],ChemicalData[chem[[i]],"ColorStructureDiagram"]},{i,1,30,2}]]//TableForm

To samo, ale z użyciem Manipulate:

Manipulate[{chem[[i]],ChemicalData[chem[[i]],"Density"],ChemicalData[chem[[i]],"ColorStructureDiagram"]},{i,1,30,2}]

Przydatne polecenie to Position, które wskazuje nan jakiej pozycji listy znajdyje się dany element”

Position[chem,"Water"]

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”:

Position[chem,q_/;(StringTake[q,{1,3}]=="Leu")] (* Znajdź pozycje takich elementów listy q, gdzie pierwsze trzy znaki z q (StringTake) są równe (==) "Leu" *)

Flatten[%]

chem[[%[[-1]]]]

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:

?String*

Łańcuchy tekstowe sklejamy symbolem <>, konwersji na tekst dokonujemy poleceniem ToString, np:

chem[[26]]<>": "<>w[[21]]<>"="<>ToString[ChemicalData[chem[[26]],w[[21]]]]

Łańcuch tekstowy można podzielić na pojedyncze słowa poleceniem StringSplit:

StringSplit["Andrzej Odrzywołek" ]

W ten sposób można znaleźć pozycję na której znajduje się dana sekwencja znaków:

StringPosition["CGTACCCTATAATAGTTTGTTGGGGGAAAGAAGCCC","CCC"]

W ten sposób generujemy wszystkie mozliwe kombinacje trójek nukleotydów i zamieniamy “T” na “U”

trojki=Tuples[{"A", "C", "G", "T"},3]/."T"->"U"

Jest ich oczywiście 64:

num=Dimensions[trojki]//First

Sklejamy znaki i otrzymujemy listę kodonów:

kodony1=Table[StringJoin[trojki[[i]]],{i,1,64}]

Pobieramy listę aminokwasów z bazy danych:

amino=ChemicalData["AminoAcids"]

Baza danych zawiera kodony RNA:

Table[ChemicalData[amino[[i]],"Codons"],{i,1,20}]

Polecenie Flatten redukuje listy złożone do prostej:

kodony2=Flatten[%]

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”:

Complement[kodony1,kodony2]

Wszystkich kodonów jest :

Length[kodony1]

a kodujących :

Length[kodony2]