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())}))
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())}))
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:
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())
(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())
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