Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何设置目标文件由文件内容确定的蛇形规则?_Python_Bash_Workflow_Bioinformatics_Snakemake - Fatal编程技术网

Python 如何设置目标文件由文件内容确定的蛇形规则?

Python 如何设置目标文件由文件内容确定的蛇形规则?,python,bash,workflow,bioinformatics,snakemake,Python,Bash,Workflow,Bioinformatics,Snakemake,我想根据条形码信息将一个sam文件拆分为多个sam文件。查询条码信息列表在另一个文件中 $cat barcode.list ATGCATGC TTTTAAAA GGCCCC CGATGA AAGGTTCC .... 下面一个简单的bash脚本可以实现这个目标 barcode\u list=。/A\u barcode.csv input\u bam=/A\u input.bam 拆分的目录=/拆分的目录/A 过滤的\u dir=“./filterd\u sam/A” mkdir-p${split

我想根据条形码信息将一个sam文件拆分为多个sam文件。查询条码信息列表在另一个文件中

$cat barcode.list
ATGCATGC
TTTTAAAA
GGCCCC
CGATGA
AAGGTTCC
....
下面一个简单的bash脚本可以实现这个目标

barcode\u list=。/A\u barcode.csv
input\u bam=/A\u input.bam
拆分的目录=/拆分的目录/A
过滤的\u dir=“./filterd\u sam/A”
mkdir-p${splited_dir}${splited_dir}
header=$(samtools视图-H${input_bam})

samtools view{input.bam}LC_ALL=C fgrep-f我认为您需要将“split_sam”定义为检查点规则,请参阅。 一旦执行检查点规则,将重新计算依赖于此规则输出的所有规则的DAG

SAMPLES = ["A", "B", "C", "D"]
# BARCODE = ???

rule all:
  input:
    splited_sam_dir = expand("splited_sam/{sample}", sample=SAMPLES)

rule split_sam:
  input:
    bar = "{sample}_barcode.csv",
    bam = "{sample}_input.bam"
  output:
    splited_sam_dir = "splited_sam/{sample}"
  shell:
    """
    header=$(samtools view -H {input.bam})
    samtools view {input.bam} | LC_ALL=C fgrep -f <(cat {input.bar}) | awk -v header="$header" -v outdir="{output.splited_sam_dir}" '{{barcode=substr($0,index($0, "\tCB:Z:")+6,18);if (!header_printed[barcode]++) {{print $0 >> outdir"/"barcode".sam"}}}}
    """
rule filter_sam:
  # ??? don't know the input file name...