DNA-sekvensering

<img style="float: right;" src="DNA_animation.gif"> <div class="alert alert-block alert-success">

Her skal vi se på DNA-koden og hvordan den brukes til å lage proteiner. Totalt har mennesket nesten 100 000 000 000 000 (101410^{14}) celler i kroppen som hver inneholder en DNA-tråd.

</div>

Innhold

Bakgrunn

DNA (deoksyribonukleinsyre) inneholder en enorm mengde informasjon. Mestparten av DNAet ligger i cellekjernen, men det er noe DNA som ligger i mitokondriene. Dette DNAet kalles mitokondrie-DNA. DNAet i cellekjernen er kveilet opp rundt proteiner kalt histoner. Denne oppkveilingen kaller vi for et kromosom. Kromosomer har vi mulighet til å se gjennom et mikroskop. Totalt har mennesker 46 kromsomer i (nesten) alle celler.

DNA-molekylene består totalt av 3 millioner baser som er koblet sammen med et skjelett av sukkermolekyler og fosfatmolekyler. Skjelettet former DNA-molekylet til en dobbel heliks. Deler av DNA-molekylene danner gener, som er oppskrifter på proteiner

En viktig egenskap med DNA er at det kan kopiere seg selv. Det er viktig når celler skal dele seg. I tillegg kan det kopiere deler av seg selv for produksjon av proteiner.

<div class="alert alert-block alert-info">

Oppgave 1

I hvilke celler er det ikke 48 kromosomer? Hvorfor?

Hva er et gen?

</div>

DNA-koden

<img style="float: right;" src="DNA_baser.png" width="600">

DNA-koden inneholder 4 baser, adenin (AA), tymin (TT), cytosin (CC), og guanin (GG). Disse er koblet sammen i par, der AA og TT er et par og CC og GG er det andre paret. De kan ikke danne andre par enn dette. Dette gjør at hvis vi kjenner den ene delen av en DNA-tråd kan vi lage den andre delen ved å følge denne regelen.

<div class="alert alert-block alert-success">

Totalt består DNA av over 3 millioner slike basepar, og hvis vi hadde strukket ut DNA-molekylet fra en celle ville det blitt ca 2 meter langt. Hadde vi strukket ut alt DNA i kroppen vår ville det blitt dobbelt så langt som solsystemet vårt. I tillegg vil et DNAet i en celle inneholde tilsvarende ca 1.5 GB med data.

</div>

DNA inneholder all informasjon som skal til for å opprettholde og bygge kroppen vår. Vi skal her se på hvordan DNA klarer dette gjennom blant annet kopiering og proteinsyntesen.

<div class="alert alert-block alert-info">

Oppgave 2

Vi vet at den ene DNA-tråden vår har basekoden:

A A C T G A T C G G A T C C T AA ~ A ~ C ~ T ~ G ~ A ~ T ~ C ~ G ~ G ~ A ~ T ~ C ~ C ~ T ~ A

Hva er er den tilsvarende basekoden på den andre DNA-tråden?

</div>

Basekode en tråd fra en annen

Vi skal nå lage et program som tar inn en del av DNA-tråden og vil skrive ut den andre tilhørende tråden.

<div class="alert alert-block alert-info">

Oppgave 3

Diskuter med sidemannen hva denne programmeringskoden må gjøre. Hva tar programmet inn, hva gjør programmet, og hva gir programmet ut tilslutt?

</div>
<div class="alert alert-block alert-success">

Vi starter med å lage en programmeringskode som tar inn basekoden fra brukeren og deretter splitter opp basekoden med kommandoen list(). Denne kommandoen tar inn en streng (tekst, for eksempel AATGTA) og splitter den opp til sine enkelte tegn (bokstaver, A A T G T A).

DNA = input("Skriv inn en DNA-kode (A, T, C, G): ")

DNA = list(DNA)
</div>
<div class="alert alert-block alert-success">

Vi må gå gjennom alle bitene av basekoden og bytte dem ut med det tilhørende baseparet. Dette gjør vi med en for-løkke som går gjennom alle basene. Vi avbryter løkken med break hvis noen har skrevet inn en gal base.

for i in range(len(DNA)):
    if DNA[i] == 'A':
        DNA[i] = 'T'
    elif DNA[i] == 'T':
        DNA[i] = 'A'
    elif DNA[i] == 'C':
        DNA[i] = 'G'
    elif DNA[i] == 'G':
        DNA[i] = 'C'
    else:
        print("DNA-koden inneholder noen ikke-gyldige baser")
        break
</div>
<div class="alert alert-block alert-success">

Tilslutt setter vi sammen bokstavene vår til en basekode igjen med kommandoen join.

DNA = ''.join(DNA)
print(DNA)
</div>

Hele programmeringskoden blir da:

[26]: 
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DNA = input("Skriv inn en DNA-kode (A, T, C, G): ")

DNA = list(DNA)

for i in range(len(DNA)):
    if DNA[i] == 'A':
        DNA[i] = 'T'
    elif DNA[i] == 'T':
        DNA[i] = 'A'
    elif DNA[i] == 'C':
        DNA[i] = 'G'
    elif DNA[i] == 'G':
        DNA[i] = 'C'
    else:
        print("DNA-koden inneholder noen ikke-gyldige baser")
        break

DNA = ''.join(DNA)
print(DNA)
Skriv inn en DNA-kode (A, T, C, G): ATCGCCTAGGA
TAGCGGATCCT
<div class="alert alert-block alert-info">

Oppgave 4

Test programmet for flere varianter av DNA-koder. Fungerer programmet alltid?

</div>

Transkripsjon av DNA-kode

<img style="float: right;" src="Transkripsjon.png">

DNA-koden inneholder oppskriften på en mengde proteiner som styrer alt fra farge på øyne, blodceller til hormoner osv. Siden DNA-koden er så viktig for oss ligger den inne i cellekjernen i alle cellene våre. Der ligger den godt beskyttet med en ekstra membran rundt seg. Organellene som setter sammen aminosyrer til proteiner heter ribosomer og ligger utenfor cellekjernen. Vi må dermed få informasjonen som er i DNA-molekylet ut til ribosomet. Vi kunne tenkt oss at DNA kan gå ut av cellekjernen, men da blir det utsatt for kjemiske endringer fra for eksmpel frie radikaler. Dette kan endre/skade DNAet og gjøre at cellene ikke klarer å produsere proteiner. Det er for risikabelt, så kroppen har en bedre løsning.

I cellekjernene lages en kopi av den ene DNA-tråden gjennom transkripsjon. DNA-heliksen blir først åpnet opp, deretter kopieres et gen fra den ene tråden, før DNA-heliksen lukkes igjen. Den kopierte tråden kaller vi m-RNA (messenger-RNA). I kopieringen til m-RNA erstattes tymin (TT) med urasil (UU).

<div class="alert alert-block alert-info">

Oppgave 5

Bruk internett til å undersøke hvorfor m-RNA inneholder Urasil istedenfor Tymin.

</div>
<div class="alert alert-block alert-info">

Oppgave 6

Under er programmet vi brukte for å kopiere en DNA-tråd. Endre på programmet slik at det isteden skriver ut m-RNA som blir dannet fra DNA-sekvensen vi skriver inn.

</div>
[27]: 
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DNA = input("Skriv inn en DNA-kode: ")

DNA = list(DNA)

for i in range(len(DNA)):
    if DNA[i] == 'A':
        DNA[i] = 'U'
    elif DNA[i] == 'T':
        DNA[i] = 'A'
    elif DNA[i] == 'C':
        DNA[i] = 'G'
    elif DNA[i] == 'G':
        DNA[i] = 'C'
    else:
        print("DNA-koden inneholder noen ikke-gyldige baser")
        break     

mRNA = ''.join(DNA)
print(mRNA)
Skriv inn en DNA-kode: AGTTCCGAA
UCAAGGCUU

Tripletter (kodon)

Proteiner består av en rekke aminosyrer, så for å lage et protein må m-RNA kode for rekkefølgen på disse aminosyrene. Vi har totalt 20 aminosyrer, så vi trenger nok bokstaver til å kunne klare å kode for 20 forskjellige aminosyrer. Hvis vi bruker én base har vi kun 4 muligheter:

  • A
  • T
  • G
  • C

Dette er ikke nok for å kode for 20 forskjellige aminosyrer.

<div class="alert alert-block alert-info">

Oppgave 7

Hvor mange muligheter har vi hvis vi bruker to baser?

<div class="alert alert-block alert-success">

For tre basepar øker antall muligheter. Her bruker vi litt kombinatorikk fra matematikken for å vise antall muligheter. For første base har vi 4 muligheter, for andre har vi 4 muligheter og for siste har vi 4 muligheter. Totalt har vi da

444=64 4\cdot 4\cdot 4 = 64

muligheter.

</div>

Hvis dere ikke er overbevist kan vi lage et kort program som viser alle mulighetene.

[1]: 
1 
2
3
4
5
6
7
8
9
10
11
from pylab import *

baser = ['A', 'T', 'C', 'G']
indeks = 1
for i in range(4):
    for j in range(4):
        for k in range(4):
            kodon = baser[i] + baser[j] + baser[k]
            print(indeks, ''.join(kodon))
            indeks = indeks + 1
            
1 AAA
2 AAT
3 AAC
4 AAG
5 ATA
6 ATT
7 ATC
8 ATG
9 ACA
10 ACT
11 ACC
12 ACG
13 AGA
14 AGT
15 AGC
16 AGG
17 TAA
18 TAT
19 TAC
20 TAG
21 TTA
22 TTT
23 TTC
24 TTG
25 TCA
26 TCT
27 TCC
28 TCG
29 TGA
30 TGT
31 TGC
32 TGG
33 CAA
34 CAT
35 CAC
36 CAG
37 CTA
38 CTT
39 CTC
40 CTG
41 CCA
42 CCT
43 CCC
44 CCG
45 CGA
46 CGT
47 CGC
48 CGG
49 GAA
50 GAT
51 GAC
52 GAG
53 GTA
54 GTT
55 GTC
56 GTG
57 GCA
58 GCT
59 GCC
60 GCG
61 GGA
62 GGT
63 GGC
64 GGG

m-RNA bruker en sekvens av 3 baser for å kode for en aminosyre, vi kaller en slik triplett for et kodon. Siden vi har 64 varianter med 3 baser og kun 20 aminosyrer, er det en del basekombinasjoner som må enten kode for samme aminosyre eller være overflødige. Det viser seg at det ikke er noen overflødige kombinasjoner, men at flere kodoner kan kode for samme aminosyre.

Tripletter til aminosyrer

<div class="alert alert-block alert-info"> <img style="float: right;" src="Aminosyrer.png" width="400">

Oppgave 8

Klikk her for å se hvilke kombinasjoner som gir hvilke aminosyrer. En oppsummering er gitt i figuren til høyre <br><br>

a) Hvilke amonisyrer koder sekvensen G A T T A C A T TG~A~T~T~A~C~A~T~T for? <br><br>

I tabellen ser vi at AUGAUG er et start-kodon, og UAAUAA, UAGUAG, UGAUGA er stopp-kodoner.

b) Hva er et start- og stopp-kodon? <br><br>

Av figuren til høyre ser vi at AUGAUG koder for aminosyren metionin.

c) Hvordan kan vi kode for aminosyren metionin når AUGAUG også er startkodonet?

<br><br><br><br><br><br>

</div>

I programbiten under har vi laget en tabell som linker et kodon til bokstaven for aminosyren i figuren over.

[2]: 
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mRNA_til_aminosyre = { 
        'AUA':'I', 'AUC':'I', 'AUU':'I', 'AUG':'M', 
        'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACU':'T', 
        'AAC':'N', 'AAU':'N', 'AAA':'K', 'AAG':'K', 
        'AGC':'S', 'AGU':'S', 'AGA':'R', 'AGG':'R',
        'CUA':'L', 'CUC':'L', 'CUG':'L', 'CUU':'L', 
        'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCU':'P', 
        'CAC':'H', 'CAU':'H', 'CAA':'Q', 'CAG':'Q', 
        'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGU':'R', 
        'GUA':'V', 'GUC':'V', 'GUG':'V', 'GUU':'V', 
        'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCU':'A', 
        'GAC':'D', 'GAU':'D', 'GAA':'E', 'GAG':'E', 
        'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGU':'G', 
        'UCA':'S', 'UCC':'S', 'UCG':'S', 'UCU':'S', 
        'UUC':'F', 'UUU':'F', 'UUA':'L', 'UUG':'L', 
        'UAC':'Y', 'UAU':'Y', 'UAA':'_', 'UAG':'_', 
        'UGC':'C', 'UGU':'C', 'UGA':'_', 'UGG':'W', 
    }

I programbiten under oversetter vi en m-RNA sekvens til en aminosyresekvens (et protein).

[3]: 
1 
2
3
4
5
6
7
8
9
10
11
12
13
m_RNA = 'GCACUUCUUGAGUAAUUAAUUAAAGAGCGUUAACUUGCAUAAUCUACAGCAGCA'
m_RNA = list(m_RNA)
m_RNA_kodon = []
Protein = []
N = int(len(m_RNA)/3)

for i in range(1, N+1):
    kodon = ''.join(m_RNA[3*i-3] + m_RNA[3*i-2] + m_RNA[3*i-1])
    Protein.append(mRNA_til_aminosyre[kodon])
    m_RNA_kodon.append(kodon)

print(m_RNA_kodon)
print(''.join(Protein))
['GCA', 'CUU', 'CUU', 'GAG', 'UAA', 'UUA', 'AUU', 'AAA', 'GAG', 'CGU', 'UAA', 'CUU', 'GCA', 'UAA', 'UCU', 'ACA', 'GCA', 'GCA']
ALLE.LIKER.LA.STAA
<div class="alert alert-block alert-info">

Oppgave 9

Oversett følgende m_RNA-sekvens til en proteinsekvens

GCACUUCUUGAGUAAUUAAUUAAAGAGCGUUAACUUGCAUAAUCUACAGCAGCAGCACUUCUUGAGUAAUUAAUUAAAGAGCGUUAACUUGCAUAAUCUACAGCAGCA

Lag deretter din egen m_RNA-kode som gir et ord eller en setning. Bruk figuren over til å gjøre dette.

</div>

I programbiten under har vi laget en tabell som linker bokstaven for aminosyre til navnet på aminosyren.

[30]: 
1 
2
3
4
5
6
7
8
bokstav_til_aminosyre = { 
        'F':'Phenylalanin', 'L':'Leucin',    'I':'Isoleucin',  'M':'Metionin', 
        'V':'Valin',        'S':'Serin',     'P':'Prolin',     'T':'Threonin', 
        'A':'Alanin',       'Y':'Tyrosin',   'G':'Glycin',     'H':'Histidin', 
        'Q':'Glutamin',     'N':'Asparagin', 'L':'Lysin',      'D':'Asparginsyre',
        'E':'Glutaminsyre', 'C':'Cystein',   'W':'Tryptophan', 'R':'Arginin', 
        '_':'Stop',
    }

I programbiten under oversetter vi en m-RNA sekvens til en aminosyresekvens (et protein) og skriver ut det fulle navnet på alle aminosyrene i sekvensen.

[31]: 
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
m_RNA = 'AUGCGGGAUCUUAGGAAUAUAGGCCUCAGCAUCUAA'
m_RNA = list(m_RNA)
m_RNA_kodon = []
sekvens = []
aminosyrer = []
N = int(len(m_RNA)/3)

for i in range(1, N+1):
    kodon = ''.join(m_RNA[3*i-3] + m_RNA[3*i-2] + m_RNA[3*i-1])
    aminosyre = mRNA_til_aminosyre[kodon]
    sekvens.append(aminosyre)
    aminosyrer.append(bokstav_til_aminosyre[aminosyre])
    m_RNA_kodon.append(kodon)

protein = ''.join(sekvens)
print(m_RNA_kodon)
print(protein)
print(' '.join(aminosyrer))
['AUG', 'CGG', 'GAU', 'CUU', 'AGG', 'AAU', 'AUA', 'GGC', 'CUC', 'AGC', 'AUC', 'UAA']
MRDLRNIGLSI_
Metionin Arginin Asparginsyre Lysin Arginin Asparagin Isoleucin Glycin Lysin Serin Isoleucin Stop

Aminosyrer til proteiner

Her henter vi inn en liste over mange kjente proteiner i mange forskjellige arter. Listen heter pdb_seqres.txt og er hentet herifra. Filen er ganske stor fordi den inneholder 1 084 918 proteiner. Hvis du kjører koden under vises de første 15 proteinene. Resten av koden her er litt tuklete siden filen som inneholder proteinene er formatert litt komplisert.

[32]: 
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pandas as pd

with open('pdb_seqres.txt', 'r') as f:
    lines = f.readlines()

data = {'kode': [], 'ant_aminosyrer': [], 'navn': [], 'aminosyresekvens': []} # Opprette dictionary som skal fylles inn
for i in range(0, len(lines), 2):                     # Løkker over annenhver linje siden sekvensene er på egne linjer
    line1 = lines[i].split('  ')                      # Splitt først på dobbelt mellomrom
    line2 = line1[0].split()                          # Splitt på enkeltmellomrom
    data['kode'].append(line2[0][1:])
    data['ant_aminosyrer'].append(int(line2[-1].split(':')[-1]))
    data['navn'].append(line1[-1].strip())
    data['aminosyresekvens'].append(lines[i+1].strip())
    

df = pd.DataFrame(data)                               # Gjøre om dataene til en pandas dataframe
print(df.head(15))                                    # Inspisere de 15 første radene
      kode  ant_aminosyrer         navn  \
0   101m_A             154    MYOGLOBIN   
1   102l_A             165  T4 LYSOZYME   
2   102m_A             154    MYOGLOBIN   
3   103l_A             167  T4 LYSOZYME   
4   103m_A             154    MYOGLOBIN   
5   104l_A             166  T4 LYSOZYME   
6   104l_B             166  T4 LYSOZYME   
7   104m_A             153    MYOGLOBIN   
8   105m_A             153    MYOGLOBIN   
9   106m_A             154    MYOGLOBIN   
10  107l_A             164  T4 LYSOZYME   
11  107m_A             154    MYOGLOBIN   
12  108l_A             164  T4 LYSOZYME   
13  108m_A             154    MYOGLOBIN   
14  109l_A             164  T4 LYSOZYME   

                                     aminosyresekvens  
0   MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDR...  
1   MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAAKSE...  
2   MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDR...  
3   MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNSLDAAK...  
4   MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDR...  
5   MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKSAA...  
6   MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKSAA...  
7   VLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDRF...  
8   VLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDRF...  
9   MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDR...  
10  MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKGEL...  
11  MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDR...  
12  MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKIEL...  
13  MVLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDR...  
14  MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKKEL...  

Skal nå finne sekvensen du lagde i forrige oppgave i denne filen.

[33]: 
1 
2
3
4
5
6
7
8
9
10
protein_start = 'MVLSEGEW'          # Her skriver du inn aminosyresekvensen 
treff = []
print(protein_start)
aminosyresekvens = list(data["aminosyresekvens"])
navn = list(data["navn"])
kode = list(data["kode"])
for i in range(len(aminosyresekvens)):
    if aminosyresekvens[i].startswith(protein_start):
        treff.append(i)
        print(kode[i], navn[i])
MVLSEGEW
101m_A MYOGLOBIN
102m_A MYOGLOBIN
103m_A MYOGLOBIN
106m_A MYOGLOBIN
107m_A MYOGLOBIN
108m_A MYOGLOBIN
109m_A MYOGLOBIN
110m_A MYOGLOBIN
111m_A MYOGLOBIN
112m_A MYOGLOBIN
1abs_A MYOGLOBIN
1ch1_A PROTEIN (MYOGLOBIN)
1ch2_A PROTEIN (MYOGLOBIN)
1ch3_A PROTEIN (MYOGLOBIN)
1ch5_A PROTEIN (MYOGLOBIN)
1ch7_A PROTEIN (MYOGLOBIN)
1ch9_A PROTEIN (MYOGLOBIN)
1cik_A PROTEIN (MYOGLOBIN)
1cio_A PROTEIN (MYOGLOBIN)
1co8_A PROTEIN (MYOGLOBIN)
1co9_A PROTEIN (MYOGLOBIN)
1cp0_A PROTEIN (MYOGLOBIN)
1cp5_A PROTEIN (MYOGLOBIN)
1cpw_A PROTEIN (MYOGLOBIN)
1do1_A MYOGLOBIN
1do3_A MYOGLOBIN
1do4_A MYOGLOBIN
1do7_A MYOGLOBIN
1dti_A PROTEIN (MYOGLOBIN)
1dxc_A MYOGLOBIN
1dxd_A MYOGLOBIN
1f63_A MYOGLOBIN
1f65_A MYOGLOBIN
1fcs_A MYOGLOBIN
1h1x_A MYOGLOBIN
1irc_A MYOGLOBIN (METAQUO)
1j3f_A Myoglobin
1j52_A myoglobin
1jdo_A MYOGLOBIN
1jw8_A MYOGLOBIN
1ltw_A MYOGLOBIN
1lue_A Myoglobin
1mcy_A MYOGLOBIN (CARBONMONOXY)
1mgn_A METMYOGLOBIN
1mlf_A MYOGLOBIN
1mlg_A MYOGLOBIN
1mlh_A MYOGLOBIN
1mlj_A MYOGLOBIN
1mlk_A MYOGLOBIN
1mll_A MYOGLOBIN
1mlm_A MYOGLOBIN
1mln_A MYOGLOBIN
1mlo_A MYOGLOBIN
1mlq_A MYOGLOBIN
1mlr_A MYOGLOBIN
1mls_A MYOGLOBIN
1mlu_A MYOGLOBIN
1moa_A MYOGLOBIN
1mob_A MYOGLOBIN
1moc_A MYOGLOBIN
1mod_A MYOGLOBIN
1mti_A MYOGLOBIN
1mtj_A MYOGLOBIN
1mtk_A MYOGLOBIN
1mym_A MYOGLOBIN
1myz_A Myoglobin
1mz0_A Myoglobin
1n9f_A Myoglobin
1n9h_A Myoglobin
1n9i_A Myoglobin
1n9x_A Myoglobin
1naz_A Myoglobin
1o16_A MYOGLOBIN
1obm_A MYOGLOBIN
1ofj_A MYOGLOBIN
1ofk_A MYOGLOBIN
1tes_A MYOGLOBIN
1ufj_A MYOGLOBIN
1ufp_A Myoglobin
1v9q_A Myoglobin
2e2y_A Myoglobin
2eb8_A Myoglobin
2eb9_A Myoglobin
2ef2_A Myoglobin
2g0r_A Myoglobin
2g0s_A Myoglobin
2g0v_A Myoglobin
2g0x_A Myoglobin
2g0z_A Myoglobin
2g10_A Myoglobin
2g11_A Myoglobin
2g12_A Myoglobin
2g14_A Myoglobin
2jho_A Myoglobin
2mbw_A MYOGLOBIN
2mga_A MYOGLOBIN
2mgb_A MYOGLOBIN
2mgc_A MYOGLOBIN
2mgd_A MYOGLOBIN
2mge_A MYOGLOBIN
2mgf_A MYOGLOBIN
2mgg_A MYOGLOBIN
2mgh_A MYOGLOBIN
2mgi_A MYOGLOBIN
2mgj_A MYOGLOBIN
2mgk_A MYOGLOBIN
2mgl_A MYOGLOBIN
2mgm_A MYOGLOBIN
2oh8_A Myoglobin
2oh9_A Myoglobin
2oha_A Myoglobin
2ohb_A Myoglobin
2spl_A MYOGLOBIN
2spm_A MYOGLOBIN
2spn_A MYOGLOBIN
2spo_A MYOGLOBIN
2w6w_A MYOGLOBIN
2w6x_A MYOGLOBIN
2w6y_A MYOGLOBIN
3a2g_A Myoglobin
3ase_A Myoglobin
3h57_A Myoglobin
3h58_A Myoglobin
3nml_A Myoglobin
3ogb_A Myoglobin
3sdn_A Myoglobin
3u3e_A Myoglobin
4h07_A Myoglobin
4h0b_A Myoglobin
4it8_A Myoglobin
4lpi_A Myoglobin
4nxa_A Myoglobin
4nxc_A Myoglobin
4ood_A Myoglobin
4pnj_A Myoglobin
4pq6_A Myoglobin
4pqb_A Myoglobin
4pqc_A Myoglobin
4qau_A Myoglobin
5c6y_A Myoglobin
5ile_A Myoglobin
5ilm_A Myoglobin
5ilp_A Myoglobin
5ilr_A Myoglobin
5jom_A Myoglobin
5kkk_A Myoglobin
5m3s_A Myoglobin
5o41_A Myoglobin
5oj9_A Myoglobin
5oja_A Myoglobin
5ojb_A Myoglobin
5ojc_A Myoglobin
5ut7_A Myoglobin
5ut8_A Myoglobin
5ut9_A Myoglobin
5uta_A Myoglobin
5utb_A Myoglobin
5utc_A Myoglobin
5utd_A Myoglobin
5vzn_A Myoglobin
5vzo_A Myoglobin
5vzp_A Myoglobin
5vzq_A Myoglobin
5wjk_A Myoglobin
5yce_A Myoglobin
5yzf_A sperm whale myoglobin
6bmg_A Myoglobin
6bmg_B Myoglobin
6cf0_A Myoglobin
6e02_A Myoglobin
6e03_A Myoglobin
6e04_A Myoglobin
6g5a_A Myoglobin
6g5b_A Myoglobin
6g5t_A Myoglobin
6m8f_A Myoglobin
6mv0_A Myoglobin
6n02_A Myoglobin, CO-bound
6n03_A Myoglobin, CO-bound
<div class="alert alert-block alert-success">

Når du har funnet navnet på et par proteiner kan du kan søke her etter mer info om proteinet her. https://www.rcsb.org/pages/search_features

</div>

Plotte proteiner etter antall aminosyrer (work in progress)

[35]: 
1 
2
3
4
from pylab import *

values, counts = unique((df[df["ant_aminosyrer"] <= 600]["ant_aminosyrer"]).values, return_counts = True)
bar(values, counts, width = 1.0)
[35]: 
<BarContainer object of 600 artists>

Andre bruksområde for kunnskap om DNA (work in progress)

<div class="alert alert-block alert-success">

Det er flere som nå undersøker om man kan bruke DNA til å lagre data. Med dagens teknologi kan vi lagre data sikkert i ca 20 år uten at det tar skade eller blir endret. DNA-molekylet er veldig stabilt og kan lagre data over lang tid, mer info her

Etikk og patenter på DNA

CRISPR-teknologi

</div>
<div class="alert alert-block alert-info">

Oppgave 10

Søk opp informasjon om skrap-DNA (junk-DNA).

</div>