Example #1
0
    def test_humann_split_tables_tsv(self):
        """
        Test splitting a tsv file with humann_split_tables
        """

        input_file = cfg.multi_sample_genefamilies

        # create a temp directory
        temp_directory = utils.create_temp_folder("split_tables_tsv")

        # split the file
        utils.run_command([
            "humann_split_table", "--input", input_file, "--output",
            temp_directory, "--verbose"
        ])

        # test the split files are as expected
        output_files = os.listdir(temp_directory)

        # sort the output files
        file_pairs = []
        for file in output_files:
            filebasename = os.path.basename(file)
            # get the sample number for the file
            file = os.path.join(temp_directory, file)
            if filebasename[-1] == 1:
                file_pairs.append([file, cfg.multi_sample_genefamilies_split1])
            elif filebasename[-1] == 2:
                file_pairs.append([file, cfg.multi_sample_genefamilies_split2])

        for temp_file, file in file_pairs:
            self.assertTrue(utils.files_almost_equal(temp_file, file))

        # remove the temp folder
        utils.remove_temp_folder(temp_directory)
    def test_humann2_rna_dna_norm_log_10_tsv(self):
        """
        Test norm the tsv file entries from dna and rna input files with humann2_rna_dna_norm_table
        Test with log transform with base 10
        """

        # create a temp folder
        tempdir = utils.create_temp_folder("rna_dna_norm_log_10")
        output_basename = os.path.join(tempdir, "rna_dna_norm")

        # run the command
        utils.run_command([
            "humann2_rna_dna_norm", "--input_dna", cfg.rna_dna_norm_dna_input,
            "--input_rna", cfg.rna_dna_norm_rna_input, "--output_basename",
            output_basename, "--log_transform", "--log_base", "10"
        ])

        # check the output files are as expected
        # allow for varying precision in the calculations with almost equal
        for file_extension, expected_output_file in zip(
                cfg.rna_dna_norm_file_names,
                cfg.rna_dna_norm_log_10_output_files):
            self.assertTrue(
                utils.files_almost_equal(output_basename + file_extension,
                                         expected_output_file))

        # remove the temp file
        utils.remove_temp_folder(tempdir)
Example #3
0
    def test_humann_unpack_pathways_remove_taxonomy_tsv(self):
        """
        Test the tsv gene families and pathway abundance file entries with humann_unpack_pathways
        Test with the remove taxonomy option which stratifies by pathway then gene instead of
        stratifying by pathway, taxonomy, then gene
        """

        # create a temp file
        file_out, new_file = tempfile.mkstemp(prefix="humann_temp")

        # run the command
        utils.run_command([
            "humann_unpack_pathways", "--input-genes",
            cfg.merge_abundance_genefamilies_input, "--input-pathways",
            cfg.merge_abundance_pathways_input, "--output", new_file,
            "--remove-taxonomy"
        ])

        # check the output file is as expected
        # allow for varying precision in the calculations with almost equal
        self.assertTrue(
            utils.files_almost_equal(
                new_file, cfg.merge_abundance_remove_taxonomy_output))

        # remove the temp file
        utils.remove_temp_file(new_file)
    def test_humann2_rna_dna_norm_witten_bell_tsv(self):
        """
        Test norm the tsv file entries from dna and rna input files with humann2_rna_dna_norm_table
        Test with witten bell
        """

        # create a temp folder
        tempdir = utils.create_temp_folder("rna_dna_norm_witten_bell")
        output_basename = os.path.join(tempdir, "rna_dna_norm")

        # run the command
        utils.run_command([
            "humann2_rna_dna_norm", "--input_dna", cfg.rna_dna_norm_dna_input,
            "--input_rna", cfg.rna_dna_norm_rna_input, "--output_basename",
            output_basename, "--method", "witten_bell"
        ])

        # check the output files are as expected
        for file_extension, expected_output_file in zip(
                cfg.rna_dna_norm_file_names,
                cfg.rna_dna_norm_witten_bell_output_files):
            self.assertTrue(
                utils.files_almost_equal(output_basename + file_extension,
                                         expected_output_file))

        # remove the temp file
        utils.remove_temp_folder(tempdir)
Example #5
0
    def test_humann_regroup_table_uniref50_rxn_tsv(self):
        """
        Test regrouping the tsv file with humann_regroup_table
        Test with uniref50 to reactions mappings
        """

        # create a temp file
        file_out, new_file = tempfile.mkstemp(prefix="humann_temp")

        # run the command
        utils.run_command([
            "humann_regroup_table", "--input", cfg.regroup_input, "--output",
            new_file, "--groups", "uniref50_rxn"
        ])

        # check the output is as expected
        self.assertTrue(
            utils.files_almost_equal(new_file, cfg.regroup_rxn_output))

        # remove the temp file
        utils.remove_temp_file(new_file)
Example #6
0
    def test_humann_renorm_table_relab_tsv(self):
        """
        Test renorm the tsv file entries with humann_renorm_table
        Test with relab
        """

        # create a temp file
        file_out, new_file = tempfile.mkstemp(prefix="humann_temp")

        # run the command
        utils.run_command([
            "humann_renorm_table", "--input", cfg.renorm_input, "--output",
            new_file, "--units", "relab"
        ])

        # check the output is as expected
        self.assertTrue(
            utils.files_almost_equal(new_file, cfg.renorm_relab_output))

        # remove the temp file
        utils.remove_temp_file(new_file)
Example #7
0
    def test_humann_rename_table_custom_tsv(self):
        """
        Test renaming the tsv file entries with humann_rename_table
        Test with custom names file
        """

        # create a temp file
        file_out, new_file = tempfile.mkstemp(prefix="humann_temp")

        # run the command
        utils.run_command([
            "humann_rename_table", "--input", cfg.rename_input, "--output",
            new_file, "--custom", cfg.rename_custom_mapping
        ])

        # check the output is as expected
        self.assertTrue(
            utils.files_almost_equal(new_file, cfg.rename_custom_output))

        # remove the temp file
        utils.remove_temp_file(new_file)
Example #8
0
    def test_humann_rename_table_pathways_tsv(self):
        """
        Test renaming the tsv file entries with humann_rename_table
        Test with pathways names
        """

        # create a temp file
        file_out, new_file = tempfile.mkstemp(prefix="humann_temp")

        # run the command
        utils.run_command([
            "humann_rename_table", "--input", cfg.rename_pathway_input,
            "--output", new_file, "--names", "metacyc-pwy"
        ])

        # check the output is as expected
        self.assertTrue(
            utils.files_almost_equal(new_file, cfg.rename_pathway_output))

        # remove the temp file
        utils.remove_temp_file(new_file)
Example #9
0
    def test_humann_join_tables_tsv(self):
        """
        Test joining tsv files with humann_join_tables
        """

        # create a temp file
        file_out, new_file = tempfile.mkstemp(prefix="humann_temp")

        # join the files
        utils.run_command([
            "humann_join_tables", "--input", cfg.data_folder, "--output",
            new_file, "--file_name",
            cfg.multi_sample_genefamilies_split_basename, "--verbose"
        ])

        # check the joined file is as expected
        self.assertTrue(
            utils.files_almost_equal(new_file, cfg.multi_sample_genefamilies))

        # remove the temp file
        utils.remove_temp_file(new_file)
    def test_humann2_unpack_pathways_tsv(self):
        """
        Test the tsv gene families and pathway abundance file entries with humann2_unpack_pathways
        """

        # create a temp file
        file_out, new_file = tempfile.mkstemp(prefix="humann2_temp")

        # run the command
        utils.run_command([
            "humann2_unpack_pathways", "--input-genes",
            cfg.merge_abundance_genefamilies_input, "--input-pathways",
            cfg.merge_abundance_pathways_input, "--output", new_file
        ])

        # check the output file is as expected
        # allow for varying precision in the calculations with almost equal
        self.assertTrue(
            utils.files_almost_equal(new_file, cfg.merge_abundance_output))

        # remove the temp file
        utils.remove_temp_file(new_file)
    def test_humann2_strain_profile_tsv(self):
        """
        Test the tsv file entries running humann2_strain_profile
        Test with critical mean and critical count values
        """

        # create a temp folder
        tempdir = utils.create_temp_folder("strain_profile")

        # move to this folder as the output files will be created in the current working folder
        current_working_directory = os.getcwd()
        try:
            os.chdir(tempdir)
        except EnvironmentError:
            print("Warning: Unable to move to temp directory: " + tempdir)

        # run the command
        utils.run_command([
            "humann2_strain_profiler", "--input", cfg.strain_profile_input,
            "--critical_mean", "1", "--critical_count", "2"
        ])

        # check the output files are as expected
        # allow for varying precision in the calculations with almost equal
        for file, expected_output_file in zip(
                cfg.strain_profile_file_names,
                cfg.strain_profile_m1_n2_output_files):
            self.assertTrue(
                utils.files_almost_equal(os.path.join(tempdir, file),
                                         expected_output_file))

        # return to original working directory
        os.chdir(current_working_directory)

        # remove the temp file
        utils.remove_temp_folder(tempdir)