def run(bam, track_file_name, window_size): track = tb.openFile(track_file_name, "w") track_name = bam.split(".bam")[0] print(track_name) test = checkIfNodeExists(track, track_name) if test: return bam_file = pysam.Samfile(bam) chrs = bam_file.references vals = [] chr_length = 0 start = 0 end = window_size i = 0 for chr in chrs: chr_length = bam_file.lengths[bam_file.references.index(chr)] vals = np.zeros(chr_length / window_size) print chr #track_chr = track._f_getChild(chr_name) print ">> Counting..." while end < chr_length: vals[i] = float(bam_file.count(reference=chr, start=start, end=end)) / bam_file.mapped i += 1 start = start + window_size end = end + window_size print ">> Creating array..." track.createArray("/" + track_name, chr, vals) # out_track_chr = out.getNode("/" + out_track_name, chr_name) track_util.setTrackAttributes(track, track_name + "/" + chr, 0, chr_length / window_size, chr, window_size) # def setTrackAttributes(file, node, start, stop, name, resolution): # for name in track_chr._v_attrs._f_list(): # out.etNodeAttr("/" + "/".join([out_track_name, chr_name]), name, track_chr._v_attrs[name]) print "Flushing..." track.flush() track.close()
def write_values(obj, pos_vect, chrom, chr_length): if obj.output_type == "wig": out = "fixedStep chrom={0} start={1} step={2} span={2}\n".format( chrom, "1", obj.window_size) obj.outfile.write(out) for val in pos_vect: obj.outfile.write(str(val) + "\n") elif obj.output_type == "h5": obj.outfile.createArray("/" + obj.track_name, chrom, pos_vect) track_util.setTrackAttributes(obj.outfile, obj.track_name + "/" + chrom, 0, chr_length / obj.window_size, chrom, obj.window_size)
def write_values(obj, pos_vect, chrom, chr_length): if obj.output_type == "wig": out = "fixedStep chrom={0} start={1} step={2} span={2}\n".format(chrom, "1", obj.window_size) obj.outfile.write(out) for val in pos_vect: obj.outfile.write(str(val) + "\n") elif obj.output_type == "h5": obj.outfile.createArray("/" + obj.track_name, chrom, pos_vect) track_util.setTrackAttributes(obj.outfile, obj.track_name + "/" + chrom, 0, chr_length / obj.window_size, chrom, obj.window_size)