前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >bash-map

bash-map

作者头像
零式的天空
发布2022-03-21 20:24:52
3080
发布2022-03-21 20:24:52
举报
文章被收录于专栏:零域Blog零域Blog

这篇主要记录linux下写简单shell脚本调用bwa对fastq文件作mapping

code

输入两个或者三个参数,分别表示SE PE的情况,第一个参数是ref,可选为在reference所在目录下的已经建好Index的参考基因组,如Ecoli.fa Human.fa 等

代码语言:javascript
复制
#!/bin/bash

if [ $# -lt 2 ];then
    echo 'Wrong parameters.'
    exit
fi

ref=$1
fq1=$2
fq2=$3

#bn=$(basename $fq1)
dn=$(dirname $fq1)
bn=${bn%%.*}
bam=$dn/$bn.bam
reference=/home/tigerrose/REF/BWA_REF/$ref

if [[ -e $fq2 ]]; then
    # PE
    p1=$dn/$bn.pipe
    bn=$(basename $fq2)
    dn=$(dirname $fq2)
    bn=${bn%%.*}
    p2=$dn/$bn.pipe
    bam=$dn/${bn%_*}.bam

    if [ ! -e ${p1} ];then mkfifo ${p1}; fi
    if [ ! -e ${p2} ];then mkfifo ${p2}; fi

    bwa aln -t 20 -l 25 $reference $fq1 > $p1 &
    bwa aln -t 20 -l 25 $reference $fq2 > $p2 &
    bwa sampe $reference $p1 $p2 $fq1 $fq2 | samtools view -bS - > $bam

    rm $p1
    rm $p2
else
    # SE
    bwa aln -t 20 -l 25 $reference $fq1 | bwa samse $reference - $fq1 | samtools view -bS - > $bam
fi

shell脚本基础

这个简单的脚本中用到了一些shell脚本的基础知识

代码语言:javascript
复制
$#  # 参数的个数
-lt  # 比较两个整数,小于的意思
$(dirname $var)  # 获取地址var的目录地址
${var%%.*}  # 将变量var按照.分割,并获取最左边的部分
-e $var # 出现在if 判断语句,表示存在这个文件var
mkfifo $var  # 创建命名管道var
exe1 | exe2 -  # 将exe1运行的结果通过管道传给exe2,其中-表示前面传入内容所在的位置
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • code
  • shell脚本基础
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档