Praten tegen computers
Computers, lijken heel ingewikkeld, maar voeren eigenlijk alleen maar hele simpele
stappen uit. Zo kan de computer een bit veranderen van 0 naar 1 of andersom en kan
die twee getallen met elkaar vergelijken. Door echter heel veel simpele stappen de
combineren, kunnen computers uiteindelijk complexe taken uitvoeren. Een computer
doet in principe alleen hetgeen wat jij hem opdraagt en hiervoor moet je een complexe
taak omzetten in kleine goed gedefinieerde stappen.
Modulaire architectuur, hierbij vorm je complexe stappen door allemaal kleine goed
werkende stappen te combineren. Dit is te vergelijken met een menselijke toren,
waarbij een individu niet zo veel uit kan voeren, maar meerdere individuen samen hoge
torens kunnen vormen. Hierbij is het van belang dat elk niveau heel erg stevig is en goed
werkt om er een niveau bovenop te krijgen en dat geldt dus ook voor de stappen in een
computer.
Utrecht Bioinformatics Center, raadt aan om met de computertalen R en python te werken.
R, is eigenlijk een venster waarin je tegen de computer praat en commando’s kan geven. Als je
bijvoorbeeld 2*3 tegen de computer zegt, zal die 6 terugzeggen. In deze samenvatting wordt de taal
van R besproken. Deze is dus niet voor alle programmeertalen hetzelfde.
Logical, 0 is FALSE en 1 is TRUE. Eigenlijk zijn alle getallen buiten 0 TRUE dus -0,00001 is ook TRUE.
Operatoren, er zijn meerdere operatoren te gebruiken in R.:
Arithmetic/rekenkundige verrichtingen:
+ hiermee tel je getallen bij elkaar op, bv 2+3=5
– hierbij trek je getallen van elkaar af, bv 6-2=4
/ hiermee deel je getallen door elkaar, bv 6/2=3
* hiermee vermenigvuldig je twee waardes met elkaar, bv 4*5=20
** of ^ hiermee kan je iets tot een macht maken, bv 3^2=9
%% hiermee wordt het restgetal aangeduid, bv 9%%5=4. Je kan 5 namelijk een keer geheel van 9
afhalen en dan houd je nog 5 over. Op delfde manier is 17%%5 gelijk aan 2.
: hiermee duid je een rij getallen aan, bv 1:5 is gelijk aan 1,2,3,4,5
Door meerdere vectoren te combineren kan je al moeilijkere stappen maken. Zo kan je 2*3:6
invoeren en dan geeft de computer [1] 6 8 10 12. De computer rekent hier dus 2*3, 2*4, 2*5 en 2*6
uit.
Simpele testen:
Dit zijn vergelijkingen en zijn dus testen tussen twee waardes.
== hiermee stel je de vraag of het een gelijk is aan het ander. Dit levert TRUE op als de waardes
gelijk zijn en FALSE als de waardes verschillend zijn. Zo zal 2==2 het antwoord [1] TRUE
opleveren.
!= hiermee stel je juist de vraag of het een niet gelijk is aan het ander. Dit levert TRUE op als de
waardes verschillend zijn en FALSE als ze gelijk zijn. 2!=2 levert dus [1] FALSE.
> hiermee vraag je of het een groter is dan het ander. Zo levert 3>2 het antwoord [1] TRUE.
< hiermee vraag je of het een kleiner is dan het ander. Zo levert 3<2 het antwoord [1] FALSE.
>= hiermee vraag je of het een groter of gelijk is aan/dan het ander. Zo levert zowel 3>=2 als
3>=3 het antwoord [1] TRUE.
<= hiermee vraag je of het een kleiner of gelijk is aan/dan het ander.
Hieronder volgen nu 3 logical operators.
! hiermee kan je vragen of iets niet waar is. Zo levert !3 het antwoord [1]FALSE en levert !0 het
antwoord [1]TRUE.
& hiermee kan je vragen of twee dingen waar zijn. Dit levert TRUE op als de linker en rechter
waarde TRUE zijn en FALSE als beide of een van de twee waardes FALSE is. Zo is 3&17 TRUE
en 0&44 FALSE.
I hiermee vraag je of een van de twee dingen waar is. Zo leveren 3I17 en 3I0 allebei TRUE,
maar levert 0I0 FALSE.
, Variabelen:
Deze worden assignment operators of toekenningsoperatoren genoemd, omdat ze een waarde aan
de variabele geven.
<- of = hiermee plaats je de waarde die rechts van de pijl/het ‘=’ teken staat in de variabele.
-> hiermee plaats je de waarde die links van de pijl staat in de variabele die rechts staat.
We gebruiken meestal de pijl naar links.
Variabelen, zijn te vergelijken met emmertjes waar je data in kan stoppen. Hier kan je steeds
verschillende data in stoppen. Hierbij is het wel van belang dat in je een variabele altijd dezelfde soort
data stopt. Bekende variabelen zijn X en Y waar je verschillende getallen in kan stoppen. Getallen
vormen al een soort data van de lijst aan soorten:
- Getallen/nummers, hierbij wordt ook nog eens onderscheid gemaakt tussen hele getallen en
getallen waar decimalen bij betrokken zijn.
- Logical/logische waardes, denk aan TRUE en FALSE.
- Tekst, ook wel ‘strings of characters’ kunnen als een datasoort gezien worden.
- Lijst of (multidimensionale) tabel, denk bv aan 1:5 als variabele.
Het voordeel van variabelen is dat je er een algemene code mee kan schrijven. Zo kan je een code
schrijven waarmee je verschillende sequenties op dezelfde manier kan analyseren. Omdat de waarde
van een variabele onbekend is, geven we variabelen vaak een naam. Zo kan je X of Y gebruiken, maar
je kan bijvoorbeeld ook ‘sequentie’ gebruiken zodat je weet wat er in de variabele gaat.
Tabel, om de variabele ‘tabel’ toe te passen in een biologisch concept, zou je een tabel kunnen
maken met alle eiwitsequenties van de mens (±20.000). Er zijn dus 20.000 rijen in deze tabel en
hieraan kunnen kolommen toegevoegd worden met eigenschappen, zoals het smeltpunt etc. Dit kan
je dan in een variabele stoppen waarmee je kan analyseren.
Voorbeeld variabelen, variabelen zijn te overschrijven zoals te zien is met ‘a’ in het voorbeeld. R
rekent hierbij eerst y-a uit, wat gelijk is aan 4, en stopt dit dan in a. Zo gaat de waarde van a van 5
naar 4. R zal altijd eerst het sommetje uitrekenen voordat die het in de variabele stopt. Ook zie je dat
er op den duur een vector in a gestopt wordt, terwijl we eerst de datasoort nummers gebruikten. In
dit geval is dat mogelijk, omdat de waarde geheel overschreven wordt. Als je dit echter in je script
doet waarbij ervan uit wordt gegaan dat a één getal bevat, gaat het fout.
[1], geeft aan dat het het eerste antwoord is waar R mee komt. Het is dus niet zo dat dit aangeeft dat
dit aangeeft dat iets TRUE is, want [1]FALSE betekent dat iets niet waar is.
Computerkracht, twee belangrijke aspecten van een computer zijn het geheugen en de snelheid. Als
je bijvoorbeeld je data voor een script op het RAM geheugen zet, kan je er heel snel bij. Je kan de
data echter ook op de harde schijf zetten en dan zal het script minder snel verlopen, omdat de data
van de harde schijf gehaald moet worden.
RAM, random-acces memory, is het geheugen van de computer. Een computer programma kan
elementen die in het RAM zijn opgeslagen heel snel vinden. Zo kan je bijvoorbeeld van een DNA
sequentie waarvan een specifiek sub-sequentie (k-mer) in de database aanwezig is, zoals GGAC, een
(local) alignment maken. Hoe langer k is, hoe meer RAM je nodig hebt om alle k-mers op slaan.
Geheugen, het RAM is snel beschikbaar, maar kost dan ook zo’n 5 dollar per GB. Bij de harde schijf
beïnvloed de fysieke locatie van de opslag van de data hoe snel de data beschikbaar is. Dat is een
groot verschil met het RAM en opslag op een harde schijf kost dan ook maar 10 cent per GB. RAM is
dus een stuk sneller dan de harde schijf, maar kost dan ook veel meer geld.
CPU, central processing units, is de processor en hoe sneller deze is,
hoe sneller je bepaalde programma’s kan gebruiken. De kleine
stapjes die nodig zijn om complexe taken uit te voeren worden een
voor een door de CPU uitgevoerd. Hoe sneller de CPU is, hoe meer
verrichtingen de computer per seconden uit kan voeren (flops). Het aantal CPU’s bepaalt hoeveel
operaties parallel uitgevoerd kunnen worden. Een efficiënte computer programmeur maakt optimaal
gebruikt van het RAM en probeert te voorkomen dat de CPU te veel operaties uit moet voeren.
Commando’s, buiten operatoren heb je ook commando’s in R: