[生物信息学]分子生物学的核心法则

Posted GoldenaArcher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[生物信息学]分子生物学的核心法则相关的知识,希望对你有一定的参考价值。

[生物信息学]分子生物学的核心法则

主要用 python 实现分子生物学中核心法则的基础功能,入门第一课。当然,核心部分还是计算,所以会轻放生物部分。

这里学习的核心法则指的是 蛋白质生物合成,即 脱氧核糖核酸(DNA) 通过 转录(transcribe) 获得 信使核糖核酸(mRNA),mRNA 再通过 转译(translate) 获得 蛋白质(protein) 的过程。

过程图解如下:

图像资料来源于: https://rebelscience.club/2020/03/bioinformatics-in-python-dna-toolkit-part-2-transcription-and-reverse-complement/

DNA 的反向互补(reverse complement)

DNA 由四种碱基组成:A, G, T, C,其中 A 与 T 互补,G 与 C 互补。而 DNA 又是由两条 DNA 链由中心轴盘绕,形成双螺旋结构,两条 DNA 链反向互补,形成稳定的结构:

图像资料来源于: https://simple.wikipedia.org/wiki/Complementarity_(molecular_biology)

计算方式为:

  1. 获取一条 DNA 链的补数

    ATCG,它的补数为 TAGC

  2. 进行反转

    TAGC 反转为 CGAT

python 部分:

dna_pair = {
    'A': 'T',
    'T': 'A',
    'C': 'G',
    'G': 'C'
}

def reverse_complement(sequence):
    return ''.join([dna_pair[gene] for gene in sequence])[::-1]

本质上来说这一段的写法是这个意思:

def reverse_complement(sequence):
    # 这里新建一个新的数组去保留所有的值
    reversed_sequence = []
    # 遍历所有的序列,找到对应的碱基
    for gene in sequence:
        reversed_sequence += dna_pair[gene]
    # [::-1] 起到翻转 字符串/数组 的作用
    # ''.join() 起到将数组转成字符串的作用
    return ''.join(reversed_sequence)[::-1]

转录(transcribe)

转录是 DNA 变为 mRNA 的过程,与 DNA 的反向互补 过程相似,只不过 A 与 U 互补,而且不需要翻转。

python 部分:

rna_pair = {
    'A': 'U',
    'T': 'A',
    'C': 'G',
    'G': 'C'
}

def transcribe(sequence):
    return ''.join([rna_pair[gene] for gene in sequence])

最后的结果是 ATCG 会转为 UAGC

转译(translate)

即 mRNA 转为 蛋白质 的过程。

mRNA 三个基因为一组转换为对应的氨基酸,其配对表如下:

图像资料来源于: https://www.researchgate.net/figure/The-standard-genetic-code-table_tbl1_7002668

python 实现如下:

# 首先有 mRNA 与 氨基酸的对应表
# https://www.geeksforgeeks.org/dna-protein-python-3/
genetic_code = {
    'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M',
    'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T',
    'AAC':'N', 'AAT':'N', 'AAA':'K', 'AAG':'K',
    'AGC':'S', 'AGT':'S', 'AGA':'R', 'AGG':'R',
    'CTA':'L', 'CTC':'L', 'CTG':'L', 'CTT':'L',
    'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCT':'P',
    'CAC':'H', 'CAT':'H', 'CAA':'Q', 'CAG':'Q',
    'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGT':'R',
    'GTA':'V', 'GTC':'V', 'GTG':'V', 'GTT':'V',
    'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCT':'A',
    'GAC':'D', 'GAT':'D', 'GAA':'E', 'GAG':'E',
    'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGT':'G',
    'TCA':'S', 'TCC':'S', 'TCG':'S', 'TCT':'S',
    'TTC':'F', 'TTT':'F', 'TTA':'L', 'TTG':'L',
    'TAC':'Y', 'TAT':'Y', 'TAA':'_', 'TAG':'_',
    'TGC':'C', 'TGT':'C', 'TGA':'_', 'TGG':'W',
}

# 随后进行转换
def translate_rna_fragment(rna_sequence):
    decoded_str = []
    sequence_list = list(rna_sequence)
    while (len(sequence_list) >= 3):
        decoded_str += genetic_code[''.join(sequence_list[:3])]
        sequence_list = sequence_list[3:]
    return ''.join(decoded_str)

注*:不直接用字符串而是转为数组的原因在于,python 中字符串是不可变的,所以每一次更新字符串的代价都很大。作业体量小的时候问题不大,一旦作业体量比较大的话——如果是真的生物,最小的基因组也是在百万起跳,运行速度肯定不尽如人意。

本章学习内容主要重点还在 字符串/数组 的操作,以及 字典 的取值,算是对 python 的一个入门级学习。

以上是关于[生物信息学]分子生物学的核心法则的主要内容,如果未能解决你的问题,请参考以下文章

bioinfo生物信息学——代码遇见生物学的地方

生物信息学书籍分享

如何学习生物信息学

生物信息技术专业怎么样_就业方向_主要学啥

LaTeX 排版生物信息学 Perl 语言入门

克里克中心法则适用于所有生物吗?