Business Information Learning

  1. Trang chủ
  2. Lưu
  3. Thẻ
  4. Hỏi - Đáp

 
 
Trang chủ
BIL'log, ⌚ 2021-01-10
***
☕ Nhàn đàm ICT: Source code of mRNA-based vaccine BNT162b2 🧬
Tác giả: Lê Văn Lợi
Bài đã đăng trên diễn đàn ICT_VN (ict_vn@googlegroups.com).
Ngày đăng: 10-1-2021.

Mở đầu, tôi liệt kê một vài định nghĩa cách viết tắt để anh/chị tiện theo dõi:

  • DNA: DeoxyriboNucleic Acid
  • RNA: RiboNucleic Acid
  • mRNA: Messenger RNA
  • BNT162b2: Pfizer & BioNTech mRNA-based vaccine
  • mRNA-1273: Moderna mRNA-based vaccine

 

Chúng ta đều biết là vắc-xin mã hiệu BNT162b2 do 2 công ty PfizerBioNTech phát triển đã được Anh, tiếp theo là Mỹ và gần đây EU, chấp nhận tiêm chủng đại trà để ngừa SARS-CoV-2. (SARS-CoV-2 là tên của vi-rút đã gây ra đại dịch COVID-19.) Nguyên lý phát triển vắc-xin BNT162b2 dựa trên nền mRNA. Vắc-xin mRNA-1273 của Moderna cũng dựa trên nền mRNA. Có lẽ nhiều anh/chị cũng như tôi không khỏi tò mò về cách mà họ “làm ra” vắc-xin này, đành rằng chúng ta không phải là dân ngành y cũng không phải là dân ngành sinh học. Tò mò có lẽ là bản tính cố hữu của dân CNTT!

 

Vô tình, gần đây (ngày 27/12/2020) tôi đọc được một bài post của tác giả Bert Hubert, nói về vấn đề này: https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/

 

Nếu anh/chị đọc kỹ bài của Bert Hubert, có lẽ anh/chị khỏi phải đọc phần tiếp theo bài post của tôi. Tôi chỉ diễn đạt lại một cách nôm na, theo nhận thức của tôi, về cách làm vắc-xin dựa trên nguyên lý mRNA, theo cách hiểu của một người lập trình phần mềm (software coder). Nếu anh/chị có thắc mắc thì vui lòng viết email cho tác giả Bert Hubert nhé 😊 – email của Bert Hubertbert@hubertnet.nl.

🧬

 

Viruses. Để chống lại và phòng ngừa vi-rút, chúng ta dành ra ít phút để tìm hiểu về cơ chế của vi-rút.

Mã hóa thông tin sự sống. Nếu như trong máy tính, chúng ta mã hóa thông tin thành các bit 0, 1 thì sự sống mã hóa thành 4 nucleotide cơ sở: A, C, G, U/T.

A: Adenine
C: Cytosine
G: Guanine
T: Thymine
U: Uracil

Trong RNA chúng ta viết các ký hiệu là A, C, G, U. 
Trong DNA chúng ta viết các ký hiệu là A, C, G, T.
-
➡ RNA của vi khuẩn có chiều dài khoảng hơn vài triệu nucleotide.
➡ DNA của cơ thể sống bậc cao có chiều dài tới hàng tỷ nucleotide.
➡ DNA của người có chiều dài khoảng 750megabyte, gồm nhiều đoạn mã lặp. Nếu có thuật toán nén tốt thì khối thông tin này sẽ được nén nhỏ xuống còn vài chục megabyte! 😊
-
Khác với các bit máy tính không có trọng lượng, các bit nucleotide có trọng lượng anh/chị nhé: 0.53 * 10⁻²¹ gram. Chẳng hạn, 1 liều vắc-xin 30 microgram chứa 6*10¹⁶ ký tự! Tính theo đơn vị byte thì lọ này chứa khoảng 25 petabyte.
 

A-xít a-min (Amino acids). Chỉ có 20 loại a-xít a-min. A-xít a-min được mã hóa theo nhóm 3 nucleotide một, được gọi là một codon. Ví dụ về cách viết codon: ‘AAC’, ‘CCG’. Một byte có 8 bit, còn một codon có 3 nucleotide. Mỗi một bit nucleotide có 4 giá trị khác nhau (A, C, G, U). Như vậy, nếu tính tổ hợp thì 3 nucleotide sẽ tạo ra 4*4*4 = 64 tổ hợp khác nhau. (Một byte có 28 = 256 tổ hợp khác nhau.)

⚠ Một codon tương ứng với một a-xít a-min. Vì chỉ có 20 loại a-xít a-min mà lại có 64 tổ hợp codon nên có nhiều codon tương ứng với một a-xit amin. (Tham chiếu: DNA and RNA codon tables.)

Các a-xít a-min có thể được liên kết với nhau để tạo thành protein (đạm).
 

RNA. Chuyển sang thuật ngữ máy tính, DNA có thể xem như bộ nhớ trên đĩa còn RNA đóng vai là bộ nhớ RAM. Cơ thể sống có một cơ chế “chép” thông tin từ DNA sang các phân tử RNA. Giống như trong máy tính chúng ta đọc file trên đĩa (DNA) và kết quả đọc được chép vào RAM (RNA). Chúng ta có thể hiểu nôm na là “máy tính sự sống” xử lý chương trình chạy trên RNA. “Bộ nhớ RAM” RNA chứa mã nguồn có thể xử lý được (executable). Cũng giống như RAM, RNA rất mong manh (volatile) trong lúc DNA rất ổn định. (Trong máy tính, khi ta ngắt điện thì bộ nhớ RAM mất toàn bộ nội dung - trong lúc nội dung trên đĩa vẫn giữ nguyên.)

Tế bào có một cỗ máy (được gọi là ribosome) có thể dịch mã (translate) các phân tử RNA thành chuỗi a-xít a-min (protein). Ribosome đọc mã trong sợi RNA và căn cứ vào mã đọc được để “sản xuất” ra a-xít a-min. Có thể nói ribosome là “nhà máy tổng hợp protein bên trong tế bào”.
 

Protein. Protein là các phân tử có kích cỡ từ nhỏ đến rất lớn có thể thực hiện (hoặc kích hoạt) hầu hết mọi phản ứng hóa học, quá trình vật lý.

➡ Có loại protein chỉ có ý nghĩa “quản trị nội bộ”. Chẳng hạn như insulin báo hiệu rằng các tế bào nên thay đổi hành vi của chúng, nhưng chính bản thân insulin lại không làm hoặc tạo ra bất cứ điều gì.

➡ Có loại protein đóng vai trò cảm biến, như protein cryptochrome có thể phát hiện ánh sáng, từ trường. Có loại khác đo được mức pH, đo nhiệt độ, đo mức đường glucose!

➡ Có loại protein là men (enzyme) xúc tác phản ứng hóa học để sản sinh ra các phân tử mới.

➡ Có loại protein chỉ đóng vai “cấu trúc” cho tế bào và các hợp phần của tế bào.

Tóm lại, protein là các thành tố cơ bản của sự sống, vừa có chức năng cảm biến, vừa có chức năng thực thi.
 

Tương tác (interaction). Tất nhiên, mọi thành tố của cơ thể sống tương tác với nhau.

➡ Có loại protein “chặn” không cho đọc thông tin một khối nào đó của DNA.

➡ Có loại protein “đọc” thông tin DNA chuyển sang RNA và trên cơ sở đó, ribosome sản sinh ra các protein mới.
 

Phiên mã (transcription). Phiên mã (sao chép mã) là bước đầu tiên của một số bước biểu hiện gen dựa trên DNA, trong đó một đoạn DNA cụ thể được sao chép thành RNA (đặc biệt là mRNA) bởi enzyme RNA polymerase. Tham khảo: Transcription.

Điểm mấu chốt chúng ta cần quan tâm ở đây là “phần mềm sự sống” (life software) có thể chép một đoạn DNA thành RNA.

 

Virus. Vi-rút có RNA và DNA là vật liệu di truyền của chúng. Nhưng vi-rút không có cỗ máy ribosome.

Nếu protein bao bọc phần mềm vi-rút lây nhiễm vào tế bào, thì DNA (hoặc RNA) của chính nó sẽ chạy trên bộ máy của tế bào sống đó. Nếu thành công, cơ chế này sẽ biến tế bào thành một nhà máy sản xuất vi-rút mới, khi được thoát ra, chúng có thể tiếp tục lây nhiễm sang các tế bào khác.

⚠ Vi-rút không phải là một cơ thể sống, nó là một “phần mềm” “chạy” trên một cơ thể sống.

 

🧬

mRNA-based vaccine. Ý tưởng chung về vắc-xin là dạy cho hệ thống miễn dịch cách chống lại mầm bệnh trước khi mầm bệnh tấn công cơ thể.

Theo cách truyền thống, việc này được thực hiện bằng cách tiêm một loại vi-rút đã suy yếu hoặc mất khả năng (giảm độc lực), cộng với một “chất bổ trợ” để kích hoạt hệ thống miễn dịch hoạt động.
 

Vắc-xin BNT162b2 trên nền mRNA có cách tiếp cận khác so với cách truyền thống: lọ vắc-xin chứa vật liệu di truyền mô tả protein SARS-CoV-2 Spike. (Chữ Spike ở đây là tính từ bổ sung cho SARS-CoV-2 – tạm dịch là Gai.) Bằng phương pháp hóa học thông minh, vắc-xin đưa vật liệu di truyền này vào một số tế bào của cơ thể người.
 

Sau đó, chúng bắt đầu sản sinh ra các protein SARS-CoV-2 Spike với số lượng đủ lớn để hệ thống miễn dịch của chúng ta được kích hoạt. Đối mặt với các protein Spike, (cộng với việc có dấu hiệu cho thấy các tế bào đã bị tiếm quyền), hệ thống miễn dịch của chúng ta phản ứng mạnh mẽ chống lại protein Spike, đặc biệt là chống lại quá trình tự sinh sôi của nó.

Theo báo cáo của Pfizer & BioNTech, vắc-xin của họ (BNT162b2) đạt hiệu quả tới 95%.

🧬

Source code. Hẳn nhiên, đọc mã nguồn của một vắc-xin gây tò mò cho tất cả chúng ta. Vậy thực chất việc này là như thế nào? Mã nguồn vắc-xin là một dãy các ký tự mã hóa gen, là dãy tổ hợp các nucleotide: A, C, G, U/T. Anh/chị có thể tải xuống toàn bộ dãy các ký tự của vắc-xin BTN162b2 tại trang web của WHO: https://mednet-communities.net/inn/db/media/docs/11889.doc (hoặc anh/chị tham khảo file mà tôi đính kèm).

Schematic. Tài liệu của WHO cho chúng ta biết dãy mã nguồn của vắc-xin BNT162b2 gồm 4284 ký tự được chia thành 6 phần theo thứ tự sau:
 

cap:

vị trí 1-2

5’-UTR:

vị trí 3-54

sig:

vị trí 55-102

S protein_mut:

vị trí 103-3879

3’-UTR:

vị trí 3880-4174

poly(A):

vị trí 4175-4284



Nhìn vào mô tả trên, chúng ta thấy sự sống lập trình rất chi li, chặt chẽ, giống hệt như chúng ta lập trình bằng ngôn ngữ máy ASSEMBLY vậy! 😊

Tiếp theo, chúng ta khảo sát từng phần của cấu trúc này nhé.
 

Cap. Phần cap (tạm dịch là chóp) có đúng 2 bit được mã hóa là ‘GA’. Đây là mã báo hiệu phần sau là ‘Executable’ (giống như quy định về file .EXE của DOS phải bắt đầu bằng ‘MZ’ hay script lệnh trên UNIX phải bắt đầu bằng ‘#!‘).

Mã ‘GA’ báo là phần mã tiếp theo đến từ nhân tế bào. Tất nhiên, chúng ta biết rằng phần mã tiếp theo là đến từ vắc-xin, chứ không phải đến từ nhân tế bào. Đây là cách “hợp pháp hóa” đoạn mã. Nếu không như vậy, phần mã tiếp theo sẽ bị tế bào tìm cách hủy.
 

5’-UTR. [5’ untranslated region]. Vùng này có tên gọi là vùng không dịch mã (untranslated region). Như chúng ta biết, thông thường ribosome đọc mã của RNA và sản xuất ra protein. Nhưng mã vùng này lại làm cho ribosome không sản xuất ra protein. Sao lại có chuyện như thế được?!

Chúng ta chép đoạn mã này ra ở đây để “khảo sát”:

GAAΨAAACΨAGΨAΨΨCΨΨCΨGGΨCCCCACAGACΨCAGAGAGAACCCGCCACC

Trong dãy ký tự trên, chúng ta thấy một loạt các ký tự Ψ, không phải là một trong 4 ký tự nucleotide theo quy định là A, C, G, U. Vì sao người ta đưa Ψ vào, hẳn phải có lý do nào đó chứ?!

Cơ thể của chúng ta luôn có một hệ thống chống vi-rút tấn công. Các tế bào không hề thích thú gì với các RNA ngoại lai cả và sẽ cố gắng ở mức cao nhất để hủy diệt các RNA ngoại lai này. Đây có thể coi như “bức tường lửa”, nói theo ngôn ngữ hệ thống máy tính.

Đây, từ lâu là một vấn đề đối với việc sản xuất vắc xin trên nền mRNA. Cái chốt chặn đầu tiên nó cần phải vượt qua là “bức tường lửa” này. Qua nhiều năm thử nghiệm, người ta nhận thấy rằng, nếu U trong RNA được thay thế bằng một phân tử đã được sửa đổi một chút, hệ thống miễn dịch của chúng ta sẽ mất hứng thú đánh chặn. Chìa khóa của vấn đề nằm ở đây.

Vì vậy, trong vắc xin BioNTech / Pfizer, mỗi U đã được thay thế bằng chất 1-methyl-3’-pseudouridylyl, ký hiệu là Ψ. Một điều thực sự thông minh là mặc dù sự thay thế này (Ψ) không làm cho hệ thống miễn dịch của chúng ta nổi giận, nó được các bộ phận liên quan của tế bào chấp nhận như một nucleotide U thông thường.

Để thâm nhập hệ thống bảo mật máy tính, người ta vẫn hay dùng mẹo này. (Trên diễn đàn này tôi tin là có nhiều anh/chị “hắc-cơ mũ trắng. 😊) Khi ta truyền vào hệ thống một đoạn mã mà hệ an ninh không nhận dạng được thì đoạn mã đó sẽ vượt qua tường lửa và “dữ liệu” đó hệ thống chấp nhận như bình thường. Nếu đoạn mã đó là một phần mềm (trường hợp vắc-xin BTN162b2 là một ví dụ) và như vậy hệ thống đã bị hack.

Rõ ràng ý tưởng chèn Ψ để thay thế U là rất thông minh và thú vị, đúng không anh/chị?!

💡 Ý tưởng chèn Ψ là một ý tưởng đột phá trong biology. Đó là thành quả nghiên cứu của nhà khoa học gốc Hung-ga-ri, bà Katalin Karikó. Mời anh/chị tham khảo bài post: https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/. Bà Katalin Karikó sẽ đoạt được giải Nobel năm 2021 chăng?

💡 Liệu có con vi-rút nào sử dụng ý tưởng này để tấn công hệ miễn dịch của chúng ta không? Khả năng này vô cùng nhỏ, vì “sự sống tự nhiên” ngoài kia không có nhà máy nào sản xuất ra 1-methyl-3’-pseudouridylyl cả.

Quay trở lại với đoạn mã này, chúng ta tự hỏi: dãy 52 ký tự của 5’-UTR đóng vai trò gì?

Trước hết, chúng ta tìm hiểu cách tế bào “dịch mã” RNA thành protein như thế nào? Chúng ta cứ tưởng tượng cỗ máy ribosome như máy in 3D cho protein. Ribosome đọc “kiến trúc” nằm trong sợi RNA, dựa vào thông tin đọc được này nó tiết ra một chuỗi các a-xít a-min, và chuỗi các a-xít a-min này tạo thành protein.

Để quá trình trên xảy ra, đầu tiên tế bào phải đưa cỗ máy ribosome đặt trên sợi RNA. Có thể xem chức năng thứ nhất của 5’-UTR là đoạn mã báo cho tế bào đặt ribosome lên sợi RNA.

Ngoài ra, 5’-UTR còn chứa metadata khác như: điểm bắt đầu dịch mã (translate) từ đâu, dung lượng bao nhiêu.
 

sig [S glycoprotein signal peptide (extended leader sequence)]. Bây giờ chúng ta khảo sát đoạn sig, gồm 48 nucleotide tương đương với 16 codon.

Quay trở lại mục tiêu chính của vắc-xin: kích hoạt hệ thống tế bào sản xuất ra nhiều protein Spike SARS-CoV-2. Càng nhiều càng tốt.

Đoạn 5’-UTR chứa các metadata như đặt ribosome lên sợi RNA, xác định điểm bắt đầu dịch mã, dung lượng protein. Vẫn còn thiếu một thông tin nữa, thưa anh/chị: protein được sản xuất ra sẽ đi về đâu? Thông tin “địa chỉ đến” này được mã hóa tại sig. Nếu anh/chị có thời gian xin tham khảo thêm về Signal peptide tại đây:  https://en.wikipedia.org/wiki/Signal_peptide.

Trong bài post, tác giả Bert Hubert đã phân tích kỹ về nghệ thuật mã hóa đoạn signal peptide của vắc-xin BNT162b2. Mục tiêu của đoạn mã này là làm cho tế bào sinh ra protein một cách hiệu quả nhất.
 

S protein_mut [Codon-optimized sequence]. Đoạn mã dài 3777 nucleotide (tương đương 1259 codon) này là vùng mã chính để sản xuất ra protein Spike. Đoạn mã gồm các codon được tối ưu hóa.

Bên lề: Các codon được tối ưu hóa như thế nào lại là một chủ đề thú vị khác.  Mời anh/chị tham khảo thêm bài post này (cũng của Bert Hubert): https://berthub.eu/articles/posts/part-2-reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/. Phần này tác giả liệt kê hàng loạt thuật toán tối ưu hóa. Một số thuật toán sử dụng thư viện ngôn ngữ lập trình đang “hot” hiện nay là Python! Tôi cho rằng một đề án tốt nghiệp cho sinh viên CNTT về tối ưu hóa codon là chuyện đáng để làm quá đi chứ! 😊

Đáng chú ý trong đoạn mã tạo protein này, có codon báo hiệu “dừng” sản xuất protein. Đó là codon trong nguyên bản của vi-rút có mã là ‘UAA’, còn trong phiên bản vắc-xin là ‘ΨGA’.
 

3’-UTR [3´ untranslated region]. Tiếp sau đoạn mã “sản xuất protein” S protein_mut là vùng không dịch mã (untranslated region). Nghĩa là ribosome khi nhìn thấy đoạn mã này sẽ không tiết ra protein như đoạn trên. Đối với những ai quan tâm sâu hơn về RNA thì có thể tham khảo một site trên Wikipedia là: https://en.wikipedia.org/wiki/Three_prime_untranslated_region.

Trong tham khảo này, có một câu có thể gây cho chúng ta thất vọng, đó là: “Despite our current understanding of 3′-UTRs, they are still relative mysteries”. Vì sao có đoạn mã này trong “phần mềm sự sống” vẫn còn là bí ẩn. (Tôi cho rằng dù nhân loại có giỏi đến đâu, “sự sống” vẫn luôn chứa rất nhiều phần chúng ta chưa hiểu được.)
 

poly(A)[110-nucleotide poly(A)-tail]. Kết thúc đoạn mã mRNA là một loạt bit ‘A’.

mRNA được “tái sử dụng” nhiều lần. Nghĩa là ribosome sẽ đọc lại đoạn mã, lại “sản xuất” ra protein (phép lặp trong lập trình 😊). Mỗi một lần như vậy, một bit ‘A’ ở đuôi sẽ bị mất. Đến khi hết các bit ‘A’ ở đuôi, đoạn mã này sẽ bị loại bỏ khỏi quy trình tạo protein (điều kiện dừng vòng lặp 😊).

Dãy poly(A) của vắc-xin BNT162b2 gồm 30 bit ‘A’, 10 bit liên kết là ‘GCAUAUGACU’ và tiếp theo là 70 bit ‘A’. Vì sao họ mã hóa như vậy? Tác giả Bert Hubert phỏng đoán rằng có lẽ đây là do họ muốn giữ “độc quyền” về cách tăng cường tính biểu hiện của protein mà vắc-xin của họ tạo ra.

Ngoài lề: Như thế nào là biểu hiện protein (protein expression) là khái niệm chắc nằm ngoài “sự quan tâm” của ICT-ers. Tôi hiểu một cách nôm na rằng nếu vắc-xin có tính biểu hiện protein cao → hệ thống miễn dịch cơ thể có xác suất phản ứng với vắc-xin cao → vắc-xin có hiệu quả cao. Vắc-xin BNT162b2 đạt hiệu quả lên đến 95%.
 

Tóm lại, cấu trúc của một mRNA có thể hình dung như sau:

Cap

5’-UTR

Start|  -coding sequence-   |Stop

3’-UTR

poly(A)

 

 

 

 

 


Điểm độc đáo của vắc-xin BNT162b2: có lẽ là thay thế nucleotide U bằng Ψ để “lách” qua tường lửa của tế bào; tối ưu hóa các codon để nâng cao biểu hiện protein.
 

🧬

 

Tiềm năng? Sau khi xem xong “mã nguồn” của vắc-xin BNT162b2, chúng ta có cảm giác là với cách làm tương tự, về mặt lý thuyết người ta có thể chữa được mọi bệnh tật! Cái làm cho tôi ấn tượng nhất, có lẽ là người ta đang chuyển đổi một số vấn đề y học (medicine), khoa học sự sống (life sciences) thành một câu chuyện liên quan đến phần mềm (software), liên quan đến mô phỏng (simulation), liên quan đến tối ưu hóa (optimization).

Tất nhiên, từ việc hiểu nguyên tắc đến việc đưa ra một cái gì đó ứng dụng được là cả một biển trời mênh mông. Nói vậy thôi, chứ muốn theo kịp họ thì chúng ta vẫn phải bắt đầu bằng các bước đi cơ bản nhất chứ nhỉ?!

Lục tìm trong văn bản liên quan đến R&D về khoa học, công nghệ, tôi thấy có Quyết định 3685/QĐ-BKHCN về “Danh mục các công nghệ chủ chốt của công nghiệp 4.0” ban hành ngày 3/12/2018. Trong danh mục này, tôi liệt kê ra một số công nghệ, ít nhiều liên quan đến bài post:

 

23        Sinh học tổng hợp (Synthetic biology)

24        Công nghệ thần kinh (Neurotechnologies)

25        Tế bào gốc (Stem cells)

26        Xúc tác sinh học (Biocatalysis)

27        Tin sinh học (Bioinformatics)

28        Chip sinh học và cảm biến sinh học (Biochip and biosensor)

33        Công nghệ giải mã gen

 

Khảo sát danh sách trên, tôi có cảm giác chỉ có 2 mục là “27 Tin sinh học (Bioinformatics)” và “28 Chip sinh học và cảm biến sinh học (Biochip and biosensor)” là có liên quan đến giới ICT của chúng ta. Tôi không có thông tin của các nhóm nghiên cứu về các vấn đề này. Không biết là các nhóm nghiên cứu đó đã đi xa đến đâu.

🧬

 

Nhân đầu năm mới (dương lịch), thấy có bài post hay nên chia sẻ với anh/chị, ngõ hầu anh/chị nhâm nhi cà phê, nhàn đọc, cầu mong một năm mới 2021 tốt đẹp hơn nhiều so với năm 2020. (Liệu có năm nào tệ hơn năm 2020 được không nhỉ?!)

 

(_/)
( •_•)
/ >☕