什么是上传到MongoDB的最佳文件格式

时间:2016-08-10 15:52:03

标签: python json mongodb

我完全不熟悉MongoDB,所以请原谅我的问题太简单了。

我有 4个数据集,每个数据集都有与样本对应的文件,每个样本有3个文件对应三种规范化方法。所有4个数据集中的样本总数为20000,因此总文件数为60000(由于3种规范化方法)。每个文件大约有2-5列和60000行。我想创建一个包含以下列的数据库:

Dataset, Sample, Type, Normalization, ID, Value

示例:对于数据集 Pnoc,我有一个示例 C021_0001_20140916 Tumor 类型并且其文件对应于三个规范化方法KallistoRSEM_GenesRSEM_Isoforms。所有这些信息都以文件名编码。 ID 将从文件内容中的target_idtpm中获取:

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或任何其他格式?

如果我能提供有关我的代码的任何其他信息,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的要求,我会以下面的方式进行。

使用以下列创建CSV。解析文件并将数据转储到CSV中。在任何编程语言中,CSV创建都非常简单。

dt_set, sample, type, norm, id, value

之后使用MongoImport将CSV导入MongoDB。根据您的要求,此架构更容易。聚合,过滤等更容易。我觉得你的嵌套结构示例很复杂。