view hicConvertFormat.xml @ 2:2f62a87d4017 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/hicexplorer commit 4b602d427e0fc0da5353a4510798349de98e4ae4"
author iuc
date Wed, 11 Mar 2020 16:59:15 -0400
parents e136f22c2a0f
children 3e598b8e72e7
line wrap: on
line source

<tool id="hicexplorer_hicconvertformat" name="@BINARY@" version="@WRAPPER_VERSION@.0">
    <description>Convert between different file formats</description>
    <macros>
        <token name="@BINARY@">hicConvertFormat</token>
        <token name="@SINGLE_INPUT@">
            #if $xml_path.inputFormat_selector == 'optionCool':
                --matrices 'matrix.cool'
                --inputFormat cool
                #if $xml_path.correctionName:
                    --correction_name '$xml_path.correctionName'
                #end if

                #if $xml_path.correctionDivision:
                    --correction_division
                #end if

                #if $xml_path.chromosome:
                    #set $chromosome = ' '.join([ '\'%s\'' % $chrom for $chrom in str($xml_path.chromosome).split(' ') ])

                    --chromosome $chromosome
                #end if

                #if $xml_path.loadRawValues:
                    --load_raw_values
                #end if
            #end if
            #if $xml_path.inputFormat_selector == 'optionH5':
                --matrices "matrix.h5"
                --inputFormat h5

            #end if
            #if $xml_path.inputFormat_selector == 'optionHomer':
                --matrices "matrix.homer"
                --inputFormat homer

            #end if
            #if $xml_path.inputFormat_selector == 'optionHicpro':
                --matrices "matrix.hicpro"
                --bedFileHicpro "matrix.bed"
                --inputFormat hicpro
            #end if
            #if $xml_path.inputFormat_selector == 'optionHic':
                --matrices "matrix.hic"
                #if $xml_path.resolutions:
                    #set $resolutions = ' '.join([ '"%s"' % $resolution for $resolution in str($xml_path.resolutions).split(" ") ])

                    --resolutions $resolutions
                #end if
                --inputFormat hic
            #end if
        </token>
        <import>macros.xml</import>
    </macros>

    <expand macro="requirements" />
    <command detect_errors="exit_code"><![CDATA[


        ## single to single case


        #if $outputSingleMultiple_conditional.outputSingleMultiple_selector == 'singleMatrix':
            #set xml_path = $outputSingleMultiple_conditional.inputFormat_conditional

            #if $xml_path.inputFormat_selector == 'optionCool':
                ln -s "$xml_path.matrix_h5_cooler" "matrix.cool" &&

            #end if
            #if $xml_path.inputFormat_selector == 'optionH5':
                ln -s "$xml_path.matrix_h5_cooler" "matrix.h5" &&

            #end if
            #if $xml_path.inputFormat_selector == 'optionHomer':
               ln -s "$xml_path.matrixHomer" "matrix.homer" &&

            #end if

            #if $xml_path.inputFormat_selector == 'optionHicpro':
                ln -s "$xml_path.matrixHicpro" "matrix.hicpro" &&
                ln -s "$xml_path.bedHicpro" "matrix.bed" &&
            #end if

            #if $xml_path.inputFormat_selector == 'optionHic':
                ln -s "$xml_path.matrixHic" "matrix.hic" &&
            #end if



            @BINARY@
            @SINGLE_INPUT@


            --outputFormat $outputSingleMultiple_conditional.outputFormat_conditional.outputFormat_selector
            --outFileName 'matrix.$outputSingleMultiple_conditional.outputFormat_conditional.outputFormat_selector'

            #if $outputSingleMultiple_conditional.outputFormat_conditional.outputFormat_selector == 'ginteractions':
                && mv 'matrix.${outputSingleMultiple_conditional.outputFormat_conditional.outputFormat_selector}.tsv' matrix_out

            #else:
                && mv "matrix.$outputSingleMultiple_conditional.outputFormat_conditional.outputFormat_selector" matrix_out
            #end if
        #end if


        ### Set up links to matrices to have correct ending
        #if $outputSingleMultiple_conditional.outputSingleMultiple_selector == 'multipleMatrix':
            #if $outputSingleMultiple_conditional.resolutionOrManyToOne_conditional.resolutionOrManyToOne_selector == 'resolution_option':
                #set xml_path = $outputSingleMultiple_conditional.resolutionOrManyToOne_conditional.inputFormat_conditional
                #if $xml_path.inputFormat_selector == 'optionCool':
                    ln -s "$xml_path.matrix_h5_cooler" "matrix.cool" &&
                #end if

                #if $xml_path.inputFormat_selector == 'optionH5':
                    ln -s "$xml_path.matrix_h5_cooler" "matrix.h5" &&

                #end if

                #if $xml_path.inputFormat_selector == 'optionHomer':
                    ln -s "$xml_path.matrix_h5_cooler" "matrix.homer" &&

                #end if

                #if $xml_path.inputFormat_selector == 'optionHicpro':
                    ln -s "$xml_path.matrix_h5_cooler" "matrix.hicpro" &&
                    ln -s "$xml_path.bedHicpro" "matrix.bed" &&

                #end if
                #if $xml_path.inputFormat_selector == 'optionHic':
                    ln -s "$xml_path.matrix_h5_cooler" "matrix.hic" &&

                #end if
            #else:
                #set xml_manyToOne = $outputSingleMultiple_conditional.resolutionOrManyToOne_conditional
                #if $xml_manyToOne.inputFormat_conditional.inputFormat_selector == 'optionCool':
                    #for $counter, $m in enumerate($xml_manyToOne.matrix_h5_cooler_multiple):
                        ln -s '$m' "${counter}_matrix.cool" &&
                    #end for
                    #set $m = ' '.join([ '"%s_matrix"' % $counter for $counter, $matrix in enumerate($xml_manyToOne.matrix_h5_cooler_multiple) ])

                #end if
                #if $xml_manyToOne.inputFormat_conditional.inputFormat_selector == 'optionH5':
                    #for $counter, $m in enumerate($xml_manyToOne.matrix_h5_cooler_multiple):
                        ln -s '$m' "${counter}_matrix.h5" &&
                    #end for
                    #set $m = ' '.join([ '"%s_matrix"' % $counter for $counter, $matrix in enumerate($xml_manyToOne.matrix_h5_cooler_multiple) ])
                #end if
                #if $xml_manyToOne.inputFormat_conditional.inputFormat_selector == 'optionHomer':
                    #for $counter, $m in enumerate($xml_manyToOne.matrixHomer):
                        ln -s '$m' "${counter}_matrix.homer" &&
                    #end for
                    #set $m = ' '.join([ '"%s_matrix.homer"' % $counter for $counter, $matrix in enumerate($xml_manyToOne.matrixHomer) ])
                #end if
                 #if $xml_manyToOne.inputFormat_conditional.inputFormat_selector == 'optionHicpro':
                    #for $counter, $m in enumerate($xml_manyToOne.matrixHicpro):
                        ln -s '$m' "${counter}_matrix.hicpro" &&
                    #end for
                    #set $m = ' '.join([ '"%s_matrix.hicpro"' % $counter for $counter, $matrix in enumerate($xml_manyToOne.matrixHicpro) ])

                    #for $counter, $bed in enumerate($xml_manyToOne.bedHicpro):
                        ln -s '$bed' "${counter}_matrix.bed" &&
                    #end for
                    #set $bed = ' '.join([ '"%s_matrix.bed"' % $counter for $counter, $matrix in enumerate($xml_manyToOne.bedHicpro) ])
                    --bedFileHicpro '$bed'
                #end if
            #end if


        @BINARY@
            --outputFormat mcool

            #if $outputSingleMultiple_conditional.resolutionOrManyToOne_conditional.resolutionOrManyToOne_selector == 'resolution_option':
                #set $resolutions = ' '.join([ '"%s"' % $resolution for $resolution in str($outputSingleMultiple_conditional.resolutionOrManyToOne_conditional.resolutions).split(" ") ])

                --resolutions $resolutions
                 #if $xml_path.inputFormat_selector == 'optionCool':
                    --matrices "matrix.cool"
                    --inputFormat cool
                #end if
                #if $xml_path.inputFormat_selector == 'optionH5':
                    --matrices "matrix.h5"
                    --inputFormat h5

                #end if
                #if $xml_path.inputFormat_selector == 'optionHomer':
                    --matrices "matrix.homer"
                    --inputFormat homer

                #end if
                #if $xml_path.inputFormat_selector == 'optionHicpro':
                    --matrices "matrix.hicpro"
                    --bedFileHicpro "matrix.bed"
                    --inputFormat hicpro
                #end if
                #if $xml_path.inputFormat_selector == 'optionHic':
                    --matrices "matrix.hic"
                    --inputFormat hic
                #end if
            #end if

            #if $outputSingleMultiple_conditional.resolutionOrManyToOne_conditional.resolutionOrManyToOne_selector == 'manyToOne_option':
                #if $xml_manyToOne.inputFormat_conditional.inputFormat_selector == 'optionCool':
                    --inputFormat cool
                #end if

                #if $xml_manyToOne.inputFormat_conditional.inputFormat_selector == 'optionH5':
                    --inputFormat h5
                #end if


                #if $xml_manyToOne.inputFormat_conditional.inputFormat_selector == 'optionHomer':
                    --inputFormat homer
                #end if

                #if $xml_manyToOne.inputFormat_conditional.inputFormat_selector == 'optionHicpro':
                    --inputFormat hicpro
                    --bedFileHicpro '$bed'
                #end if

                --matrices $m
            #end if
            --outFileName matrix.mcool
            && mv matrix.mcool matrix_out

        #end if


]]>
    </command>
    <inputs>

        <conditional name="outputSingleMultiple_conditional">
            <param name="outputSingleMultiple_selector" type="select" label="Choose output matrix type">
                <option value="singleMatrix" selected="True">single matrix</option>
                <option value="multipleMatrix">multiple matrix</option>
            </param>
            <when value='singleMatrix'>
                <expand macro='convertFormat_single_macro' />
                <expand macro='convertFormat_single_output_macro' />
            </when>
            <when value='multipleMatrix'>
                <conditional name="resolutionOrManyToOne_conditional">
                    <param name="resolutionOrManyToOne_selector" type="select" label="Choose input file type">
                        <option value='resolution_option' >Create out of one matrix a multi matrix with diffrerent resolutions</option>
                        <option value='manyToOne_option'>Create out of n matrices one multi matrix </option>
                    </param>
                    <when value='resolution_option'>
                        <param name='resolutions' type='text' label='To be stored resolutions'/>
                        <expand macro='convertFormat_single_macro' />
                    </when>
                    <when value='manyToOne_option'>
                        <expand macro='convertFormat_multiple_macro' />
                    </when>
                </conditional>
                <param name='storeAppliedCorrection' type="boolean" truevalue="yes" falsevalue="" label='Store applied correction factors in column count'/>
                <param name='enforceInteger' type="boolean" truevalue="yes" falsevalue="" label='Enforce integer for count column'/>
            </when>
        </conditional>
    </inputs>
    <outputs>

        <data name='output_converted_matrix' from_work_dir='matrix_out' format='cool' label='Converted matrix'>
            <filter>outputSingleMultiple_conditional.outputSingleMultiple_selector == 'singleMatrix'</filter>
            <change_format>
                <when input="outputSingleMultiple_conditional.outputFormat_conditional.outputFormat_selector" value="h5" format="h5" />
                <when input="outputSingleMultiple_conditional.outputFormat_conditional.outputFormat_selector" value="homer" format="zip" />
                <when input="outputSingleMultiple_conditional.outputFormat_conditional.outputFormat_selector" value="ginteractions" format="tsv" />
            </change_format>
        </data>
        <data name='output_converted_matrix_multi' from_work_dir='matrix_out' format='mcool' label='Converted matrix mcool'>
            <filter>outputSingleMultiple_conditional.outputSingleMultiple_selector == 'multipleMatrix'</filter>
        </data>
    </outputs>
    <tests>
        <test>
            <conditional name='outputSingleMultiple_conditional'>
                <param name='outputSingleMultiple_selector' value='singleMatrix'/>
                <conditional name='inputFormat_conditional'>
                    <param name='inputFormat_selector' value='optionCool'/>
                    <param name='matrix_h5_cooler' value='small_test_matrix.cool'/>
                </conditional>

                <conditional name='outputFormat_conditional'>
                    <param name='outputFormat_selector' value='h5'/>
                </conditional>
            </conditional>
            <output name="output_converted_matrix" ftype="h5">
                <assert_contents>
                    <has_h5_keys keys='intervals,matrix,nan_bins'/>
                </assert_contents>
            </output>
        </test>
        <test>
            <conditional name='outputSingleMultiple_conditional'>
                <param name='outputSingleMultiple_selector' value='singleMatrix'/>
                <conditional name='inputFormat_conditional'>
                    <param name='inputFormat_selector' value='optionH5'/>
                    <param name='matrix_h5_cooler' value='small_test_matrix.h5'/>
                </conditional>

                <conditional name='outputFormat_conditional'>
                    <param name='outputFormat_selector' value='cool'/>
                </conditional>
            </conditional>
            <output name="output_converted_matrix" ftype="cool">
                <assert_contents>
                    <has_h5_keys keys='bins,chroms,indexes,pixels'/>
                </assert_contents>
            </output>
        </test>
        <test>
            <conditional name='outputSingleMultiple_conditional'>
                <param name='outputSingleMultiple_selector' value='singleMatrix'/>
                <conditional name='inputFormat_conditional'>
                    <param name='inputFormat_selector' value='optionCool'/>
                    <param name='matrix_h5_cooler' value='hicConvertFormat/small_test_matrix_chr4.cool'/>
                </conditional>

                <conditional name='outputFormat_conditional'>
                    <param name='outputFormat_selector' value='homer'/>
                </conditional>
            </conditional>
            <output name="output_converted_matrix" file="hicConvertFormat/small_test_matrix_chr4.homer" ftype="zip" compare="sim_size" delta="40000"/>
        </test>
        <test>
            <conditional name='outputSingleMultiple_conditional'>
                <param name='outputSingleMultiple_selector' value='singleMatrix'/>
                <conditional name='inputFormat_conditional'>
                    <param name='inputFormat_selector' value='optionCool'/>
                    <param name='matrix_h5_cooler' value='hicConvertFormat/small_test_matrix_chr4.cool'/>
                </conditional>

                <conditional name='outputFormat_conditional'>
                    <param name='outputFormat_selector' value='ginteractions'/>
                </conditional>
            </conditional>
            <output name="output_converted_matrix" file="hicConvertFormat/small_test_matrix_chr4.ginteractions.tsv" ftype="tsv" compare="sim_size" delta="40000"/>

        </test>
        <test>
            <conditional name='outputSingleMultiple_conditional'>
                <param name='outputSingleMultiple_selector' value='multipleMatrix'/>
                <conditional name='resolutionOrManyToOne_conditional'>
                    <param name='resolutionOrManyToOne_selector' value='resolution_option'/>
                    <param name='resolutions' value='5000 10000 20000'/>
                    <conditional name='inputFormat_conditional'>
                        <param name='inputFormat_selector' value='optionH5'/>
                        <param name='matrix_h5_cooler' value='small_test_matrix.h5'/>
                    </conditional>
                </conditional>
            </conditional>
            <output name="output_converted_matrix" ftype="cool">
                <assert_contents>
                    <has_h5_keys keys='resolutions'/>
                </assert_contents>
            </output>
        </test>
    </tests>
    <help><![CDATA[
Converting between different Hi-C interaction formats
=====================================================

Conversion of Hi-C matrices of different file formats. We support the conversion of hic to cool format via hic2cool,
and homer, HicPro, h5 and cool format to h5, cool, homer or ginteractions format. Moreover, hicConvertFormat accepts multiple input files
from one format with different resolutions and creates a mcool file. Each original file is stored under a path, e.g. matrix.mcool::/resolutions/10000.
A batch computation is possible, the number of input files and output files needs to match, all input files need to be of the same format type and
all output files too.
For input and output of cooler files, special options are available, for all other formats they will be ignored.
HiCPro file format needs an additional bed file as input.

| For more information about HiCExplorer please consider our documentation on readthedocs.io_

.. _readthedocs.io: http://hicexplorer.readthedocs.io/en/latest/index.html
]]></help>
    <expand macro="citations" />
</tool>