編寫Python代碼解析病毒基因組

2021-01-14 ChuanWorkstation
該畫作描繪了新冠狀病毒進入肺組織的過程。此時病毒被呼吸細胞所分泌的粘液所包繞,並且周圍還有分泌的抗體、小免疫系統的多種蛋白質。病毒由包膜包裝,包膜上含有S蛋白、M蛋白、E蛋白。病毒內部為病毒RNA。回答病毒virus)是介於生命非生命之間的一種物質形式。病毒游離於細胞之外時,沒有複製能力,不表現任何生命特徵,只是一種有機物質的存在的形式;但進入細胞後就表現出生命的特徵,能利用細胞體系進行複製,感染鄰近細胞,是一種非常小的感染性細胞內(分子)專性寄生物。言歸正傳,今天就讓我們來編寫Python程序解析病毒基因組。

首先,下載病毒基因組信息。


登錄 GenBank,網址:

www.ncbi.nlm.nih.gov/genbank/

查詢輸入:MN908947


MN908947 為我國復旦大學上海公共衛生臨床中心和公共衛生學院於今年1月5日上傳的新冠狀病毒全基因組數據。下載fasta文件,另存為:MN908947.fa。


構建讀入基因組函數:


def loadCoronaVirusDNA(filename):
    f = open(filename)
    dna=''
    for line in f:
        if line[0] != '>':
            dna += line.rstrip()
        else:
            header = line.split()
            name = header[0][1:]
    return name, dna


coronavirusname, coronavirusdna = loadCoronaVirusDNA('MN908947.fa')

其次,我們要病毒的部分蛋白質的序列。這就需要我們將DNA/RNA的信息「翻譯」成蛋白質,即三聯密碼子的識別。我們定義一個字典(dictionary),key是不同的三聯密碼子,value是20中胺基酸,且是一個三項元組(tuple),第一項是胺基酸的全稱,第二項是三字符縮寫,第三項是單字符縮寫:

codon = {'ATT': ('Isoleucine', 'Ile', 'I'),
         'ATC': ('Isoleucine', 'Ile', 'I'),
         'ATA': ('Isoleucine', 'Ile', 'I'),

         'CTT': ('Leucine', 'Leu', 'L'),
         'CTC': ('Leucine', 'Leu', 'L'),
         'CTA': ('Leucine', 'Leu', 'L'),
         'CTG': ('Leucine', 'Leu', 'L'),
         'TTA': ('Leucine', 'Leu', 'L'),
         'TTG': ('Leucine', 'Leu', 'L'),

         'GTT': ('Valine', 'Val', 'V'),
         'GTC': ('Valine', 'Val', 'V'),
         'GTA': ('Valine', 'Val', 'V'),
         'GTG': ('Valine', 'Val', 'V'),

         'TTT': ('Phenylalanine', 'Phe', 'F'),
         'TTC': ('Phenylalanine', 'Phe', 'F'),

         'ATG': ('Methionine', 'Met', 'M'),

         'TGT': ('Cysteine ', 'Cys', 'C'),
         'TGC': ('Cysteine ', 'Cys', 'C'),         

         'GCT': ('Alanine', 'Ala', 'A'),
         'GCC': ('Alanine', 'Ala', 'A'),
         'GCA': ('Alanine', 'Ala', 'A'),
         'GCG': ('Alanine', 'Ala', 'A'),

         'GGT': ('Glycine ', 'Gly', 'G'),
         'GGC': ('Glycine ', 'Gly', 'G'),
         'GGA': ('Glycine ', 'Gly', 'G'),
         'GGG': ('Glycine ', 'Gly', 'G'),

         'CCT': ('Proline', 'Pro', 'P'),
         'CCC': ('Proline', 'Pro', 'P'),
         'CCA': ('Proline', 'Pro', 'P'),
         'CCG': ('Proline', 'Pro', 'P'),

         'ACT': ('Threonine', 'Thr', 'T'),
         'ACC': ('Threonine', 'Thr', 'T'),
         'ACA': ('Threonine', 'Thr', 'T'),
         'ACG': ('Threonine', 'Thr', 'T'),

         'TCT': ('Serine', 'Ser', 'S'),
         'TCC': ('Serine', 'Ser', 'S'),
         'TCA': ('Serine', 'Ser', 'S'),
         'TCG': ('Serine', 'Ser', 'S'),
         'AGT': ('Serine', 'Ser', 'S'),
         'AGC': ('Serine', 'Ser', 'S'),

         'TAT': ('Tyrosine', 'Tyr', 'Y'),
         'TAC': ('Tyrosine', 'Tyr', 'Y'),

         'TGG': ('Tryptophan', 'Trp', 'W'),

         'CAA': ('Glutamine', 'Gln', 'Q'),
         'CAG': ('Glutamine', 'Gln', 'Q'),

         'AAT': ('Asparagine', 'Asn', 'N'),
         'AAC': ('Asparagine', 'Asn', 'N'),

         'CAT': ('Histidine ', 'His', 'H'),
         'CAC': ('Histidine ', 'His', 'H'),

         'GAA': ('Glutamic acid', 'Glu', 'E'),
         'GAG': ('Glutamic acid', 'Glu', 'E'),

         'GAT': ('Aspartic acid', 'Asp', 'D'),
         'GAC': ('Aspartic acid', 'Asp', 'D'),

         'AAA': ('Lysine', 'Lys', 'K'),
         'AAG': ('Lysine', 'Lys', 'K'),

         'CGT': ('Arginine', 'Arg', 'R'),
         'CGC': ('Arginine', 'Arg', 'R'),
         'CGA': ('Arginine', 'Arg', 'R'),
         'CGG': ('Arginine', 'Arg', 'R'),
         'AGA': ('Arginine', 'Arg', 'R'),
         'AGG': ('Arginine', 'Arg', 'R'),

         'TAA': ('Stop', 'Stop', '___'),
         'TAG': ('Stop', 'Stop', '___'),
         'TGA': ('Stop', 'Stop', '___')
         }

構建翻譯函數:

def translate(dna):
    aminoacid = ''
    amino = ''
    a = ''
    i = 0
    dna_len = len(dna)
    DNA = dna.upper()

    while(1):
        if i+3 <= dna_len:
            c = DNA[i:i+3]
            residue = codon[c][0]
            res = codon[c][1]
            r = codon[c][2]

            if i == 0:
                aminoacid = residue
                amino = res
                a = a + r

            else:
                aminoacid = aminoacid + '-' + residue
                amino = amino + '-' + res
                a = a + r

            i = i + 3
        else:
            break
    return aminoacid, amino, a

這時,讓我們輸出S蛋白的序列。在Genbank中,S蛋白的基因是:

說明定位是 21563 到 25384,。注意,在Python中,由於 slice 是從 0 開始計數,所以引用 index 則要減 1,則為 21562 到 25383:

spike_dna = coronavirusdna[21562:25383]
spike_protein_tuple = translate(spike_dna)
spike_protein = spike_protein_tuple[2]

最後,新冠病毒 S 蛋白的空間結構也於2月26日在Science發表了(DOI: 10.1126/science.abb2507),PDB 號 6vsb。卡通圖如下:



應用BioPython解析和可視化蛋白質的結構


傳染病模型的Python實現


如何安裝和使用免費的蛋白質空間結構可視化軟體 PyMol



關注Chuan Workstation

獲得更多臨床醫學和

生物信息學新技術和新進展

相關焦點

  • 如何在Python中編寫簡單代碼,並且速度超越Spark?
    然後,其他的數據工程師團隊重新編寫相同的邏輯代碼並使其大規模工作,或者使用Spark令其與實時流一同工作。當數據科學家需要更改邏輯或將一個不同的數據集用於他/她的模型時,則會進行一次次地迭代。除了注意業務邏輯之外,還要分別或同時在Hadoop和Kubernetes構建集群,並應用整個CI / CD過程手動進行管理。最重要的是,大家都在努力工作,沒有足夠的業務影響來展示它......
  • biopython簡介
    OBF的成員項目部分如下 biopython基於python這個簡單易學的程式語言,提供了一系列處理常見生物信息任務的接口,具體可以完成以下幾種任務 1. 對常用的文件格式,比如fasta, blast等,進行讀寫 2.
  • 編寫基因就像編寫代碼?上帝:代碼更難一些!
    它們將這個基因組命名為名為Caulobacter ethensis-2.0。由計算機生成的基因組根據研究人員的描述,這個基因組是基於一種叫做Caulobacter crescentus的細菌的天然基因代碼而建立的。
  • 初識pycharm編寫方法
    使用pycharm編輯器 雙擊我們安裝好的pycharm編輯器(安裝過程在前幾節)選擇第一個新建項目第一個pure python是純python,下面的那些是一些擴展,暫時不用,我們就選第一個Location是選擇編寫代碼保存的路徑,根據自己的情況點右側小文件夾按鈕,自行選擇一個路徑保存即可保存後點擊右下角的
  • 美推出人類基因組編寫計劃
    人類基因組計劃從1990年持續到2003年,重點是基因測序,讓科學家能夠「閱讀」基因組。而人類基因組編寫計劃的重點是構建基因,讓科學家能夠「編寫」基因組。科學家說,今天雖然基因組測序技術仍在以極快速度發展,但構建基因的能力仍基本局限於少量短的片段,限制了對生命的了解。
  • 應用BioPython解析和可視化蛋白質的結構
    今天咱們就使用BioPython模塊來解析和可視化蛋白質分子。BioPython模塊的安裝首先,在終端下安裝BioPython模塊:pip install biopython經過一些提示BioPython即刻安裝完成。這裡多說一句,由於國內應用pip安裝模塊很慢,如果想要高速安裝,可以選用清華大學的鏡像,即清華大學的tuna鏡像。
  • 代碼跑得慢甩鍋Python?手把手教你如何給代碼提速30%
    其實某個特定程序(無論使用何種程式語言)的運行速度是快還是慢,在很大程度上取決於編寫該程序的開發人員自身素質,以及他們編寫優化而高效代碼的能力。Medium上一位小哥就詳細講了講如何讓python提速30%,以此證明代碼跑得慢不是python的問題,而是代碼本身的問題。
  • 在爭議聲中人類基因組編寫計劃即將啟動
    人類基因組編寫計劃的主要目標是,在10年內把合成包括人類基因組在內的大型基因組的成本降為現在的千分之一,同時研究基因組規模工程新技術及相關倫理框架。發起者說,此計劃將帶來一系列潛在應用,包括培育可移植給人類的器官,培育對癌症免疫、對病毒免疫的細胞等,最終將對人類健康乃至能源、農業、化學和生物修復等領域產生重大影響。人類基因組編寫計劃主要發起者之一、哈佛大學教授喬治·丘奇在一份聲明中說,相比此前的人類基因組計劃,這項巨大挑戰更注重於了解實際應用。
  • python教程第三課:python IDE之jupyter notebook詳細教程講解
    這次我們先來講一下如何使用Notebook進行python的代碼編寫1、 首先我們在系統安裝裡面找到Anaconda,裡面有一項Jupyter Notebook,點擊它以後將打開下面的界面, 這個界面看網址就知道,是在本地啟動打開的一個頁面,那麼除了可以從anaconda裡面打開,也可以在CMD窗口裡面輸入jupyter notebook
  • python基礎教程之python是什麼?
    這是最近10年最常用的10種程式語言的變化圖:python是什麼--python的功能總的來說,這幾種程式語言各有千秋。C語言是可以用來編寫作業系統的貼近硬體的語言,所以,C語言適合開發那些追求運行速度、充分發揮硬體性能的程序。而Python是用來編寫應用程式的高級程式語言。當你用一種語言開始作真正的軟體開發時,你除了編寫代碼外,還需要很多基本的已經寫好的現成的東西,來幫助你加快開發進度。
  • Python,爬蟲開發的不二選擇
    網際網路是由一個個站點和網絡設備組成的大網,我們通過瀏覽器訪問站點,站點把HTML、JS、CSS代碼返回給瀏覽器,這些代碼經過瀏覽器解析、渲染,將豐富多彩的網頁呈現我們眼前。如果我們把網際網路比作一張大的蜘蛛網,數據便是存放於蜘蛛網的各個節點,而爬蟲就是一隻小蜘蛛,沿著網絡抓取自己的獵物(數據)。爬蟲指的是:向網站發起請求,獲取資源後分析並提取有用數據的程序。
  • Python初學者請注意!別這樣直接運行python命令
    比如你編寫了一個模塊my_lib.py,只需在調用這個模塊的程序中加入一行import my_lib即可。這樣設計的好處是,初學者能夠非常方便地執行命令。但是對攻擊者來說,這等於是為惡意程序大開後門。尤其是一些初學者將網上的Python軟體包、代碼下載的到本地~/Downloads文件夾後,就直接在此路徑下運行python命令,這樣做會給電腦帶來極大的隱患。
  • Python的一行代碼有何魅力?lambda匿名函數都自嘆不如
    @數據分析師攻略 公眾號關注、學習更多數據分析的知識與資訊------Python代碼具有簡潔易懂的特點,說明它有許多有趣且簡潔的代碼編寫方法,這也讓很多零基礎入門學習編程的同學偏愛從Python學起,接觸這個語言的人對Python這種簡潔的代碼編寫方法都愛不釋手。
  • Python代碼性能調試和優化
    如果是的話,可能是由於編寫的程序有問題,需要優化。本文蟲蟲就給大家介紹一下如何調試Python應用的性能,以及怎麼對其進行優化。Python性能調試要進行Python性能,前提條件是要找出程序中的性能瓶頸。找出程序中影響程序性能的代碼。
  • python是什麼:Python相關內容了解
    今天來聊聊一篇關於python是什麼:Python相關內容了解的文章,現在就為大家來簡單介紹下python是什麼:Python相關內容了解,希望對各位小夥伴們有所幫助。C語言是可以用來編寫作業系統的貼近硬體的語言,所以,C語言適合開發那些追求運行速度、充分發揮硬體性能的程序。而Python是用來編寫應用程式的高級程式語言。當你用一種語言開始作真正的軟體開發時,你除了編寫代碼外,還需要很多基本的已經寫好的現成的東西,來幫助你加快開發進度。比如說,要編寫一個電子郵件客戶端,如果先從最底層開始編寫網絡協議相關的代碼,那估計一年半載也開發不出來。
  • 《小灰教你零基礎學python》-Python入門語言
    二、什麼是程式語言程序(軟體)是使用程式語言編寫的,比如咱們日常使用的微信、qq、瀏覽器、播放器都是使用程式語言編寫的,程式語言有哪些:javapython程式語言有很多,咱們就學簡單強大的python即可。
  • 是否允許人工合成基因組?人類基因組編寫計劃引憂慮
    只不過此次科學家的工作並非「讀取」基因編碼,而是「編寫」編碼,因此他們將此次計劃命名為「人類基因組編寫計劃」(Genome Project-write)。「人類基因組編寫計劃旨在降低編輯與測試大型基因組的成本,包括人類基因組在內,在十年內將其降低到原本的千分之一。與此同時,我們還要研發新技術,並制定基因組工程和移植醫學的道德規範。」該研究團隊在一則新聞草擬中寫道。
  • 懶人秘籍:教你如何避免編寫pandas代碼
    而大家都在儘可能地避免這種懸崖峭壁,結果可想而知,都轉向了如何避免編寫pandas代碼。在過去4年裡,筆者一直使用pandas作為數據分析的主要工具。必須承認,「如何避免編寫pandas代碼」的大部分內容來自於使用pandas編程的起步階段。在進行代碼審閱時,筆者仍然看到許多經驗豐富的程式設計師在看一些熱門「如何避免使用」的帖子。
  • 人類基因組編寫計劃轉向製造「超級細胞」
    日前,自誕生以來就頗受關注的「基因組編寫計劃「(GP-write)宣布重大調整:項目的重點將由合成所有人類基因組鹼基對轉向重編碼基因組,以製造對病毒感染免疫的細胞。這是因為,一旦用於生產藥用蛋白的細胞遭到病毒感染,藥廠有時就要被迫停產。而耐藥細胞系則更安全有效,對藥廠的檢測要求也更低。
  • 研究解析寨卡病毒基因組RNA二級結構圖譜並發現調控RNA病毒傳播的...
    該論文對寨卡病毒的RNA基因組在二級結構層次進行了綜合分析和建模,並在此基礎上發現且驗證了一個只在流行株系中特異性存在的長程RNA-RNA相互作用,研究表明該相互作用可能促進寨卡病毒流行株系的細胞感染功能。論文顯示了RNA二級結構對寨卡病毒的重要作用,闡釋了調控RNA病毒傳染性和毒性的新型分子機制,為相關藥物開發提供了重要的結構基礎。寨卡病毒是一種黃熱病毒。