Esempio n. 1
0
 def test_retrieve_data_3(self):
     """Verify that dictionaries of data are retrieved for a list of two
     valid PhageIDs."""
     result_list = mysqldb_basic.retrieve_data(
                     self.engine1, column="PhageID",
                     id_list=["L5","Trixie"], query=PHAGE_QUERY)
     self.assertEqual(len(result_list), 2)
Esempio n. 2
0
 def test_retrieve_data_7(self):
     """Verify that an empty list of CDS data is retrieved
     for an invalid PhageID."""
     result_list = mysqldb_basic.retrieve_data(
                     self.engine1, column="PhageID",
                     id_list=["L5"], query=GENE_QUERY)
     self.assertEqual(len(result_list), 0)
Esempio n. 3
0
 def test_retrieve_data_2(self):
     """Verify that an empty list is retrieved for an invalid PhageID."""
     result_list = mysqldb_basic.retrieve_data(self.engine1,
                                               column="PhageID",
                                               id_list=["EagleEye"],
                                               query=PHAGE_QUERY)
     self.assertEqual(len(result_list), 0)
Esempio n. 4
0
 def test_retrieve_data_4(self):
     """Verify that dictionaries of data are retrieved for a list of three
     valid PhageIDs and one invalid PhageID."""
     result_list = mysqldb_basic.retrieve_data(
                     self.engine1, column="PhageID",
                     id_list=["L5","Trixie","EagleEye","D29"],
                     query=PHAGE_QUERY)
     self.assertEqual(len(result_list), 3)
Esempio n. 5
0
 def test_retrieve_data_1(self):
     """Verify that a dictionary of data is retrieved for a valid PhageID."""
     result_list = mysqldb_basic.retrieve_data(
                     self.engine1, column="PhageID",
                     id_list=["L5"], query=PHAGE_QUERY)
     with self.subTest():
         self.assertEqual(len(result_list[0].keys()), 14)
     with self.subTest():
         self.assertEqual(result_list[0]["PhageID"], "L5")
Esempio n. 6
0
 def test_retrieve_data_6(self):
     """Verify that a list of CDS data is retrieved for a valid PhageID."""
     result_list = mysqldb_basic.retrieve_data(
                     self.engine1, column="PhageID",
                     id_list=["Trixie"], query=GENE_QUERY)
     with self.subTest():
         self.assertEqual(len(result_list), 3)
     with self.subTest():
         self.assertEqual(len(result_list[0].keys()), 13)
     with self.subTest():
         self.assertEqual(result_list[0]["PhageID"], "Trixie")
Esempio n. 7
0
def parse_feature_data(engine,
                       ftr_type,
                       column=None,
                       phage_id_list=None,
                       query=None):
    """Returns Cds objects containing data parsed from a
    MySQL database.

    :param engine:
        This parameter is passed directly to the 'retrieve_data' function.
    :type engine: Engine
    :param query:
        This parameter is passed directly to the 'retrieve_data' function.
    :type query: str
    :param ftr_type:
        Indicates the type of features retrieved.
    :type ftr_type: str
    :param column:
        This parameter is passed directly to the 'retrieve_data' function.
    :type column: str
    :param phage_id_list:
        This parameter is passed directly to the 'retrieve_data' function.
    :type phage_id_list: list
    :returns: A list of pdm_utils Cds objects.
    :rtype: list
    """
    result_list = mysqldb_basic.retrieve_data(engine,
                                              column=column,
                                              query=query,
                                              id_list=phage_id_list)
    ftrs = []
    for data_dict in result_list:
        if ftr_type == "cds":
            ftr = parse_gene_table_data(data_dict)
        elif ftr_type == "trna":
            ftr = parse_trna_table_data(data_dict)
        elif ftr_type == "tmrna":
            ftr = parse_tmrna_table_data(data_dict)
        else:
            # If the ftr_type is invalid, just take the data dictionary.
            # Alternatively it could raise an error.
            ftr = data_dict
        ftrs.append(ftr)
    return ftrs
Esempio n. 8
0
 def test_retrieve_data_8(self):
     """Verify that a list of all CDS data is retrieved when no
     PhageID is provided."""
     result_list = mysqldb_basic.retrieve_data(
                             self.engine1, query=GENE_QUERY)
     self.assertEqual(len(result_list), 4)
Esempio n. 9
0
 def test_retrieve_data_5(self):
     """Verify that dictionaries of data are retrieved for multiple
     valid PhageIDs when no list is provided."""
     result_list = mysqldb_basic.retrieve_data(
                     self.engine1, query=PHAGE_QUERY)
     self.assertEqual(len(result_list), 3)
Esempio n. 10
0
def parse_genome_data(engine, phage_id_list=None, phage_query=None,
                      gene_query=None, trna_query=None, tmrna_query=None,
                      gnm_type=""):
    """Returns a list of Genome objects containing data parsed from a MySQL
    database.

    :param engine:
        This parameter is passed directly to the 'retrieve_data' function.
    :type engine: Engine
    :param phage_query:
        This parameter is passed directly to the 'retrieve_data' function
        to retrieve data from the phage table.
    :type phage_query: str
    :param gene_query:
        This parameter is passed directly to the 'parse_feature_data' function
        to retrieve data from the gene table.
        If not None, pdm_utils Cds objects for all of the phage's
        CDS features in the gene table will be constructed
        and added to the Genome object.
    :type gene_query: str
    :param trna_query:
        This parameter is passed directly to the 'parse_feature_data' function
        to retrieve data from the trna table.
        If not None, pdm_utils Trna objects for all of the phage's
        tRNA features in the trna table will be constructed
        and added to the Genome object.
    :type trna_query: str
    :param tmrna_query:
        This parameter is passed directly to the 'parse_feature_data' function
        to retrieve data from the tmrna table.
        If not None, pdm_utils Tmrna objects for all of the phage's
        tmRNA features in the tmrna table will be constructed
        and added to the Genome object.
    :type tmrna_query: str
    :param phage_id_list:
        This parameter is passed directly to the 'retrieve_data' function.
        If there is at at least one valid PhageID, a pdm_utils genome
        object will be constructed only for that phage. If None, or an
        empty list,  genome objects for all phages in the
        database will be constructed.
    :type phage_id_list: list
    :param gnm_type: Identifier for the type of genome.
    :type gnm_type: str
    :returns: A list of pdm_utils Genome objects.
    :rtype: list
    """
    COLUMN = "PhageID"
    genome_list = []
    result_list1 = mysqldb_basic.retrieve_data(engine, column=COLUMN,
                                               id_list=phage_id_list,
                                               query=phage_query)
    for data_dict in result_list1:
        gnm = parse_phage_table_data(data_dict, gnm_type=gnm_type)

        if gene_query is not None:
            cds_list = parse_feature_data(engine, "cds", column=COLUMN,
                                          phage_id_list=[gnm.id],
                                          query=gene_query)

            for x in range(len(cds_list)):
                cds_list[x].genome_length = gnm.length
            gnm.cds_features = cds_list

        if trna_query is not None:
            trna_list = parse_feature_data(engine, "trna", column=COLUMN,
                                          phage_id_list=[gnm.id],
                                          query=trna_query)

            for x in range(len(trna_list)):
                trna_list[x].genome_length = gnm.length
            gnm.trna_features = trna_list

        if tmrna_query is not None:
            tmrna_list = parse_feature_data(engine, "tmrna", column=COLUMN,
                                          phage_id_list=[gnm.id],
                                          query=tmrna_query)

            for x in range(len(tmrna_list)):
                tmrna_list[x].genome_length = gnm.length
            gnm.tmrna_features = tmrna_list

        genome_list.append(gnm)
    return genome_list