DAG(directed acyclic graph):有向无环图
条件:1. 每个顶点出现且只出现一次。2. 若存在一条从顶点A到顶点B的路径,那么在序列中顶点A出现在顶点B的前面。
只有有向无环图才有拓扑排序,非DAG图没有拓扑排序一说,DAG一般用有向边指示顺序。
#tutorial source
#https://snakemake.bitbucket.io/snakemake-tutorial.html
#https://www.cnblogs.com/raisok/p/10970060.html
#https://snakemake.readthedocs.io/en/stable/executor_tutorial/tutorial.html
#snakemake前期准备
#1.数据
#2.创建工作流文件(包括input and output)
##linux# touch Snakefile(snakemake默认自动识别的文件,可更改为其他文件名,但在使用snakemake命令时需要指定)
#最好将工作流文件命名为.py文件
###创建规则
sample= ["A","B"]
rule bwa: #将第一条规则命名为bwa,进行比对
input: #指定输入
"data/genome.fa", #多个input用逗号隔开?
"data/samples/{sample}.fastq" #此处{sample}是通配符(wildcard)用来匹配所有样品,sample是一个自定义的变量名
output:
"mapped_reads/{sample}.bam"
shell: #此处shell也可以使用run替代来运行python代码
"bwa mem {input} | samtools view -Sb - > {output}" #此出- >是否可以替换成->?
#bwa mem为bwa推荐使用的算法,速度更快,准确度更高
#bwa输入需要两个文件Reference genome data(已经构建出参考基因组的FM-index)和short reads data
#save file as bwa_map.py
#linux
##snakemake -np -s bwa_map.py mapped_reads/{A,B,C}.bam #snakemake并不建议这样写,而是建议一个样本一个样本跑
#此处的-n指的是--dryrun,不真正执行,一般用来看Snakefile是否有错,-p指的是--printshellcmds,指的是输出要执行的shell命令。
# -s指的是--snakefile,用于指定Snakefile,否则是当前目录下的Snakefile
rule samtools_sort:
input:
"mapped_reads/{sample}.bam"
output:
"mapped_reads/{sample}.bam"
shell:
"samtools sort -T sorted_reads/{wildcards.sample}"#-T表示PREFIX设置临时文件的前缀
"-O bam {input} > {output}" #-O用来指定输出的格式(bam/sam),重定向操作很迷惑
#samtools的sort命令格式如下
##samtools sort[-l level] [-m maxMem][-o out.bam] [-O format][-n] [-T tmpprefix] [- @ threads] [in.sam | in.bam | in.cram]
#上述的samtools_sort也可以写成这样
持续更新
网友评论