[41c1e8]: / exseek / snakefiles / differential_expression.snakemake

Download this file

55 lines (50 with data), 2.5 kB

include: 'common.snakemake'

compare_groups = config['compare_groups']

def get_all_inputs(wildcards):
    inputs = []
    inputs += expand('{output_dir}/differential_expression/{count_method}/{compare_group}/{diffexp_method}.txt',
            output_dir=output_dir, count_method=config['count_method'], compare_group=compare_groups, diffexp_method=config['diffexp_method'])
    if has_batch_info:
        inputs += expand('{output_dir}/differential_expression_with_batch/{batch_index}/{count_method}/{compare_group}/{diffexp_method}.txt',
                output_dir=output_dir, batch_index=config['batch_index'], count_method=config['count_method'], compare_group=compare_groups, diffexp_method=config['diffexp_method'])
    return inputs

rule all:
    input:
        get_all_inputs

rule differential_expression:
    input:
        matrix='{output_dir}/matrix_processing/filter.{count_method}.txt',
        classes=data_dir + '/sample_classes.txt'
    output:
        '{output_dir}/differential_expression/{count_method}/{compare_group}/{diffexp_method}.txt'
    params:
        positive_class=lambda wildcards: compare_groups[wildcards.compare_group][1],
        negative_class=lambda wildcards: compare_groups[wildcards.compare_group][0]
    shell:
        '''{bin_dir}/differential_expression.R \
            -i {input.matrix} --classes {input.classes} \
            --method {wildcards.diffexp_method} \
            --positive-class "{params.positive_class}" \
            --negative-class "{params.negative_class}" \
            -o {output}
        '''

rule differential_expression_with_batch:
    input:
        matrix='{output_dir}/matrix_processing/filter.{count_method}.txt',
        classes=data_dir + '/sample_classes.txt',
        batch_info=data_dir + '/batch_info.txt'
    output:
        '{output_dir}/differential_expression_with_batch/{batch_index}/{count_method}/{compare_group}/{diffexp_method}.txt'
    params:
        positive_class=lambda wildcards: compare_groups[wildcards.compare_group][1],
        negative_class=lambda wildcards: compare_groups[wildcards.compare_group][0],
        batch_index=config['batch_index']
    shell:
        '''{bin_dir}/differential_expression.R \
            -i {input.matrix} --classes {input.classes} \
            --method {wildcards.diffexp_method} \
            --positive-class "{params.positive_class}" \
            --negative-class "{params.negative_class}" \
            --batch {input.batch_info} --batch-index {wildcards.batch_index} \
            -o {output}
        '''