def main(args=None): args = process_args(args) hm = heatmapper.heatmapper() matrix_file = args.matrixFile.name args.matrixFile.close() hm.read_matrix_file(matrix_file) if hm.parameters['min threshold'] is not None or hm.parameters[ 'max threshold'] is not None: filterHeatmapValues(hm, hm.parameters['min threshold'], hm.parameters['max threshold']) if args.sortRegions == 'keep': args.sortRegions = 'no' # These are the same thing if args.kmeans is not None: hm.matrix.hmcluster(args.kmeans, method='kmeans', clustering_samples=args.clusterUsingSamples) elif args.hclust is not None: print("Performing hierarchical clustering." "Please note that it might be very slow for large datasets.\n") hm.matrix.hmcluster(args.hclust, method='hierarchical', clustering_samples=args.clusterUsingSamples) group_len_ratio = np.diff(hm.matrix.group_boundaries) / len( hm.matrix.regions) if np.any(group_len_ratio < 5.0 / 1000): problem = np.flatnonzero(group_len_ratio < 5.0 / 1000) sys.stderr.write( "WARNING: Group '{}' is too small for plotting, you might want to remove it. " "There will likely be an error message from matplotlib regarding this " "below.\n".format(hm.matrix.group_labels[problem[0]])) if args.regionsLabel: hm.matrix.set_group_labels(args.regionsLabel) if args.samplesLabel and len(args.samplesLabel): hm.matrix.set_sample_labels(args.samplesLabel) if args.sortRegions != 'no': sortUsingSamples = [] if args.sortUsingSamples is not None: for i in args.sortUsingSamples: if (i > 0 and i <= hm.matrix.get_num_samples()): sortUsingSamples.append(i - 1) else: exit( "The value {0} for --sortSamples is not valid. Only values from 1 to {1} are allowed." .format(args.sortUsingSamples, hm.matrix.get_num_samples())) print('Samples used for ordering within each group: ', sortUsingSamples) hm.matrix.sort_groups(sort_using=args.sortUsing, sort_method=args.sortRegions, sample_list=sortUsingSamples) if args.silhouette: if args.kmeans is not None: hm.matrix.computeSilhouette(args.kmeans) elif args.hclust is not None: hm.matrix.computeSilhouette(args.args.hclust) if args.outFileNameMatrix: hm.save_matrix_values(args.outFileNameMatrix) if args.outFileSortedRegions: hm.save_BED(args.outFileSortedRegions) colormap_dict = { 'colorMap': args.colorMap, 'colorList': args.colorList, 'colorNumber': args.colorNumber, 'missingDataColor': args.missingDataColor, 'alpha': args.alpha } plotMatrix(hm, args.outFileName, colormap_dict, args.plotTitle, args.xAxisLabel, args.yAxisLabel, args.regionsLabel, args.zMin, args.zMax, args.yMin, args.yMax, args.averageTypeSummaryPlot, args.refPointLabel, args.startLabel, args.endLabel, args.heatmapHeight, args.heatmapWidth, args.perGroup, args.whatToShow, linesAtTickMarks=args.linesAtTickMarks, plot_type=args.plotType, image_format=args.plotFileFormat, legend_location=args.legendLocation, box_around_heatmaps=args.boxAroundHeatmaps, label_rotation=args.label_rotation, dpi=args.dpi, interpolation_method=args.interpolationMethod)
def main(args=None): args = process_args(args) hm = heatmapper.heatmapper() matrix_file = args.matrixFile.name args.matrixFile.close() hm.read_matrix_file(matrix_file) if hm.parameters['min threshold'] is not None or hm.parameters['max threshold'] is not None: filterHeatmapValues(hm, hm.parameters['min threshold'], hm.parameters['max threshold']) if args.kmeans is not None: hm.matrix.hmcluster(args.kmeans, method='kmeans') else: if args.hclust is not None: print("Performing hierarchical clustering." "Please note that it might be very slow for large datasets.\n") hm.matrix.hmcluster(args.hclust, method='hierarchical') group_len_ratio = np.diff(hm.matrix.group_boundaries) / float(len(hm.matrix.regions)) if np.any(group_len_ratio < 5.0 / 1000): problem = np.flatnonzero(group_len_ratio < 5.0 / 1000) sys.stderr.write("WARNING: Group '{}' is too small for plotting, you might want to remove it. \n".format(hm.matrix.group_labels[problem[0]])) if args.regionsLabel: hm.matrix.set_group_labels(args.regionsLabel) if args.samplesLabel and len(args.samplesLabel): hm.matrix.set_sample_labels(args.samplesLabel) if args.outFileNameData: hm.save_tabulated_values(args.outFileNameData, reference_point_label=args.refPointLabel, start_label=args.startLabel, end_label=args.endLabel, averagetype=args.averageType) if args.outFileSortedRegions: hm.save_BED(args.outFileSortedRegions) prof = Profile(hm, args.outFileName, plot_title=args.plotTitle, y_axis_label=args.yAxisLabel, y_min=args.yMin, y_max=args.yMax, averagetype=args.averageType, reference_point_label=args.refPointLabel, start_label=args.startLabel, end_label=args.endLabel, plot_height=args.plotHeight, plot_width=args.plotWidth, per_group=args.perGroup, plot_type=args.plotType, image_format=args.plotFileFormat, color_list=args.colors, legend_location=args.legendLocation, plots_per_row=args.numPlotsPerRow, label_rotation=args.label_rotation, dpi=args.dpi) if args.plotType == 'heatmap': prof.plot_heatmap() elif args.plotType == 'overlapped_lines': prof.plot_hexbin() else: prof.plot_profile()
def main(args=None): args = process_args(args) hm = heatmapper.heatmapper() matrix_file = args.matrixFile.name args.matrixFile.close() hm.read_matrix_file(matrix_file) if hm.parameters['min threshold'] is not None or hm.parameters[ 'max threshold'] is not None: filterHeatmapValues(hm, hm.parameters['min threshold'], hm.parameters['max threshold']) if args.kmeans is not None: hm.matrix.hmcluster(args.kmeans, method='kmeans') else: if args.hclust is not None: print( "Performing hierarchical clustering." "Please note that it might be very slow for large datasets.\n") hm.matrix.hmcluster(args.hclust, method='hierarchical') group_len_ratio = np.diff(hm.matrix.group_boundaries) / float( len(hm.matrix.regions)) if np.any(group_len_ratio < 5.0 / 1000): problem = np.flatnonzero(group_len_ratio < 5.0 / 1000) sys.stderr.write( "WARNING: Group '{}' is too small for plotting, you might want to remove it. \n" .format(hm.matrix.group_labels[problem[0]])) if args.regionsLabel: hm.matrix.set_group_labels(args.regionsLabel) if args.samplesLabel and len(args.samplesLabel): hm.matrix.set_sample_labels(args.samplesLabel) if args.outFileNameData: hm.save_tabulated_values(args.outFileNameData, reference_point_label=args.refPointLabel, start_label=args.startLabel, end_label=args.endLabel, averagetype=args.averageType) if args.outFileSortedRegions: hm.save_BED(args.outFileSortedRegions) prof = Profile(hm, args.outFileName, plot_title=args.plotTitle, y_axis_label=args.yAxisLabel, y_min=args.yMin, y_max=args.yMax, averagetype=args.averageType, reference_point_label=args.refPointLabel, start_label=args.startLabel, end_label=args.endLabel, plot_height=args.plotHeight, plot_width=args.plotWidth, per_group=args.perGroup, plot_type=args.plotType, image_format=args.plotFileFormat, color_list=args.colors, legend_location=args.legendLocation, plots_per_row=args.numPlotsPerRow, label_rotation=args.label_rotation, dpi=args.dpi) if args.plotType == 'heatmap': prof.plot_heatmap() elif args.plotType == 'overlapped_lines': prof.plot_hexbin() else: prof.plot_profile()
def main(args=None): args = process_args(args) hm = heatmapper.heatmapper() matrix_file = args.matrixFile.name args.matrixFile.close() hm.read_matrix_file(matrix_file) if hm.parameters['min threshold'] is not None or hm.parameters['max threshold'] is not None: filterHeatmapValues(hm, hm.parameters['min threshold'], hm.parameters['max threshold']) if args.sortRegions == 'keep': args.sortRegions = 'no' # These are the same thing if args.kmeans is not None: hm.matrix.hmcluster(args.kmeans, method='kmeans') else: if args.hclust is not None: print("Performing hierarchical clustering." "Please note that it might be very slow for large datasets.\n") hm.matrix.hmcluster(args.hclust, method='hierarchical') group_len_ratio = np.diff(hm.matrix.group_boundaries) / len(hm.matrix.regions) if np.any(group_len_ratio < 5.0 / 1000): problem = np.flatnonzero(group_len_ratio < 5.0 / 1000) sys.stderr.write("WARNING: Group '{}' is too small for plotting, you might want to remove it. " "There will likely be an error message from matplotlib regarding this " "below.\n".format(hm.matrix.group_labels[problem[0]])) if args.regionsLabel: hm.matrix.set_group_labels(args.regionsLabel) if args.samplesLabel and len(args.samplesLabel): hm.matrix.set_sample_labels(args.samplesLabel) if args.sortRegions != 'no': sortUsingSamples = [] if args.sortUsingSamples is not None: for i in args.sortUsingSamples: if (i > 0 and i <= hm.matrix.get_num_samples()): sortUsingSamples.append(i - 1) else: exit("The value {0} for --sortSamples is not valid. Only values from 1 to {1} are allowed.".format(args.sortUsingSamples, hm.matrix.get_num_samples())) print('Samples used for ordering within each group: ', sortUsingSamples) hm.matrix.sort_groups(sort_using=args.sortUsing, sort_method=args.sortRegions, sample_list=sortUsingSamples) if args.outFileNameMatrix: hm.save_matrix_values(args.outFileNameMatrix) if args.outFileSortedRegions: hm.save_BED(args.outFileSortedRegions) colormap_dict = {'colorMap': args.colorMap, 'colorList': args.colorList, 'colorNumber': args.colorNumber, 'missingDataColor': args.missingDataColor, 'alpha': args.alpha} plotMatrix(hm, args.outFileName, colormap_dict, args.plotTitle, args.xAxisLabel, args.yAxisLabel, args.regionsLabel, args.zMin, args.zMax, args.yMin, args.yMax, args.averageTypeSummaryPlot, args.refPointLabel, args.startLabel, args.endLabel, args.heatmapHeight, args.heatmapWidth, args.perGroup, args.whatToShow, plot_type=args.plotType, image_format=args.plotFileFormat, legend_location=args.legendLocation, box_around_heatmaps=args.boxAroundHeatmaps, label_rotation=args.label_rotation, dpi=args.dpi, interpolation_method=args.interpolationMethod)