def log10_heatmap(dna_samples, dna_top_average_pathways, dna_top_average_data, data_type="pathways"): merged_data = [] metadata_pathways = [] metadata_samples = [] if 'metadata' in vars and vars['metadata']: merged_data, metadata_samples = utilities.merge_metadata( vars['metadata'], dna_samples, [[dna_top_average_pathways[i]] + dna_top_average_data[i] for i in range(len(dna_top_average_pathways))]) metadata_pathways = [row.pop(0) for row in merged_data] # get the metadata row numbers metadata_rows = range(1, len(vars['metadata'])) document.show_hclust2(metadata_samples, metadata_pathways, merged_data, title="Top " + str(max_sets) + " " + data_type + " by average abundance", metadata_rows=metadata_rows) else: document.show_hclust2(dna_samples, dna_top_average_pathways, dna_top_average_data, title="Top " + str(max_sets) + " " + data_type + " by average abundance") return merged_data, metadata_pathways, metadata_samples
def test_merge_metadata_values_without_names(self): """ Test the merge metadata function. Test values without names option.""" metadata = [["# samples", "s1", "s2"], ["feature1", "A", "B"], ["feature2", 1, 2]] samples = ["s1", "s2"] values = [[1, 2], [2, 4]] merged, new_samples = utilities.merge_metadata( metadata, samples, values, values_without_names=True) expected = [["feature1", "A", "B"], ["feature2", 1, 2], [1, 2], [2, 4]] expected_samples = ["s1", "s2"] self.assertEqual(merged, expected) self.assertEqual(new_samples, expected_samples)
def test_merge_metadata_reorder(self): """ Test the merge metadata function. Test with reordering.""" metadata = [["# samples", "s1", "s2"], ["feature1", "A", "B"], ["feature2", 1, 2]] samples = ["s2", "s1"] values = [["bug1", 1, 2], ["bug2", 2, 4]] merged, new_samples = utilities.merge_metadata(metadata, samples, values) expected = [["feature1", "A", "B"], ["feature2", 1, 2], ["bug1", 2, 1], ["bug2", 4, 2]] expected_samples = ["s1", "s2"] self.assertEqual(merged, expected) self.assertEqual(new_samples, expected_samples)
def test_merge_metadata_nomatch(self): """ Test the merge metadata function. Test with metadata not matching.""" metadata = [["# samples", "s3"], ["feature1", "A"], ["feature2", 1]] samples = ["s1", "s2"] values = [["bug1", 1, 2], ["bug2", 2, 4]] # suppress warning message # Redirect stdout original_stdout = sys.stdout sys.stdout = open(os.devnull, "w") merged, new_samples = utilities.merge_metadata(metadata, samples, values) # Redirect stdout sys.stdout = original_stdout expected = [["bug1", 1, 2], ["bug2", 2, 4]] self.assertEqual(merged, expected) self.assertEqual(new_samples, samples)