Beispiel #1
0
def run(args):
    # logging.basicConfig(level=logging.DEBUG)
    dbi = DBI.init(args.bam, "bam")
    out = IO.fopen(args.output, "w")
    for i in TableIO.parse(IO.fopen(args.input, "r"), "bed12"):
        print("QR\t", i, file=out)
        for j in dbi.query(i, method="bam1", strand=args.strand):
            if compatible_with_transcript(j, i):
                print("HT\t{}".format(_translate_to_meta(i, j)), file=out)
            elif not args.hit:
                print("OP\t{}".format(j), file=out)
        print("", file=out)
Beispiel #2
0
def count_list(beds,bin_num,strand):        
    bin_sum=[0.0 for i in xrange(bin_num)]
    neg_bin_sum=[0.0 for i in xrange(bin_num)]
    bin_dis=[[] for i in xrange(bin_num)]
    neg_bin_dis=[[] for i in xrange(bin_num)]
    for bed in beds:
        neg_bed=bed._replace(strand=reverse_strand(bed.strand))
        bed_bin=[0.0 for i in xrange(bin_num)]
        neg_bed_bin=[0.0 for i in xrange(bin_num)]
        for read in bam.query(bed,"bam1",strand=strand):
            cdna_length=bed.cdna_length()
            bin_step=float(cdna_length)/bin_num
            if compatible_with_transcript(read,bed):
                gene_bed=_translate(bed,read)
                bin_start=gene_bed.start*bin_num/cdna_length
                bin_stop=(gene_bed.stop-1)*bin_num/cdna_length
                if bin_stop==bin_start:
                    bed_bin[bin_start]+=float(gene_bed.stop-gene_bed.start)/bin_step
                else:
                    bed_bin[bin_start]+=bin_start+1-float(gene_bed.start)/bin_step
                    bed_bin[bin_stop]+=float(gene_bed.stop)/bin_step-bin_stop
                    for i in xrange(bin_start+1,bin_stop):
                        bed_bin[i]+=1.0  
            elif compatible_with_transcript(read,neg_bed):
                gene_bed=_translate(bed,read)
                bin_start=gene_bed.start*bin_num/cdna_length
                bin_stop=(gene_bed.stop-1)*bin_num/cdna_length
                if bin_stop==bin_start:
                    neg_bed_bin[bin_start]+=float(gene_bed.stop-gene_bed.start)/bin_step
                else:
                    neg_bed_bin[bin_start]+=bin_start+1-float(gene_bed.start)/bin_step
                    neg_bed_bin[bin_stop]+=float(gene_bed.stop)/bin_step-bin_stop
                    for i in xrange(bin_start+1,bin_stop):
                        neg_bed_bin[i]+=1.0
        for i in xrange(bin_num):
            bin_sum[i]+=bed_bin[i]
            neg_bin_sum[i]+=neg_bed_bin[i]
            bin_dis[i].append(int(bed_bin[i]))
            neg_bin_dis[i].append(int(neg_bed_bin[i]))
    return bin_sum,bin_dis,neg_bin_sum,neg_bin_dis
Beispiel #3
0
def run(args):
    #logging.basicConfig(level=logging.DEBUG)
    dbi=DBI.init(args.bam,"bam")
    mapped=dbi.mapped
    out=IO.fopen(args.output,"w")
    print("Gene\tRPKM",file=out);
    for i in TableIO.parse(IO.fopen(args.input,"r"),"bed12"):
        print(i.id,"\t",end="",file=out)
        s=0.0
        l=i.cdna_length()
        if args.uniq:
            for j in dbi.query(i,method="bam1",strand=args.strand,uniq=args.uniq):
                if compatible_with_transcript(j,i):
                    s+=1.0
        else:
            for j in dbi.query(i,method="bam1",strand=args.strand,uniq=args.uniq):
                if compatible_with_transcript(j,i):
                    (nh,_,_)=j.itemRgb.split(",")
                    nh=int(nh)
                    s+=1.0/nh
        rpkm=float(s)*(1000000.0/mapped)*(1000.0/float(l))
        print(rpkm,file=out)
def run(args):
    if os.path.isfile(args.bed + ".tbi"):
        dbi = DBI.init(args.bed, "tabix", cls=BED12)
    else:
        dbi = DBI.init(args.bed, "binindex", cls=BED12)
    out = IO.fopen(args.output, "w")
    for i in TableIO.parse(IO.fopen(args.input, "r"), "bed12"):
        print("QR\t", i, file=out)
        for j in dbi.query(i):
            if compatible_with_transcript(j, i):
                print("HT\t{}".format(_translate_to_meta(i, j)), file=out)
            elif not args.hit:
                print("OP\t{}".format(j), file=out)
        print("", file=out)