.prmtop
(wartość w polu Determine file type powinna się automatycznie
ustawić na AMBER7 Parm) i kliknij w przycisk
Load.nc
(typ pliku powinien zostać rozpoznany jaki NetCDF
(Amber, MMTK)), kliknij w przycisk Load i zaobserwuj w
oknie VMD OpenGL Display wczytywane na bieżąco ramkinucleic
ResName
NewCartoon
Wczytanie topologii i trajektorii:
from MDAnalysis.core.universe import Universe
= ... # ścieżka do pliku z topologią
topology = ... # ścieżka do pliku z trajektorią
trajectory = Universe(topology, trajectory) u
Pole u.atoms
zawiera wszystkie atomy widziane jako
obiekt klasy AtomGroup
Dowolny wybór atomów np. u.atoms[50:70]
również widziany jest jako obiekt klasy AtomGroup
Właściwość AtomGroup::residues
zwraca obiekt klasy
ResidueGroup
Właściwość ResidueGroup::atoms
zwraca wszystkie
atomy należące do reszty, zatem operacja
u.atoms[0:1].residues.atoms
zwróci wszystkie atomy z
reszty, do której należy pierwszy atom
Właściwości ResidueGroup::resnames
i
ResidueGroup::resids
zwracają informację o nazwach i
numerach reszt opisywanych przez obiekt
Zarówno AtomGroup
jak i ResidueGroup
posiadają wiele użytecznych metod np.:
Universe
lub AtomGroup
posiadają metodę select_atoms
zwracającą
AtomGroup
and
, or
,
not
u.select_atoms('nucleic').residues.resnames
pokaże nazwy
reszt kwasów nukleinowych (ale uwaga - reszty kwasów nukleinowych
rozpoznawane są wg listy predefiniowanych nazw)u.select_atoms("byres name C4'").residues.resnames
(atom
C4’ występuje kwasach nukleinowych)u.select_atoms("not resname WAT and (not byres name C4')")
Każda ramka trajektorii zawiera współrzędne wszystkich atomów w kolejnych krokach symulacji
W MDAnalysis każda iteracja po Universe::trajectory
wpływa na zmianę wszystkich współrzędnych, a więc i wyliczanych z nich
wartości
print(u.angles[0].value()) # wartość kąta w ramce 0
next(u.trajectory)
print(u.angles[0].value()) # wartość kąta w ramce 1
Ogólny schemat analizy trajektorii wygląda tak:
= []
features for ts in u.trajectory:
= ts.frame # numer ramki
frame = u.trajectory.time # punkt czasowy danej ramki
time
# wyznacz wartość w aktualnej ramce
features.append(...) # agreguj wyniki cząstkowe ...
W pakiecie MDAnalysis.analysis
znajduje się wiele
interesujących funkcji np. do wyznaczania wartości RMSD:
= u.select_atoms('resid 1')
r1 = r1.positions
A -1] # wybierz ostatnią ramkę
u.trajectory[= r1.positions
B print(MDAnalysis.analysis.rms.rmsd(A, B))
Przygotuj wykresy pokazujące wartość promienia bezwładności i
RMSD (względem współrzędnych z pierwszej ramki) dla struktury RNA w
każdej trajektorii (ocena 3.0)
Przyjrzyj się symulacji zapisanej jako pz31.nc
.
Niektóre nukleotydy są wybrzuszone, więc podczas symulacji są bardziej
elastyczne.
Przeanalizuj ułożenie zasady azotowej dla nukleotydu o numerze 46.
Wykorzystaj wartość kąta torsyjnego \chi zdefiniowanego dla puryn jako
O4’-C1’-N9-C4. Przygotuj histogram wartości tego kąta w trajektorii
(ocena 4.0)
Uwaga! MDAnalysis pozwala wyliczyć wartość kąta torsyjnego opisanego
przez AtomGroup
złożony z czterech atomów. Jednak bardzo
ważna jest kolejność atomów, a zaznaczając całą czwórkę jednym
wywołaniem select_atoms
możemy otrzymać selekcję w dowolnej
kolejności. Dlatego w przypadku kątów torsyjnych, należy
AtomGroup
stworzyć z połączenia czterech jednoatomowych
AtomGroup
W trajektorii 6GE1 mamy do czynienia z kwadrupleksem. To
czteroniciowy motyw, który najczęściej tworzą guaniny. Cztery zasady
azotowe tworzą tetradę dzięki niekanonicznym wiązaniom cis
Watson-Crick Hoogsteen. W idealnej tetradzie atomy tworzące cztery
zasady azotowe leżą na jednej płaszczyźnie, jednak w rzeczywistych
strukturach występują lokalne zaburzenia. Można je zmierzyć przy pomocy
parametru planarity deviation. W tym celu należy dla tetrady
wyznaczyć geometryczny środek atomów N9 oraz geometryczny środek atomów
C6. Wartością planarity deviation jest odległość między tymi
punktami.
Przygotuj wykres pokazujący wartość planarity deviation
zmieniającą się w czasie dla tetrady złożonej z reszt o numerach 2, 9,
16, 23 (ocena 5.0)
Do wyznaczenia geometrycznego środka można użyć
AtomGroup::center_of_geometry()
, które zwraca współrzędne
X, Y, Z punktu.