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