def fetch_sequence(request, feature_type, stable_id, stable_id_version, release_short_name=None, assembly_name=None, source_name=None, seq_type=None, output_format="fasta"): if seq_type is not None and seq_type in [ "cds", "five_prime", "three_prime" ]: sequence_data = TarkSeqUtils.fetch_cds_sequence( request, feature_type, stable_id, stable_id_version, release_short_name, assembly_name, source_name, seq_type, output_format) else: sequence_data = TarkSeqUtils.fetch_fasta_sequence( request, feature_type, stable_id, stable_id_version, release_short_name, assembly_name, source_name, output_format) return render(request, 'sequence_fasta.html', context={ 'sequence_data': sequence_data, 'stable_id': stable_id + '.' + stable_id_version, })
def align_cds_sequence(request, feature_type, stable_id_a, stable_id_version_a, release_short_name_a, assembly_name_a, source_name_a, stable_id_b, stable_id_version_b, release_short_name_b, assembly_name_b, source_name_b, cds_type="cds", output_format="raw"): sequence_a = TarkSeqUtils.fetch_cds_sequence( request, feature_type, stable_id_a, stable_id_version_a, release_short_name_a, assembly_name_a, source_name_a, cds_type, output_format) sequence_b = TarkSeqUtils.fetch_cds_sequence( request, feature_type, stable_id_b, stable_id_version_b, release_short_name_b, assembly_name_b, source_name_b, cds_type, output_format) if len(sequence_a) == 0 or len(sequence_b) == 0: return render( request, 'alignment_viewer.html', context={ 'error_msg': "Alignment Error...One of the sequence is not available, please check!", }) pay_load = { 'asequence': sequence_a, 'bsequence': sequence_b, 'format': "pair", 'stype': "dna", 'email': '*****@*****.**' } encoded_pay_load = urllib.parse.urlencode(pay_load).encode("utf-8") # print(encoded_pay_load) # # # jobId = TarkSeqUtils.serviceRun(encoded_pay_load) # jobId = "emboss_needle-R20190607-121522-0390-94599336-p2m" if jobId: status = TarkSeqUtils.serviceGetStatus(jobId) return render(request, 'alignment_viewer.html', context={ 'status': status, 'jobId': jobId, })
def call_align_sequence_clustal(request): if request.method == "POST": data = request.body body_unicode = data.decode('utf-8') body = json.loads(body_unicode) transcript_list = body['payload_data_list'] first_transcript = transcript_list.pop(0) (first_tr_stable_id, first_tr_stable_id_version ) = first_transcript['transcript1_stable_id'].split('.') sequence_tr1 = TarkSeqUtils.fetch_fasta_sequence( request, "transcript", first_tr_stable_id, first_tr_stable_id_version, release_short_name=first_transcript['transcript1_release'], assembly_name=first_transcript['transcript1_assembly'], source_name=first_transcript['transcript1_source']) output = io.StringIO() output.write(sequence_tr1) for transcript in transcript_list: (tr_stable_id, tr_stable_id_version ) = transcript['transcript2_stable_id'].split('.') sequence_tr = TarkSeqUtils.fetch_fasta_sequence( request, "transcript", tr_stable_id, tr_stable_id_version, release_short_name=transcript['transcript2_release'], assembly_name=transcript['transcript2_assembly'], source_name=transcript['transcript2_source']) print(sequence_tr, file=output, end="") seq_data = output.getvalue() pay_load = { 'sequence': seq_data, 'outfmt': 'clustal', 'stype': 'dna', 'email': '*****@*****.**', 'title': "Results from Clustal Multiple Sequence alignment" } encoded_pay_load = urllib.parse.urlencode(pay_load).encode("utf-8") jobId = TarkSeqUtils.serviceRunClustal(encoded_pay_load) # jobId= "clustalo-R20191210-155816-0727-14316613-p1m" if jobId: status = TarkSeqUtils.serviceGetStatus(jobId) data = {'status': status, 'jobId': jobId} return JsonResponse(data)
def align_sequence(request, feature_type, stable_id_a, stable_id_version_a, stable_id_b, stable_id_version_b, input_type, outut_format='pair'): sequence_a = TarkSeqUtils.fetch_fasta_sequence(request, feature_type, stable_id_a, stable_id_version_a) sequence_b = TarkSeqUtils.fetch_fasta_sequence(request, feature_type, stable_id_b, stable_id_version_b) pay_load = { 'asequence': sequence_a, 'bsequence': sequence_b, 'format': outut_format, 'stype': input_type, 'email': '*****@*****.**' } encoded_pay_load = urllib.parse.urlencode(pay_load).encode("utf-8") # print(encoded_pay_load) # jobId = TarkSeqUtils.serviceRun(encoded_pay_load) # jobId = "emboss_needle-I20190401-145945-0054-27249118-p2m" if jobId: status = TarkSeqUtils.serviceGetStatus(jobId) return render(request, 'alignment_viewer.html', context={ 'status': status, 'jobId': jobId, })
def align_sequence(query_seq, target_seq): seq_alignment = TarkSeqUtils.align_sequences(query_seq, target_seq) return seq_alignment
def format_fasta(sequence, seq_id): fasta_seq = TarkSeqUtils.format_fasta(sequence, id_=seq_id) sequence = fasta_seq return sequence
def check_service_status(request, job_id): if job_id: status = TarkSeqUtils.serviceGetStatus(job_id) return JsonResponse({"status": status})
def test_format_fasta(self): sequence = "GATTGCGCCACTGCACTCCAGCCTGGGCGTGCAGATCAGAGCGAGACCTTGTCTCTAAAGGAAAAAAAAAAAGAAAGAAAGAAAGAAAAGAAAAGAAAAGAAAACCTAGCGAGGTAGATAATTTT" # @IgnorePep8 formatted_seq = TarkSeqUtils.format_fasta(sequence) expected_seq = ">ID_\nGATTGCGCCACTGCACTCCAGCCTGGGCGTGCAGATCAGAGCGAGACCTTGTCTCTAAAG\nGAAAAAAAAAAAGAAAGAAAGAAAGAAAAGAAAAGAAAAGAAAACCTAGCGAGGTAGATA\nATTTT\n" # @IgnorePep8 self.assertEqual(formatted_seq, expected_seq, "Sequences are equal")