功能:是为了让部门同事,通过内网,以及指定位置,进行sanger截图。
原sanger图:
想要的sanger图:
运行的目录如下:
网站的初始界面如下:
点击"分析":
源代码如下:
#!/bin/env python
#coding=utf-8
import pywebio
import pywebio.output as output
import pywebio.input as input
import pywebio.pin as pin
from pywebio.session import hold
from pywebio import start_server
import os
import glob
os.chdir("/share_data/clin_result/clin_epilepsy_result/Sanger/PyWebIO_Sanger") #分析目录
def get_ab1_list():
ab1List = glob.glob("*ab1")
return ab1List #返回该目录下的所有ab1后缀文件
def get_sanger(): #主程序
ab1List = get_ab1_list()
print(ab1List)
pin.put_select("ab1",label="请选择ab1文件:",options=ab1List) #选项列表,单选,不支持多选,因为不同的sanger,想要截取的位置不一样。
pin.put_input("pos",label="请输入想要截取的图片位置",type=input.NUMBER) #突变的位置。
#pin.put_input("outName",label="请输入结果图片的名字")
def cut():
ab1Name = pin.pin["ab1"]
pos = pin.pin["pos"]
aList = ab1Name.split("-")
outName = aList[1]+"_"+aList[2]+"-"+aList[4]+'_'+aList[5].split("_")[0]+'.png' #输出文件名称。
os.system("/usr/bin/Rscript sangerLocalPosPlot_linux_pywebio.R {} {} {}".format(ab1Name, pos, outName)) #核心是这一步,运行sanger截图的R
output.put_image(open(outName,'rb').read()) # 输出运行出来的图片
output.put_buttons(["分析"], lambda _:cut()) #点“分析”时,运行上面的程序
hold()
if __name__ == '__main__':
start_server(get_sanger,port=8083) #启动服务
#get_sanger()