def get_alignment_as_string(id, no, fmt="emboss"): session = Session() query = session.query(ParcaJob).filter(ParcaJob.id == id) if query.count() == 0: return "ERROR: Wrong id", "" job = query.first() if job.status != ST_DONE: return "ERROR: Job not complete", "" res = json.loads(job.alignments) inf = json.loads(job.alignment_infos) if no >= len(res): return "ERROR: Wrong alignment number", "" gep = job.gep gop = inf[no]["MinGOP"], inf[no]["MaxGOP"] al = res[no]["data"] mn = job.matrix_name matr = parca.__dict__[job.matrix_name] name1 = job.name1 name2 = job.name2 seq1 = job.sequence1 seq2 = job.sequence2 finish_datetime = job.finish_datetime m = inf[no]["m"] err = "" s = "" try: s = bioformats.proteins_alignment_to_string( al, seq1, seq2, name1, name2, fmt, matr, mn, gep, gop, finish_datetime, "parca-soap-server", None, m ) except bioformats.BioFormatException as e: err = "ERROR: " + str(e.text) log.error("Tried to get '%s' representaion of %d:%d: %s" % (fmt, job.id, no, e.text)) return err, s
als = _base.get_pareto_alignments(seq1,seq2,gep,matrix,40) err = _base.get_last_error() if len(err)>0: sys.stderr.write("Error: "+err+"\n") sys.exit(7) primary = _util.get_primary_alignments(als) gops = _util.calculate_gops(primary) for index, pa in enumerate(primary): #out.write("\n# Score = %i, Deletions = %i, Gaps = %i \n" % (pa.m, pa.d, pa.g)) gop = gops[index] s = bioformats.proteins_alignment_to_string( pa.data, seq1, seq2, name1, name2, outfmt, matrix, mn, gep, gop, rundate, "parca", outname, pa.m ) #s = _util.alignment_to_string(seq1,seq2,pa.data,cps,matrix,60) out.write(s+"\n") out.close()
else: sys.stderr.write("PASSED\n") _ = "Test 5. Check output formats" sys.stderr.write(_+"... ") try: for outfmt in ["CLUSTAL", "FASTA", "FASTQ", "EMBOSS"]: for index, al in enumerate(alns): gop = gops[index] s = bioformats.proteins_alignment_to_string( al.data, reference[seq_names[0]], reference[seq_names[1]], seq_names[0], seq_names[1], outfmt, matrix, "BLOSUM62", 1.0, gop, None, "selftest", None, al.m ) f = open(RESOURCE_PATH+"/test03/ref/reference"+str(index)+"."+outfmt.lower(), "r") ref_s = f.read() f.close() assert s==ref_s except: failed[4] = True if failed[4]: sys.stderr.write("FAILED\n") else: sys.stderr.write("PASSED\n")