首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为DNA声明新的数据类型

为DNA声明新的数据类型
EN

Stack Overflow用户
提问于 2014-06-25 11:16:49
回答 6查看 419关注 0票数 4

我研究的是生物学,特别是DNA,通常是基因组测序所产生的数据大小有问题。

对于那些没有生物学背景的人,我将简要介绍一下DNA测序。DNA由四个字母组成: A、T、G和C,它们的特定顺序决定了细胞中发生的事情。

然而,DNA测序技术的一个主要问题是所产生的数据的大小(对于整个基因组来说,通常比千兆字节多得多)。

我知道在不同的计算机上,整数的大小是不同的,但它仍然比四种选择具有更多的信息存储可能性。有没有办法定义一个类型/方式来定义一个只占用2到3位的“基”?我已经搜索了定义一个结构,但恐怕这不是我要找的。谢谢。

另外,这在其他语言(可能是更高级别的java)中也能更好地工作吗?

EN

回答 6

Stack Overflow用户

发布于 2014-06-25 11:30:06

那你就不能把两个ATGC集放到一个字节里吗?像这样:

代码语言:javascript
复制
0 1 0 1 1 0 0 1
A T G C A T G C

那么这一个字节代表TC,AC?

票数 2
EN

Stack Overflow用户

发布于 2014-06-25 11:30:52

如果你想使用Java,你将不得不放弃对事物有多大的控制。可以使用的最小AFAIK是byte原语,它是8位(-128到127)。

尽管我猜测这是有争议的,但Java似乎更适合于广泛的系统控制,而不是像您通常使用C所做的快速、有效的细节工作。

如果不要求您一次将整个数据集保存在内存中,您甚至可以尝试使用MySQL之类的托管数据库来存储基本信息,然后逐段读取这些信息。

票数 1
EN

Stack Overflow用户

发布于 2014-06-25 15:58:04

如果我要写一个类似的代码,我会将核苷酸标识符存储在一个字节中,你可以在字节中添加1,2,3,4作为A,T,G,C的值。即使你会考虑使用RNA,你也可以只添加第五个元素,值5代表U。如果你真的在钻研这个项目,我建议你为密码子做一个类。在这个类中,您可以指定这是一个内含子/外显子、起始密码子还是终止密码子等等。最重要的是,你可以创建一个基因类,在那里你可以指定启动子区域等。

如果你有很大的dna,rna序列,并且它需要比我强烈推荐使用C++和用于科学计算训练的大量计算。(人类基因组总大小为1.4 Gb)

同样因为有很多重复的序列,将基因组结构化为密码子是很有用的,这样你就节省了大量的内存(你只需要引用密码子类,而不需要N次构建这个类)。

同样,通过构造密码子,你可以预定义你的类,而它们只有64个,所以你的整个基因组将只是一个有序的引用列表。因此,在我看来,以密码子为基本单位更有效率。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24399610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档