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)
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)
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)
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)
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")
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")
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
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)
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)
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