view tools_grum.xml @ 2:21c154989717 draft default tip

"planemo upload for repository https://forgemia.inra.fr/grum/grum/-/tree/master/siwaa_recipe/galaxy_tools commit b956f127cf3e2e20dda2bb2b93ce8925eea589ef"
author siwaa
date Wed, 10 Aug 2022 12:30:47 +0000
parents 9c1c1c7f0e48
children
line wrap: on
line source

<tool id="GRUM" name="GRUM parameters estimation" version="1.3.0">
  <description>Estimate the values of parameters of the GRUM lifetime weight trajectories in livestock female model</description>
  <requirements>
    <container type="singularity">docker://registry.forgemia.inra.fr/grum/grum:1.3</container>
  </requirements>
  <command detect_errors="aggressive">
    <![CDATA[
	     #if str( $selectAction.action ) == 'getDefaultInitial':
	        #if str( $selectAction.mammalParamGet.choose ) == 'defaultGoat':
                   cp '$__tool_directory__/default/goat_parameters.json' ${parameter_values_file_only};
	        #elif str( $selectAction.mammalParamGet.choose ) == 'defaultCow':
                   cp '$__tool_directory__/default/cow_parameters.json' ${parameter_values_file_only};
	        #end if
	     #elif str( $selectAction.action ) == 'estimateParameters':
                #if str( $selectAction.mammalParamSet.choose ) == 'defaultGoat':
                   cp '$__tool_directory__/default/goat_parameters.json' mammal_parameters.json;
		   #if str( $selectAction.do_output_parameterValues ) == 'do_output_parameterValues':
                      cp '$__tool_directory__/default/goat_parameters.json' ${parameter_values_file};
		   #end if   
	           #elif str( $selectAction.mammalParamSet.choose ) == 'defaultCow':
                   cp '$__tool_directory__/default/cow_parameters.json' mammal_parameters.json;
		   #if str( $selectAction.do_output_parameterValues ) == 'do_output_parameterValues':
                      cp '$__tool_directory__/default/cow_parameters.json' ${parameter_values_file};
		   #end if   
	           #elif str( $selectAction.mammalParamSet.choose ) == 'customMammal':
                   cp ${selectAction.mammalParamSet.parameterValues_input} mammal_parameters.json;
		   #if str( $selectAction.do_output_parameterValues ) == 'do_output_parameterValues':
                     cp ${selectAction.mammalParamSet.parameterValues_input} ${parameter_values_file};
	           #end if
	        #end if
		head -n 1  ${selectAction.litter_input} > litter.csv;
		head -n 1  ${selectAction.bw_input} > bw.csv;
		#for $id in $selectAction.ids
		   grep $id ${selectAction.litter_input} >> litter.csv;
		   grep $id ${selectAction.bw_input} >> bw.csv;
		#end for
	        /bin/bash -c "Rscript --verbose /data/grum/siwaa_recipe/grum_siwaa.R litter.csv bw.csv ${selectAction.do_plot_fitted} mammal_parameters.json";

		#if str( $selectAction.do_plot_fitted ) == 'do_plot_fitted':
                   pdfunite mammal_*.pdf simulation_plots.pdf;
                   cp simulation_plots.pdf ${simulation_plots};
                #end if
	     cp estimated_parameters.csv ${estimated_parameters};
             #end if
    ]]>
  </command>
  <inputs>
    <conditional name="selectAction">
      <param name="action" type="select" label="Select the action to perform">
	<option value="estimateParameters" selected="true">estimate mammal parameters values</option>
	<option value="getDefaultInitial">get default mammal initial parameters initial values</option>
      </param>
      <when value="estimateParameters">
	<param name="litter_input" type="data" format="csv" label="Litter file" optional="false"/>
	<param name="bw_input" type="data" format="csv" label="Body weight file" optional="false"/>
	<param name="ids" type="select" checked="true" optional="false" multiple="true" label="Select a set of mammals">
	  <options from_dataset="litter_input"  separator=",">
            <column name="name" index="0"/>
            <column name="value" index="0"/>
	    <filter type="unique_value" name="unique_param" column="0"/>
	    <filter type="remove_value" value='"id"' />
	  </options>
    </param>
	<conditional name="mammalParamSet">
	  <param name="choose" type="select" label="Select the mammal parameters initial values">
	    <option value="defaultGoat" selected="true">default Goat parameters initiale values</option>
	    <option value="defaultCow">default Cow parameters initial values</option>
	    <option value="customMammal">custom Mammal parameters initial values</option>
	  </param>
	  <when value="customMammal">
	    <param name="parameterValues_input" type="data" format="json" label="Select a mammal parameters initial values file(json)"/>
	  </when>
	  <when value="defaultGoat">
	  </when>
	  <when value="defaultCow">
	  </when>
	</conditional>
	<param name="do_plot_fitted" type="boolean" checked="true" label="Plot fitted"
               truevalue="do_plot_fitted" falsevalue="do_not_plot_fitted" />
	<param name="do_output_parameterValues" type="boolean" checked="true" label="Output the parameter Values file"
               truevalue="do_output_parameterValues" falsevalue="do_not_outputParametersValues" />
      </when>
      <when value="getDefaultInitial">
	<conditional name="mammalParamGet">
	  <param name="choose" type="select" label="Select the mammal parameter values">
	    <option value="defaultGoat" selected="true">default Goat parameters initial values</option>
	    <option value="defaultCow">default Cow parameters initial values</option>
	  </param>
	  <when value="defaultGoat">
	  </when>
	  <when value="defaultCow">
	  </when>
	</conditional>	  
	</when>
      </conditional>
  </inputs>
  <outputs>
    <data format="csv" name="estimated_parameters" label="GRUM estimated parameters" >
      <filter>selectAction['action'] == 'estimateParameters'</filter>
    </data>
    <data format="pdf" name="simulation_plots" label="GRUM plots" >
      <filter>selectAction['action'] == 'estimateParameters' and selectAction['do_plot_fitted']</filter>
    </data>
    <data format="json" name="parameter_values_file_only" label="Parameters initial values" >
      <filter>selectAction['action'] == 'getDefaultInitial'</filter>
    </data>
    <data format="json" name="parameter_values_file" label="Parameters initial values" >
      <filter>selectAction['action'] == 'estimateParameters' and selectAction['do_output_parameterValues']</filter>
    </data>
  </outputs>
  <tests>
    <test>
      <conditional name="selectAction">
        <param name="action" value="estimateParameters"/>
      </conditional>
      <param name="litter_input" value="inputs/Litter_test.csv" ftype="csv" />
      <param name="bw_input" value="inputs/BW_test.csv" ftype="csv" />
      <param name="ids" value='"2004029","2005115"' />
      <conditional name="mammalParam">
	<param name="choose" value="defaultGoat"/>
      </conditional>
      <param name="do_plot_fitted" value="true" />
      <output name="estimated_parameters" ftype="csv">
	<assert_contents>
          <has_line line="&quot;ID&quot;,&quot;W0&quot;,&quot;G0&quot;,&quot;kr_1&quot;,&quot;kUa_1&quot;,&quot;kUf_1&quot;,&quot;kn_1&quot;,&quot;kmd_1&quot;,&quot;kr_2&quot;,&quot;kUa_2&quot;,&quot;kUf_2&quot;,&quot;kn_2&quot;,&quot;kmd_2&quot;" />
	  <has_line_matching expression="&quot;X2004029&quot;,.*" />
	  <has_line_matching expression="&quot;X2005115&quot;,.*" />
	  <has_n_columns n="13" sep=","/>
          <has_n_lines n="3" />
        </assert_contents>
      </output>
    </test>
  </tests>
  <help>
Inputs:
=======

- Litter for each mammal.
- Sequence of body weight of mammals.
- (optional) Initial parameter values for the estimation process, if the defaults available are not revelant.

Outputs:
========

- Estimated parameters for each goat (csv file).
- (optional) Plots of simulations with estimated parameters for each goat (pdf file).
- (optional) Initial parameters values used for the estimation process (json file)

Example:
========

- Copy to your history files BW_smalltable.csv and Litter_smalltable.csv from GRUM Datasets.
- Select default initial parameter values set, or provide one.
- Fill filenames and choose the adequate number of cores.
- And then execute (it takes around 20 minutes per goat for estimation)

  </help>
</tool>