我需要建立一个数据库来保存从DNA测序实验中获得的数据。
( 1)一个样本中有500万列数据,总共有数百个样本
2)有几个数据点为空
3)每周计算每一栏的中位数、标准差等。
什么是对这些数据的最佳设计,并有助于缩短分析所花费的时间?
如有任何建议(S),将不胜感激。
数据类型: DNA测序数据。将整个染色体分解成1kb的窗口,计算测序的平均深度等。
专栏: bed1,bed2...bed10000..。
行: sample1,sample2..。
即使只关注基因,也会有几千列。
我不知道是否有任何工具或解决方案可供使用。
发布于 2020-05-10 06:21:22
你建议的是一种标准的方法来存储DNA测序结果吗?除了技术上的困难--祝您好运,找到一个允许这么多列(SciDB?)的数据库--这将使查询变得很棘手。我会想办法让你的桌子又高又瘦,而不是又矮又胖。
我要做的事情如下:
CREATE TABLE sample
(
bed INTEGER NOT NULL,
sample_no INTEGER NOT NULL,
..
.. other fields?
.. chromosomal location? sequence? phenotype?
.. dna_type (gene | promoter | mRNA | tRNA... &c.)?
..
CONSTRAINT sample_pk PRIMARY KEY (bed, sample_no)
);我相信这样的模式将方便查询,并且在技术上更可行--它将更好地符合关系模型,并最终将为您省去很多麻烦!我问上面的Is this a standard method of storing DNA sequencing results? -这个工作已经做过了,所以你为什么要重新发明车轮?
别误会我的意思--我都赞成对生物现象进行实验和尝试,这就是科学/分子生物学的意义所在,但其他人肯定以前就做过--你可能想看看他们的工作吗?作为记录,我拥有巴黎大学的细胞和分子遗传学硕士学位。嗯..。
发布于 2020-05-10 06:22:43
五百万列?不用了。将列作为关系数据库术语,它表示一个与所讨论的单个事物(行)不同的原子事实,而不是与任何其他事实重叠。我可以相信只有一件事的测量值是5米,但不是单独的,不同的事实。
如果您想在关系数据库(Postgres、SQL Server等)中这样做的话。最好是计算行上的聚合。然后这些表看起来就像
Sample (sample_id, source, ...)
Bed (sample_id, bed_number, ...)这将给你几百米在床上。任何最近的硬件都可以处理这个问题。
有专门设计的软件产品来操作DNA类型值。我不够专业,不能给你建议。我将提到bioinformatics.stackexchange.com的存在。你更有可能在那里找到具体的知识。
一些NoSQL产品可能能够将所有500万值保存在一个单独的“行”中。然而,不太可能有内置函数来执行跨“列”的计算。
https://dba.stackexchange.com/questions/266845
复制相似问题