In 2020 ontwikkelden verschillende bedrijven vaccins tegen het SARS-CoV-2 virus. De meeste daarvan bevatten genetisch materiaal dat sterk lijkt op dat van het beruchte Spike-eiwit van het virus: het eiwit dat zorgt voor de karakteristieke knotsvormige uitsteeksels aan de buitenkant van coronavirussen.
Het duurde niet lang of de anti-vaxxers begonnen deze vaccins in een slecht daglicht te stellen. Dat is niet nieuw, want bijna zolang als de mens vaccins is beginnen maken, zijn er ook hevige tegenstanders geweest die alles op alles zetten om mensen bang te maken om ze te gebruiken. Onder de vele medische vragen waarover het gerenommeerde tijdschrift The Lancet zich eind 1890 en begin 1900 boog — Grey Hair and Emotional States1, In Praise of Rum and Milk2, On the Value of Cheese as a Dietetic Resource in Diabetes Mellitus3 — vinden we brieven en opiniestukken waarin gedebatteerd wordt over het pokkenvaccin, de leeftijd waarop kinderen het moeten krijgen, het risico van het vaccin ten opzichte van de ziekte zelf en de mate waarin lokale autoriteiten verplichte vaccinatie moeten afdwingen in geval van uitbraken.
De misleidende beweringen die anti-vaxxers over de recente COVID-19 vaccins de wereld insturen, zijn nagenoeg identiek aan de beweringen over pokkenvaccins van 120 jaar geleden: de ingrediënten zijn giftig en onnatuurlijk, de vaccins zijn onvoldoende getest, de wetenschappers die ze produceren zijn kwakzalvers en profiteurs, de celculturen die gebruikt worden zijn een belediging voor religieuzen of de autoriteiten die zich inzetten voor de bescherming van de volksgezondheid maken zich schuldig aan tirannieke overheersing.
Een van die verzinsels van de anti-vaxxers speelt in op de eeuwenlang zoektocht van de mens naar geheime boodschappen die verborgen zitten in boeken4, achterwaarts afgespeelde muziek5, vreemd uitziende plateau's op Mars6, of andere dingen. In dit geval zochten ze naar boodschappen die verborgen zitten in eiwitsequenties. Dit is bijvoorbeeld de record van het SARS-CoV-2 Spike-eiwit (QLI519137) uit de databank van het National Institute of Health (NIH).
LOCUS QLI51913 1273 aa linear VRL 17-JUL-2020 DEFINITION surface glycoprotein [Severe acute respiratory syndrome coronavirus 2]. ACCESSION QLI51913 VERSION QLI51913.1 DBSOURCE accession MT772569.1 KEYWORDS . SOURCE Severe acute respiratory syndrome coronavirus 2 (SARS-CoV-2) … ORIGIN 1 mfvflvllpl vssqcvnltt rtqlppaytn sftrgvyypd kvfrssvlhs tqdlflpffs 61 nvtwfhaihv sgtngtkrfd npvlpfndgv yfasteksni irgwifgttl dsktqslliv 121 nnatnvvikv cefqfcndpf lgvyyhknnk swmesefrvy ssannctfey vsqpflmdle 181 gkqgnfknlr efvfknidgy fkiyskhtpi nlvrdlpqgf saleplvdlp iginitrfqt 241 llalhrsylt pgdsssgwta gaaayyvgyl qprtfllkyn engtitdavd caldplsetk 301 ctlksftvek giyqtsnfrv qptesivrfp nitnlcpfge vfnatrfasv yawnrkrisn 361 cvadysvlyn sasfstfkcy gvsptklndl cftnvyadsf virgdevrqi apgqtgkiad 421 ynyklpddft gcviawnsnn ldskvggnyn ylyrlfrksn lkpferdist eiyqagstpc 481 ngvegfncyf plqsygfqpt ngvgyqpyrv vvlsfellha patvcgpkks tnlvknkcvn 541 fnfngltgtg vltesnkkfl pfqqfgrdia dttdavrdpq tleilditpc sfggvsvitp 601 gtntsnqvav lyqdvnctev pvaihadqlt ptwrvystgs nvfqtragcl igaehvnnsy 661 ecdipigagi casyqtqtns prrarsvasq siiaytmslg aensvaysnn siaiptnfti 721 svtteilpvs mtktsvdctm yicgdstecs nlllqygsfc tqlnraltgi aveqdkntqe 781 vfaqvkqiyk tppikdfggf nfsqilpdps kpskrsfied llfnkvtlad agfikqygdc 841 lgdiaardli caqkfngltv lpplltdemi aqytsallag titsgwtfga gaalqipfam 901 qmayrfngig vtqnvlyenq klianqfnsa igkiqdslss tasalgklqd vvnqnaqaln 961 tlvkqlssnf gaissvlndi lsrldkveae vqidrlitgr lqslqtyvtq qliraaeira 1021 sanlaatkms ecvlgqskrv dfcgkgyhlm sfpqsaphgv vflhvtyvpa qeknfttapa 1081 ichdgkahfp regvfvsngt hwfvtqrnfy epqiittdnt fvsgncdvvi givnntvydp 1141 lqpeldsfke eldkyfknht spdvdlgdis ginasvvniq keidrlneva knlneslidl 1201 qelgkyeqyi kwpwyiwlgf iagliaivmv timlccmtsc csclkgccsc gscckfdedd 1261 sepvlkgvkl hyt //
In de NIH-databank wordt de gekende informatie over een eiwit beschreven in het zogenaamde GenBank formaat, een formaat voor tekstbestanden. Bovenaan zie je bijvoorbeeld algemene informatie over het eiwit, zoals een unieke code (QLI51913) die aan elke record toegekend wordt en de lengte van de eiwitsequentie (1273 aminozuren). Het eiwit bestaat immers uit een reeks bouwstenen (aminozuren) die elk door één letter voorgesteld worden. Die sequentie zelf staat in het Genbank formaat helemaal onderaan, tussen een regel met de tekst ORIGIN en een regel met de tekst //.
Om verborgen boodschappen te vinden, maken de anti-vaxxers gebruik van een eenvoudige techniek: start bij een bepaalde letter in een tekst en spring daarna telkens een vast aantal letters vooruit of achteruit. Als we bijvoorbeeld starten vanaf de 1226e letter (A) in de sequentie van het Spike-eiwit (gebruik de positie-indicatoren aan de linkerkant van de sequentie in het GenBank-formaat om je te oriënteren) en telkens 8 letters achteruit te springen, lezen we achtereenvolgens de letters van het woord ALIEN (aangeduid in het blauw). Op dezelfde manier kunnen we de volgende woorden in de eiwitsequentie terugvinden:
woord | startpositie | stapgrootte | lengte | kleur |
---|---|---|---|---|
ALIEN | 1226 | -8 | 5 | blauw |
KINGS | 386 | 32 | 5 | oranje |
SHALL | 45 | 24 | 5 | groen |
EAT | 132 | -9 | 3 | geel |
ALL | 123 | 53 | 3 | rood |
DIGITS | 950 | -54 | 6 | paars |
Hierbij springen we bij een positieve stapgrootte vooruit in de eiwitsequentie, en bij een negatieve stapgrootte achteruit. De eerste letter van het woord ALL hebben we niet in kleur aangeduid in de eiwitsequentie, omdat de A op de startpositie dezelfde is als de middelste A van EAT. Als een vaccin dat ons toegediend wordt de geheime boodschap
ALIEN KINGS SHALL EAT ALL DIGITS
bevat, dan kan dat toch geen toeval zijn zeker? Iemand moet die er toch moedwillig in aangebracht hebben!
Schrijf een bash shell script antivaxx waarmee woorden uit eiwitsequenties kunnen gelezen worden op basis van de hierboven beschreven techniek. Aan het shell script moeten vier argumenten doorgegeven worden: i) de padnaam van een GenBank-bestand met informatie over een eiwit, ii) een startpositie, iii) een stapgrootte en iv) de lengte van het uit te lezen woord. Het shell script moet drie regels uitschrijven naar stdout die telkens een eigenschap bevatten, gevolgd door een dubbelpunt (:), een spatie en dan de waarde van de eigenschap:
sequence: de eerste tien letters van de eiwitsequentie, gevolgd door drie puntjes (...) en de laatste tien letters van de eiwitsequentie; de letters van de eiwitsequentie staan altijd in hoofdletters
length: de lengte van de eiwitsequentie (aantal aminozuren)
word: het woord van de gegeven lengte dat gevonden wordt door vanaf de startpositie telkens het gegeven aantal letters vooruit of achteruit te springen; de letters van het woord staan altijd in hoofdletters
Als het eerste argument begint met een dubbelpunt (:), dan moet het eiwit niet uit een lokaal GenBank-bestand uitgelezen worden, maar moet het shell script dat tekstbestand downloaden uit de NIH-databank. Dit kan aan de hand van de URL
waar op de juiste plaats de unieke code van de eiwitrecord moet ingevuld worden (hier hebben we de code QLI51913 als voorbeeld gebruikt). Die code is het deel van het eerste argument dat na het dubbelpunt staat. Zorg ervoor dat als het shell script gebruikmaakt van tijdelijke bestanden, die ook terug verwijderd worden.
Het shell script mag ervan uitgaan dat de argumenten die eraan doorgegeven worden altijd geldig zijn, zonder dat dit expliciet moet gecontroleerd worden.
In onderstaande voorbeeldsessie gaan we ervan uit dat het GenBank-bestand spike.gp9 zich in de huidige directory bevindt.
$ antivaxx spike.gp10 1226 -8 5
sequence: MFVFLVLLPL...VLKGVKLHYT
length: 1273
word: ALIEN
$ antivaxx spike.gp11 386 32 5
sequence: MFVFLVLLPL...VLKGVKLHYT
length: 1273
word: KINGS
$ antivaxx spike.gp12 45 24 5
sequence: MFVFLVLLPL...VLKGVKLHYT
length: 1273
word: SHALL
$ antivaxx spike.gp13 132 -9 3
sequence: MFVFLVLLPL...VLKGVKLHYT
length: 1273
word: EAT
$ antivaxx :QLI51913 123 53 3
sequence: MFVFLVLLPL...VLKGVKLHYT
length: 1273
word: ALL
$ antivaxx :QLI51913 950 -54 6
sequence: MFVFLVLLPL...VLKGVKLHYT
length: 1273
word: DIGITS