Blast+ 网页实现

1.前端发送表单

表单数据包括

  • 序列信息

  • blast database

  • 其他可选的参数

  • 选择blastn或者blastp

      formInline: {
        sequence: '',
        database: '',
        evalue: '-evalue 1.0e-5 -num_alignments 10 -max_hsps 10',
        blastType: ''
      },

1.1提交表单数据前进行数据校验

  • 表单校验不成功,不能够提交

  • 校验成功后使用FormData封装表单数据

  • 打开遮罩层,阻止多次提交

  • 使用axios获取响应数据后,关闭遮罩层

2.响应数据渲染

封装一个show.vue子组件,子组件中使用props获取父组件传递的响应数据,子组件中reponseData初始化值为空

在渲染序列比对情况时候,遇到对不齐的情况;主要是由于没有使用等宽字体

字体对齐

使用计算属性,将父组件的响应数据转换成需要渲染的数据

3.后端node运行blast+

使用node运行系统命令,来执行blast+

3.1创建两个临时文件,用于存储序列信息和blast运行结果

  • 使用tmp模块

3.2运行系统命令

使用child_process模块运行子进程,调用execFile函数执行系统脚本

execFile函数参数:

  • 系统脚本所在绝对路径

  • 传递参数的数组

  • 回调函数,判断脚本是否执行成功

3.3解析Blast+ outfmt 0格式文件

  • 利用关键字Query=获取查询序列所在行号

  • 关键字>获取匹配序列所在行号

  • 匹配序列之间,间隔行数是固定的

脚本地址

4.演示地址

http://cotton.hzau.edu.cn/web/test#/blast/query

参考

  1. 转换Blast输出文件

Last updated

Was this helpful?