예제 #1
0
파일: views.py 프로젝트: nerdstrike/tark
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,
                  })
예제 #2
0
파일: views.py 프로젝트: Ensembl/tark
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,
                  })
예제 #3
0
파일: views.py 프로젝트: Ensembl/tark
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)
예제 #4
0
파일: views.py 프로젝트: Ensembl/tark
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,
                  })
예제 #5
0
def align_sequence(query_seq, target_seq):
    seq_alignment = TarkSeqUtils.align_sequences(query_seq, target_seq)
    return seq_alignment
예제 #6
0
def format_fasta(sequence, seq_id):
    fasta_seq = TarkSeqUtils.format_fasta(sequence, id_=seq_id)
    sequence = fasta_seq
    return sequence
예제 #7
0
파일: views.py 프로젝트: Ensembl/tark
def check_service_status(request, job_id):

    if job_id:
        status = TarkSeqUtils.serviceGetStatus(job_id)
    return JsonResponse({"status": status})
예제 #8
0
 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")