Skip to content

Ella-cloud-max/ELE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  ELE Protein pow(d)er

Minor Programmeren - Universiteit van Amsterdam
Algoritmen en Heuristieken

Case

Proteïnen zijn lange strengen van aminozuren die veel belangrijke processen in het menselijk lichaam beregelen. Het is bekend dat proteïnen ‘opgevouwen’ in de lichaamscellen opgeborgen zitten, en dat de specifieke vouwing bepalend is voor het functioneren; verkeerd gevouwen proteïnen staan aan de basis van onder andere kanker, Alzheimer en taaislijmziekte. Het is daarom van groot belang voor zowel de farmaceutische industrie als de medische wetenschap om iets te kunnen zeggen over de exacte vorm van de vouwing.

Aminozuren kunnen worden ingedeeld in drie verschillende klasses Polair (P), Hydrofoob (H) en Cysteine (C). Als twee hydrofobe of cysteine aminozuren naast elkaar liggen ontstaat er een ‘H-bond’ door de aantrekkende kachten tussen de twee. En hoe meer bonds, hoe stabieler het proteïne. Voor de wetenschappers en farmaceuten is het belangrijk om te weten tot welke stabiliteit van het proteïne maximaal gevouwen zou kunnen worden. Het doel is dus de gegeven proteïnen zo op te vouwen, dat ze zo stabiel mogelijk zijn.

Om dit doel te behalen zijn er verschillende soorten algoritmes geschreven. Dit zijn random, constructieve en iteratieve algoritmes. Meer informatie over de algorithmes kan hier gevonden worden.

Score

De stabiliteits score wordt berekend door de hoeveelheid bonds die ontstaan door een vouwing te tellen. H-H en H-C bonds leveren een stabiliteits score van -1 op, terwijl C-C bonds een stabiliteits score opleveren van -5.

Gebruik

Download de nodigde python modules met onderstaand command:

 python -m pip install -r requirements.txt

Het volgende commando kan gebruikt worden om een van de algoritme te draaien

python main.py algoritme input_filename output_filename

Voor de algoritmes kan gekozen worden uit de volgende opties:

  • baseline
  • random
  • greedy
  • depth
  • breadth
  • hill_climb
  • simulated_annealing

De input files zijn csv bestanden die zich in het mapje proteins bevinden.
Een voorbeeld van een commando om een greedy algoritm te runnen op het protein in protein1.csv is als volgt.

python main.py greedy protein1 output_protein1

Visualisatie

Er zijn twee manieren om het opgevouwen proteïne te visualiseren. Het proteine kan in de terminal geprint worden, of opgeslagen in een png bestand.

Terminal
Om de visualisatie in de terminal te printen kan het onderstaand command gebruiken. Het output bestand moet in het csv formaat opgeslagen liggen in de output folder.

python code/visualisation/visualisation.py example_output


Bestand
Gebruik het onderstaande command om de visualisatie op te slaan als een png bestand. Het plaatje wordt als een png bestand opgeslagen in het mapje output/visualisation.

python code/visualisation/plot.py example_output visualisation_output_file

Experiment

Om een experiment te runnen gebruik het volgende command:

python experiment.py algoritme input_filename

Voor 100 seconden wordt het algoritm zo vaak als mogelijk is gedraaid. Een lijst met alle uitkomsten wordt in het bestand experiment_algoritme_input_filename.csv opgeslagen in het mapje output/experiment. Een histogram van de output wordt in het bestand histogram_algoritme_input_filename.png opgeslagen in het zelfde mapje.

Structuur

/code: alle code geschreven tijdens dit project
/code/classes: bevat de benodigde classes voor dit project
/code/algorithms: bevat de code voor algoritmes
/code/visualisation: bevat de code voor de visualisaties
/docs: bestanden gemaakt tijdens dit bestanden
/proteins: bevat alle input bestanden met proteinen
/output: bevat alle outputs
/output/experiment: bevat alle outputs van de experimenten
/output/visualisation: bevat alle visualisations van de outputs

Auteurs

Ella van Loenen
Liesbet Ooghe
Eric van Huizen

About

Minor Programmeren

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages