Reverse Engineering al codului sursă al vaccinului SARS-CoV-2 BioNTech/Pfizer - partea a doua

Nota traducătorului

Bună. Dacă aveți observații referitoare la corectitudinea traducerii - în principal legat de chimie și biologie, trimiteți-mi un mesaj. Titlul original este Reverse Engineering Source Code of the BioNTech/Pfizer Vaccine: Part 2, autorul fiind Bert Hubert.

Ultima modificare: 2021-01-03 18:00:00

Timp necesar: 10 de minute

TLDR: nu avem

Toate informațiile despre vaccinul BNT162b2 de pe această pagină au ca sursă acest document publicat de World Health Organization.


Aceasta este o pagină actualizată constant. Reveniți pentru a avea actualizări.


Pe scurt: vaccinul ARNm a fost optimizat de fabricant schimbând anumite părți ale ARN de la (de exemplu) UUU la UUC iar oamenii își doresc să înțeleagă logica din spatele acestor modificări. Această provocare este asemănătoare cu criptografia și operațiunile de reverse engineering cu care matematicienii și inginerii se confruntă constant. Pe această pagină veți găsi toate detaliile pentru a vedea CUM a fost optimizat vaccinul.

Am considerat că va fi un puzzle amuzant, dar tocmai ce am fost informat că procedura de optimizare și documentarea ei este extrem de amuzantă pentru cercetători, aceasta ajutându-i să genereze noi proteine și vaccinuri.

Deci, dacă vrei să contribui la cercetarea în domeniul vaccinurilor, citește în continuare.

Iată lista celor mai bune rezultate obținute de algoritmii de optimizare:

NumeScorAutorComentariu
dnachisel91.08%Erik BrauerDNAChisel algorithm
dnachisel90.9%Pedro José Pereira VieitoDNAChisel algorithm
remap88.5%Howard ChuMap every codon to an amino acid, pick the best codon for that amino acid
dnachisel79.5%Naomi JacobsDNAChisel algorithm
codon mapping79.4%Harry HarpelA simple static codon mapping
most-frequent.py78.3%Seo SanghyeonCodon frequency optimization using python_codon_tables
3rd-cg.py60.8%Peter KuharIf third position is already 'G' or 'C', no change. Otherwise replace third position by a C, if protein still matches, done. Otherwise try a G.
3rd-gc.go53.1%bert hubertIf third position is already 'G' or 'C', no change. Otherwise replace third position by a G, if protein still matches, done. Otherwise try a C.
Nop27.6%Does not do any optimization at all

Puteți trimite actualizări ale rezultatelor la bert@hubertnet.nl or @PowerDNS_Bert.

Ar trebui să fim recunoscători BioNTech pentru publicarea acestor informații. Și, desigur, ar trebui să mulțumim unui mare număr de cercetători care timp de zeci de ani au muncit pentru a ajunge la punctul la care acest vaccin poate fi produs. Este extraordinar.

ceste realizări m-au făcut să vreau să înțeleg totul despre acest vaccin. Am scris articolul Reverse Engineering al codului sursă al vaccinului SARS-CoV-2 BioNTech/Pfizer (original Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine) care descrie oarecum în detaliu ARNm al vaccinului. Vă va fi de ajutor să citiți acea postare înainte de a merge mai departe. Promit că o veți găsi interesantă.

Dar acea postare a lăsat unele întrebări și abia acum lucrurile devin fascinante.

Vaccinul conține cod ARN care generează o versiune modificată va proteinei SARS-CoV-2.

Codul ARN al vaccinului este oricum modificat față de cel original, al virusului. Această modificare este realizată de fabricant, pe baza înțelegerii modului în care funcționează natura.

Și din pe baza cercetărilor făcute, se pare că aceste modificări fac vaccinul mult mult mai eficient. Ar fi mult mai interesant dacă am înțelege aceste modificări. AR putea explica de ce vaccinul Moderna are nevoie de 100 de micrograme de substanță activă și cel BioNTech doar de 30.

Iată codul care generează începutul proteinei S în cazul virusului șî al vaccinului. Semnele de exclamare arată modificările.

Virus:   AUG UUU GUU UUU CUU GUU UUA UUG CCA CUA GUC UCU AGU CAG UGU GUU
Vaccin:  AUG UUC GUG UUC CUG GUG CUG CUG CCU CUG GUG UCC AGC CAG UGU GUU
               !   !   !   !   ! ! ! !     !   !   !   !   !

ARN este un șir (serios, chiar e) de caractere caracteristice ARN - A, C, G și U. Nu există grupare fizică, dar corect este să facem analiza în grupuri de 3.

Fiecare grup (numit codon) are un aminoacid corespunzător (notat cu o literă mare). Un șir de aminoacizi formează o proteină. Iată cum arată rzultatul:

Virus:   AUG UUU GUU UUU CUU GUU UUA UUG CCA CUA GUC UCU AGU CAG UGU GUU
          M   F   V   F   L   V   L   L   P   L   V   S   S   Q   C   V
Vaccine: AUG UUC GUG UUC CUG GUG CUG CUG CCU CUG GUG UCC AGC CAG UGU GUU
               !   !   !   !   ! ! ! !     !   !   !   !   !

Aici putem vedea cădeși codonii sunt diferiți, aminoacidul este același, Există 4*4*4 variante de codoni dar numai 20 de aminoacizi. Aceasta înseamnă că un codon poate fi schimbat în ceilalți și să rezulte același aminoacid.

Vedem că al doilea codon, UUU, a fost schimbat în UUC. Modificarea este de fapt adăugarea unui C. Al treilea codon este modificat din GUU în GUG, modificarea fiind adăugarea unui G.

Se știe că un procent mai mare din caracterele G și C îmbunătățește eficiența unui vaccin ARNm.

Acum, dacă asta ar fi totul, acesta ar putea fi finalul paginii. "Algoritmul de a schimba codoni pentru a avea mai mulți G și C". Dar ajungem la al nouălea codon care modifică CCA în CCU.

În cele ~4000 de caractere ale vaccinului, aceasta se întâmplă de multe ori.

Scopul este: găsiți un algoritm care modifică ARN-ul aflat în libertate în cel din vaccinul BNT162b2. Deoarece toată lumea vrea să înțeleagă cum ARN-ul viral ajunge într-un vaccin eficient. Algoritmul nu trebuie să reproducă exact codul ARN, dar ar fi plăcut să obținem ceva similar, în același timp fiind și minimalist.

Pentru a vă ajuta, am convertit datele în mai multe formate, așa cum este descris pe pagina GitHub page.


Atenție: în aceste fișiere U despre care s-a vorbit mai sus apare ca T. U și T sunt reprezentarea în ARN și ADN ale aceleiași informații.


Cel mai bun punct de pornire poate fi fișierul cu ambele reprezentări, alăturate - 'side-by-side.csv'. Acesta conține variantele originală și modificată pentru fiecare codon:

abspos,codonOrig,codonVaccine
0,ATG,ATG
3,TTT,TTC
6,GTT,GTG
...
3813,TAC,TAC
3816,ACA,ACA
3819,TAA,TGA

Există o tabelă de echivalențe care arată ce codoni pot fi schimbați fără a modifica secvența de aminoacizi. Aceasta se găsește în codon-table-grouped.csv. Există și o versiune vizuală aici.

[N. traducătorului: imaginea de mai jos conține tablea de echivalențe, adăungată pentru ușurința urmăririi conținutului]

Pe GitHub se găsește 3rd-gc.go (și 3rd-gc.py).

Acestea implementează un algoritm simplu, care funcționează astfel:

  • Dacă un codon al virusului se termină în G sau C, se copiază în ARNm al vaccinului
  • Dacă nu, se înlocuiește ultima nucleotidă din codon cu G și se verifică dacă aminoacidul mai corespunde; dacă da, este copiat la ARNm al vaccinului.
  • Se încearcă aceeași abordare cu C
  • Altfel se copiază așa cum este

Sau, în golang:

// base case, don't do anything
our = vir

// don't do anything if codon ends on G or C already
if(vir[2] == 'G' || vir[2] =='C') {
	fmt.Printf("Codon ended on G or C already, not doing anything.")
} else {
	prop = vir[:2]+"G"
	fmt.Printf("Attempting G substitution, new candidate '%s'. ", prop)
	if(c2s[vir] == c2s[prop]) {
		fmt.Printf("Amino acid still the same, done!")
		our = prop
	} else {
		fmt.Printf("Oops, amino acid changed. Trying C, new candidate '%s'. ", prop)
		prop = vir[:2]+"C"
		if(c2s[vir] == c2s[prop]) {
			fmt.Printf("Amino acid still the same, done!")
			our=prop
		}

	}

}

Rezultatul acestui algoritm este destul de slab - 53.1% identic cu vaccinul ARNm, dar e un punct de plecare.

La dezvoltarea algoritmului fiți siguri să vă bazați doar pe ARN-ul virusului. Nu trișați, uitându-vă la ARN BioNTech!

Dacă aveți un scor de peste 53.1% trimiteți-mi prin e-mail un link la cod pe adresa bert@hubertnet.nl (sau @PowerDNS_Bert) și îl voi adăuga la lista liderilor aflată la începutul paginii.

Ca în cazul oricărei forme de reverse engineering sau criptanaliză, ajută să înțelegem ce analizăm.


Utilizarea GC

Cunoaștem că scopul 'optimizării codonilor' este să avem mai mult C și G în vaccinul ARNm. Oricum, există o limită. În cazul ADN, G și C au o legătură foarte puternică, putând ajunge la punctul la care dacă sunt mult prea multe nucleotide, ADN-ul nu se mai poate replica eficient.

Deci unele modificări pot fi făcute pentru a scădea numărul de GC dintr-un lanț ADN, dacă acesta este prea mare.

Am avut o ciripitură pe această temă mai devreme.


Optimizarea codonilor

Unii codoni sunt rari în ADN-ul uman sau în anumite celule. Unii codoni pot fi înlocuiți cu alții doar pentru că sunt mai frecvenți în anumite celule.

Am avut o ciripitură pe această temă mai devreme.

Până aici am studiat doar codonii. Dar ARN-ul nu cunoaște nimic despre codoni, nu există marcaje care să spună unde începe și unde se încheie un codon. Dar totdeauna primul codon corespunzător unei proteine este ATG (sau AUG în cazul ARN).

ARN se pliază pentru a junge să aibă o anume formă. Această formă îl ajută să evite sistemul imunitar și să îmbunătățească generarea de aminoacizi. Aceasta depinde doar de secvența de nucleotide și nu de anumiți codoni.

Secvențele ARN pot fi trimise la acest server al Institutului de Chimie Teoretică al Unversității din Viena care va plia ARN-ul. Acest server este extrem de avansat șî realizează o mulțime de calcule.

Această pagină Wikipedia descrie funcționarea sa.

Poate exista situația în care anumite optimizări îmbunătățesc plierea.

Am fost informat și că acest document furnizat de Moderna (al doilea producător de vaccin bazat pe ARNm) poate fi relevantă: structura mRNA reglează expresia proteinelor prin schimbări în înjumătățirea timpului de viață funcțional (engl structure regulates protein expression through changes in functional half-life).