Beispiel #1
0
def file_edit(request, file_id, response_format='html'):
    "File edit page"

    file = get_object_or_404(File, pk=file_id)
    if not request.user.profile.has_permission(file, mode='w'):
        return user_denied(request, message="You don't have access to this File")

    if request.POST:
        if 'cancel' not in request.POST:
            form = FileForm(
                request.user.profile, None, request.POST, request.FILES, instance=file)
            if form.is_valid():
                file = form.save()
                return HttpResponseRedirect(reverse('documents_file_view', args=[file.id]))
        else:
            return HttpResponseRedirect(reverse('documents_file_view', args=[file.id]))

    else:
        form = FileForm(request.user.profile, None, instance=file)

    context = _get_default_context(request)
    context.update({'form': form,
                    'file': file})

    return render_to_response('documents/file_edit', context,
                              context_instance=RequestContext(request),
                              response_format=response_format)
Beispiel #2
0
def file_upload_typed(request, folder_id=None, response_format='html'):
    "File upload to preselected folder"

    folder = None
    if folder_id:
        folder = get_object_or_404(Folder, pk=folder_id)
        if not request.user.profile.has_permission(folder, mode='x'):
            folder = None

    if request.POST:
        if 'cancel' not in request.POST:
            form = FileForm(
                request.user.profile, folder_id, request.POST, request.FILES)
            if form.is_valid():
                file = form.save()
                file.set_user_from_request(request)
                return HttpResponseRedirect(reverse('documents_file_view', args=[file.id]))
        else:
            return HttpResponseRedirect(reverse('document_index'))
    else:
        form = FileForm(request.user.profile, folder_id)

    context = _get_default_context(request)
    context.update({'form': form,
                    'folder': folder})

    return render_to_response('documents/file_upload_typed', context,
                              context_instance=RequestContext(request),
                              response_format=response_format)
Beispiel #3
0
def attach_file(request,content_type_id,pk):
    ct = ContentType.objects.get(id=content_type_id)
    klass = ct.model_class()
    obj = klass.objects.get(pk=pk)
    if request.method == 'GET':
        form = FileForm()
    elif request.method == 'POST':
        form = FileForm(request.POST,request.FILES)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.uploaded_by=request.user
            obj.object_id = pk
            obj.content_type = ct
            obj.name = obj.file.name
            obj.save()
            return Response(FileSerializer(obj).data)
        else:
            return Response({'errors':form.errors},status=404)
Beispiel #4
0
def file_upload(request, response_format='html'):
    "New file form"

    if request.POST:
        if 'cancel' not in request.POST:
            file = File()
            form = FileForm(
                request.user.profile, None, request.POST, request.FILES, instance=file)
            if form.is_valid():
                file = form.save()
                file.set_user_from_request(request)
                return HttpResponseRedirect(reverse('documents_file_view', args=[file.id]))
        else:
            return HttpResponseRedirect(reverse('document_index'))
    else:
        form = FileForm(request.user.profile, None)

    context = _get_default_context(request)
    context.update({'form': form})

    return render_to_response('documents/file_upload', context,
                              context_instance=RequestContext(request),
                              response_format=response_format)
Beispiel #5
0
def file_form(request):
    # if not request.user.is_staff or not request.user.is_superuser:
    #     raise Http404;
    if request.POST:
        form = FileForm(request.POST, request.FILES)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.user = request.user
            instance.save()

            # read CSV file and define parameters
            input_file_name = re.search(r'/(media/.*)', instance.file.url)
            fileID = instance.id
            input_file = vcf.Reader(open(input_file_name.group(1), "r"))
            # output_somatic_file = open('media/somatic_mutation-'+str(fileID)+'.tsv', 'wb')
            # output_germline_file = open('media/germline_mutation-'+str(fileID)+'.tsv', 'wb')
            logs = open('media/logs-' + str(fileID) + '.txt', 'w')
            somatic_mutation_array = []
            germline_mutation_array = []

            # Read vcf file and create seperate arrays for somatic and germline mutation
            for record in input_file:
                chr = re.search(r'chr(.*)', str(record.CHROM))
                start_pos = str(record.POS)
                if record.REF == '-':
                    end_pos = record.POS + 1
                else:
                    end_pos = start_pos
                ref = str(record.REF)
                alt = re.search(r'\[(.*)\]', str(record.ALT))
                oncoTator = 'http://www.broadinstitute.org/oncotator/mutation/' + chr.group(
                    1
                ) + '_' + start_pos + '_' + end_pos + '_' + ref + '_' + alt.group(
                    1)
                try:
                    oncoTator_response = requests.get(oncoTator)
                except ConnectionError as e:
                    print e
                    logs.write(str(e))
                    oncoTator_response = "No response"
                if oncoTator_response != "No response" and oncoTator_response.status_code != 500:
                    mutation = json.loads(oncoTator_response.text)
                    if "ERROR" in mutation:
                        logs.write("OncoTator is giving error for url:" +
                                   oncoTator + " Error message: " +
                                   str(oncoTator_response.text))
                    else:

                        if mutation["CGC_Cancer Germline Mut"] == "yes":
                            germline_mutation_array.append(mutation)

                        if mutation["CGC_Cancer Somatic Mut"] == "yes":
                            somatic_mutation_array.append(mutation)
            logs.close()

            # write values from arrays to tsv files
            # fieldnames = []
            # for key in somatic_mutation_array[0]:
            #     fieldnames.append(str(key))

            # tsv_somatic_file = csv.DictWriter(output_somatic_file, fieldnames=fieldnames, delimiter='\t')
            # tsv_somatic_file.writeheader()
            for mutation in somatic_mutation_array:
                # tsv_somatic_file.writerow(mutation)
                ssnp = somatic_snp.objects.create(
                    study_name=instance,
                    gene=mutation["gene"],
                    chromosome=mutation["ESP_Chromosome"],
                    start=mutation["start"],
                    end=mutation["end"],
                    ref_allele=mutation["ref_allele"],
                    alt_allele=mutation["alt_allele"],
                    variant_class=mutation["variant_classification"],
                    variant_type=mutation["variant_type"],
                    ensemblID=mutation["HGNC_Ensembl Gene ID"])
            # output_somatic_file.close()

            # tsv_germline_file = csv.DictWriter(output_germline_file, fieldnames=fieldnames, delimiter='\t')
            # tsv_germline_file.writeheader()
            for mutation in germline_mutation_array:
                # tsv_germline_file.writerow(mutation)
                gsnp = germline_snp.objects.create(
                    study_name=instance,
                    gene=mutation["gene"],
                    chromosome=mutation["ESP_Chromosome"],
                    start=mutation["start"],
                    end=mutation["end"],
                    ref_allele=mutation["ref_allele"],
                    alt_allele=mutation["alt_allele"],
                    variant_class=mutation["variant_classification"],
                    variant_type=mutation["variant_type"],
                    ensemblID=mutation["HGNC_Ensembl Gene ID"])
            # output_germline_file.close()

            # fileread = open('media/germline_mutation-'+str(fileID)+'.tsv', 'r')
            # TSVfile = File(fileread)
            # instance.germline_result.save('media/germline_mutation-'+str(fileID)+'.tsv', TSVfile, save=True)
            #
            # fileread = open('media/somatic_mutation-' + str(fileID) + '.tsv', 'r')
            # TSVfile = File(fileread)
            # instance.somatic_result.save('media/somtic_mutation-' + str(fileID) + '.tsv', TSVfile, save=True)

            return HttpResponseRedirect('/result/')
    else:
        form = FileForm()
    return render(request, 'oncotator/snp_tools.html', {'form': form})
Beispiel #6
0
def file_form(request):
    # if not request.user.is_staff or not request.user.is_superuser:
    #     raise Http404;
    if request.POST:
        form = FileForm(request.POST, request.FILES)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.user = request.user
            instance.save()

            # read CSV file and define parameters
            input_file_name = re.search(r'/(media/.*)', instance.file.url)
            fileID = instance.id
            input_file = vcf.Reader(open(input_file_name.group(1), "r"))
            # output_somatic_file = open('media/somatic_mutation-'+str(fileID)+'.tsv', 'wb')
            # output_germline_file = open('media/germline_mutation-'+str(fileID)+'.tsv', 'wb')
            logs = open('media/logs-'+str(fileID)+'.txt', 'w')
            somatic_mutation_array = []
            germline_mutation_array = []

            # Read vcf file and create seperate arrays for somatic and germline mutation
            for record in input_file:
                chr = re.search(r'chr(.*)', str(record.CHROM))
                start_pos = str(record.POS)
                if record.REF == '-':
                    end_pos = record.POS + 1
                else:
                    end_pos = start_pos
                ref = str(record.REF)
                alt = re.search(r'\[(.*)\]', str(record.ALT))
                oncoTator = 'http://www.broadinstitute.org/oncotator/mutation/' + chr.group(
                    1) + '_' + start_pos + '_' + end_pos + '_' + ref + '_' + alt.group(1)
                try:
                    oncoTator_response = requests.get(oncoTator)
                except ConnectionError as e:
                    print e
                    logs.write(str(e))
                    oncoTator_response = "No response"
                if oncoTator_response != "No response" and oncoTator_response.status_code != 500:
                    mutation = json.loads(oncoTator_response.text)
                    if "ERROR" in mutation:
                        logs.write("OncoTator is giving error for url:" + oncoTator + " Error message: " + str(oncoTator_response.text))
                    else:

                        if mutation["CGC_Cancer Germline Mut"] == "yes":
                            germline_mutation_array.append(mutation)

                        if mutation["CGC_Cancer Somatic Mut"] == "yes":
                            somatic_mutation_array.append(mutation)
            logs.close()

            # write values from arrays to tsv files
            # fieldnames = []
            # for key in somatic_mutation_array[0]:
            #     fieldnames.append(str(key))

            # tsv_somatic_file = csv.DictWriter(output_somatic_file, fieldnames=fieldnames, delimiter='\t')
            # tsv_somatic_file.writeheader()
            for mutation in somatic_mutation_array:
                # tsv_somatic_file.writerow(mutation)
                ssnp = somatic_snp.objects.create(study_name=instance, gene=mutation["gene"], chromosome=mutation["ESP_Chromosome"], start=mutation["start"], end=mutation["end"], ref_allele=mutation["ref_allele"], alt_allele=mutation["alt_allele"], variant_class=mutation["variant_classification"],variant_type=mutation["variant_type"], ensemblID=mutation["HGNC_Ensembl Gene ID"])
            # output_somatic_file.close()

            # tsv_germline_file = csv.DictWriter(output_germline_file, fieldnames=fieldnames, delimiter='\t')
            # tsv_germline_file.writeheader()
            for mutation in germline_mutation_array:
                # tsv_germline_file.writerow(mutation)
                gsnp = germline_snp.objects.create(study_name=instance, gene=mutation["gene"], chromosome=mutation["ESP_Chromosome"], start=mutation["start"], end=mutation["end"], ref_allele=mutation["ref_allele"], alt_allele=mutation["alt_allele"], variant_class=mutation["variant_classification"],variant_type=mutation["variant_type"], ensemblID=mutation["HGNC_Ensembl Gene ID"])
            # output_germline_file.close()

            # fileread = open('media/germline_mutation-'+str(fileID)+'.tsv', 'r')
            # TSVfile = File(fileread)
            # instance.germline_result.save('media/germline_mutation-'+str(fileID)+'.tsv', TSVfile, save=True)
            #
            # fileread = open('media/somatic_mutation-' + str(fileID) + '.tsv', 'r')
            # TSVfile = File(fileread)
            # instance.somatic_result.save('media/somtic_mutation-' + str(fileID) + '.tsv', TSVfile, save=True)

            return HttpResponseRedirect('/result/')
    else:
        form = FileForm()
    return render(request, 'oncotator/snp_tools.html', {'form': form})