diff --git a/PanACoTA/align_module/alignment.py b/PanACoTA/align_module/alignment.py index 823f0cbecabad2d8ce2e0290c701b16ba3c5e91a..bd3f05a14d500fd01696595d76ca674230341790 100755 --- a/PanACoTA/align_module/alignment.py +++ b/PanACoTA/align_module/alignment.py @@ -510,6 +510,16 @@ def check_extractions(num_fam, miss_file, prt_file, gen_file, ngenomes, logger): # Check that extractions went well nbmiss = utils.count(miss_file) + # If files with proteins extracted do not even exist, close with error + # (they should have been created at the previous step) + if not os.path.isfile(gen_file): + logger.error(f"fam {num_fam}: no file with genes extracted " + f"('{gen_file}'). Cannot align.") + sys.exit(1) + if not os.path.isfile(prt_file): + logger.error(f"fam {num_fam}: no file with proteins extracted " + f"('{prt_file}'). Cannot align.") + sys.exit(1) nbfprt = utils.grep(prt_file, "^>", counts=True) nbfgen = utils.grep(gen_file, "^>", counts=True) if nbmiss + nbfprt != ngenomes: diff --git a/test/test_unit/test_align/test_alignment.py b/test/test_unit/test_align/test_alignment.py index 58c85a5bfa9b51b80f4a24d55b092b27cad28aa5..f597c8a5fae2743020d597cddcc41e61872586d0 100755 --- a/test/test_unit/test_align/test_alignment.py +++ b/test/test_unit/test_align/test_alignment.py @@ -276,6 +276,42 @@ def test_check_extract(caplog): assert "Checking extractions for family 1" in caplog.text +def test_check_extract_nogen(caplog): + """ + Test that when gen file is ok, but prt file is missing, it exits with error message + """ + caplog.set_level(logging.DEBUG) + num_fam = 1 + gen_file = os.path.join("genfile") + prt_file = os.path.join(EXPPATH, "exp_aldir", "current.1.prt") + miss_file = os.path.join(GENEPATH, "test_check_extract_miss-file.txt") + ngenomes = 5 + logger = logging.getLogger("test_check_extract") + with open(miss_file, "w") as missf: + missf.write("Genome5") + with pytest.raises(SystemExit): + al.check_extractions(num_fam, miss_file, prt_file, gen_file, ngenomes, logger) + assert "fam 1: no file with genes extracted ('genfile'). Cannot align." in caplog.text + + +def test_check_extract_noprt(caplog): + """ + Test that when gen file is ok, but prt file is missing, it exits with error message + """ + caplog.set_level(logging.DEBUG) + num_fam = 1 + gen_file = os.path.join(EXPPATH, "exp_aldir", "current.1.gen") + prt_file = os.path.join("prt_file") + miss_file = os.path.join(GENEPATH, "test_check_extract_miss-file.txt") + ngenomes = 5 + logger = logging.getLogger("test_check_extract") + with open(miss_file, "w") as missf: + missf.write("Genome5") + with pytest.raises(SystemExit): + al.check_extractions(num_fam, miss_file, prt_file, gen_file, ngenomes, logger) + assert "fam 1: no file with proteins extracted ('prt_file'). Cannot align." in caplog.text + + def test_check_extract_wrongnbmiss(caplog): """ Test that given the 3 files: 4 proteins extracted in gen and prt, empty miss file, @@ -765,7 +801,7 @@ def test_handle_family_true(): assert al.handle_family(args) is True cur_mafft = os.path.join(aldir, "TESThandlefam-mafft-align.8.aln") cur_btr = os.path.join(aldir, "TESThandlefam-mafft-prt2nuc.8.aln") - exp_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8.aa.aln") + exp_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8-completed.aln") exp_btr = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-prt2nuc.8.aln") assert tutil.compare_order_content(cur_mafft, exp_mafft) assert tutil.compare_order_content(cur_btr, exp_btr) @@ -846,7 +882,7 @@ def test_handle_family_emptyaln_true(): args = (prefix, num_fam, ngenomes, q) assert al.handle_family(args) cur_btr = os.path.join(aldir, "TESThandlefam-mafft-prt2nuc.8.aln") - exp_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8.aa.aln") + exp_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8-completed.aln") exp_btr = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-prt2nuc.8.aln") assert tutil.compare_order_content(cur_mafft, exp_mafft) assert tutil.compare_order_content(cur_btr, exp_btr) @@ -897,7 +933,7 @@ def test_handle_family_emptybtr_true(): args = (prefix, num_fam, ngenomes, q) assert al.handle_family(args) # mafft file should have been completed with missing genomes - exp_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8.aa.aln") + exp_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8-completed.aln") assert tutil.compare_order_content(cur_mafft, exp_mafft) assert tutil.compare_order_content(cur_btr, ref_btr) q.put(None) @@ -929,7 +965,7 @@ def test_handle_family_already_ok(): ref_prt = os.path.join(EXPPATH, "exp_aldir-pers", "current.8.prt") ref_gen = os.path.join(EXPPATH, "exp_aldir-pers", "current.8.gen") ref_miss = os.path.join(EXPPATH, "exp_aldir-pers", "current.8.miss.lst") - ref_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8.aa.aln") + ref_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8-completed.aln") ref_btr = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-prt2nuc.8.aln") cur_prt = os.path.join(aldir, "TESThandlefam-current.8.prt") cur_gen = os.path.join(aldir, "TESThandlefam-current.8.gen") @@ -1026,7 +1062,7 @@ def test_handle_family_addfalse(): assert al.handle_family(args) is False cur_mafft = os.path.join(aldir, "TESThandlefam-mafft-align.8.aln") cur_btr = os.path.join(aldir, "TESThandlefam-mafft-prt2nuc.8.aln") - exp_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8.aa.aln") + exp_mafft = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8-completed.aln") exp_btr = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-prt2nuc.8.aln") assert tutil.compare_order_content(cur_mafft, exp_mafft) # assert tutil.compare_order_content(cur_btr, exp_btr) @@ -1085,7 +1121,7 @@ def test_align_all_true(caplog): out_btr8 = os.path.join(aldir, dname + "-mafft-prt2nuc.8.aln") exp_mafft1 = os.path.join(EXPPATH, "exp_aldir", "mafft-align.1.aln") exp_btr1 = os.path.join(EXPPATH, "exp_aldir", "mafft-prt2nuc.1.aln") - exp_mafft8 = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8.aa.aln") + exp_mafft8 = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8-completed.aln") exp_btr8 = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-prt2nuc.8.aln") assert tutil.compare_order_content(out_mafft1, exp_mafft1) assert tutil.compare_order_content(out_btr1, exp_btr1) @@ -1126,7 +1162,7 @@ def test_align_all_exists_true(caplog): ref_gen1 = os.path.join(EXPPATH, "exp_aldir", "current.1.gen") exp_mafft1 = os.path.join(EXPPATH, "exp_aldir", "mafft-align.1.aln") exp_btr1 = os.path.join(EXPPATH, "exp_aldir", "mafft-prt2nuc.1.aln") - exp_mafft8 = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8.aa.aln") + exp_mafft8 = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-align.8-completed.aln") exp_btr8 = os.path.join(EXPPATH, "exp_aldir-pers", "mafft-prt2nuc.8.aln") cur_prt8 = os.path.join(aldir, dname + "-current.8.prt") cur_gen8 = os.path.join(aldir, dname + "-current.8.gen")