def test_run_mantel_correlogram_single_matrix(self): """Test running mantel correlogram on one dm.""" exp = ('# A sample comment.\nDM\tDM\tNumber of entries\tNumber of ' 'permutations\tClass index\tNumber of distances\tMantel r statistic\t' 'p-value\tp-value (Bonferroni corrected)\tTail type\n', [], 0) obs = run_mantel_correlogram([self.fp1], [self.dm1], self.num_perms, self.comment, self.alpha, sample_id_map=self.sample_id_map) self.assertEqual((self.remove_nums(obs[0]), obs[1], len(obs[2])), exp)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) # Create the output dir if it doesn't already exist. try: if not path.exists(opts.output_dir): create_dir(opts.output_dir) except: option_parser.error("Could not create or access output directory " "specified with the -o option.") sample_id_map = None if opts.sample_id_map_fp: sample_id_map = dict([(k, v[0]) for k, v in fields_to_dict( open(opts.sample_id_map_fp, "U")).items()]) input_dm_fps = opts.input_dms distmats = [parse_distmat(open(dm_fp, 'U')) for dm_fp in input_dm_fps] if opts.method == 'mantel': output_f = open(path.join(opts.output_dir, 'mantel_results.txt'), 'w') output_f.write( run_mantel_test('mantel', input_dm_fps, distmats, opts.num_permutations, opts.tail_type, comment_mantel_pmantel, sample_id_map=sample_id_map)) elif opts.method == 'partial_mantel': output_f = open( path.join(opts.output_dir, 'partial_mantel_results.txt'), 'w') output_f.write( run_mantel_test('partial_mantel', input_dm_fps, distmats, opts.num_permutations, opts.tail_type, comment_mantel_pmantel, control_dm_fp=opts.control_dm, control_dm=parse_distmat(open( opts.control_dm, 'U')), sample_id_map=sample_id_map)) elif opts.method == 'mantel_corr': output_f = open( path.join(opts.output_dir, 'mantel_correlogram_results.txt'), 'w') result_str, correlogram_fps, correlograms = run_mantel_correlogram( input_dm_fps, distmats, opts.num_permutations, comment_corr, opts.alpha, sample_id_map=sample_id_map, variable_size_distance_classes=opts.variable_size_distance_classes) output_f.write(result_str) for corr_fp, corr in zip(correlogram_fps, correlograms): corr.savefig(path.join(opts.output_dir, corr_fp + opts.image_type), format=opts.image_type) output_f.close()
def test_run_mantel_correlogram_too_small(self): """Test running mantel correlogram on two incompatible dms.""" exp = ('# A sample comment.\nDM\tDM\tNumber of entries\tNumber of ' 'permutations\tClass index\tNumber of distances\tMantel r statistic\t' 'p-value\tp-value (Bonferroni corrected)\tTail type\nfoo.txt\tbaz.txt' '\t\tToo few samples\n', [], 0) obs = run_mantel_correlogram([self.fp1, self.fp3], [self.dm2, self.dm4], self.num_perms, self.comment, self.alpha) self.assertEqual((self.remove_nums(obs[0]), obs[1], len(obs[2])), exp)
def test_run_mantel_correlogram_no_comment(self): """Test running mantel correlogram without supplying a comment.""" exp = ('DM\tDM\tNumber of entries\tNumber of permutations\tClass index' '\tNumber of distances\tMantel r statistic\tp-value\tp-value ' '(Bonferroni corrected)\tTail type\nfoo.txt\tbar.txt\t\t\t.\t\t-.\t.' '\t.\tless\n\t\t\t\t.\t\tNone\tNone\tNone\tNone\n\t\t\t\t.\t\tNone\t' 'None\tNone\tNone\n', ['foo.txt_AND_bar.txt_mantel_correlogram.'], 1) obs = run_mantel_correlogram([self.fp1, self.fp2], [self.dm1, self.dm3], self.num_perms, None, self.alpha, sample_id_map=self.sample_id_map) self.assertEqual((self.remove_nums(obs[0]), obs[1], len(obs[2])), exp)
def test_run_mantel_correlogram(self): """Test running mantel correlogram on two distmats.""" exp = ('# A sample comment.\nDM\tDM\tNumber of entries\tNumber of ' 'permutations\tClass index\tNumber of distances\tMantel r statistic\t' 'p-value\tp-value (Bonferroni corrected)\tTail type\nfoo.txt\tbar.txt' '\t\t\t.\t\t.\t.\t.\tgreater\n\t\t\t\t.\t\tNone\tNone\tNone\tNone\n\t' '\t\t\t.\t\tNone\tNone\tNone\tNone\n', ['foo.txt_AND_bar.txt_mantel_correlogram.'], 1) obs = run_mantel_correlogram([self.fp1, self.fp2], [self.dm1, self.dm2], self.num_perms, self.comment, self.alpha) self.assertEqual((self.remove_nums(obs[0]), obs[1], len(obs[2])), exp)
def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) # Create the output dir if it doesn't already exist. try: if not path.exists(opts.output_dir): create_dir(opts.output_dir) except: option_parser.error("Could not create or access output directory " "specified with the -o option.") sample_id_map = None if opts.sample_id_map_fp: sample_id_map = dict([(k, v[0]) for k, v in fields_to_dict(open(opts.sample_id_map_fp, "U")).items()]) input_dm_fps = opts.input_dms distmats = [parse_distmat(open(dm_fp, "U")) for dm_fp in input_dm_fps] if opts.method == "mantel": output_f = open(path.join(opts.output_dir, "mantel_results.txt"), "w") output_f.write( run_mantel_test( "mantel", input_dm_fps, distmats, opts.num_permutations, opts.tail_type, comment_mantel_pmantel, sample_id_map=sample_id_map, ) ) elif opts.method == "partial_mantel": output_f = open(path.join(opts.output_dir, "partial_mantel_results.txt"), "w") output_f.write( run_mantel_test( "partial_mantel", input_dm_fps, distmats, opts.num_permutations, opts.tail_type, comment_mantel_pmantel, control_dm_fp=opts.control_dm, control_dm=parse_distmat(open(opts.control_dm, "U")), sample_id_map=sample_id_map, ) ) elif opts.method == "mantel_corr": output_f = open(path.join(opts.output_dir, "mantel_correlogram_results.txt"), "w") result_str, correlogram_fps, correlograms = run_mantel_correlogram( input_dm_fps, distmats, opts.num_permutations, comment_corr, opts.alpha, sample_id_map=sample_id_map ) output_f.write(result_str) for corr_fp, corr in zip(correlogram_fps, correlograms): corr.savefig(path.join(opts.output_dir, corr_fp + opts.image_type), format=opts.image_type) output_f.close()
def test_run_mantel_correlogram_sample_id_map(self): """Test running mantel correlogram on two dms that need IDs mapped.""" exp = ( "# A sample comment.\nDM\tDM\tNumber of entries\tNumber of " "permutations\tClass index\tNumber of distances\tMantel r " "statistic\tp-value\tp-value (Bonferroni corrected)\tTail type" "\nfoo.txt\tbar.txt\t\t\t.\t\t.\t.\t.\tgreater\n\t\t\t\t.\t\t" "None\tNone\tNone\tNone\n\t\t\t\t.\t\tNone\tNone\tNone\tNone\n", ["foo.txt_AND_bar.txt_mantel_correlogram."], 1, ) obs = run_mantel_correlogram( [self.fp1, self.fp2], [self.dm3, self.dm4], self.num_perms, self.comment, self.alpha, sample_id_map=self.sample_id_map, ) self.assertEqual((self.remove_nums(obs[0]), obs[1], len(obs[2])), exp)
def test_run_mantel_correlogram_multiple(self): """Test running mantel correlogram on three distmats.""" exp = ( "# A sample comment.\nDM\tDM\tNumber of entries\tNumber of " "permutations\tClass index\tNumber of distances\tMantel r statistic\t" "p-value\tp-value (Bonferroni corrected)\tTail type\nfoo.txt\tbar.txt" "\t\t\t.\t\t.\t.\t.\tgreater\n\t\t\t\t.\t\tNone\tNone\tNone\tNone\n\t" "\t\t\t.\t\tNone\tNone\tNone\tNone\nfoo.txt\tbaz.txt\t\t\t.\t\t-.\t.\t" ".\tless\n\t\t\t\t.\t\tNone\tNone\tNone\tNone\n\t\t\t\t.\t\tNone\tNone" "\tNone\tNone\nbar.txt\tbaz.txt\t\t\t.\t\t-.\t.\t.\tless\n\t\t\t\t.\t" "\tNone\tNone\tNone\tNone\n\t\t\t\t.\t\tNone\tNone\tNone\tNone\n", [ "foo.txt_AND_bar.txt_mantel_correlogram.", "foo.txt_AND_baz.txt_mantel_correlogram.", "bar.txt_AND_baz.txt_mantel_correlogram.", ], 3, ) obs = run_mantel_correlogram(self.fps, self.distmats, self.num_perms, self.comment, self.alpha) self.assertEqual((self.remove_nums(obs[0]), obs[1], len(obs[2])), exp)