第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 Snakemake 中組合多個(gè)通配符

在 Snakemake 中組合多個(gè)通配符

├── DIR1│   ├── smp1.fastq.gz│   ├── smp1_fastqc/│   ├── smp2.fastq.gz│   └── smp2_fastqc/└── DIR2    ├── smp3.fastq.gz    ├── smp3_fastqc/    ├── smp4.fastq.gz    └── smp4_fastqc/我想按樣本計(jì)算讀取次數(shù),然后按目錄連接所有計(jì)數(shù)。我創(chuàng)建一個(gè)字典,將樣本 1 和 2 鏈接到目錄 1,將樣本 3 和 4 鏈接到目錄 2DIRS,SAMPLES = glob_wildcards(INDIR+'/{dir}/{smp}.fastq.gz')# Create samples missingdef filter_combinator(combinator, authlist):    def filtered_combinator(*args, **kwargs):        for wc_comb in combinator(*args, **kwargs):            if frozenset(wc_comb) in authlist:                yield wc_comb    return filtered_combinator# Authentificationcombine_dir_samples = []for dir in DIRS:    samples, = glob_wildcards(INDIR+'/'+dir+'/{smp}.fastq.gz')    for smp in samples:        combine_dir_samples.append( { "dir" : dir, "smp" : smp} )       combine_dir_samples = { frozenset( x.items() ) for x in combine_dir_samples }dir_samples = filter_combinator(product, combine_dir_samples)然后,我創(chuàng)建一個(gè)規(guī)則來按樣本計(jì)算我的讀取次數(shù)rule all:    input:        expand(INDIR+'/{dir}/{smp}_Nreads.txt', dir_samples, dir=DIRS, smp=SAMPLES)rule countReads:    input:        INDIR+'/{dir}/{smp}_fastqc/fastqc_data.txt'    output:        INDIR+'/{dir}/{smp}_Nreads.txt'    shell:        "grep 'Total\ Sequences' {input} | awk '{{print {wildcards.dir},$3}}' > {output}"---------------------------------------------------------------# result ok├── DIR1│   ├── smp1_Nreads.txt│   └── smp2_Nreads.txt└── DIR2    ├── smp3_Nreads.txt    └── smp4_Nreads.txt> cat smp1_Nreads.txtDIR1 15082186我嘗試為我的連接規(guī)則使用不同的輸入語(yǔ)法expand(OUTFastq+'/{dir}/FastQC/{{smp}}_Nreads.txt', dir_samples, dir=DIRS)lambda wildcards: expand(OUTFastq+'/{dir}/FastQC/{wildcards.smp}_Nreads.txt', dir_samples, dir=DIRS, smp=SAMPLES)expand(OUTFastq+'/{dir}/FastQC/{wildcards.smp}_Nreads.txt', dir_samples, dir=DIRS, smp=SAMPLES)我沒有找到任何解決方案,就像它不關(guān)心我的字典中的這條規(guī)則一樣。
查看完整描述

1 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

首先,我認(rèn)為你的解決方案過于復(fù)雜,使得它對(duì)于 Snakemake 來說不太慣用。因此,您在執(zhí)行該規(guī)則時(shí)遇到了問題。無論如何,讓我按照您提出的問題來回答這個(gè)問題。


兩個(gè)文件相同也就不足為奇了Nreads_DIRx.txt,因?yàn)檩斎氩灰蕾囉谳敵鲋械娜魏瓮ㄅ浞?/p>


rule concatNreads:

    input:

        expand(INDIR+'/{dir}/{smp}_Nreads.txt', dir_samples, dir=DIRS, smp=SAMPLES)

這里,該expand函數(shù)解析dir和smp變量,生成完全指定的文件名列表。您需要的是真正取決于輸出中的通配符的東西:


rule concatNreads:

    input:

        lambda wildcards: ...

是{dir}使用輸出中的通配符完全指定的,因此您不需要從變量中為其分配值DIRS:


rule concatNreads:

    input:

        lambda wildcards: expand(INDIR+'/{dir}/{smp}_Nreads.txt', dir=wildcards.dir, smp=func(wildcards.dir))

現(xiàn)在的問題是如何實(shí)現(xiàn)這個(gè)func為目錄生成樣本列表的函數(shù)。我花了一段時(shí)間才理解您使用combine_dir_samplesand的技巧filter_combinator,所以我將其留給您func使用該代碼實(shí)現(xiàn)該函數(shù)。但你真正需要的是 DIR -> SAMPLES 中的地圖:


dir_to_samples = {"DIR1": ["smp1", "smp2"], "DIR2": ["smp3", "smp4"]}


def func(dir):

    return dir_to_samples[dir]

這dir_to_samples可能可以更容易地評(píng)估,但這是您修改后的解決方案:


for dir in DIRS:

    samples, = glob_wildcards(INDIR+'/'+dir+'/{smp}.fastq.gz')

    dir_to_samples.append({dir: samples})


查看完整回答
反對(duì) 回復(fù) 2023-08-08
  • 1 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)