Tuesday, April 19, 2016

人体30亿个碱基对的基因组

作者:GentleYang 杨振涛
链接:https://www.zhihu.com/question/21672220/answer/19590442
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1. 测序的时候,理论上(注意是理论上,实践中不同目的不同方法做法都不相同)是不需要测出一对碱基的,既然一个碱基对是互补配对(A-T,C-G),那知道一个就可以了嘛,记录时也是记录一个,序列数据文件经常描述单链加上方向(如3-5)。

2 你说的多少M,并不是对容量的描述,是对序列长度(字符串长度)的描述!!! 区分这个很重要,容量因为有多次折叠,远远超过M级别的,我在这里把容量近似地理解为信息量。

3 我们一般说的人类基因组大小3G,是指对每个染色体长度总和的描述,注意是长度;这也就解释了为什么你说的是60亿个碱基, 双链, 3G X 2 = 6G。

4 为什么你看到的保存一个人类基因组的数据文件大小是750M ? 3G的长度,一个位置有4种或5种可能性(A,T,C,G,N),也就是说如果你用碱基的字母代码来存储它,而不另外编码,那么一个碱基占用的是一个字节(一个字符长度),而不是一个bit; 但实践中,我们大多采用编码的形式存储,即将 ATCG编码为00,01,10,11,这样一个字节可以存储4个碱基,4 X 750M = 3G

关于DNA序列数据编码,有很多人在研究,一些非主流的方法确实可以减少数据文件大小,但目前并未有本质性的突破,而且大多数方法的目的是解决永久存储的序列文件,也就是说你编码和解码都需要耗时很久,带来的性价比并不高,只适合于大量永久存储的序列数据;如果你天天都用的参考序列,实践中都是将比如人的3G的数据直接放在大型机的内存中, 谁要谁访问。 这是一个时间和空间的置换问题,目前并不存在任何一种可以同时获得短时间和低空间的方法

No comments:

Post a Comment