Molekylvisualisering#

Egenskapene til biologiske makromolekyler er i stor grad avhengig av formen til molekylene. Derfor er det veldig nyttig å kunne visualisere molekylene. Her skal vi se på to biblioteker som kan visualisere molekyler i Juypyter Notebook.

Visualisering med py3Dmol#

Det første biblioteket vi skal se på, er Py3Dmol. Her kan du hente opp molekyler fra to store databaser: PDB (Protein Data Bank) og PubChem. For å importere en struktur bruker du kommandoen view og setter parameteren query til enten ‘cid’ for PubChem eller ‘pdb’ for PDB. Du kan også angi filnavnet til en lokal pdb-fil på datamaskinen din, dersom du ønsker det. På PubChem kan du søke etter et molekyl og finne ID-en til dette molekylet (PubChem CID). I PDB starter alle søkeresultater med PDB-ID-en. I eksempelet nedenfor henter vi opp ibuprofen fra PubChem og enzymet RNA-polymerase i initiell transkripsjon (med en bit av et DNA-molekyl). Se om du kan finne de samme molekylene i de to databasene.

import py3Dmol

ibuprofen = py3Dmol.view(query='cid:3672')
rna_polymerase = py3Dmol.view(query='pdb:5IYC')

Når vi har hentet strukturene, kan vi spesifisere hva slags stil vi ønsker på molekylene med :setStyle_. Som argument kan du benytte en dictionary med én av følgende nøkler:

  • ‘line’

  • ‘cross’

  • ‘cartoon’

  • ‘stick’

  • ‘sphere’

Verdien til nøkkelen kan også være nok en dictionary (nøstede dictionaries), med for eksempel \lstinline{‘color’} som en ny nøkkel. Det finnes mange ulike fargeverdier, men ‘spectrum’ gir ofte fine figurer.

Når du har bestemt deg for alt dette, får du en figur du kan rotere og zoome inn og ut på.

ibuprofen.setStyle({'stick': {'color':'spectrum'}})

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol

<py3Dmol.view at 0x7fc361bca340>
rna_polymerase.setStyle({'cartoon': {'color':'spectrum'}})

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol

<py3Dmol.view at 0x7fc361bca760>

Vi kan også beregne og tegne elektrontettheten til ulike molekyler. Dette gjøres med addSurface, som vist nedenfor. ‘VDW’ står for van der Waals-krefter, som overflatemodellene tar utgangspunkt i. Du kan modifisere fargene og utseendet til overflaten etter behov. Et veldig vanlig fargespekter er en gradvis overgang (‘gradient’) mellom rødt, hvitt og blått (‘rwb’), der rødt er elektronrike områder, og blått er elektronfattige. Følgende kode viser elektrontettheten til esteren metylbutanat (søk: methyl butanoate i PubChem).

elektronkart = py3Dmol.view(query='cid:264')
elektronkart.setStyle({'stick': {'color':'spectrum'}})
elektronkart.addSurface('VDW',{'opacity':0.6, 'colorscheme':{'gradient':'rwb'}})

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol

<py3Dmol.view at 0x7fc3618c2a60>

Vi kan også visualisere \(\alpha\)-helikser som rør (tubes) og \(\beta\)-plater som piler:

view = py3Dmol.view(query='pdb:4KQA')
view.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'color':'spectrum'}})
view.show()

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol

Nglview#

Nglview er et bibliotek med mye av den samme funksjonaliteten som py3Dmol, men den kan i tillegg visualisere dynamiske simuleringer. Vi skal derfor raskt se på hvordan vi kan visualisere ved hjelp av dette biblioteket også.

import nglview as nv

protein = nv.show_pdbid("3LPO")
protein

Biblioteket viser også automatisk kofaktorer og hemmere, dersom de er inkludert i pdb-fila. Vi kan også legge til overflater og andre modeller (som kule-pinnemodell):

protein.add_surface(selection="Ala", opacity=0.3)
protein.add_licorice("TRP")
protein.clear_representations()
protein.add_representation(repr_type="ball-stick")
protein