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