我完全不熟悉MongoDB,所以请原谅我的问题太简单了。
我有 4个数据集,每个数据集都有与样本对应的文件,每个样本有3个文件对应三种规范化方法。所有4个数据集中的样本总数为20000,因此总文件数为60000(由于3种规范化方法)。每个文件大约有2-5列和60000行。我想创建一个包含以下列的数据库:
Dataset, Sample, Type, Normalization, ID, Value
示例:对于数据集 Pnoc
,我有一个示例 C021_0001_20140916
Tumor
类型并且其文件对应于三个规范化方法Kallisto
,RSEM_Genes
和RSEM_Isoforms
。所有这些信息都以文件名编码。 ID 和值将从文件内容中的target_id
和tpm
中获取:
target_id length eff_length est_counts tpm
ENST00000619216.1 68 22.4958 3.07692 1.17482
ENST00000473358.1 712 527.104 0 0
ENST00000469289.1 535 350.229 0 0
ENST00000607096.1 138 16.1984 0 0
ENST00000417324.1 1187 1002.07 0.071357 0.000611642
ENST00000461467.1 590 405.167 0 0
ENST00000335137.3 918 733.078 0 0
ENST00000466430.5 2748 2563.07 233.847 0.783663
ENST00000495576.1 1319 1134.07 0 0
我正在python
编写一个脚本来递归遍历每个文件,创建一个JSON对象,然后我将在脚本本身上传到MongoDB。我想的JSON对象看起来像这样:
# 20000 Sample names, 3 Normalization methods and 60000 IDs in each file.
DatasetName1 {
SampleName1 {
Type {
Normalization1 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization2 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization3 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
}
}
},
SampleName2 {
Type {
Normalization1 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization2 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization3 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
}
}
},
...
SampleName20000{
Type {
Normalization1 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization2 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization3 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
}
}
}
}
然而,在我开始编写脚本来处理这么多文件并转换为JSON之前,我想知道什么是上传到MongoDB的最佳格式--JSON / plaintext / csv或任何其他格式?
如果我能提供有关我的代码的任何其他信息,请告诉我。
谢谢!
答案 0 :(得分:0)
根据您的要求,我会以下面的方式进行。
使用以下列创建CSV。解析文件并将数据转储到CSV中。在任何编程语言中,CSV创建都非常简单。
dt_set, sample, type, norm, id, value
之后使用MongoImport将CSV导入MongoDB。根据您的要求,此架构更容易。聚合,过滤等更容易。我觉得你的嵌套结构示例很复杂。