Mercurial > repos > iuc > plink
diff plink.xml @ 0:a98caf1d69ab draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/plink commit 555a851b363c015f26d6fcf1f52bcbf3420a0b3b"
author | iuc |
---|---|
date | Mon, 21 Sep 2020 10:09:22 +0000 |
parents | |
children | b8e3d957c0f5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plink.xml Mon Sep 21 10:09:22 2020 +0000 @@ -0,0 +1,1368 @@ +<tool id='plink' name='plink' version='@TOOL_VERSION@+galaxy@VERSION_SUFFIX@'> + <macros> + <token name='@TOOL_VERSION@'>1.9.b618</token> + <token name='@VERSION_SUFFIX@'>0</token> + <xml name='template_sanitizer'> + <sanitizer> + <valid initial='default'> + <add value='#' /> + <add value='@' /> + <add value='$'/> + <add value='['/> + <add value=']'/> + <add value='\'/> + <remove value='"'/> + <remove value='''/> + </valid> + </sanitizer> + </xml> + <xml name='chr_sanitizer'> + <sanitizer> + <valid initial='string.digits'> + <add value='X' /> + <add value='Y' /> + <add value=' ' /> + </valid> + </sanitizer> + </xml> + <xml name='snp_sanitizer'> + <sanitizer> + <valid initial='string.ascii_letters + string.digits'/> + </sanitizer> + </xml> + <xml name='snp_space_sanitizer'> + <sanitizer> + <valid initial='string.ascii_letters + string.digits'> + <add value=' '/> + </valid> + </sanitizer> + </xml> + </macros> + <requirements> + <requirement type='package' version='1.90b6.18'>plink</requirement> + </requirements> + <command detect_errors='exit_code'><![CDATA[ + + ## Create Plink folder for any inputs + mkdir ./plink_output + && mkdir ./plink_input + #if $inputs.inputs.filetype == 'bfile': + && ln -s '$inputs.inputs.bed' plink_input/plink_input.bed + && ln -s '$inputs.inputs.bim' plink_input/plink_input.bim + && ln -s '$inputs.inputs.fam' plink_input/plink_input.fam + #elif $inputs.inputs.filetype == 'vcf': + #if $inputs.inputs.input.is_of_type('vcf'): + && plink --vcf '$inputs.inputs.input' + #else: + && plink --bcf '$inputs.inputs.input' + #end if + --out plink_input/plink_input + #end if + + ## If bmerge is set, create folder for merged files + #if $functions.func == 'data_manage': + #if $functions.bmerge.set == 'Yes': + && mkdir bmerge_files + && ln -s '$functions.bmerge.bed' bmerge_files/bmerge_input.bed + && ln -s '$functions.bmerge.bim' bmerge_files/bmerge_input.bim + && ln -s '$functions.bmerge.fam' bmerge_files/bmerge_input.fam + #end if + #end if + + ## Plink commands by section + + && plink --bfile plink_input/plink_input + #if $inputs.covar_input: + --covar '$inputs.covar_input' + #end if + #if $inputs.pheno: + --pheno $inputs.pheno + #end if + #if $functions.func == 'filtering': + ##ID list functions + #if $functions.id_list.func == 'keep': + --keep '$functions.id_list.file' + #elif $functions.id_list.func == 'keep-fam': + --keep-fam '$functions.id_list.file' + #elif $functions.id_list.func == 'remove': + --remove '$functions.id_list.file' + #elif $functions.id_list.func == 'remove-fam': + --remove-fam '$functions.id_list.file' + #end if + + ##Extraction + #if $functions.extraction.ex_func == 'extract': + --extract $functions.extraction.range $functions.extraction.file + #elif $functions.extraction.ex_func == 'exclude': + --exclude $functions.extraction.range $functions.extraction.file + #end if + + ##Chromosome-specificity + #if $functions.chromosome: + --chr $functions.chromosome + #end if + + #if $functions.excluded_chromosome: + --not-chr $functions.excluded_chromosome + #end if + + $functions.extra_chromosomes + + #if $functions.autosome != 'none' + $functions.autosome + #end if + + ##SNP specificity + #if $functions.snps_exclusives != 'No': + --snps-only + #if $functions.snps_exclusives == 'acgt': + 'just-acgt' + #end if + #end if + + ##Variant windows + #if $functions.ranges.single_multi == 'single': + #if $functions.ranges.window.type == 'variant': + #if $functions.ranges.window.from: + --from $functions.ranges.window.from + #end if + #if $functions.ranges.window.to: + --to $functions.ranges.window.to + #end if + #elif $functions.ranges.window.type == 'window': + #if $functions.ranges.window.snp: + --snp $functions.ranges.window.snp + #end if + #if $functions.ranges.window.exclude_snp: + --exclude-snp $functions.ranges.window.exclude_snp + #end if + #if $functions.ranges.window.window: + --window $functions.ranges.window.window + #end if + #else: + #if $functions.ranges.window.from_bp: + --from-bp $functions.ranges.window.from_bp + #end if + #if $functions.ranges.window.to_bp: + --to-bp $functions.ranges.window.to_bp + #end if + #end if + #elif $functions.ranges.single_multi == 'multi': + $functions.ranges.force_intersect + #if $functions.ranges.snps: + --snps $functions.ranges.snps + #end if + #if $functions.ranges.exclude_snps: + --exclude-snps $functions.ranges.exclude_snps + #end if + #end if + + ##Thinning + #if $functions.thinning.thinning == 'Yes': + #if $functions.thinning.thin: + --thin $functions.thinning.thin + #end if + #if $functions.thinning.thin_count: + --thin-count $functions.thinning.thin_count + #end if + #if $functions.thinning.bp_space: + --bp-space $functions.thinning.bp_space + #end if + #if $functions.thinning.thin_indiv: + --thin-indiv $functions.thinning.thin_indiv + #end if + #if $functions.thinning.thin_indiv_count: + --thin-indiv-count $functions.thinning.thin_indiv_count + #end if + #end if + + ##Pheno/covariate + ########### + + ########### + + ##Missing genotype rates + #if $functions.geno_rates.geno: + --geno $functions.geno_rates.geno + #end if + #if $functions.geno_rates.mind: + --mind $functions.geno_rates.mind + #end if + + ##Allele Frequencies + #if $functions.allele_freq.maf: + --maf $functions.allele_freq.maf + #end if + #if $functions.allele_freq.max_maf: + --max-maf $functions.allele_freq.max_maf + #end if + #if $functions.allele_freq.mac: + --mac $functions.allele_freq.mac + #end if + #if $functions.allele_freq.max_mac: + --max-mac $functions.allele_freq.max_mac + #end if + + ## Hardy-Weinberg + #if $functions.hwe.hwe == 'Yes': + --hwe $functions.hwe.hwe_val + #for $type in $functions.hwe.modifiers: + $type + #end for + #end if + + ##Sex and Founder filter + #if $functions.sex_founder_filter.filter == 'Yes' + $functions.sex_founder_filter.sex_select + $functions.sex_founder_filter.no_sex_select + $functions.sex_founder_filter.nonfounders + #end if + + #elif $functions.func == 'data_manage': + + #if $functions.bmerge.set == 'Yes': + --bmerge bmerge_files/bmerge_input + #end if + + #if $functions.template: + --set-missing-var-ids $functions.template + #end if + + $functions.recode + + #if $functions.flip: + --flip $functions.flip + #end if + + #if $functions.length: + --new-id-max-allele-len $functions.length + #end if + + #if $functions.update_cols.set == 'update_map': + --update-map $functions.update_cols.input $functions.update_cols.col_num $functions.update_cols.old_col $functions.update_cols.skip + #elif $functions.update_cols.set == 'update_name': + --update-name $functions.update_cols.input $functions.update_cols.col_num $functions.update_cols.var_col $functions.update_cols.skip + #end if + #if $functions.ref_allele.set == 'yes': + --reference-allele $functions.ref_allele.file $functions.ref_allele.column $functions.ref_allele.var_id $functions.ref_allele.skip + #end if + #if $functions.a2_allele.set == 'yes': + --a2-allele $functions.a2_allele.file $functions.a2_allele.column $functions.a2_allele.var_id $functions.a2_allele.skip + #end if + #elif $functions.func == 'stats': + $functions.freq + $functions.hardy + $functions.missing + $functions.het + #if $functions.sex.sex_stats: + $functions.sex.sex_stats + #if $functions.sex.mode: + $functions.sex.mode.mode + #if $functions.sex.mode.mode == 'ycount' + $functions.sex.mode.female_max + $functions.sex.mode.male_min + $functions.sex.mode.female_max_obvs + $functions.sex.mode.male_min_obvs + #elif $functions.sex.mode.mode == 'y-only' + $functions.sex.mode.female_max_obvs + $functions.sex.mode.male_min_obvs + #else: + $functions.sex.mode.female_max + $functions.sex.mode.male_min + #end if + #end if + #end if + + + #elif $functions.func == 'link': + #if $functions.set_indep.choice == 'Yes': + --indep-pairwise $functions.set_indep.window $functions.set_indep.step $functions.set_indep.r2 + #end if +## #elif $functions.func == 'pair_compare': +## +## #elif $functions.func == 'dist_sim': +## + #elif $functions.func == 'stratification': + #if $functions.read_genome: + --read-genome $functions.read_genome + #end if + #if $functions.cluster.cluster == 'Yes': + --cluster + #for $type in $functions.cluster.modifiers + $type + #end for + #if $functions.cluster.mds.mds_scaling == 'Yes': + --mds-plot $functions.cluster.mds.dimensions + #for $type in $functions.cluster.mds.modifiers + $type + #end for + #end if + #end if + + #elif $functions.func == 'association': + #if $functions.assoc.assoc == 'Yes': + --assoc + #if $functions.assoc.perm.perm == 'perm': + perm + #elif $functions.assoc.perm.perm == 'mperm': + mperm='$functions.assoc.perm.value' + #end if + $functions.assoc.genedrop + $functions.assoc.perm_count + $functions.assoc.fisher + $functions.assoc.count + #end if + #if $functions.adjust.adjust == 'Yes': + --adjust + #for $type in $functions.adjust.tests: + $type + #end for + #end if +## #if $functions.linear.linear == 'Yes': +## --linear +## #if $functions.linear.perm == 'perm': +## perm +## #elif $functions.linear.perm == 'mperm': +## mperm='$functions.linear.perm.value' +## #end if +## $functions.linear.genedrop +## $functions.linear.perm_count +## $functions.linear.dominance +## $functions.linear.hide_covar +## $functions.linear.sex_covar +## $functions.linear.interaction +## $functions.linear.beta +## $functions.linear.standard_beta +## $functions.linear.intercept +## #end if + #if $functions.logistic.logistic == 'Yes': + --logistic + #if $functions.logistic.perm.perm == 'perm': + perm + #elif $functions.logistic.perm.perm == 'mperm': + mperm='$functions.logistic.perm.value' + #end if + $functions.logistic.genedrop + $functions.logistic.perm_count + $functions.logistic.dominance + $functions.logistic.hide_covar + $functions.logistic.sex_covar + $functions.logistic.interaction + $functions.logistic.beta + $functions.logistic.intercept + #end if + + #elif $functions.func == 'ibd': + #if $functions.genome.output_genome: + --genome + #for $type in $functions.genome.modifiers + $type + #end for + #if $functions.genome.min: + --min $functions.genome.min + #end if + #if $functions.genome.max: + --max $functions.genome.max + #end if + #if $functions.genome.ppc: + --ppc-gap $functions.genome.ppc + #end if + #end if + +## #elif $functions.func == 'scoring': +## +## #else: +## --rerun $functions.logfile +## + #end if + + --make-bed + --out plink_output/plink_output + ]]></command> + <inputs> + <section name='inputs' title='Data inputs' expanded='true'> + <conditional name='inputs'> + <param name='filetype' type='select' label='Main input data type'> + <option value='bfile'>plink file</option> + <option value='vcf'>VCF input file</option> + </param> + <when value='bfile'> + <param format='binary' name='bed' type='data' label='plink bed file'/> + <param format='tabular,tsv' name='bim' type='data' label='plink bim file'/> + <param format='txt' name='fam' type='data' label='plink fam file'/> + </when> + <when value='vcf'> + <param name='input' format='vcf,bcf' type='data' label='VCF/BCF Input file'/> + </when> + </conditional> + <param name='pheno' type='data' format='txt,tabular' label='Phenotype file' help='Read phenotype values from the 3rd column of the specified space- or tab-delimited file, instead of the .fam or .ped file.' optional='true'/> + <param name='covar_input' type='data' format='tabular,tsv' label='Input covariate file' optional='true'/> + </section> + <conditional name='functions'> + <param name='func' type='select' label='Plink functions'> + <option value='filtering'>Filtering</option> + <option value='data_manage'>Data Management</option> + <option value='stats'>Basic statistics</option> + <option value='link'>Linkage disequalibrium</option> + <option value='stratification'>Population stratification</option> + <option value='association'>Association analysis</option> + <option value='ibd'>Identity-by-descent</option> + <!-- <option value='rerun'>Rerun</option> --> + </param> + <when value='filtering'> + <conditional name='id_list'> + <param name='func' type='select' label='ID list functions'> + <option value='none'/> + <option value='keep'/> + <option value='keep-fam'/> + <option value='remove'/> + <option value='remove-fam'/> + </param> + <when value='none'/> + <when value='keep'> + <param format='tabular,tsv' name='file' type='data' label='Keep file.' help='Accepts one or more space/tab-delimited text files with sample IDs, and removes all unlisted samples from the current analysis;'/> + </when> + <when value='keep-fam'> + <param format='tabular,tsv' name='file' type='data' label='Keep-fam file' help='Accepts text files with family IDs in the first column, and keeps entire families.'/> + </when> + <when value='remove'> + <param format='tabular,tsv' name='file' type='data' label='Remove file' help='Accepts one or more space/tab-delimited text files with sample IDs, and removes all listed samples from the current analysis'/> + </when> + <when value='remove-fam'> + <param format='tabular,tsv' name='file' type='data' label='Remove-fam file' help='Acceptz text files with family IDs in the first column, and removes entire families.'/> + </when> + </conditional> + <conditional name='extraction'> + <param name='ex_func' type='select' label='ID extraction functions'> + <option value='none'/> + <option value='extract'/> + <option value='exclude'/> + </param> + <when value='none'/> + <when value='extract'> + <param format='txt' name='file' type='data' label='Extract' help='Accepts one or more text file(s) with variant IDs , and removes all unlisted variants from the current analysis'/> + <param type='boolean' name='range' truevalue='range' falsevalue='' help='Input file is input in set range format.'/> + </when> + <when value='exclude'> + <param format='txt' name='file' type='data' label='Exclude' help='Accepts one or more text file(s) with variant IDs , and removes all listed variants from the current analysis'/> + <param type='boolean' name='range' truevalue='range' falsevalue='' help='Input file is input in set range format.'/> + </when> + </conditional> + <!-- <param name='border' type='integer' label='Bed border bp' help='Extends all the intervals in an input BED file (for e.g. extract bed0) by the given number of base-pairs on both sides.' optional='true'/> --> + <!-- <conditional name='col-cond'> + <param name='func' type='select' label='ID list functions'> + <option value='none'/> + <option value='extract-col-cond'/> + <option value='extract-col-cond-match'/> + <option value='extract-col-cond-mismatch'/> + <option value='extract-col-cond-substr'/> + <option value='extract-col-cond-min'/> + <option value='extract-col-cond-max'/> + </param> + <when value='none'/> + <when value='extract-col-cond'> + </when> + <when value='extract-col-cond-match'> + </when> + <when value='extract-col-cond-mismatch'> + </when> + <when value='extract-col-cond-substr'> + </when> + <when value='extract-col-cond-min'> + </when> + <when value='extract-col-cond-max'> + </when> + </conditional> --> + <param name='chromosome' type='text' label='Chromosome(s)' help='Excludes all variants not on the listed chromosome(s). Can be listed as single chromsome, a hyphenated range, or comma separated list.' optional='true'> + <expand macro='chr_sanitizer'/> + </param> + <param name='excluded_chromosome' type='text' label='Exclude Chromosome(s)' help='Excludes all variants on the listed chromosome(s). Can be listed as single chromsome, a hyphenated range, or comma separated list.' optional='true'> + <expand macro='chr_sanitizer'/> + </param> + <param name='extra_chromosomes' type='boolean' truevalue='--aec' falsevalue='' checked='false' label='Allow extra chromosomes' help='Allows specified extra chromosomes/scaffolds not normally listed. ex. chr1_gl000191_random.'/> + <param name='autosome' type='select' label='Autosome/unplaced exclusion'> + <option value='none'>None</option> + <option value='--autosome'>Exclude all unplaced and non-autosomal variants</option> + <option value='--autosome-par'>Excludes all unplaced and non-autosomal variants, but keep XY/PAR1/PAR2. Can be combined with exclude-chromosmes.</option> + </param> + <param name='snps_exclusives' type='select' label='SNP exclusive'> + <option value='No'>No</option> + <option value='--snps-only'>Only return SNPs</option> + <option value='acgt'>Return SNPs, excluding any other than {'A', 'C', 'G', 'T', 'a', 'c', 'g', 't', missing}</option> + </param> + <conditional name='ranges'> + <param name='single_multi' type='select' label='Single or multiple variant-based range window?'> + <option value=''>No range specified</option> + <option value='single'>Single variants</option> + <option value='multi'>Multiple variants</option> + </param> + <when value=''/> + <when value='single'> + <conditional name='window'> + <param name='type' type='select' label='Specify range for variants'> + <option value='variant'>Around/between specific variant(s)</option> + <option value='window'>Around a specific variant</option> + <option value='range'>Within a specific area (Must also specify a single chromosome in above input)</option> + </param> + <when value='variant'> + <param name='from' type='text' label='From' help='Variant ID. Excludes all variants on different chromosomes than the named variant, as well as those with smaller base-pair position values. If they are used together but the --from variant is after the --to variant, they are automatically swapped.' optional='true'/> + <param name='to' type='text' label='To' help='Variant ID. Excludes all variants on different chromosomes than the named variant, as well as those with larger base-pair position values. If they are used together but the --from variant is after the --to variant, they are automatically swapped.' optional='true'/> + </when> + <when value='window'> + <param name='snp' type='text' label='SNP variant id to include' help='Use this OR SNP variant to exclude' optional='true'> + <expand macro='snp_sanitizer'/> + </param> + <param name='exclude_snp' type='text' label='SNP variant id to exclude' help='Use this OR SNP variant to include' optional='true'> + <expand macro='snp_sanitizer'/> + </param> + <param name='window' type='integer' label='Window' help='All variants with physical position no more than half the specified kb distance (decimal permitted) from the named variant are loaded as well' optional='true'/> + </when> + <when value='range'> + <param name='from_bp' type='integer' label='from-bp' help='These flags let you use physical positions to specify a variant range to load. Must also have specified a chromosome in above settings.' optional='true'/> + <param name='to_bp' type='integer' label='to-bp' help='These flags let you use physical positions to specify a variant range to load. Must also have specified a chromosome in above settings.' optional='true'/> + </when> + </conditional> + </when> + <when value='multi'> + <param name='force_intersect' type='boolean' truevalue='--force-intersect' falsevalue='' label='Force intersect' help='To reduce the potential for confusion, PLINK 2 normally errors out when multiple variant-inclusion filters + (--extract[-intersect], --extract-col-cond, --from/--to, --from-bp/--to-bp, --snp, --snps) are specified, since it may not be obvious whether the intersection or union will be taken. + --force-intersect allows the run to proceed; the set intersection will be taken.'/> + <param name='snps' type='text' label='List of SNP variant ids to include' optional='true'> + <expand macro='snp_space_sanitizer'/> + </param> + <param name='exclude_snps' type='text' label='List of SNP variant ids to exclude' optional='true'> + <expand macro='snp_space_sanitizer'/> + </param> + </when> + </conditional> + <conditional name='thinning'> + <param name='thinning' type='select' label='Arbitrary thinning'> + <option value='No'/> + <option value='Yes'/> + </param> + <when value='No'/> + <when value='Yes'> + <param name='thin' type='float' label='Thin' min='0' max='1.0' help='Removes variants at random by retaining each variant with probability p' optional='true'/> + <param name='thin_count' type='integer' label='Thin Count' help='Removes variants at random until only n remain' min='1' optional='true'/> + <param name='bp_space' type='integer' label='BP space' help='Excludes one variant from each pair closer than the given bp count' optional='true'/> + <param name='thin_indiv' type='float' label='Thin Individual' min='0' max='1.0' help='Removes samples at random by retaining each sample with probability p' optional='true'/> + <param name='thin_indiv_count' type='integer' label='Thin Individual count' min='1' help='Removes samples at random until only n remain.' optional='true'/> + </when> + </conditional> + <!-- <conditional name='pheno_cov_based'> + <param name='pheno_cov' type='select' label='Phenotype/Covariate-based'> + <option value='No' selected='true'/> + <option value='phenotype'/> + <option value='Covariate'/> + </param> + <when value='No'/> + <when value='phenotype'> --> + <!-- keep-if <phenotype/covariate name> <operator> <value> + remove-if <phenotype/covariate name> <operator> <value> + require-pheno [phenotype name(s)...] + keep-cats <filename> + keep-cat-names <name(s)...> + remove-cats <filename> + remove-cat-names <name(s)...> + keep-cat-pheno <phenotype/covariate name> + remove-cat-pheno <phenotype/covariate name> + </when> + <when value='Covariate'> + keep-if <phenotype/covariate name> <operator> <value> + remove-if <phenotype/covariate name> <operator> <value> + require-covar [covariate name(s)...] + keep-cats <filename> + keep-cat-names <name(s)...> + remove-cats <filename> + remove-cat-names <name(s)...> + </when> + </conditional> --> + <section name='geno_rates' title='Missing Genotype Rates' expanded='true'> + <param name='geno' type='float' min='0' max='1' label='Set Geno' help='filters out all variants with missing call rates exceeding the provided value (default 0.1) to be removed' optional='true'/> + <param name='mind' type='float' min='0' max='1' label='Set Mind' help='filters out all samples with missing call rates exceeding the provided value (default 0.1) to be removed' optional='true'/> + </section> + <section name='allele_freq' title='Allele Frequencies' expanded='true'> + <param name='maf' type='float' label='Minimum allele frequency' min='0' max='1.0' help='Filters out all variants with allele frequency below the provided threshold' optional='true'/> + <param name='max_maf' type='float' label='Maximum allele frequency' min='0' max='1.0' help='Filters out all variants with allele frequency above the provided threshold' optional='true'/> + <param name='mac' type='integer' label='Minimum allele count' min='1' help='Filters out all variants with allele counts below the provided threshold' optional='true'/> + <param name='max_mac' type='integer' label='Maximum allele count' min='0' help='filters out all variants with allele counts above the provided threshold' optional='true'/> + </section> + <conditional name='hwe'> + <param name='hwe' type='select' help='Set Hardy-Weinberg equilibrium tests'> + <option value='No'/> + <option value='Yes'/> + </param> + <when value='No'/> + <when value='Yes'> + <param name='hwe_val' type='float' label='Hardy-Weinberg Equilibrium' help='Filters out all variants which have Hardy-Weinberg equilibrium exact test + p-value below the provided threshold. It is recommended setting a low threshold—serious genotyping errors often yield extreme p-values like 1e-501 which + are detected by any reasonable configuration of this test, while genuine SNP-trait associations can be expected to deviate slightly from Hardy-Weinberg + equilibrium (so it is dangerous to choose a threshold that filters out too many variants).' value='1e-50' min='0' max='1'/> + <param name='modifiers' type='select' label='Test modifiers' multiple='true' display='checkboxes' optional='true'> + <option value='midp'>Apply the mid-p adjustment described in Graffelman J, Moreno V (2013) The mid p-value in exact tests for Hardy-Weinberg equilibrium</option> + <option value='include-nonctrl'>Don't ignore cases and missing phenotypes'</option> + </param> + </when> + </conditional> + <conditional name='sex_founder_filter'> + <param name='filter' type='select' label='Filter on sex and/or founders'> + <option value='No'/> + <option value='Yes'/> + </param> + <when value='No'/> + <when value='Yes'> + <param name='sex_select' type='select' label='Sex select' help='Filter by phenotypes, experiment, and founder state.'> + <option value='--filter-cases'>Only include cases</option> + <option value='--filter-controls'>Only include controls</option> + <option value='--filter-males'>Only include males</option> + <option value='--filter-females'>Only include females</option> + <option value='--filter-founders'>Exclude all samples with at least one known parental ID</option> + <option value='--filter-nonfounders'>Only include samples with at least one known parental ID</option> + </param> + <param name='no_sex_select' type='select' label='No sex settings' optional='true' help='How to deal with ambiguous sex phenotypes'> + <option value='--allow-no-sex'>Prevent samples with ambiguous sex frim having their phenotypes set to missing when analysis commands are run</option> + <option value='--must-have-sex'>Force phenotypes of ambiguous-sex samples to missing in output</option> + </param> + <param name='nonfounders' type='boolean' label='Nonfouders' truevalue='--nonfounders' falsevalue='' checked='false' help='Include nonfounders in --freq[x] or --maf/--max-maf/--hwe calculations'/> + </when> + </conditional> + </when> + <when value='data_manage'> + <conditional name='bmerge'> + <param name='set' type='select' label='Merge plink tilesets'> + <option value='No'/> + <option value='Yes'/> + </param> + <when value='No'/> + <when value='Yes'> + <param format='binary' name='bed' type='data' label='plink bed file'/> + <param format='tabular,tsv' name='bim' type='data' label='plink bim file'/> + <param format='tabular,tsv' name='fam' type='data' label='plink fam file'/> + </when> + </conditional> + <param name='recode' type='boolean' label='Recode' truevalue='--recode' falsevalue='' checked='false' help='Create a new text fileset, after applying sample/variant filters and other operations'/> + <param format='tsv,tabular' name='flip' type='data' label='Flip DNA strand for SNPs' help='Given a file containing a list of SNPs with A/C/G/T alleles, --flip swaps A↔T and C↔G.' optional='true'/> + <param name='template' type='text' label='Update Variant Info: Template String' help='Replaces missing IDs. The parameter taken by these flags is a special template string, with a @ where the chromosome code should go, and a # where the base-pair position belongs.'> + <expand macro='template_sanitizer'/> + </param> + <param name='length' type='integer' label='Max allele length' help='Length threshold to rename alleles. Recommended default is 23' optional='true'/> + <conditional name='update_cols'> + <param name='set' type='select' label='Update variant columns'> + <option value='No'>No</option> + <option value='update_map'>update-map</option> + <option value='update_name'>update-name</option> + </param> + <when value='No'/> + <when value='update_map'> + <param name='input' type='data' format='tabular,tsv' help='By default, the new value is read from column 2 and the (old) variant ID from column 1, but you can adjust these positions with the second and third parameters.'/> + <param name='col_num' type='integer' min='0' label='New ID column number' value='2'/> + <param name='old_col' type='integer' min='0' label='Old ID column' value='1'/> + <param name='skip' type='text' label='Skip' optional='true' help='Either a nonnegative integer, in which case it indicates the number of lines to skip at the top of the file, or a single nonnumeric character, which causes each line with that leading character to be skipped.'/> + </when> + <when value='update_name'> + <param name='input' type='data' format='tabular,tsv' help='By default, the new value is read from column 2 and the (old) variant ID from column 1, but you can adjust these positions with the second and third parameters.'/> + <param name='col_num' type='integer' min='0' label='BP column number' value='2'/> + <param name='var_col' type='integer' min='0' label='Variant ID column' value='1'/> + <param name='skip' type='text' label='Skip' optional='true' help='Either a nonnegative integer, in which case it indicates the number of lines to skip at the top of the file, or a single nonnumeric character, which causes each line with that leading character to be skipped.'/> + </when> + </conditional> + <conditional name='ref_allele'> + <param name='set' type='select' label='Set REF alleles' help='These cannot be used with any other commands.'> + <option value='no'>No</option> + <option value='yes'>Yes</option> + </param> + <when value='no'/> + <when value='yes'> + <param name='file' type='data' format='vcf' label='Set all alleles specified in the file to REF'/> + <param name='column' type='integer' optional='true' min='1' label='Reference column number'/> + <param name='var_id' type='integer' optional='true' min='1' label='Variant id column in file'/> + <param name='skip' label='Skip' type='text' help='Either a nonnegative integer, in which case it indicates the number of lines to skip at the top of the file, or a single nonnumeric character, which causes each line with that leading character to be skipped.'/> + </when> + </conditional> + <conditional name='a2_allele'> + <param name='set' type='select' label='Set a2 alleles' help='These cannot be used with any other commands.'> + <option value='no'>No</option> + <option value='yes'>Yes</option> + </param> + <when value='no'/> + <when value='yes'> + <param name='file' type='data' format='vcf' label='Set all alleles specified in the file to first ALT allele'/> + <param name='column' type='integer' value='4' optional='true' label='Alt column number'/> + <param name='var_id' type='integer' value='3' optional='true' label='Variant id column in file'/> + <param name='skip' label='Skip' type='boolean' truevalue='skip' falsevalue='' checked='false' help='Either a nonnegative integer, in which case it indicates the number of lines to skip at the top of the file, or a single nonnumeric character, which causes each line with that leading character to be skipped.'/> + </when> + </conditional> + </when> + <when value='stats'> + <param name='freq' label='Return allele frequency file' type='boolean' truevalue='--freq' falsevalue=''/> + <param name='hardy' label='Return Hardy-Weinberg statistics file' type='boolean' truevalue='--hardy' falsevalue='' help='Writes out writes autosomal Hardy-Weinberg equilibrium exact test statistics'/> + <param name='missing' label='Missing Data' type='boolean' truevalue='--missing' falsevalue='' help='produces sample-based and variant-based missing data reports'/> + <param name='het' label='Inbreeding' type='boolean' truevalue='--het' falsevalue='' help='Compute observed and expected homozygous/heterozygous genotype counts for each sample, and reports method-of-moments F coefficient estimates'/> + <conditional name='sex'> + <param name='sex_stats' label='Sex imputation' type='select'> + <option value=''>No</option> + <option value='--check-sex'>Compare sex assignments in input dataset with those imputed from X chromosome inbreeding coefficients</option> + <option value='--impute-sex'> Changes sex assignments to the imputed values. Cannot be set with any other flags.</option> + </param> + <when value=''/> + <when value='--check-sex'> + <conditional name='mode'> + <param name='mode' type='select' label='Mode select'> + <option value=''>Base</option> + <option value='ycount'>ycount</option> + <option value='y-only'>y-only</option> + </param> + <when value=''> + <param name='female_max' type='float' label='Female max proportion' min='0' max='1' optional='true'/> + <param name='male_min' type='float' label='Male min proportion' min='0' max='1' optional='true'/> + </when> + <when value='ycount'> + <param name='female_max' type='float' label='Female max proportion' min='0' max='1' optional='true'/> + <param name='male_min' type='float' label='Male min proportion' min='0' max='1' optional='true'/> + <param name='female_max_obvs' type='integer' label='Female max count' min='0' optional='true'/> + <param name='male_min_obvs' type='integer' label='Male min count' min='0' optional='true'/> + </when> + <when value='y-only'> + <param name='female_max_obvs' type='integer' label='Female max count' min='0' optional='true'/> + <param name='male_min_obvs' type='integer' label='Male mincountn' min='0' optional='true'/> + </when> + </conditional> + </when> + <when value='--impute-sex'> + <conditional name='mode'> + <param name='mode' type='select' label='Mode select'> + <option value=''>Base</option> + <option value='ycount'>ycount</option> + <option value='y-only'>y-only</option> + </param> + <when value=''> + <param name='female_max' type='float' label='Female max proportion' min='0' max='1' optional='true'/> + <param name='male_min' type='float' label='Male min proportion' min='0' max='1' optional='true'/> + </when> + <when value='ycount'> + <param name='female_max' type='float' label='Female max proportion' min='0' max='1' optional='true'/> + <param name='male_min' type='float' label='Male min proportion' min='0' max='1' optional='true'/> + <param name='female_max_obvs' type='integer' label='Female max count' min='0' optional='true'/> + <param name='male_min_obvs' type='integer' label='Male min count' min='0' optional='true'/> + </when> + <when value='y-only'> + <param name='female_max_obvs' type='integer' label='Female max count' min='0' optional='true'/> + <param name='male_min_obvs' type='integer' label='Male min count' min='0' optional='true'/> + </when> + </conditional> + </when> + </conditional> + </when> + <when value='link'> + <conditional name='set_indep'> + <param name='choice' label='Variant pruning' type='select' help='Since two-variant r2 only makes sense for biallelic variants, these collapse multiallelic variants down to most common allele vs. the rest.'> + <option value='Yes'>Yes</option> + <option value='No'>No</option> + </param> + <when value='No'/> + <when value='Yes'> + <param name='window' type='integer' label='Window size in bp' value='50' help='Window size'/> + <param name='step' type='integer' label='Step size (variant ct)' value='5'/> + <param name='r2' type='float' label='Unphased Hardcall r^2 Threshold' value='0.2' /> + </when> + </conditional> + + </when> + <when value='stratification'> + <param name='read_genome' label='Reusing an IBS/IBD calculation' format='tabular,tsv' type='data' optional='true'/> + <conditional name='cluster'> + <param name='cluster' type='select' help='Use IBS values calculated via --genome to perform complete linkage clustering'> + <option value='No'/> + <option value='Yes'/> + </param> + <when value='No'/> + <when value='Yes'> + <param name='modifiers' type='select' label='Cluster flag modifiers' multiple='true' display='checkboxes' optional='true'> + <option value='cc'>Prevent two all-case or two all-control clusters from being merged.</option> + <option value='group-avg'>By default, the distance between two clusters is defined as the maximum pairwise distance between a member of the first cluster and a member of the second cluster. Cause average pairwise distance to be used instead.</option> + <option value='missing'>Cause clustering to be based on identity-by-missingness</option> + </param> + <conditional name='mds'> + <param name='mds_scaling' type='select' help='Return a Haploview-friendly multidimensional scaling report'> + <option value='No'/> + <option value='Yes'/> + </param> + <when value='No'/> + <when value='Yes'> + <param name='dimensions' type='integer' label='Dimension count' value='10'/> + <param name='modifiers' type='select' label='mds-plot flag modifiers' multiple='true' display='checkboxes' optional='true'> + <option value='by-cluster'>Perform mds scaling on an inter-cluster distance matrix</option> + <option value='eigendecomp'>Request faster eigendocomposition-based algorithm, yielding slightly different results</option> + <option value='eigvals'>Write out top eigenvalues to separate file</option> + </param> + </when> + </conditional> + </when> + </conditional> + </when> + <when value='association'> + <conditional name='assoc'> + <param name='assoc' label='Perform 1df chi-square allelic test' type='select'> + <option value=''>No</option> + <option value='Yes'/> + </param> + <when value=''/> + <when value='Yes'> + <conditional name='perm'> + <param name='perm' type='select' help='Request an adaptive or max(T) permutation test on the additive effect.'> + <option value='No'>No</option> + <option value='perm'>Perform Monte Carlo permutation test</option> + <option value='mperm'>Perform a max(T) permutation test with specified number of replications</option> + </param> + <when value='No'/> + <when value='perm'/> + <when value='mperm'> + <param name='value' label='Replications' type='integer' min='0' value='10000'/> + </when> + </conditional> + <param name='genedrop' label='genedrop' type='boolean' truevalue='genedrop' falsevalue='' checked='false' help='Cause offspring genotypes to be regenerated via gene-dropping in the permutation test.'/> + <param name='perm_count' label='Perm-count' type='boolean' truevalue='perm-count' falsevalue='' checked='false' help='Cause the permutation test report to include permutation counts instead of frequencies.'/> + <param name='fisher' label='Fisher tests' type='select'> + <option value=''>Don't specify</option> + <option value='fisher'>Use fisher's exact test</option> + <option value='fisher-midp'>User Fisher's exact test with Lancaster's mid-p adjustment</option> + </param> + <param name='count' label='Counts' type='boolean' truevalue='counts' falsevalue='' checked='false' help='Report allele counts instead of frequencies'/> + </when> + </conditional> + <conditional name='adjust'> + <param name='adjust' label='Report basic multiple testing corrections for the raw p-values' type='select'> + <option value='No'/> + <option value='Yes'/> + </param> + <when value='No'/> + <when value='Yes'> + <param name='tests' label='Testing modifiers' type='select' multiple='true' display='checkboxes' optional='true'> + <option value='gc'>Use genomic-controlled p-values in the formulas</option> + <option value='log10'>Replace the p-values in the .adjusted file with their negative base 10 logarithms.</option> + <option value='qq-plot'>Add a quantile column to simplify QQ plotting.</option> + </param> + </when> + </conditional> + <!-- <conditional name='linear'> + <param name='linear' type='select' label='Perform linenar regression and return report'> + <option value='No'/> + <option value='Yes'/> + </param> + <when value='No'/> + <when value='Yes'> + <conditional name='perm'> + <param name='perm' type='select' help='Request an adaptive or max(T) permutation test on the additive effect.'> + <option value='No'>No</option> + <option value='perm'>Perform Monte Carlo permutation test</option> + <option value='mperm'>Perform a max(T) permutation test with specified number of replications</option> + </param> + <when value='No'/> + <when value='perm'/> + <when value='mperm'> + <param name='value' label='Replications' type='integer' min='0' value='10000'/> + </when> + </conditional> + <param name='genedrop' label='genedrop' type='boolean' truevalue='genedrop' falsevalue='' checked='false' help='Cause offspring genotypes to be regenerated via gene-dropping in the permutation test.'/> + <param name='perm_count' label='Perm-count' type='boolean' truevalue='perm-count' falsevalue='' checked='false' help='Cause the permutation test report to include permutation counts instead of frequencies.'/> + <param name='set_test' label='set_test' type='boolean' truevalue='set-test' falsevalue='' checked='false' help='Test the significance of variant sets'/> + <param name='dominance' label='Set dominance model' type='select'> + <option value=''>Don't specify</option> + <option value='genotypic'>Add an additive effect/dominance deviation 2df joint test (with two genotype-dependent variables in the regression, one with 0/1/2 coding and the second with 0/1/0</option> + <option value='hethom'>Add an additive effect/dominance deviation 2df joint test (with two genotype-dependent variables in the regression, one with 0/0/1 coding and the second with 0/1/0</option> + <option value='dominant'>Assume full dominance in A1 allele</option> + <option value='recessive'>Assume full recessiveness in A1 allele</option> + <option value='no-snp'>Request a regression only on the phenotype and the covariates, without reference to genomic data</option> + </param> + <param name='hide_covar' label='hide_covar' type='boolean' truevalue='hide-covar' falsevalue='' checked='false' help='Remove covariate-specific lines from the main report'/> + <param name='sex_covar' label='Sex as a covariate' type='select'> + <option value=''>Only used where specified</option> + <option value='sex'>By default, when at least one male and one female is present, sex (male = 1, female = 0) is automatically added as a covariate on X chromosome SNPs, and nowhere else. The 'sex' modifier causes it to be added everywhere.</option> + <option value='no-x-sex'>By default, when at least one male and one female is present, sex (male = 1, female = 0) is automatically added as a covariate on X chromosome SNPs, and nowhere else. The 'no-x-sex' modifier causes it to be excluded everywhere</option> + </param> + <param name='interaction' label='interaction' type='boolean' truevalue='interaction' falsevalue='' checked='false' help='Add genotype x covariate interactions to the model.'/> + <param name='beta' label='beta' type='boolean' truevalue='beta' falsevalue='' checked='false' help=''/> + <param name='standard_beta' label='standard-beta' type='boolean' truevalue='standard-beta' falsevalue='' checked='false' help=''/> + <param name='intercept' label='intercept' type='boolean' truevalue='intercept' falsevalue='' checked='false' help=''/> + </when> + </conditional> --> + <conditional name='logistic'> + <param name='logistic' type='select' label='Perform logistic regression and return report'> + <option value='No'/> + <option value='Yes'/> + </param> + <when value='No'/> + <when value='Yes'> + <conditional name='perm'> + <param name='perm' type='select' help='Request an adaptive or max(T) permutation test on the additive effect.'> + <option value='No'>No</option> + <option value='perm'>Perform Monte Carlo permutation test</option> + <option value='mperm'>Perform a max(T) permutation test with specified number of replications</option> + </param> + <when value='No'/> + <when value='perm'/> + <when value='mperm'> + <param name='value' label='Replications' type='integer' min='0' value='10000'/> + </when> + </conditional> + <param name='genedrop' label='genedrop' type='boolean' truevalue='genedrop' falsevalue='' checked='false' help='Cause offspring genotypes to be regenerated via gene-dropping in the permutation test.'/> + <param name='perm_count' label='Perm-count' type='boolean' truevalue='perm-count' falsevalue='' checked='false' help='Cause the permutation test report to include permutation counts instead of frequencies.'/> + <param name='dominance' label='Set dominance model' type='select'> + <option value=''>Don't specify</option> + <option value='genotypic'>Add an additive effect/dominance deviation 2df joint test (with two genotype-dependent variables in the regression, one with 0/1/2 coding and the second with 0/1/0</option> + <option value='hethom'>Add an additive effect/dominance deviation 2df joint test (with two genotype-dependent variables in the regression, one with 0/0/1 coding and the second with 0/1/0</option> + <option value='dominant'>Assume full dominance in A1 allele</option> + <option value='recessive'>Assume full recessiveness in A1 allele</option> + <option value='no-snp'>Request a regression only on the phenotype and the covariates, without reference to genomic data</option> + </param> + <param name='hide_covar' label='Hide covar' type='boolean' truevalue='hide-covar' falsevalue='' checked='false' help='Remove covariate-specific lines from the main report'/> + <param name='sex_covar' label='Sex as a covariate' type='select'> + <option value=''>Only used where specified</option> + <option value='sex'>By default, when at least one male and one female is present, sex (male = 1, female = 0) is automatically added as a covariate on X chromosome SNPs, and nowhere else. The 'sex' modifier causes it to be added everywhere.</option> + <option value='no-x-sex'>By default, when at least one male and one female is present, sex (male = 1, female = 0) is automatically added as a covariate on X chromosome SNPs, and nowhere else. The 'no-x-sex' modifier causes it to be excluded everywhere</option> + </param> + <param name='interaction' label='Interaction' type='boolean' truevalue='interaction' falsevalue='' checked='false' help='Add genotype x covariate interactions to the model.'/> + <param name='beta' label='Beta' type='boolean' truevalue='beta' falsevalue='' checked='false' help=''/> + <param name='intercept' label='Intercept' type='boolean' truevalue='intercept' falsevalue='' checked='false' help=''/> + </when> + </conditional> + <param name='lambda' type='float' label='Lambda value' optional='true'/> + </when> + <!-- <when value='scoring'> + </when> --> + <when value='ibd'> + <conditional name='genome'> + <param name='output_genome' type='select' help='Perform and return results of IBS/IBD computation'> + <option value=''>No</option> + <option value='Yes'/> + </param> + <when value=''/> + <when value='Yes'> + <param name='min' type='float' label='min' min='0' max='1.0' help='Minimum PI_HAT value' optional='true'/> + <param name='max' type='float' label='max' min='0' max='1.0' help='Maximum PI_HAT value' optional='true'/> + <param name='ppc' type='integer' label='PPC-gap' min='0' help='Minimum distance between informative pairs of SNPs used in the pairwise population concordance (PPC) inn kbs' value='500' optional='true'/> + <param name='modifiers' type='select' label='Genome flag modifiers' multiple='true' display='checkboxes' optional='true'> + <option value='rel-check'>Remove pairs of samples with different FIDs</option> + <option value='full'>Add IBS , HOMHOM and HETHET fields to output</option> + <option value='unbounded'>Turn off clipping due to IBD estimator</option> + <option value='nudge'>If PI_HAT2 greater than P(IBD=2), adjusts the final estimates to P(IBD=0) := (1-p2), P(IBD=1) := 2p(1-p), and P(IBD=2) := p2, where p is the current PI_HAT</option> + </param> + </when> + </conditional> + </when> + <!-- <when value='rerun'> + <param type='data' name='logfile' format='binary' label='Plink Log File'/> + </when> --> + </conditional> + </inputs> + <outputs> + <!--Main--> + <collection name='plink_out' type='list' label='Plink main outputs'> + <data name='plink_bed' format='binary' from_work_dir='plink_output/plink_output.bed'/> + <data name='plink_bim' format='tabular' from_work_dir='plink_output/plink_output.bim'/> + <data name='plink_fam' format='tabular' from_work_dir='plink_output/plink_output.fam'/> + <data name='plink_log' format='txt' from_work_dir='plink_output/plink_output.log'/> + </collection> + + <!--Data Manage--> + <data name='plink_ped' format='txt' from_work_dir='plink_output/plink_output.ped' label='${tool.name}: Recode ped'> + <filter>functions['func'] == 'data_manage' and functions['recode']</filter> + </data> + <data name='plink_map' format='txt' from_work_dir='plink_output/plink_output.map' label='${tool.name}: Recode map'> + <filter>functions['func'] == 'data_manage' and functions['recode']</filter> + </data> + + <!--Stats--> + <data name='frequency' format='tabular' from_work_dir='plink_output/plink_output.frq' label='${tool.name}: freq out'> + <filter>functions['func'] == 'stats' and functions['freq']</filter> + </data> + <data name='hardy_out' format='tabular' from_work_dir='plink_output/plink_output.hwe' label='${tool.name}: Hardy-Weinberg equilibrium'> + <filter>functions['func'] == 'stats' and functions['hardy']</filter> + </data> + <data name='missing_1' format='tabular' from_work_dir='plink_output/plink_output.imiss' label='${tool.name}: imiss'> + <filter>functions['func'] == 'stats' and functions['missing']</filter> + </data> + <data name='missing_2' format='tabular' from_work_dir='plink_output/plink_output.lmiss' label='${tool.name}: lmiss'> + <filter>functions['func'] == 'stats' and functions['missing']</filter> + </data> + <data name='het' format='tabular' from_work_dir='plink_output/plink_output.het' label='${tool.name}: Het'> + <filter>functions['func'] == 'stats' and functions['het']</filter> + </data> + <data name='sex_check' format='tabular' from_work_dir='plink_output/plink_output.sexcheck' label='${tool.name}: Sex check'> + <filter>functions['func'] == 'stats' and functions['sex']['sex_stats']</filter> + </data> + + <!--Association--> + <!--assoc--> + <data name='assoc' format='tabular' from_work_dir='plink_output/plink_output.assoc' label='${tool.name}: Association'> + <filter>functions['func'] == 'association' and functions['assoc']['assoc'] == 'Yes' and not functions['assoc']['fisher']</filter> + </data> + <data name='perm' format='tabular' from_work_dir='plink_output/plink_output.assoc.perm' label='${tool.name}: Association Monte Carlo'> + <filter>functions['func'] == 'association' and functions['assoc']['assoc'] == 'Yes' and functions['assoc']['perm']['perm'] == 'perm' and not functions['assoc']['fisher']</filter> + </data> + <data name='mperm' format='tabular' from_work_dir='plink_output/plink_output.assoc.mperm' label='${tool.name}: Association Max(T) permutation test'> + <filter>functions['func'] == 'association' and functions['assoc']['assoc'] == 'Yes' and functions['assoc']['perm']['perm'] == 'mperm' and not functions['assoc']['fisher']</filter> + </data> + <data name='fisher' format='tabular' from_work_dir='plink_output/plink_output.assoc.fisher' label='${tool.name}: Association Fisher'> + <filter>functions['func'] == 'association' and functions['assoc']['assoc'] == 'Yes' and functions['assoc']['assoc'] == 'Yes' and functions['assoc']['fisher']</filter> + </data> + <data name='fisher_perm' format='tabular' from_work_dir='plink_output/plink_output.assoc.fisher.perm' label='${tool.name}: Association Fisher perm'> + <filter>functions['func'] == 'association' and functions['assoc']['assoc'] == 'Yes' and functions['assoc']['perm']['perm'] == 'perm' and functions['assoc']['fisher']</filter> + </data> + <data name='fisher_mperm' format='tabular' from_work_dir='plink_output/plink_output.assoc.fisher.mperm' label='${tool.name}: Association Fisher mperm'> + <filter>functions['func'] == 'association' and functions['assoc']['assoc'] == 'Yes' and functions['assoc']['perm']['perm'] == 'mperm' and functions['assoc']['fisher']</filter> + </data> + + <!--adjust--> + <data name='adjust' format='tabular' from_work_dir='plink_output/plink_output.assoc.adjusted' label='${tool.name}: Adjusted'> + <filter>functions['func'] == 'association' and functions['assoc']['assoc'] == 'Yes' and functions['adjust']['adjust'] == 'Yes' and not functions['assoc']['fisher']</filter> + </data> + <data name='adjust_fisher' format='tabular' from_work_dir='plink_output/plink_output.assoc.fisher.adjusted' label='${tool.name}: Fisher Adjusted'> + <filter>functions['func'] == 'association' and functions['assoc']['assoc'] == 'Yes' and functions['adjust']['adjust'] == 'Yes' and functions['assoc']['fisher']</filter> + </data> + <data name='adjust_logistic' format='tabular' from_work_dir='plink_output/plink_output.assoc.logistic.adjusted' label='${tool.name}: Logistic Adjusted'> + <filter>functions['func'] == 'association' and functions['adjust']['adjust'] == 'Yes' and functions['logistic']['logistic'] == 'Yes'</filter> + </data> + + <!-- <data name='linear' format='tabular' from_work_dir='plink_output/plink_output.assoc.linenar' label='${tool.name}: Linear Regression'> + <filter>functions['func'] == 'association' and functions.func.association.linear['linear'] == 'Yes'</filter> + </data> --> + + <!--Logistic--> + <data name='logistic' format='tabular' from_work_dir='plink_output/plink_output.assoc.logistic' label='${tool.name}: Logistic Regression'> + <filter>functions['func'] == 'association' and functions['logistic']['logistic'] == 'Yes'</filter> + </data> + <data name='logistic_perm' format='tabular' from_work_dir='plink_output/plink_output.assoc.logistic.perm' label='${tool.name}: Logistic Association Monte Carlo'> + <filter>functions['func'] == 'association' and functions['logistic']['logistic'] == 'Yes' and functions['logistic']['perm']['perm'] == 'perm'</filter> + </data> + <data name='logistic_mperm' format='tabular' from_work_dir='plink_output/plink_output.assoc.logistic.mperm' label='${tool.name}: Logistic Association Max(T) permutation test'> + <filter>functions['func'] == 'association' and functions['logistic']['logistic'] == 'Yes' and functions['logistic']['perm']['perm'] == 'mperm'</filter> + </data> + + <!--Link--> + <data name='prune_in' format='tabular' from_work_dir='plink_output/plink_output.prune.in' label='${tool.name}: Prune In'> + <filter>functions['func'] == 'link' and functions['set_indep']['choice'] == 'Yes'</filter> + </data> + <data name='prune_out' format='tabular' from_work_dir='plink_output/plink_output.prune.out' label='${tool.name}: Prune Out'> + <filter>functions['func'] == 'link' and functions['set_indep']['choice'] == 'Yes'</filter> + </data> + + <!--IBD--> + <data name='genome' format='tabular' from_work_dir='plink_output/plink_output.genome' label='${tool.name}: Genome'> + <filter>functions['func'] == 'ibd' and functions['genome']['output_genome']</filter> + </data> + + <!--Stratifiction--> + <data name='mds' format='txt' from_work_dir='plink_output/plink_output.mds' label='${tool.name}: MDS'> + <filter>functions['func'] == 'stratification' and functions['cluster']['cluster'] == 'Yes' and functions['cluster']['mds']['mds_scaling'] == 'Yes'</filter> + </data> + <data name='cluster1' format='tabular' from_work_dir='plink_output/plink_output.cluster1' label='${tool.name}: Cluster 1'> + <filter>functions['func'] == 'stratification' and functions['cluster']['cluster'] == 'Yes'</filter> + </data> + <data name='cluster2' format='tabular' from_work_dir='plink_output/plink_output.cluster2' label='${tool.name}: Cluster 2'> + <filter>functions['func'] == 'stratification' and functions['cluster']['cluster'] == 'Yes'</filter> + </data> + <data name='cluster3' format='tabular' from_work_dir='plink_output/plink_output.cluster3' label='${tool.name}: Cluster 3'> + <filter>functions['func'] == 'stratification' and functions['cluster']['cluster'] == 'Yes' and 'missing' not in functions['cluster']['modifiers']</filter> + </data> + <data name='cluster3missing' format='tabular' from_work_dir='plink_output/plink_output.cluster3.missing' label='${tool.name}: Cluster 3 missing'> + <filter>functions['func'] == 'stratification' and functions['cluster']['cluster'] == 'Yes' and functions['cluster']['modifiers'] and 'missing' in functions['cluster']['modifiers']</filter> + </data> + <data name='mds_miss' format='tabular' from_work_dir='plink_output/plink_output.mdist.missing' label='${tool.name}: Mdist missing'> + <filter>functions['func'] == 'stratification' and functions['cluster']['cluster'] == 'Yes' and functions['cluster']['modifiers'] and 'missing' in functions['cluster']['modifiers']</filter> + </data> + <data name='eigenvals' format='txt' from_work_dir='plink_output/plink_output.mds.eigvals' label='${tool.name}: Eigenvals'> + <filter>functions['func'] == 'stratification' and functions['cluster']['cluster'] == 'Yes' and functions['cluster']['mds']['mds_scaling'] == 'Yes' and functions['cluster']['mds']['modifiers'] and 'eigvals' in functions['cluster']['mds']['modifiers']</filter> + </data> + </outputs> + <tests> + <test expect_num_outputs='5'> + <section name='inputs'> + <conditional name='inputs'> + <param name='filetype' value='bfile'/> + <param name='bed' value='plink.bed'/> + <param name='bim' value='plink.bim'/> + <param name='fam' value='plink.fam'/> + </conditional> + </section> + <conditional name='functions'> + <param name='func' value='filtering'/> + <conditional name='id_list'> + <param name='func' value='remove'/> + <param name='file' value='1.tabular'/> + </conditional> + <conditional name='extraction'> + <param name='ex_func' value='exclude'/> + <param name='file' value='testing.txt'/> + <param name='range' value='true'/> + </conditional> + <param name='snps_exclusives' value='--snps-only'/> + <conditional name='ranges'> + <param name='single_multi' value='single'/> + <conditional name='window'> + <param name='type' value='variant'/> + <param name='from' value='snp0'/> + <param name='to' value='snp3'/> + </conditional> + </conditional> + <conditional name='thinning'> + <param name='thinning' value='Yes'/> + <param name='thin_count' value='4'/> + </conditional> + <section name='geno_rates'> + <param name='geno' value='0.02'/> + <param name='mind' value='0.02'/> + </section> + <section name='allele_freq'> + <param name='maf' value='0.01'/> + </section> + <conditional name='hwe'> + <param name='hwe' value='Yes'/> + <param name='hwe_val' value='1e-50'/> + <param name='modifiers' value='midp,include-nonctrl'/> + </conditional> + <conditional name='sex_founder_filter'> + <param name='filter' value='Yes'/> + <param name='sex_select' value='--filter-cases'/> + <param name='no_sex_select' value='--allow-no-sex'/> + <param name='nonfounders' value='--nonfounders'/> + </conditional> + </conditional> + <output_collection name='plink_out' type='list'> + <element name='plink_bed' file='test1_out.bed' compare='sim_size'/> + <element name='plink_bim' file='test1_out.bim'/> + <element name='plink_fam' file='test1_out.fam'/> + </output_collection> + </test> + + <test expect_num_outputs='7'> + <section name='inputs'> + <conditional name='inputs'> + <param name='filetype' value='bfile'/> + <param name='bed' value='plink.bed'/> + <param name='bim' value='plink.bim'/> + <param name='fam' value='plink.fam'/> + </conditional> + </section> + <conditional name='functions'> + <param name='func' value='data_manage'/> + <conditional name='bmerge'> + <param name='set' value='Yes'/> + <param name='bed' value='plink_2.bed'/> + <param name='bim' value='plink_2.bim'/> + <param name='fam' value='plink_2.fam'/> + </conditional> + <param name='recode' value='--recode'/> + <param name='template' value='@asd#123'/> + <param name='length' value='23'/> + <conditional name='update_cols'> + <param name='set' value='update_name'/> + <param name='input' value='update_cols.txt'/> + <param name='col_num' value='1'/> + <param name='var_col' value='2'/> + <param name='skip' value='a'/> + </conditional> + </conditional> + <output_collection name='plink_out' type='list'> + <element name='plink_bed' file='test2_out.bed' compare='sim_size'/> + <element name='plink_bim' file='test2_out.bim'/> + <element name='plink_fam' file='test2_out.fam'/> + </output_collection> + <output name='plink_ped' file='out.ped'/> + <output name='plink_map' file='out.map'/> + </test> + + <test expect_num_outputs='5'> + <section name='inputs'> + <conditional name='inputs'> + <param name='filetype' value='vcf'/> + <param name='input' value='test.vcf'/> + </conditional> + </section> + <output_collection name='plink_out' type='list'> + <element name='plink_bed' file='vcf_out.bed'/> + <element name='plink_bim' file='vcf_out.bim'/> + <element name='plink_fam' file='vcf_out.fam'/> + </output_collection> + </test> + + <test expect_num_outputs='11'> + <section name='inputs'> + <conditional name='inputs'> + <param name='filetype' value='bfile'/> + <param name='bed' value='plink.bed'/> + <param name='bim' value='x_plink.bim'/> + <param name='fam' value='plink.fam'/> + </conditional> + </section> + <conditional name='functions'> + <param name='func' value='stats'/> + <param name='freq' value='--freq'/> + <param name='hardy' value='--hardy'/> + <param name='missing' value='--missing'/> + <param name='het' value='--het'/> + <conditional name='sex'> + <param name='sex_stats' value='--check-sex'/> + <conditional name='mode'> + <param name='mode' value='ycount'/> + <param name='female_max' value='0.2'/> + <param name='male_min' value='0.8'/> + <param name='female_max_obvs' value='10'/> + <param name='male_min_obvs' value='200'/> + </conditional> + </conditional> + </conditional> + <output_collection name='plink_out' type='list'> + <element name='plink_bed' file='stats.bed'/> + <element name='plink_bim' file='stats.bim'/> + <element name='plink_fam' file='stats.fam'/> + <element name='plink_fam' file='stats.fam'/> + </output_collection> + <output name='frequency' file='out.freq'/> + <output name='hardy_out' file='out.hardy'/> + <output name='missing_1' file='out.imiss'/> + <output name='missing_2' file='out.lmiss'/> + <output name='het' file='out.het'/> + <output name='sex_check' file='out.sexcheck'/> + </test> + + <test expect_num_outputs='7'> + <section name='inputs'> + <conditional name='inputs'> + <param name='filetype' value='bfile'/> + <param name='bed' value='plink.bed'/> + <param name='bim' value='plink.bim'/> + <param name='fam' value='plink.fam'/> + </conditional> + </section> + <conditional name='functions'> + <param name='func' value='link'/> + <conditional name='set_indep'> + <param name='choice' value='Yes'/> + <param name='window' value='51'/> + <param name='step' value='6'/> + <param name='r2' value='0.3'/> + </conditional> + </conditional> + <output_collection name='plink_out' type='list'> + <element name='plink_bed' file='test5_out.bed' compare='sim_size'/> + <element name='plink_bim' file='test5_out.bim'/> + <element name='plink_fam' file='test5_out.fam'/> + </output_collection> + <output name='prune_in' file='plink.prune.in'/> + </test> + + <test expect_num_outputs='10'> + <section name='inputs'> + <conditional name='inputs'> + <param name='filetype' value='bfile'/> + <param name='bed' value='plink.bed'/> + <param name='bim' value='plink.bim'/> + <param name='fam' value='plink.fam'/> + </conditional> + </section> + <conditional name='functions'> + <param name='func' value='stratification'/> + <param name='read_genome' value='plink.genome'/> + <conditional name='cluster'> + <param name='cluster' value='Yes'/> + <param name='modifiers' value='cc,group-avg'/> + <conditional name='mds'> + <param name='mds_scaling' value='Yes'/> + <param name='dimensions' value='10'/> + <param name='modifiers' value='eigendecomp,eigvals'/> + </conditional> + </conditional> + </conditional> + <output_collection name='plink_out' type='list'> + <element name='plink_bed' file='test6_out.bed' compare='sim_size'/> + <element name='plink_bim' file='test6_out.bim'/> + <element name='plink_fam' file='test6_out.fam'/> + </output_collection> + <output name='mds' value='plink.mds' compare='sim_size'/> + <output name='cluster1' value='plink.cluster1' compare='sim_size'/> + <output name='cluster2' value='plink.cluster2' compare='sim_size'/> + <output name='cluster3' value='plink.cluster3' compare='sim_size'/> + <output name='eigenvals' value='plink.mds.eigenval' compare='sim_size'/> + </test> + + <test expect_num_outputs='11'> + <section name='inputs'> + <conditional name='inputs'> + <param name='filetype' value='bfile'/> + <param name='bed' value='plink.bed'/> + <param name='bim' value='plink.bim'/> + <param name='fam' value='plink.fam'/> + </conditional> + </section> + <conditional name='functions'> + <param name='func' value='association'/> + <conditional name='assoc'> + <param name='assoc' value='Yes'/> + <conditional name='perm'> + <param name='perm' value='mperm'/> + <param name='value' value='10000'/> + </conditional> + <param name='fisher' value='fisher-midp'/> + </conditional> + <conditional name='adjust'> + <param name='adjust' value='Yes'/> + <param name='tests' value='gc,log10,qq-plot'/> + </conditional> + <conditional name='logistic'> + <param name='logistic' value='Yes'/> + <conditional name='perm'> + <param name='perm' value='perm'/> + </conditional> + <param name='genedrop' value='genedrop'/> + <param name='perm_count' value='perm-count'/> + <param name='dominance' value='dominant'/> + <param name='hide_covar' value='hide-covar'/> + <param name='beta' value='beta'/> + <param name='intercept' value='intercept'/> + </conditional> + <param name='lambda' value='1.0'/> + </conditional> + <output_collection name='plink_out' type='list'> + <element name='plink_bed' file='out.assoc.bed' compare='sim_size'/> + <element name='plink_bim' file='out.assoc.bim'/> + <element name='plink_fam' file='out.assoc.fam'/> + </output_collection> + <output name='fisher' value="out.assoc.fisher"/> + <output name='adjust_fisher' value="out.assoc.fisher.adjusted" sort="True" /> + <output name='fisher_mperm' value="out.assoc.fisher.mperm" compare='sim_size'/> + <output name='logistic' value="out.assoc.logistic"/> + <output name='adjust_logistic' value="out.assoc.logistic.adjusted"/> + <output name='logistic_perm' value="out.assoc.logistic.perm" compare='sim_size'/> + </test> + + <test expect_num_outputs='6'> + <section name='inputs'> + <conditional name='inputs'> + <param name='filetype' value='bfile'/> + <param name='bed' value='plink.bed'/> + <param name='bim' value='plink.bim'/> + <param name='fam' value='plink.fam'/> + </conditional> + </section> + <conditional name='functions'> + <param name='func' value='ibd'/> + <conditional name='genome'> + <param name='output_genome' value='Yes'/> + <param name='min' value='0.1'/> + <param name='max' value='0.9'/> + <param name='modifiers' value='full,unbounded,nudge'/> + </conditional> + </conditional> + <output name='genome' file='out.genome'/> + </test> + </tests> + <help><![CDATA[ + PLINK is a free, open-source whole genome association analysis toolset, designed to perform a range of basic, large-scale analyses in a computationally efficient manner. + + For detailed usage notes, visit http://www.cog-genomics.org/plink/2.0/ + ]]></help> + <citations> + <citation type='doi'>10.1186/s13742-015-0047-8</citation> + </citations> +</tool> \ No newline at end of file