Files
Simple_Drawing/tools/views.py
2021-10-08 16:38:48 +08:00

137 lines
4.3 KiB
Python

import os
from Bio import SeqIO
from django.http import JsonResponse
from django.shortcuts import render
from chart import tools
def out_page(request, page):
return render(request, f'/tools/{page}')
def id_transform(request):
file = request.FILES.get('file', None)
to = request.POST.get("to", None)
from_ = request.POST.get("from", None)
if file is None:
return JsonResponse({})
return JsonResponse({})
def blast(request):
file1 = request.FILES.get('file1', None)
pass
def gen_to_fa(request):
file = request.FILES.get("file")
file_path, file_id = tools.path_out("chart")
tools.keep_file(file, file_path)
data = {"id": file_id}
records = SeqIO.parse(file_path, "genbank") # 读入
SeqIO.write(records, f"{file_path}.fasta", "fasta") # 写出
return JsonResponse(data)
def gff_to_gtf(request):
file = request.FILES.get("file")
file_path, file_id = tools.path_out("chart")
tools.keep_file(file, file_path)
data = {"id": file_id}
os.system(f"{tools.tools_path}/gffread {file_path} -T -o {file_path}.gtf")
return JsonResponse(data)
def orf(request):
file = request.FILES.get("file", None)
begin = request.POST.get("begin", None)
end = request.POST.get("end", None)
Cyclotype = request.POST.get("Cyclotype", None)
Codons = request.POST.get("Codons", None)
outfmt = request.POST.get("outfmt", None)
file_path, file_id = tools.path_out("chart")
tools.keep_file(file, file_path)
data = {"id": file_id}
os.system(
f"{tools.tools_path}/ORFfinder {file_path} -b {begin} -e {end} -c {'t' if Cyclotype == 'YES' else 'f'} -g {Codons} -outfmt {outfmt} -out {file_path}.txt")
return JsonResponse(data)
def basics(request):
file = request.FILES.get("file", None)
# Sequence_cleaning = request.POST.get("Sequence_cleaning", None) # 序列清洗
# Sequence_length = request.POST.get("Sequence_length", None) # 序列长度
# GC_content = request.POST.get("GC_content", None) # GC含量
# Sequence_flip = request.POST.get("Sequence_flip", None) # 序列翻转
# Reverse_complementarity = request.POST.get("Reverse_complementarity", None) # 反向互补
# Codon_preference = request.POST.get("Codon_preference", None) # 密码子偏好性
# Codon_frequency = request.POST.get("Codon_frequency", None) # 密码子频率
file_path, file_id = tools.path_out("chart")
tools.keep_file(file, file_path)
josn = {}
for i in request.POST.lists():
josn[i[0]] = i[1][0]
print(josn)
data = {"id": file_id}
tools.Basics(file_path, josn).run()
return JsonResponse(data)
def pfam(request):
file = request.FILES.get("file", None)
b_dom = request.POST.get("b_dom", None)
b_seq = request.POST.get("b_seq", None)
e_dom = request.POST.get("e_dom", None)
e_seq = request.POST.get("e_seq", None)
align = request.POST.get("align", None)
clan_overlap = request.POST.get("clan_overlap", None)
file_path, file_id = tools.path_out("chart")
tools.keep_file(file, file_path)
data = {"id": file_id}
os.system(
f"{tools.tools_path}/pfam_scan.pl -fasta {file_path} -b_dom {b_dom} -b_seq {b_seq} -e_dom {e_dom} -e_seq {e_seq} -align {align} -clan_overlap {clan_overlap} -dir {tools.tools_path}/db/ -out {file_path}.txt")
return JsonResponse(data)
def fastqc(request):
file = request.FILES.get("file", None)
format = request.POST.get("format", None)
if format is None:
format = "fastq"
file_path, file_id = tools.path_out("chart")
tools.keep_file(file, file_path)
data = {"id": file_id}
os.mkdir(f"{file_path[:-1]}")
os.system(
f"{tools.tools_path}/fastqc -o {file_path[:-1]} -f {format} {file_path}")
os.system(f"7z a -t7z -r {file_id}.7z {file_path[:-1]}")
return JsonResponse(data)
def Differential_expression_analysis(request):
if request.method == 'POST':
files = request.FILES.getlist('files')
file_path, file_id = tools.path_out("chart")
for f in files:
ty = (f.name).split(".")[-1]
destination = open('%s/%s' % (file_path, ty), 'wb')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
file_path, file_id = tools.path_out("chart")
data = {"id": file_id}
return JsonResponse(data)