Lab5: DNA

(本次Lab围绕STEAM周设计,感谢宋老师为实验设计提供的专业指导。)

什么是DNA?

DNA是Deoxyribonucleic Acid(脱氧核醣核酸)的缩写,存在于人体细胞之中。它的结构由两螺旋长链组成(如下图),长链上有四种像英文字母一样的「代码」,分别是:A、T、C和G。我们的身体,便是依靠这四种DNA代码(碱基)以不同排序传递遗传讯息。

四种DNA代码A、T、C、G环环相扣,形成DNA长链。不过在整条长链中,只有部分片段携带了遗传讯息,这些片段称为基因(gene)。

基因是遗传的基本单元。在基因中三个代码为一组,称为密码子(codon)。密码子可以编码氨基酸,例如GCU编码丙氨酸,GAA编码谷氨酸。氨基酸是构成蛋白质的基本单位。

基因片段有一个起点,就像程序从main()开始执行一样。基因片段是从ATG这个密码子开始的,称作起始密码子(start codon);基因片段以终止密码子(stop codon)结束,终止密码子可以是TAA, TAG, 或者TGA中的任意一个

计算生物学家通过扫描生物的DNA来记录一些特殊指标,其中一个指标叫做GC含量。GC含量是指DNA片段中G和C质量之和所占的比率。高GC含量的DNA片段通常意味着携带重要的遗传信息。

你的任务

你有两个任务,完成任务一才可以解锁任务二。

任务一

你需要读取一个文件(见dna.txt),该文件包含多条DNA片段。对于每个片段,你的程序需要统计A、T、C、G分别出现的次数。此外,程序还需要计算四种碱基的质量占比。

片段中可能会存在"-"。它们不携带遗传信息,但是它们具有质量。

另外,程序需要记录DNA片段中密码子的信息,来预测该序列是否是可以编码蛋白质的基因(protein-coding gene)。在本次任务中,protein-coding gene是一个具有下列特征的字符串:

  • 以起始密码子开始(ATG)

  • 以终止密码子结束(TAA,TAG或TGA任意一种)

  • 包含至少5个密码子(包括起始密码子和终止密码子)

  • GC含量不低于30%

(注:上述特征只是为了本次实验而做的近似假设,并非生物学中真实的限定条件)

DNA.txt中包含10个DNA片段。第一行是片段名,第二行为DNA序列。序列中包含A、T、C、G和-。

注意:碱基可以用大写字母,或者小写字母表示。

dna.txt(部分)

protein 1
ATGCTACCATGGTAG
protein 2
ATgCCATGgACAATGGATCCcAtGGATTgA
protein 3
CCATT-AATGATCA-CAGTT
...

-代表没有编码功能的片段。绝大部分情况下程序可以忽视它,但是它仍然具有一定质量。

四种碱基,以及“-”的摩尔质量(grams/mol)分别为:

  • A: 135.128

  • C: 111.103

  • G: 151.128

  • T:125.107

  • -:100.000

程序输出

程序运行开始后,需要用户提供输入文件和输出文件的名称(或者路径)。你的程序需要读入输入文件,将处理后的结果保存在输出文件里。

程序运行后的结果应该如下所示:

This program reports information about DNA
nucleotide sequences that may encode proteins.
Input file name? dna.txt
Output file name? output.txt

程序生成的output.txt结果如下所示(部分):

Region Name: protein 1
Nucleotides: ATGCTACCATGGTAG
Nuc. Counts: [4, 3, 4, 4]
Total Mass%: [27.3, 16.8, 30.6, 25.3] of 1978.8
Codons List: [ATG, CTA, CCA, TGG, TAG]
Is Protein?: YES

Region Name: protein 2
Nucleotides: ATGCCATGGACAATGGATCCCATGGATTGA
Nuc. Counts: [9, 6, 8, 7]
Total Mass%: [30.7, 16.8, 30.5, 22.1] of 3967.5
Codons List: [ATG, CCA, TGG, ACA, ATG, GAT, CCC, ATG, GAT, TGA]
Is Protein?: YES

Region Name: protein 3
Nucleotides: CCATTA-ATCATGACA-GTT
Nuc. Counts: [6, 4, 2, 6]
Total Mass%: [32.3, 17.7, 12.1, 29.9] of 2508.1
Codons List: [CCA, TTA, ATC, ATG, ACA, GTT]
Is Protein?: NO
  • 第一行:片段名

  • 第二行:DNA片段(全部为大写字母)

  • 第三行:A、C、G、T分别出现的次数

  • 第四行:A、C、G、T的质量占比(取一位小数)

  • 第五行:片段中出现的所有密码子

  • 第六行:是否为protein-coding gene

常见问题:

Q:有没有可能起始密码子(ATG)和终止密码子中间,存在另外的ATG?

A:有可能,但新的ATG不是起始密码子,而是基因片段的一部分。

Q:是否可能出现ATG和终止密码子之间只有两个碱基的情况?

A:从起始密码子开始,每3个碱基为一组。例如ATG-CA-TAG-A...的前三个密码子为ATG,CAT, AGA,这里TAG并不是这个序列的终止密码子。

Q:我可以用OnlineGDB完成这个Lab吗?

A:可以。你需要将输入文件放在同一个project下。可以参考下面链接:

https://www.onlinegdb.com/Hyvi2l-_f

将output.txt生成之后,可以来401办公室验证结果并领取奖品。验证成功可以开始完成任务二。

任务二

果蝇作为遗传学研究的经典模式动物,主要用来研究真核生物遗传学的基本原理以及概念。1910年,摩尔根发现白眼果蝇并将其用于遗传学研究,摩尔根验证了孟德尔学说,发现并解释了伴性遗传,提出了连锁遗传,绘制了果蝇遗传图谱。因此1933年的诺贝尔医学奖授予了摩尔根,以表彰他在研究染色体在遗传方面的功能中所做出的贡献。1946年,摩尔根的学生,被誉为“果蝇的突变大师”的米勒,证明X射线能使果蝇的突变率提高150倍,因而成为诺贝尔奖获得者。

本次任务,你需要下载果蝇的染色体DNA序列,选取Y染色体进行扫描。

果蝇Y染色体DNA序列文件(数据来源:NCBI):

序列中除了A,T,C,G以外,还有其它字符(例如N),这些非碱基的字符当作"-"来处理。

你的程序需要包含DNA序列中所有可能的protein-encoding gene,每条片段包含:

  • 片段的起始位置和结束位置

  • GC含量

/*Below is the example output template*/
Section1: 
Start Codon Index: 1006
Stop Codon Index: 1895
GC Mass%: 45% 

Section2: 
Start Codon Index: 3948
Stop Codon Index: 4652
GC Mass%: 32% 

...

将结果保存到output_y.txt中,可以来401办公室验证结果并领取奖品。

提交方式:

  • 可以个人参加,也可以组队,最多三人一组。

  • 所有任务提交的截止时间为11月25日中午十二点。

Last updated