我有几个m x n基因表达数据矩阵,我想存储在MySQL中。
m是大约30,000个基因(可唯一识别)
n是大约3,000个样本(大多数是唯一可识别的)
我不确定存储这些数据的最佳方法是什么。我最初直接将矩阵读入MySQL表,但后来我被告知这不是一个很好的方法,因为列数(样本)是一个可变数量。我无法转置矩阵并以这种方式存储它们,因为在创建列时,有比MySQL更多的基因。
我被告知过'交接表'可能代表了一种更好的方法。然而,在观看了几部关于这些视频的YouTube视频之后,我并不聪明。我也搜索过Google,并且似乎没有使用联结表在MySQL中存储基因表达数据的教程。那么,有没有人对如何最好地存储这些数据有任何建议?我真的希望有关于此的大量文献,所以如果你有有用的链接,也会非常感激。
答案 0 :(得分:3)
你只需要几个表,我使用的是mysql语法:
CREATE TABLE genes (
`gene_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`gene_name` varchar(99) not null
)ENGINE=InnoDB;
CREATE TABLE samples (
`sample_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`sample_name` varchar(99) not null
)ENGINE=InnoDB;
CREATE TABLE gene_sample (
`gene_id` INT NOT NULL,
`sample_id` INT NOT NULL,
FOREIGN KEY(`gene_id`) REFERENCES genes (`gene_id`),
FOREIGN KEY(`sample_id`) REFERENCES sample (`sample_id`),
)ENGINE=InnoDB;
对于样本中出现的每个基因,请将gene_id
和sample_id
对插入gene_sample
表。
在SELECT中使用两个JOIN表达式来重建完整数据:
SELECT genes.*, samples.*
FROM gene_sample
LEFT JOIN genes USING (gene_id)
LEFT JOIN samples USING (sample_id);