Esempio n. 1
0
 def test_compare_categories_numeric_variables(self):
     """Test compare_categories() on numeric methods/input."""
     for method in self.num_methods:
         compare_categories(self.dm1_fp, self.map1_fp, method,
                            self.num_categories, self.num_perms, self.test_dir)
         results_fp = join(self.test_dir, '%s_results.txt' % method)
         self.files_to_remove.append(results_fp)
         results_f = open(results_fp, 'U')
         results = results_f.readlines()
         results_f.close()
         self.assertTrue(len(results) > 0)
 def test_compare_categories_morans_i_zeros(self):
     """Test Moran's I on distance matrix with non-diagonal zeros."""
     method = 'morans_i'
     compare_categories(self.dm2_fp, self.map2_fp, method, ['NumCat'], 999,
                        self.test_dir)
     results_fp = join(self.test_dir, '%s_results.txt' % method)
     self.files_to_remove.append(results_fp)
     results_f = open(results_fp, 'U')
     results = results_f.readlines()
     results_f.close()
     self.assertTrue(len(results) > 0)
Esempio n. 3
0
 def test_compare_categories_morans_i_zeros(self):
     """Test Moran's I on distance matrix with non-diagonal zeros."""
     method = 'morans_i'
     compare_categories(self.dm2_fp, self.map2_fp, method, ['NumCat'], 999,
                        self.test_dir)
     results_fp = join(self.test_dir, '%s_results.txt' % method)
     self.files_to_remove.append(results_fp)
     results_f = open(results_fp, 'U')
     results = results_f.readlines()
     results_f.close()
     self.assertTrue(len(results) > 0)
Esempio n. 4
0
 def test_compare_categories_adonis_unique_numeric(self):
     """Test Adonis can run with unique numeric values."""
     method = 'adonis'
     compare_categories(self.dm1_fp, self.map1_fp, method,
                        ['UniqueNumeric'], 999, self.test_dir)
     results_fp = join(self.test_dir, '%s_results.txt' % method)
     self.files_to_remove.append(results_fp)
     results_f = open(results_fp, 'U')
     results = results_f.readlines()
     results_f.close()
     self.assertTrue(len(results) > 0)
 def test_compare_categories_adonis_unique_numeric(self):
     """Test Adonis can run with unique numeric values."""
     method = 'adonis'
     compare_categories(self.dm1_fp, self.map1_fp, method,
                        ['UniqueNumeric'], 999, self.test_dir)
     results_fp = join(self.test_dir, '%s_results.txt' % method)
     self.files_to_remove.append(results_fp)
     results_f = open(results_fp, 'U')
     results = results_f.readlines()
     results_f.close()
     self.assertTrue(len(results) > 0)
Esempio n. 6
0
    def test_compare_categories_categorical_variables(self):
        """Test compare_categories() on categorical methods/input."""
        for method in self.cat_methods:
            compare_categories(self.dm_fp, self.map_fp, method,
                    self.cat_categories, self.num_perms, self.test_dir)
            results_fp = join(self.test_dir, '%s_results.txt' % method)
            self.files_to_remove.append(results_fp)
            results_f = open(results_fp, 'U')
            results = results_f.readlines()
            results_f.close()

            # Make sure the files aren't empty.
            self.assertTrue(len(results) > 0)
Esempio n. 7
0
    def test_compare_categories_categorical_variables(self):
        """Test compare_categories() on categorical methods/input."""
        for method in self.cat_methods:
            compare_categories(self.dm_fp, self.map_fp, method,
                               self.cat_categories, self.num_perms,
                               self.test_dir)
            results_fp = join(self.test_dir, '%s_results.txt' % method)
            self.files_to_remove.append(results_fp)
            results_f = open(results_fp, 'U')
            results = results_f.readlines()
            results_f.close()

            # Make sure the files aren't empty.
            self.assertTrue(len(results) > 0)
def main():
    option_parser, opts, args = parse_command_line_parameters(**script_info)

    out_dir = opts.output_dir
    categories = opts.categories.split(",")

    # Create the output dir if it doesn't already exist.
    try:
        if not exists(out_dir):
            create_dir(out_dir)
    except:
        option_parser.error(
            "Could not create or access output directory '%s' " "specified with the -o option." % out_dir
        )

    compare_categories(opts.input_dm, opts.mapping_file, opts.method, categories, opts.num_permutations, out_dir)
Esempio n. 9
0
def main():
    option_parser, opts, args = parse_command_line_parameters(**script_info)

    out_dir = opts.output_dir
    categories = opts.categories.split(',')

    # Create the output dir if it doesn't already exist.
    try:
        if not exists(out_dir):
            create_dir(out_dir)
    except:
        option_parser.error("Could not create or access output directory '%s' "
                            "specified with the -o option." % out_dir)

    compare_categories(opts.input_dm, opts.mapping_file, opts.method,
                       categories, opts.num_permutations, out_dir)
Esempio n. 10
0
    def test_compare_categories_invalid_input(self):
        """Test compare_categories() on invalid input that should error out."""
        # Non-numeric categories with BEST and Moran's I.
        for method in self.num_methods:
            self.assertRaises(TypeError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, self.cat_categories,
                              self.num_perms, self.test_dir)

        # SampleID with all methods.
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['SampleID'],
                              self.num_perms, self.test_dir)

        # Single category passed as a string instead of a list of string(s).
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(TypeError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, 'SampleID', self.num_perms,
                              self.test_dir)

        # Asymmetric/non-hollow distance matrix.
        for method in self.num_methods:
            self.assertRaises(DistanceMatrixError, compare_categories,
                              self.invalid_dm_fp, self.map1_fp, method,
                              self.num_categories, self.num_perms,
                              self.test_dir)
        for method in self.cat_methods:
            self.assertRaises(DistanceMatrixError, compare_categories,
                              self.invalid_dm_fp, self.map1_fp, method,
                              self.cat_categories, self.num_perms,
                              self.test_dir)

        # Nonexistent category.
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['bar'], self.num_perms,
                              self.test_dir)

        # Unique category values only.
        for method in self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['Unique'], self.num_perms,
                              self.test_dir)

        # Only a single category value.
        for method in self.cat_methods + self.num_methods:
            if method == 'best':
                # BEST is okay with this type of category.
                compare_categories(self.dm1_fp, self.map1_fp, method,
                                   ['Single'], self.num_perms, self.test_dir)
                results_fp = join(self.test_dir, '%s_results.txt' % method)
                self.files_to_remove.append(results_fp)
                results_f = open(results_fp, 'U')
                results = results_f.readlines()
                results_f.close()
                self.assertTrue(len(results) > 0)
            else:
                self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                                  self.map1_fp, method, ['Single'],
                                  self.num_perms, self.test_dir)

        # Bad number of permutations.
        for method in self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, self.cat_categories, -42,
                              self.test_dir)

        # Unrecognized method.
        self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                          self.map1_fp, 'foo', self.cat_categories,
                          self.num_perms, self.test_dir)

        # Samples in dm not found in map.
        for method in self.num_methods:
            with self.assertRaises(ValueError):
                compare_categories(self.dm1_fp, self.missing_sample_map_fp,
                                   method, self.num_categories, self.num_perms,
                                   self.test_dir)
        for method in self.cat_methods:
            with self.assertRaises(ValueError):
                compare_categories(self.dm1_fp, self.missing_sample_map_fp,
                                   method, self.cat_categories, self.num_perms,
                                   self.test_dir)
Esempio n. 11
0
    def test_compare_categories_invalid_input(self):
        """Test compare_categories() on invalid input that should error out."""
        # Non-numeric categories with BEST and Moran's I.
        for method in self.num_methods:
            self.assertRaises(TypeError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, self.cat_categories, self.num_perms,
                              self.test_dir)

        # SampleID with all methods.
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['SampleID'], self.num_perms,
                              self.test_dir)

        # Single category passed as a string instead of a list of string(s).
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(TypeError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, 'SampleID', self.num_perms,
                              self.test_dir)

        # Asymmetric/non-hollow distance matrix.
        for method in self.num_methods:
            self.assertRaises(DistanceMatrixError, compare_categories,
                              self.invalid_dm_fp, self.map1_fp, method,
                              self.num_categories, self.num_perms, self.test_dir)
        for method in self.cat_methods:
            self.assertRaises(DistanceMatrixError, compare_categories,
                              self.invalid_dm_fp, self.map1_fp, method,
                              self.cat_categories, self.num_perms, self.test_dir)

        # Nonexistent category.
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['bar'], self.num_perms,
                              self.test_dir)

        # Unique category values only.
        for method in self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['Unique'], self.num_perms,
                              self.test_dir)

        # Only a single category value.
        for method in self.cat_methods + self.num_methods:
            if method == 'best':
                # BEST is okay with this type of category.
                compare_categories(self.dm1_fp,
                                   self.map1_fp, method, ['Single'], self.num_perms,
                                   self.test_dir)
                results_fp = join(self.test_dir, '%s_results.txt' % method)
                self.files_to_remove.append(results_fp)
                results_f = open(results_fp, 'U')
                results = results_f.readlines()
                results_f.close()
                self.assertTrue(len(results) > 0)
            else:
                self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                                  self.map1_fp, method, ['Single'], self.num_perms,
                                  self.test_dir)

        # Bad number of permutations.
        for method in self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, self.cat_categories, -42,
                              self.test_dir)

        # Unrecognized method.
        self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                          self.map1_fp, 'foo', self.cat_categories,
                          self.num_perms, self.test_dir)

        # Samples in dm not found in map.
        for method in self.num_methods:
            with self.assertRaises(ValueError):
                compare_categories(self.dm1_fp, self.missing_sample_map_fp,
                                   method, self.num_categories, self.num_perms,
                                   self.test_dir)
        for method in self.cat_methods:
            with self.assertRaises(ValueError):
                compare_categories(self.dm1_fp, self.missing_sample_map_fp,
                                   method, self.cat_categories, self.num_perms,
                                   self.test_dir)
Esempio n. 12
0
    def test_compare_categories_invalid_input(self):
        """Test compare_categories() on invalid input that should error out."""
        # Non-numeric categories with BIO-ENV and Moran's I.
        for method in self.num_methods:
            self.assertRaises(TypeError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, self.cat_categories,
                              self.num_perms, self.test_dir)

        # SampleID with all methods.
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['SampleID'],
                              self.num_perms, self.test_dir)

        # Single category passed as a string instead of a list of string(s).
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(TypeError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, 'SampleID', self.num_perms,
                              self.test_dir)

        # Asymmetric/non-hollow distance matrix.
        for method in self.num_methods:
            self.assertRaises(DistanceMatrixError, compare_categories,
                              self.invalid_dm_fp, self.map1_fp, method,
                              self.num_categories, self.num_perms,
                              self.test_dir)
        for method in self.cat_methods:
            self.assertRaises(DistanceMatrixError, compare_categories,
                              self.invalid_dm_fp, self.map1_fp, method,
                              self.cat_categories, self.num_perms,
                              self.test_dir)

        # Nonexistent category.
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['bar'], self.num_perms,
                              self.test_dir)

        # Unique category values only.
        for method in self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['Unique'], self.num_perms,
                              self.test_dir)

        # Only a single category value.
        for method in self.cat_methods + self.num_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['Single'], self.num_perms,
                              self.test_dir)

        # Bad number of permutations.
        for method in self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, self.cat_categories, -42,
                              self.test_dir)

        # Unrecognized method.
        self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                          self.map1_fp, 'foo', self.cat_categories,
                          self.num_perms, self.test_dir)

        # Samples in dm not found in map.
        for method in self.num_methods:
            with self.assertRaises(ValueError):
                compare_categories(self.dm1_fp, self.missing_sample_map_fp,
                                   method, self.num_categories, self.num_perms,
                                   self.test_dir)
        for method in self.cat_methods:
            with self.assertRaises(ValueError):
                compare_categories(self.dm1_fp, self.missing_sample_map_fp,
                                   method, self.cat_categories, self.num_perms,
                                   self.test_dir)
    def test_compare_categories_invalid_input(self):
        """Test compare_categories() on invalid input that should error out."""
        # Non-numeric categories with BIO-ENV and Moran's I.
        for method in self.num_methods:
            self.assertRaises(TypeError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, self.cat_categories, self.num_perms,
                              self.test_dir)

        # SampleID with all methods.
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['SampleID'], self.num_perms,
                              self.test_dir)

        # Single category passed as a string instead of a list of string(s).
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(TypeError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, 'SampleID', self.num_perms,
                              self.test_dir)

        # Asymmetric/non-hollow distance matrix.
        for method in self.num_methods:
            self.assertRaises(DistanceMatrixError, compare_categories,
                              self.invalid_dm_fp, self.map1_fp, method,
                              self.num_categories, self.num_perms, self.test_dir)
        for method in self.cat_methods:
            self.assertRaises(DistanceMatrixError, compare_categories,
                              self.invalid_dm_fp, self.map1_fp, method,
                              self.cat_categories, self.num_perms, self.test_dir)

        # Nonexistent category.
        for method in self.num_methods + self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['bar'], self.num_perms,
                              self.test_dir)

        # Unique category values only.
        for method in self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['Unique'], self.num_perms,
                              self.test_dir)

        # Only a single category value.
        for method in self.cat_methods + self.num_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, ['Single'], self.num_perms,
                              self.test_dir)

        # Bad number of permutations.
        for method in self.cat_methods:
            self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                              self.map1_fp, method, self.cat_categories, -42,
                              self.test_dir)

        # Unrecognized method.
        self.assertRaises(ValueError, compare_categories, self.dm1_fp,
                          self.map1_fp, 'foo', self.cat_categories,
                          self.num_perms, self.test_dir)

        # Samples in dm not found in map.
        for method in self.num_methods:
            with self.assertRaises(ValueError):
                compare_categories(self.dm1_fp, self.missing_sample_map_fp,
                                   method, self.num_categories, self.num_perms,
                                   self.test_dir)
        for method in self.cat_methods:
            with self.assertRaises(ValueError):
                compare_categories(self.dm1_fp, self.missing_sample_map_fp,
                                   method, self.cat_categories, self.num_perms,
                                   self.test_dir)