Esempio n. 1
0
def _asp(request):
    try:
        organism = str(request.POST['organism'])
        sequence = str(request.POST['sequence'])
        start = int(request.POST['start'])
        stop = int(request.POST['stop'])
        strand = str(request.POST['strand'])
        feature = str(request.POST['feature'])

        if strand == '-':
            strand = '-'
        else:
            strand = '+'

        modelfname = 'data/asp/%s.dat.bz2' % organism

        # length limit to no smaller than 10 byte and no bigger than 2M
        if len(sequence) <= 10 or len(sequence) > 2 * 1024 * 1024:
            raise ValueError("fasta file incorrect")

        if not os.path.isfile(modelfname):
            raise ValueError(
                "model should be one of Cress, Fish, Fly, Human, Worm")

        if start < 80:
            raise ValueError("--start value must be >=80")

        if stop > 0 and start >= stop - 80:
            raise ValueError("--stop value must be > start + 80")

        if stop < 0 and stop > -80:
            raise ValueError("--stop value must be <= - 80")

        # shift the start and stop a bit
        start -= 1
        stop -= 1
        sequence_buf = StringIO.StringIO()
        sequence_buf.write(sequence)
        sequence_buf.seek(0)

        fasta_dict = genomic.read_fasta(sequence_buf)
        a = asp.asp()
        a.load_model(modelfname)

        (acc_result, don_result) = _predict(a, sequence_buf, (start, stop),
                                            strand)
        if feature == 'donor':
            return HttpResponse(json.dumps(don_result))
        else:
            return HttpResponse(json.dumps(acc_result))

    except ValueError as e:
        return HttpResponse(json.dumps({"status": e.message}))
    except:
        import traceback
        return HttpResponse(
            json.dumps({"status": repr(traceback.format_exc())}))
Esempio n. 2
0
def _asp(request):
    try:
        organism = str(request.POST['organism'])
        sequence = str(request.POST['sequence'])
        start = int(request.POST['start'])
        stop = int(request.POST['stop'])
        strand = str(request.POST['strand'])
        feature = str(request.POST['feature'])

        if strand == '-':
            strand = '-'
        else:
            strand = '+'

        modelfname = 'data/asp/%s.dat.bz2' % organism

        # length limit to no smaller than 10 byte and no bigger than 2M
        if len(sequence) <= 10 or len(sequence) > 2*1024*1024:
            raise ValueError("fasta file incorrect")

        if not os.path.isfile(modelfname):
            raise ValueError("model should be one of Cress, Fish, Fly, Human, Worm")

        if start<80:
            raise ValueError("--start value must be >=80")

        if stop > 0 and start >= stop - 80:
            raise ValueError("--stop value must be > start + 80")

        if stop < 0 and stop > -80:
            raise ValueError("--stop value must be <= - 80")

        # shift the start and stop a bit
        start -= 1
        stop -= 1
        sequence_buf = StringIO.StringIO()
        sequence_buf.write(sequence)
        sequence_buf.seek(0)

        fasta_dict = genomic.read_fasta(sequence_buf)
        a = asp.asp()
        a.load_model(modelfname)

        (acc_result, don_result) = _predict(a, sequence_buf, (start,stop), strand)
        if feature == 'donor':
            return HttpResponse(json.dumps(don_result))
        else:
            return HttpResponse(json.dumps(acc_result))

    except ValueError as e:
        return HttpResponse(json.dumps({"status": e.message}))
    except:
        import traceback
        return HttpResponse(json.dumps({"status": repr(traceback.format_exc())}))
Esempio n. 3
0
            else:
                p = [i + 1 for i in preds[1]]

        pos = array.array('i')
        pos.fromlist(p)
        out.tofile(binary_out)
        pos.tofile(binary_pos)

    def predict_file(self,
                     fname,
                     (start, end),
                     output_format,
                     score_type,
                     strand='+'):
        skipheader = False
        fasta_dict = genomic.read_fasta(file(fname))

        if strand == '-':
            for k, kseq in fasta_dict.ordered_items():
                fasta_dict[k] = genomic.reverse_complement(kseq)

        sys.stdout.write('found fasta file with ' + ` len(fasta_dict) ` +
                         ' sequence(s) (strand=%s)\n' % strand)
        seqs = seqdict.seqdict(fasta_dict, (start, end))

        #get donor/acceptor signal predictions for all sequences
        self.signal.predict_acceptor_sites_from_seqdict(seqs)
        self.signal.predict_donor_sites_from_seqdict(seqs)

        contig_no = 0
        for seq in seqs:
Esempio n. 4
0
            return HttpResponse(json.dumps(don_result))
        else:
            return HttpResponse(json.dumps(acc_result))

    except ValueError as e:
        return HttpResponse(json.dumps({"status": e.message}))
    except:
        import traceback
        return HttpResponse(
            json.dumps({"status": repr(traceback.format_exc())}))


def _predict(asp, sequence_buf, (start, end), strand):
    skipheader = False
    sequence_buf.seek(0)
    fasta_dict = genomic.read_fasta(sequence_buf)

    if strand == '-':
        for k, kseq in fasta_dict.ordered_items():
            fasta_dict[k] = genomic.reverse_complement(kseq)

    import seqdict
    seqs = seqdict.seqdict(fasta_dict, (start, end))

    asp.signal.predict_acceptor_sites_from_seqdict(seqs)
    asp.signal.predict_donor_sites_from_seqdict(seqs)

    contig_no = 0
    for seq in seqs:
        contig_no = contig_no + 1
        l = len(seq.preds['donor'].get_positions())
Esempio n. 5
0
        (acc_result, don_result) = _predict(a, sequence_buf, (start,stop), strand)
        if feature == 'donor':
            return HttpResponse(json.dumps(don_result))
        else:
            return HttpResponse(json.dumps(acc_result))

    except ValueError as e:
        return HttpResponse(json.dumps({"status": e.message}))
    except:
        import traceback
        return HttpResponse(json.dumps({"status": repr(traceback.format_exc())}))
def _predict(asp, sequence_buf, (start,end), strand):
    skipheader = False
    sequence_buf.seek(0)
    fasta_dict = genomic.read_fasta(sequence_buf)

    if strand == '-':
        for k, kseq in fasta_dict.ordered_items():
            fasta_dict[k]=genomic.reverse_complement(kseq)

    import seqdict
    seqs = seqdict.seqdict(fasta_dict, (start, end))

    asp.signal.predict_acceptor_sites_from_seqdict(seqs)
    asp.signal.predict_donor_sites_from_seqdict(seqs)

    contig_no = 0;
    for seq in seqs:
        contig_no = contig_no + 1
        l = len(seq.preds['donor'].get_positions())
Esempio n. 6
0
				p=[i-1 for i in preds[1]]
		else:
			if strand=='+':
				p=[i for i in preds[1]]
			else:
				p=[i+1 for i in preds[1]]

		pos=array.array('i')
		pos.fromlist(p) ;
		out.tofile(binary_out)
		pos.tofile(binary_pos)


	def predict_file(self, fname, (start,end), output_format, score_type, strand='+'):
		skipheader=False
		fasta_dict = genomic.read_fasta(file(fname))

		if strand=='-':
			for k, kseq in fasta_dict.ordered_items():
				fasta_dict[k]=genomic.reverse_complement(kseq)
				
		sys.stdout.write('found fasta file with ' + `len(fasta_dict)` + ' sequence(s) (strand=%s)\n' % strand)
		seqs= seqdict.seqdict(fasta_dict, (start,end))

		#get donor/acceptor signal predictions for all sequences
		self.signal.predict_acceptor_sites_from_seqdict(seqs)
		self.signal.predict_donor_sites_from_seqdict(seqs)

		contig_no = 0 ;
		for seq in seqs:
			contig_no = contig_no + 1