首先在linux 里配置condahtml
下载python
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.shlinux
chmod +x Anaconda3-5.3.1-Linux-x86_64.shgit
bash Anaconda3-5.3.1-Linux-x86_64.shshell
安装完毕,若是忘记选择yes,敲conda命令报错“command not found" 加上source /root/anaconda3/etc/profile.d/conda.shwindows
conda env list 获得 /root/anaconda3bash
export PATH=~/anaconda3/bin:$PATH多线程
否则全局没法使用conda命令,(可是重启putty好像就无论用了,还不清楚缘由)app
vs code能够不安装svg
安装tree命令,yum install tree
tree -af 能够查看树形文件结构
snakemake是纯python的任务流程工具(基于python3),之前商业环境用过control-M
https://snakemake.readthedocs.io/en/stable/
首先作个变异检测,就是和标准的序列作对比,有点相似于代码的compare,用过Beyond Compare或svn和git的筒子们应该很熟悉了,
可是基因序列是个很是大的序列文件,在linux也没有windows那样简便的图形操做见面,并且,这种对比工做是大量重复的,须要脚本化。
cd snakemake-snakemake-tutorial-623791d7ec6d
conda env create --name snakemake-tutorial --file environment.yaml
--------------------------------------------------------------
export PATH=~/anaconda3/bin:$PATH
source activate snakemake-tutorial
--------------------------------------------------------------
# 退出当前环境
source deactivate
这里使用到Samtools工具,具体使用方法能够参考https://blog.csdn.net/g863402758/article/details/53081342
他是一个用于处理sam与bam格式的工具软件,可以实现二进制查看、格式转换、排序及合并等功能,
结合sam格式中的flag、tag等信息,还能够完成比对结果的统计汇总。同时利用linux中的grep、awk等操做命令,
还能够大大扩展samtools的使用范围与功能。
conda install snakemake
conda install samtools
bowtie2和samtools都是对比工具,bowtie2暂时没安装,安装方法先记录下
sudo wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.3.4.1/bowtie2-2.3.4.1-linux-x86_64.zip
unzip bowtie2-2.3.4.1-linux-x86_64.zip
vi /etc/environment
添加 bin 目录的路径,并用 :
隔开
source /etc/enviroment 使配置生效
开始写job脚本
期间一直出一个错误,说Command must be given as string after the shell keyword
检查一下是否会出错rule bwa_map:
input:
"data/genome.fa", "data/samples/A.fastq" output: "mapped_reads/A.bam" shell: """ bwa mem {input} | samtools view -Sb - > {output} """运行snakemake -np mapped_reads/A.bam
执行这个job,把-n去掉
能够看到,生成了A.bam文件
将A改为{sample},在输入命令的时候加上你的参数,自动匹配上了,(注意此时文件夹貌似只能有一个脚本文件),cp了一个好像报错了rule bwa_map:
input:
"data/genome.fa", "data/samples/{sample}.fastq" output: "mapped_reads/{sample}.bam" shell: """ bwa mem {input} | samtools view -Sb - > {output} """
接下来,要作排序了,代码最后一块儿贴
可使用dag
选项和dot
命令对“规则的执行和依赖关系”进行可视化,
snakemake --dag sorted_reads/{A,B,C}.bam.bai | dot -Tpdf > dag.pdf 这个命令好像会报错
snakemake --dag sorted_reads/{A,B,C}.bam.bai | dot -Tsvg > dag.svg
整合以前的BAM文件,作基因组变异识别
SAMPLES=["A","B","C"] rule bcftools_call: input: fa="data/genome.fa", bam=expand("sorted_reads/{sample}.bam", sample=SAMPLES), bai=expand("sorted_reads/{sample}.bam.bai", sample=SAMPLES) output: "calls/all.vcf" shell: "samtools mpileup -g -f {input.fa} {input.bam} | " "bcftools call -mv - > {output}"
其中expand是自动匹配变量求文件路径的语法糖
检查一下,snakemake -np calls/all.vcf

最后出report,以上都是在规则里执行shell脚本,snakemake的一个优势就是能够在规则里面写Python脚本,只须要把shell改为run,此外还不须要用到引号。
测试一下,snakemake -np report.html
画出流程图
snakemake --dag report.html | dot -Tsvg > final.svg
执行一下:snakemake -p report.html
能够看到生成了报告文件

到此,还有
rule all:
log:
多线程thread:
-j 指定cpu核心
params:
加载configfile: "config.yaml"
这几个功能没有操做,留个之后有空再处理
最后,在新建一个snakemake项目时,都先用conda create -n 项目名 python=版本号建立一个全局环境,用于安装一些经常使用的软件,例如bwa、samtools、seqkit等。而后用以下命令将环境导出成yaml文件
conda env export -n 项目名 -f environment.yaml
之后再部署的时候,
只须要conda env create -f environment.yaml
这个过程相似于ghost系统,或者打包虚拟机相似
参考了如下网址,感谢!
https://www.jianshu.com/p/8e57fd2b81b2
http://pedagogix-tagc.univ-mrs.fr/courses/ABD/practical/snakemake/snake_intro.html