Repository revision
10:2c0ac05fe240

Repository 'plink'
hg clone https://toolshed.g2.bx.psu.edu/repos/iuc/plink

plink tool metadata
Miscellaneous
plink
genome association analysis toolset
plink
toolshed.g2.bx.psu.edu/repos/iuc/plink/plink/1.90b6.21+galaxy1
1.90b6.21+galaxy1
None
True
Version lineage of this tool (guids ordered most recent to oldest)
toolshed.g2.bx.psu.edu/repos/iuc/plink/plink/1.90b6.21+galaxy1 (this tool)
toolshed.g2.bx.psu.edu/repos/iuc/plink/plink/1.90b6.21+galaxy0
toolshed.g2.bx.psu.edu/repos/iuc/plink/plink/1.9.b618+galaxy3
toolshed.g2.bx.psu.edu/repos/iuc/plink/plink/1.9.b618+galaxy2
toolshed.g2.bx.psu.edu/repos/iuc/plink/plink/1.9.b618+galaxy1
toolshed.g2.bx.psu.edu/repos/iuc/plink/plink/1.9.b618+galaxy0
plink
Requirements (dependencies defined in the <requirements> tag set)
name version type
plink 1.90b6.21 package
gawk 5.3.0 package
Additional information about this tool
## Create Plink folder for any inputs
    mkdir ./plink_output
    && mkdir ./plink_input


    ## 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.extra_files_path/RgeneticsData.bed' 'bmerge_files/bmerge_input.bed'
            && ln -s '$functions.bmerge.bed.extra_files_path/RgeneticsData.bim' 'bmerge_files/bmerge_input.bim'
            && ln -s '$functions.bmerge.bed.extra_files_path/RgeneticsData.fam' 'bmerge_files/bmerge_input.fam'
        #end if
    #end if


    #if $inputs.inputs.filetype == 'bfile':
        && ln -s '$inputs.inputs.bed.extra_files_path/RgeneticsData.bed' 'plink_input/plink_input.bed'
        && ln -s '$inputs.inputs.bed.extra_files_path/RgeneticsData.bim' 'plink_input/plink_input.bim'
        && ln -s '$inputs.inputs.bed.extra_files_path/RgeneticsData.fam' 'plink_input/plink_input.fam'
        && plink --bfile plink_input/plink_input
    #elif $inputs.inputs.filetype == 'vcf':
        #if $inputs.inputs.input.is_of_type('bcf'):
            && plink --bcf '$inputs.inputs.input' 
        #else:
            && plink --vcf '$inputs.inputs.input' 
        #end if
    #end if

    ## Plink commands by section
    #if $inputs.covar_input:
        --covar '$inputs.covar_input'
    #end if
    #if $inputs.set_pheno.set_pheno == 'Yes':
        --pheno $inputs.set_pheno.pheno $inputs.set_pheno.all_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
                #if $functions.sex_founder_filter.no_sex_select:
                    $functions.sex_founder_filter.no_sex_select
                #end if
                $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
        --lambda $functions.lambda
    #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':
        --score '$functions.score_file' $functions.variant_id_i $functions.allel_codes_j $functions.scores_k $functions.header $functions.sum
##    #else:
##        --rerun $functions.logfile
##      
    #end if
    --memory \${GALAXY_MEMORY_MB:-8192}
    --make-bed
    --out plink_output/plink_output

    #if $functions.func == 'association':
        #if $functions.logistic.logistic == 'Yes':
            && mkdir logistic_out
            && mv plink_output/plink_output.*.l* logistic_out
            && find ./logistic_out/. -type f -exec mv {} {}.txt ';'
        #end if
        #if $functions.adjust.adjust == 'Yes':
            && mkdir adjust_out
            && mv ./plink_output/*.adjuste* adjust_out
            && find ./adjust_out/. -type f -exec mv {} {}.txt ';'
        #end if
        #if $functions.assoc.assoc == 'Yes':
            && mkdir assoc_out
            && mv ./plink_output/*asso* assoc_out
            && find ./assoc_out/. -type f -exec mv {} {}.txt ';'
        #end if
    #end if
    && mkdir '$plink_out.extra_files_path'
    && cp plink_output/plink_output.bed '$plink_out.extra_files_path/RgeneticsData.bed'
    && cp plink_output/plink_output.bim '$plink_out.extra_files_path/RgeneticsData.bim'
    && cp plink_output/plink_output.fam '$plink_out.extra_files_path/RgeneticsData.fam'
    #if $functions.func == 'scoring':
        && awk -v OFS="\t" '{$1=$1; print}' plink_output/plink_output.profile > plink_output/plink_output.profile.tab
    #end if
    
None
False
Functional tests
name inputs outputs required files
Test-1 inputs|inputs|bed:
inputs|inputs|filetype: bfile
functions|id_list|file: 1.tabular
functions|id_list|func: remove
functions|extraction|file: testing.txt
functions|extraction|range: True
functions|extraction|ex_func: exclude
functions|snps_exclusives: --snps-only
functions|ranges|window|from: snp0
functions|ranges|window|to: snp3
functions|ranges|window|type: variant
functions|ranges|single_multi: single
functions|thinning|thin_count: 4
functions|thinning|thinning: Yes
functions|geno_rates|geno: 0.02
functions|geno_rates|mind: 0.02
functions|allele_freq|maf: 0.01
functions|hwe|hwe_val: 1e-50
functions|hwe|modifiers: ['midp', 'include-nonctrl']
functions|hwe|hwe: Yes
functions|sex_founder_filter|sex_select: --filter-cases
functions|sex_founder_filter|no_sex_select: --allow-no-sex
functions|sex_founder_filter|nonfounders: True
functions|sex_founder_filter|filter: Yes
functions|func: filtering
name: value
name: value

1.tabular
testing.txt
value
Test-2 inputs|inputs|bed:
inputs|inputs|filetype: bfile
functions|bmerge|bed:
functions|bmerge|set: Yes
functions|recode: True
functions|template: @asd#123
functions|length: 23
functions|update_cols|input: update_cols.txt
functions|update_cols|col_num: 1
functions|update_cols|var_col: 2
functions|update_cols|skip: a
functions|update_cols|set: update_name
functions|func: data_manage
name: value
name: value
name: value
name: value


update_cols.txt
value
Test-3 inputs|inputs|input: test.vcf
inputs|inputs|filetype: vcf
name: value
name: value
test.vcf
value
Test-4 inputs|inputs|bed:
inputs|inputs|filetype: bfile
functions|freq: True
functions|hardy: True
functions|missing: True
functions|het: True
functions|sex|mode|female_max: 0.2
functions|sex|mode|male_min: 0.8
functions|sex|mode|female_max_obvs: 10
functions|sex|mode|male_min_obvs: 200
functions|sex|mode|mode: ycount
functions|sex|sex_stats: --check-sex
functions|func: stats
name: value
name: value
name: value
name: value
name: value
name: value
name: value
name: value

value
Test-5 inputs|inputs|bed:
inputs|inputs|filetype: bfile
functions|set_indep|window: 51
functions|set_indep|step: 6
functions|set_indep|r2: 0.3
functions|set_indep|choice: Yes
functions|func: link
name: value
name: value
name: value

value
Test-6 inputs|inputs|bed:
inputs|inputs|filetype: bfile
functions|read_genome: plink.genome
functions|cluster|modifiers: ['cc', 'group-avg']
functions|cluster|mds|dimensions: 10
functions|cluster|mds|modifiers: ['eigendecomp', 'eigvals']
functions|cluster|mds|mds_scaling: Yes
functions|cluster|cluster: Yes
functions|func: stratification
name: value
name: value
name: value
name: value
name: value
name: value
name: value

plink.genome
value
Test-7 inputs|inputs|bed:
inputs|inputs|filetype: bfile
functions|assoc|perm|value: 10000
functions|assoc|perm|perm: mperm
functions|assoc|fisher: fisher-midp
functions|assoc|assoc: Yes
functions|adjust|tests: ['gc', 'log10', 'qq-plot']
functions|adjust|adjust: Yes
functions|logistic|perm|perm: perm
functions|logistic|genedrop: True
functions|logistic|perm_count: True
functions|logistic|dominance: dominant
functions|logistic|hide_covar: True
functions|logistic|beta: True
functions|logistic|intercept: True
functions|logistic|logistic: Yes
functions|lambda: 1.0
functions|func: association
name: value
name: value

value
Test-8 inputs|inputs|bed:
inputs|inputs|filetype: bfile
functions|genome|min: 0.1
functions|genome|max: 0.9
functions|genome|modifiers: ['full', 'unbounded', 'nudge']
functions|genome|output_genome: Yes
functions|func: ibd
name: value
name: value

value
Test-9 inputs|inputs|bed:
inputs|inputs|filetype: bfile
functions|score_file: scores_file.tab
functions|variant_id_i: 1
functions|allel_codes_j: 2
functions|scores_k: 3
functions|header: True
functions|sum: sum
functions|func: scoring
name: value
name: value

scores_file.tab
value