def _consumer(input_queue, output_queue): while True: line = input_queue.get() if line is None: break f = BEDFeature.from_string(line) # retrieve conservation data bigwig_file = chrom_bigwig_dict[f.chrom] arr = extract_bigwig_data(f, bigwig_file) # measure conservation at various sliding windows window_scores = [] for window_size in window_sizes: window_scores.append(best_sliding_window(arr, window_size, np.mean)) # measure average conservation finitearr = arr[np.isfinite(arr)] if len(finitearr) == 0: mean_cons = np.nan else: mean_cons = np.mean(finitearr) fields = [f.name, '%s:%d-%d[%s]' % (f.chrom, f.tx_start, f.tx_end, f.strand), str(len(arr)), str(mean_cons)] fields.extend(map(str,window_scores)) result = '\t'.join(fields) output_queue.put(result) output_queue.put(None)
def _consumer(input_queue, output_queue): while True: line = input_queue.get() if line is None: break f = BEDFeature.from_string(line) # retrieve conservation data bigwig_file = chrom_bigwig_dict[f.chrom] arr = extract_bigwig_data(f, bigwig_file) # measure conservation at various sliding windows window_scores = [] for window_size in window_sizes: window_scores.append( best_sliding_window(arr, window_size, np.mean)) # measure average conservation finitearr = arr[np.isfinite(arr)] if len(finitearr) == 0: mean_cons = np.nan else: mean_cons = np.mean(finitearr) fields = [ f.name, '%s:%d-%d[%s]' % (f.chrom, f.tx_start, f.tx_end, f.strand), str(len(arr)), str(mean_cons) ] fields.extend(map(str, window_scores)) result = '\t'.join(fields) output_queue.put(result) output_queue.put(None)
def conservation_serial(bed_file, window_sizes, chrom_bigwig_dict): # output header fields fields = ['name', 'position', 'transcript_length', 'mean'] fields.extend(map(str, window_sizes)) print '\t'.join(fields) # process bed file for f in BEDFeature.parse(open(bed_file)): # retrieve conservation data bigwig_file = chrom_bigwig_dict[f.chrom] arr = extract_bigwig_data(f, bigwig_file) # measure conservation at various sliding windows window_scores = [] for window_size in window_sizes: window_scores.append(best_sliding_window(arr, window_size, np.mean)) # calc mean conservation finitearr = arr[np.isfinite(arr)] if len(finitearr) == 0: mean_cons = np.nan else: mean_cons = np.mean(finitearr) fields = [ f.name, '%s:%d-%d[%s]' % (f.chrom, f.tx_start, f.tx_end, f.strand), str(len(arr)), str(mean_cons) ] fields.extend(map(str, window_scores)) print '\t'.join(fields)
def feature_conservation(f, chrom_bigwig_dict, sig_threshold, window_sizes): # retrieve conservation data bigwig_file = chrom_bigwig_dict[f.chrom] arr = extract_bigwig_data(f, bigwig_file) # calc mean conservation finitearr = arr[np.isfinite(arr)] if len(finitearr) == 0: mean = np.nan frac = np.nan else: mean = np.mean(finitearr) frac = (finitearr >= sig_threshold).sum() / float(len(finitearr)) # measure conservation at various sliding windows window_scores = [] for window_size in window_sizes: window_scores.append(best_sliding_window(arr, window_size, np.mean)) fields = [f.name, mean, frac, len(finitearr)] fields.extend(window_scores) return map(str, fields)
def conservation_serial(bed_file, window_sizes, chrom_bigwig_dict): # output header fields fields = ['name', 'position', 'transcript_length', 'mean'] fields.extend(map(str,window_sizes)) print '\t'.join(fields) # process bed file for f in BEDFeature.parse(open(bed_file)): # retrieve conservation data bigwig_file = chrom_bigwig_dict[f.chrom] arr = extract_bigwig_data(f, bigwig_file) # measure conservation at various sliding windows window_scores = [] for window_size in window_sizes: window_scores.append(best_sliding_window(arr, window_size, np.mean)) # calc mean conservation finitearr = arr[np.isfinite(arr)] if len(finitearr) == 0: mean_cons = np.nan else: mean_cons = np.mean(finitearr) fields = [f.name, '%s:%d-%d[%s]' % (f.chrom, f.tx_start, f.tx_end, f.strand), str(len(arr)), str(mean_cons)] fields.extend(map(str,window_scores)) print '\t'.join(fields)