def setUp(self) -> None: args = argparse.Namespace() args.sequence_db = self.find_data("base", "test_1.fasta") args.db_type = 'gembase' args.models_dir = self.find_data('models') cfg = Config(MacsyDefaults(), args) model_name = 'foo' self.models_location = ModelLocation(path=os.path.join(args.models_dir, model_name)) # we need to reset the ProfileFactory # because it's a like a singleton # so other tests are influenced by ProfileFactory and it's configuration # for instance search_genes get profile without hmmer_exe profile_factory = ProfileFactory(cfg) model = Model(model_name, 10) self.profile_factory = ProfileFactory(cfg) gene_name = "gspD" c_gene_gspd = CoreGene(self.models_location, gene_name, self.profile_factory) gene_gspd = ModelGene(c_gene_gspd, model, multi_system=True) gene_name = "sctJ" c_gene_sctj = CoreGene(self.models_location, gene_name, self.profile_factory) gene_sctj = ModelGene(c_gene_sctj, model, multi_system=True) gene_name = "sctN" c_gene_sctn = CoreGene(self.models_location, gene_name, self.profile_factory) gene_sctn = Exchangeable(c_gene_sctn, gene_sctj) gene_sctj.add_exchangeable(gene_sctn) model.add_mandatory_gene(gene_gspd) model.add_accessory_gene(gene_sctj) # CoreHit(gene, hit_id, hit_seq_length, replicon_name, position, i_eval, score, # profile_coverage, sequence_coverage, begin_match, end_match # pos score chit_1 = CoreHit(c_gene_gspd, "hit_1", 803, "replicon_id", 2, 1.0, 1.0, 1.0, 1.0, 10, 20) chit_2 = CoreHit(c_gene_sctj, "hit_2", 803, "replicon_id", 3, 1.0, 1.0, 1.0, 1.0, 10, 20) chit_3 = CoreHit(c_gene_gspd, "hit_3", 803, "replicon_id", 10, 1.0, 3.0, 1.0, 1.0, 10, 20) chit_4 = CoreHit(c_gene_sctn, "hit_4", 803, "replicon_id", 14, 1.0, 4.0, 1.0, 1.0, 10, 20) chit_5 = CoreHit(c_gene_gspd, "hit_5", 803, "replicon_id", 20, 1.0, 2.0, 1.0, 1.0, 10, 20) self.mhit_1 = ModelHit(chit_1, gene_gspd, GeneStatus.MANDATORY) self.mhit_2 = ModelHit(chit_2, gene_sctj, GeneStatus.ACCESSORY) self.mhit_3 = ModelHit(chit_3, gene_gspd, GeneStatus.MANDATORY) self.mhit_4 = ModelHit(chit_4, gene_sctn, GeneStatus.ACCESSORY) self.mhit_5 = ModelHit(chit_5, gene_gspd, GeneStatus.MANDATORY) self.ms_1 = MultiSystem(chit_1, gene_ref=gene_gspd, gene_status=GeneStatus.MANDATORY) self.ms_2 = MultiSystem(chit_2, gene_ref=gene_sctj, gene_status=GeneStatus.ACCESSORY) self.ms_3 = MultiSystem(chit_3, gene_ref=gene_gspd, gene_status=GeneStatus.MANDATORY) self.ms_4 = MultiSystem(chit_4, gene_ref=gene_sctn, gene_status=GeneStatus.ACCESSORY) self.ms_5 = MultiSystem(chit_5, gene_ref=gene_gspd, gene_status=GeneStatus.MANDATORY)
def test_counterpart(self): mh1 = MultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY) mh1.counterpart = [self.mhit_3, self.mhit_4] self.assertSetEqual(mh1.counterpart, {self.mhit_3, self.mhit_4}) with self.assertRaises(MacsypyError) as ctx: with self.catch_log() as log: mh1.counterpart = [self.mhit_3, self.mhit_2] self.assertEqual(str(ctx.exception), "Try to set counterpart for hit 'gspD' with non compatible hits: ['gspD', 'sctJ']")
def test_init(self): # create loner from a CoreHit lms1 = LonerMultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY) self.assertEqual(lms1.gene_ref, self.mg_gspd) self.assertEqual(lms1.status, GeneStatus.MANDATORY) # create loner from a CoreHit with counterpart # test the creation, the content of counterpart is test in test_counterpart _ = LonerMultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY, counterpart=[self.mhit_3]) # try to create MS from CoreHit but without gene_ref nor gene_status with self.assertRaises(MacsypyError) as ctx: LonerMultiSystem(self.chit_1, gene_ref=self.mg_gspd) self.assertEqual(str(ctx.exception), "Cannot Create a LonerMultiSystem hit from CoreHit (gspD, 2) " "without specifying 'gene_ref' and 'gene_status'") with self.assertRaises(MacsypyError) as ctx: LonerMultiSystem(self.chit_1, gene_status=GeneStatus.MANDATORY) self.assertEqual(str(ctx.exception), "Cannot Create a LonerMultiSystem hit from CoreHit (gspD, 2) " "without specifying 'gene_ref' and 'gene_status'") # create MultiSystem from a ModelHit mh1 = ModelHit(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY) lms = LonerMultiSystem(mh1) self.assertEqual(lms.gene_ref, self.mg_gspd) self.assertEqual(lms.status, GeneStatus.MANDATORY) with self.catch_log(log_name='macsypy'): with self.assertRaises(MacsypyError) as ctx: LonerMultiSystem(self.chit_2, gene_ref=self.mg_sctj, gene_status=GeneStatus.ACCESSORY) self.assertEqual(str(ctx.exception), "hit_2 cannot be a multi systems, gene_ref 'sctJ' not tag as multi_system") with self.assertRaises(MacsypyError) as ctx: LonerMultiSystem(self.chit_1, self.cg_gspd, GeneStatus.MANDATORY) self.assertEqual(str(ctx.exception), "The LonerMultiSystem 'gene_ref' argument must be a ModelGene" " not <class 'macsypy.gene.CoreGene'>.") # create from a MultiSystem mh1 = MultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY, counterpart=[self.mhit_3, self.mhit_4]) lms = LonerMultiSystem(mh1) self.assertEqual(lms.gene_ref, self.mg_gspd) self.assertEqual(lms.status, GeneStatus.MANDATORY) self.assertSetEqual(set(lms.counterpart), set([self.mhit_3, self.mhit_4]))
def test_str(self): ms2 = MultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY, counterpart=[self.mhit_3]) self.assertEqual(str(ms2), '\t'.join(['hit_1', 'replicon_id', '2', '803', 'gspD', '1.000e+00', '1.000', '1.000', '1.000', '10', '20', 'hit_3']) )
def test_multi_system(self): ms1 = MultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY) self.assertTrue(ms1.multi_system)
def test_loner(self): ms1 = MultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY) self.assertFalse(ms1.loner)
def test_len(self): ms1 = MultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY) self.assertEqual(len(ms1), 1) ms2 = MultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY, counterpart=[self.mhit_3]) self.assertEqual(len(ms2), 2)
def test_counterpart(self): ms1 = MultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY) self.assertSetEqual(ms1.counterpart, set()) ms2 = MultiSystem(self.chit_1, gene_ref=self.mg_gspd, gene_status=GeneStatus.MANDATORY, counterpart=[self.mhit_3]) self.assertSetEqual(ms2.counterpart, set([self.mhit_3]))
def _build_clusters(cfg, profile_factory): model_name = 'foo' model_location = ModelLocation( path=os.path.join(cfg.models_dir()[0], model_name)) models = {} cg_sctn_flg = CoreGene(model_location, "sctN_FLG", profile_factory) cg_sctj_flg = CoreGene(model_location, "sctJ_FLG", profile_factory) cg_flgB = CoreGene(model_location, "flgB", profile_factory) cg_tadZ = CoreGene(model_location, "tadZ", profile_factory) cg_sctn = CoreGene(model_location, "sctN", profile_factory) cg_sctj = CoreGene(model_location, "sctJ", profile_factory) cg_gspd = CoreGene(model_location, "gspD", profile_factory) cg_abc = CoreGene(model_location, "abc", profile_factory) cg_sctc = CoreGene(model_location, "sctC", profile_factory) ########### # Model A # ########### models['A'] = Model("foo/A", 10) mgA_sctn = ModelGene(cg_sctn, models['A']) mgA_sctn_hom = Exchangeable(cg_sctn_flg, mgA_sctn) mgA_sctn.add_exchangeable(mgA_sctn_hom) mgA_sctj = ModelGene(cg_sctj, models['A']) mgA_sctj_an = Exchangeable(cg_sctj_flg, mgA_sctj) mgA_sctj.add_exchangeable(mgA_sctj_an) mgA_gspd = ModelGene(cg_gspd, models['A']) mgA_gspd_an = Exchangeable(cg_flgB, mgA_gspd) mgA_gspd.add_exchangeable(mgA_gspd_an) mgA_abc = ModelGene(cg_abc, models['A']) mgA_abc_ho = Exchangeable(cg_tadZ, mgA_abc) mgA_abc.add_exchangeable(mgA_abc_ho) models['A'].add_mandatory_gene(mgA_sctn) models['A'].add_mandatory_gene(mgA_sctj) models['A'].add_accessory_gene(mgA_gspd) models['A'].add_forbidden_gene(mgA_abc) models['A']._min_mandatory_genes_required = 2 models['A']._min_genes_required = 2 ########### # Model B # ########### models['B'] = Model("foo/B", 10) mgB_sctn_flg = ModelGene(cg_sctn_flg, models['B']) mgB_sctj_flg = ModelGene(cg_sctj_flg, models['B']) mgB_flgB = ModelGene(cg_flgB, models['B']) mgB_tadZ = ModelGene(cg_tadZ, models['B']) models['B'].add_mandatory_gene(mgB_sctn_flg) models['B'].add_mandatory_gene(mgB_sctj_flg) models['B'].add_accessory_gene(mgB_flgB) models['B'].add_accessory_gene(mgB_tadZ) models['B']._min_mandatory_genes_required = 1 models['B']._min_genes_required = 2 ########### # Model C # ########### models['C'] = Model("foo/C", 10) mgC_sctn_flg = ModelGene(cg_sctn_flg, models['C']) mgC_sctj_flg = ModelGene(cg_sctj_flg, models['C']) mgC_flgB = ModelGene(cg_flgB, models['C']) mgC_tadZ = ModelGene(cg_tadZ, models['C']) mgC_gspd = ModelGene(cg_gspd, models['C']) models['C'].add_mandatory_gene(mgC_sctn_flg) models['C'].add_mandatory_gene(mgC_sctj_flg) models['C'].add_mandatory_gene(mgC_flgB) models['C'].add_accessory_gene(mgC_tadZ) models['C'].add_accessory_gene(mgC_gspd) models['C']._min_mandatory_genes_required = 1 models['C']._min_genes_required = 2 ########### # Model D # ########### models['D'] = Model("foo/D", 10) mgD_abc = ModelGene(cg_abc, models['D']) mgD_sctn = ModelGene(cg_sctn, models['D']) models['D'].add_mandatory_gene(mgD_abc) models['D'].add_accessory_gene(mgD_sctn) models['D']._min_mandatory_genes_required = 1 models['D']._min_genes_required = 1 ########### # Model E # ########### models['E'] = Model("foo/E", 10) mgE_gspd = ModelGene(cg_gspd, models['E']) models['E'].add_accessory_gene(mgE_gspd) models['E']._min_mandatory_genes_required = 0 models['E']._min_genes_required = 1 ########### # Model F # ########### models['F'] = Model("foo/F", 10) mgF_abc = ModelGene(cg_abc, models['F']) models['F'].add_mandatory_gene(mgF_abc) models['F']._min_mandatory_genes_required = 1 models['F']._min_genes_required = 1 ##################### # Model G idem as C # ##################### models['G'] = Model("foo/G", 10) mgG_sctn_flg = ModelGene(cg_sctn_flg, models['G']) mgG_sctj_flg = ModelGene(cg_sctj_flg, models['G']) mgG_flgB = ModelGene(cg_flgB, models['G']) mgG_tadZ = ModelGene(cg_tadZ, models['G']) mgG_gspd = ModelGene(cg_gspd, models['G']) models['G'].add_mandatory_gene(mgG_sctn_flg) models['G'].add_mandatory_gene(mgG_sctj_flg) models['G'].add_mandatory_gene(mgG_flgB) models['G'].add_accessory_gene(mgG_tadZ) models['G'].add_accessory_gene(mgG_gspd) ##################### # Model H idem as D # ##################### models['H'] = Model("foo/H", 10) mgH_abc = ModelGene(cg_abc, models['H']) mgH_sctn = ModelGene(cg_sctn, models['H']) models['H'].add_mandatory_gene(mgH_abc) models['H'].add_accessory_gene(mgH_sctn) models['H']._min_mandatory_genes_required = 1 models['H']._min_genes_required = 1 ########### # Model I # ########### models['I'] = Model("foo/I", 10) mgI_abc = ModelGene(cg_abc, models['I']) mgI_flgB = ModelGene(cg_flgB, models['I']) mgI_tadZ = ModelGene(cg_tadZ, models['I']) models['I'].add_mandatory_gene(mgI_abc) models['I'].add_mandatory_gene(mgI_flgB) models['I'].add_accessory_gene(mgI_tadZ) models['I']._min_mandatory_genes_required = 1 models['I']._min_genes_required = 1 ########### # model J # ########### models['J'] = Model("foo/J", 10) mgJ_abc = ModelGene(cg_abc, models['J']) mgJ_gspd = ModelGene(cg_gspd, models['J']) mgJ_tadZ = ModelGene(cg_tadZ, models['J']) mgJ_sctc = ModelGene(cg_sctc, models['J']) models['J'].add_mandatory_gene(mgJ_abc) models['J'].add_mandatory_gene(mgJ_gspd) models['J'].add_accessory_gene(mgJ_tadZ) models['J'].add_accessory_gene(mgJ_sctc) models['J']._min_mandatory_genes_required = 1 models['J']._min_genes_required = 1 ########### # model K # ########### models['K'] = Model("foo/K", 10) mgK_flgB = ModelGene(cg_flgB, models['K']) mgK_sctn_flg = ModelGene(cg_sctn_flg, models['K']) mgK_sctj_flg = ModelGene(cg_sctj_flg, models['K']) mgK_sctn = ModelGene(cg_sctn, models['K']) models['K'].add_mandatory_gene(mgK_flgB) models['K'].add_mandatory_gene(mgK_sctn_flg) models['K'].add_accessory_gene(mgK_sctj_flg) models['K'].add_accessory_gene(mgK_sctn) models['K']._min_mandatory_genes_required = 1 models['K']._min_genes_required = 1 ########### # model L # ########### models['L'] = Model("foo/L", 10) mgL_flgB = ModelGene(cg_flgB, models['L']) mgL_sctn_flg = ModelGene(cg_sctn_flg, models['L']) mgL_sctj_flg = ModelGene(cg_sctj_flg, models['L']) mgL_sctn = ModelGene(cg_sctn, models['L'], loner=True) models['L'].add_mandatory_gene(mgL_flgB) models['L'].add_mandatory_gene(mgL_sctn_flg) models['L'].add_accessory_gene(mgL_sctj_flg) models['L'].add_accessory_gene(mgL_sctn) ########### # model M # ########### models['M'] = Model("foo/L", 10) mgM_sctj = ModelGene(cg_sctj, models['M']) mgM_gspd = ModelGene(cg_gspd, models['M']) mgM_sctn = ModelGene(cg_sctn, models['M'], multi_system=True) mgM_tadZ = ModelGene(cg_tadZ, models['M']) mgM_abc = ModelGene(cg_abc, models['M']) models['M'].add_mandatory_gene(mgM_sctj) models['M'].add_mandatory_gene(mgM_gspd) models['M'].add_accessory_gene(mgM_sctn) models['M'].add_accessory_gene(mgM_tadZ) models['M'].add_accessory_gene(mgM_abc) ########### # model N # ########### models['N'] = Model("foo/N", 10) mgN_flgB = ModelGene(cg_flgB, models['N']) mgN_sctn_flg = ModelGene(cg_sctn_flg, models['N']) mgN_sctj = ModelGene(cg_sctj, models['N']) mgN_sctj_flg = ModelGene(cg_sctj_flg, models['N']) mgN_sctn = ModelGene(cg_sctn, models['N'], loner=True) mgN_tadZ = ModelGene(cg_tadZ, models['N'], loner=True) models['N'].add_mandatory_gene(mgN_flgB) models['N'].add_mandatory_gene(mgN_sctn_flg) models['N'].add_accessory_gene(mgN_sctj) models['N'].add_accessory_gene(mgN_sctj_flg) models['N'].add_accessory_gene(mgN_sctn) models['N'].add_accessory_gene(mgN_tadZ) ########### # model O # ########### models['O'] = Model("foo/O", 10) mgO_sctj = ModelGene(cg_sctj, models['O'], multi_system=True) mgO_sctj_flg = Exchangeable(cg_sctj_flg, mgO_sctj) mgO_sctj.add_exchangeable(mgO_sctj_flg) mgO_gspd = ModelGene(cg_gspd, models['O'], loner=True, multi_system=True) mgO_sctn = ModelGene(cg_sctn, models['O'], multi_system=True) mgO_sctn_flg = Exchangeable(cg_sctn_flg, mgO_sctn) mgO_sctn.add_exchangeable(mgO_sctn_flg) mgO_tadZ = ModelGene(cg_tadZ, models['O'], loner=True) mgO_abc = ModelGene(cg_abc, models['O']) models['O'].add_mandatory_gene(mgO_sctj) models['O'].add_mandatory_gene(mgO_gspd) models['O'].add_accessory_gene(mgO_sctn) models['O'].add_accessory_gene(mgO_tadZ) models['O'].add_neutral_gene(mgO_abc) ch_sctj = CoreHit(cg_sctj, "hit_sctj", 803, "replicon_id", 1, 1.0, 1.0, 1.0, 1.0, 10, 20) ch_sctn = CoreHit(cg_sctn, "hit_sctn", 803, "replicon_id", 2, 1.0, 1.0, 1.0, 1.0, 10, 20) ch_gspd = CoreHit(cg_gspd, "hit_gspd", 803, "replicon_id", 3, 1.0, 1.0, 1.0, 1.0, 10, 20) ch_sctn_flg = CoreHit(cg_sctn_flg, "hit_sctn_flg", 803, "replicon_id", 4, 1.0, 1.0, 1.0, 1.0, 10, 20) ch_sctj = CoreHit(cg_sctj, "hit_sctj", 803, "replicon_id", 5, 1.0, 1.0, 1.0, 1.0, 10, 20) ch_sctj_flg = CoreHit(cg_sctj_flg, "hit_sctj_flg", 803, "replicon_id", 6, 1.0, 1.0, 1.0, 1.0, 10, 20) ch_flgB = CoreHit(cg_flgB, "hit_flgB", 803, "replicon_id", 7, 1.0, 1.0, 1.0, 1.0, 10, 20) ch_tadZ = CoreHit(cg_tadZ, "hit_tadZ", 803, "replicon_id", 8, 1.0, 1.0, 1.0, 1.0, 10, 20) ch_abc = CoreHit(cg_abc, "hit_abc", 803, "replicon_id", 9, 1.0, 1.0, 1.0, 1.0, 10, 20) hit_weights = HitWeight(**cfg.hit_weights()) clusters = {} clusters['c1'] = Cluster([ ModelHit(ch_sctj, gene_ref=mgA_sctj, gene_status=GeneStatus.MANDATORY), ModelHit(ch_sctn, gene_ref=mgA_sctn, gene_status=GeneStatus.MANDATORY), ModelHit(ch_gspd, gene_ref=mgA_gspd, gene_status=GeneStatus.ACCESSORY) ], models['A'], hit_weights) clusters['c2'] = Cluster([ ModelHit(ch_sctj, gene_ref=mgA_sctj, gene_status=GeneStatus.MANDATORY), ModelHit(ch_sctn, gene_ref=mgA_sctn, gene_status=GeneStatus.MANDATORY) ], models['A'], hit_weights) clusters['c3'] = Cluster([ ModelHit(ch_sctj_flg, gene_ref=mgB_sctj_flg, gene_status=GeneStatus.MANDATORY), ModelHit(ch_tadZ, gene_ref=mgB_tadZ, gene_status=GeneStatus.ACCESSORY), ModelHit(ch_flgB, gene_ref=mgB_flgB, gene_status=GeneStatus.ACCESSORY) ], models['B'], hit_weights) clusters['c4'] = Cluster([ ModelHit(ch_sctj_flg, gene_ref=mgC_sctj_flg, gene_status=GeneStatus.MANDATORY), ModelHit(ch_tadZ, gene_ref=mgC_tadZ, gene_status=GeneStatus.ACCESSORY), ModelHit(ch_flgB, gene_ref=mgC_flgB, gene_status=GeneStatus.MANDATORY), ModelHit(ch_gspd, gene_ref=mgC_gspd, gene_status=GeneStatus.ACCESSORY) ], models['C'], hit_weights) clusters['c5'] = Cluster([ ModelHit(ch_abc, gene_ref=mgD_abc, gene_status=GeneStatus.MANDATORY), ModelHit(ch_sctn, gene_ref=mgD_sctn, gene_status=GeneStatus.ACCESSORY) ], models['D'], hit_weights) clusters['c6'] = Cluster([ ModelHit(ch_gspd, gene_ref=mgE_gspd, gene_status=GeneStatus.ACCESSORY) ], models['E'], hit_weights) clusters['c7'] = Cluster( [ModelHit(ch_abc, gene_ref=mgF_abc, gene_status=GeneStatus.MANDATORY)], models['F'], hit_weights) clusters['c8'] = Cluster([ ModelHit(ch_flgB, gene_ref=mgI_flgB, gene_status=GeneStatus.MANDATORY), ModelHit(ch_tadZ, gene_ref=mgI_tadZ, gene_status=GeneStatus.ACCESSORY) ], models['I'], hit_weights) clusters['c9'] = Cluster([ ModelHit(ch_abc, gene_ref=mgJ_abc, gene_status=GeneStatus.MANDATORY), ModelHit(ch_tadZ, gene_ref=mgJ_tadZ, gene_status=GeneStatus.ACCESSORY) ], models['J'], hit_weights) clusters['c10'] = Cluster([ ModelHit(ch_flgB, gene_ref=mgK_flgB, gene_status=GeneStatus.MANDATORY), ModelHit(ch_sctn, gene_ref=mgK_sctn, gene_status=GeneStatus.ACCESSORY) ], models['K'], hit_weights) clusters['c11'] = Cluster([ ModelHit(ch_flgB, gene_ref=mgL_flgB, gene_status=GeneStatus.MANDATORY), ModelHit(ch_sctn_flg, gene_ref=mgL_sctn_flg, gene_status=GeneStatus.MANDATORY) ], models['L'], hit_weights) clusters['c12'] = Cluster([ ModelHit(ch_sctj_flg, gene_ref=mgL_sctj_flg, gene_status=GeneStatus.ACCESSORY), ModelHit(ch_sctn, gene_ref=mgL_sctn, gene_status=GeneStatus.ACCESSORY) ], models['L'], hit_weights) clusters['c13'] = Cluster( [Loner(ch_sctn, gene_ref=mgL_sctn, gene_status=GeneStatus.ACCESSORY)], models['L'], hit_weights) clusters['c14'] = Cluster([ ModelHit(ch_sctj, mgM_sctj, gene_status=GeneStatus.MANDATORY), MultiSystem( ch_sctn, gene_ref=mgM_sctn, gene_status=GeneStatus.ACCESSORY), ModelHit(ch_gspd, gene_ref=mgM_gspd, gene_status=GeneStatus.ACCESSORY) ], models['M'], hit_weights) clusters['c15'] = Cluster([ ModelHit(ch_tadZ, gene_ref=mgM_tadZ, gene_status=GeneStatus.ACCESSORY), ModelHit(ch_abc, gene_ref=mgM_abc, gene_status=GeneStatus.ACCESSORY) ], models['M'], hit_weights) clusters['c16'] = Cluster([ MultiSystem( ch_sctn, gene_ref=mgM_sctn, gene_status=GeneStatus.ACCESSORY) ], models['M'], hit_weights) clusters['c17'] = Cluster([ ModelHit(ch_flgB, mgL_flgB, GeneStatus.MANDATORY), ModelHit(ch_sctn_flg, mgL_sctn_flg, GeneStatus.MANDATORY) ], models['N'], hit_weights) clusters['c18'] = Cluster([ ModelHit(ch_sctj, mgN_sctj, GeneStatus.MANDATORY), ModelHit(ch_sctj_flg, mgL_sctj_flg, GeneStatus.MANDATORY) ], models['N'], hit_weights) clusters['c19'] = Cluster([Loner(ch_sctn, mgL_sctn, GeneStatus.ACCESSORY)], models['N'], hit_weights) clusters['c20'] = Cluster([Loner(ch_tadZ, mgN_tadZ, GeneStatus.ACCESSORY)], models['N'], hit_weights) clusters['c21'] = Cluster([ ModelHit(ch_sctj, mgO_sctj, GeneStatus.MANDATORY), ModelHit(ch_abc, mgO_abc, GeneStatus.NEUTRAL), ModelHit(ch_tadZ, mgO_tadZ, GeneStatus.ACCESSORY) ], models['O'], hit_weights) clusters['c22'] = Cluster([ ModelHit(ch_sctn_flg, mgO_sctn_flg, GeneStatus.ACCESSORY), ModelHit(ch_gspd, mgO_gspd, GeneStatus.MANDATORY), ModelHit(ch_tadZ, mgO_tadZ, GeneStatus.ACCESSORY) ], models['O'], hit_weights) clusters['c23'] = Cluster( [Loner(ch_gspd, mgO_gspd, gene_status=GeneStatus.MANDATORY)], models['O'], hit_weights) clusters['c24'] = Cluster( [MultiSystem(ch_gspd, mgO_gspd, gene_status=GeneStatus.MANDATORY)], models['O'], hit_weights) clusters['c25'] = Cluster( [MultiSystem(ch_sctn, mgO_sctn, gene_status=GeneStatus.ACCESSORY)], models['O'], hit_weights) clusters['c26'] = Cluster([ MultiSystem( ch_sctj_flg, mgO_sctj_flg, gene_status=GeneStatus.MANDATORY) ], models['O'], hit_weights) return models, clusters