Mercurial > repos > mnhn65mo > netcdf_handler
view netcdf_read.xml @ 0:8da8ec7da45f draft default tip
Uploaded
author | mnhn65mo |
---|---|
date | Thu, 02 Aug 2018 09:24:38 -0400 |
parents | |
children |
line wrap: on
line source
<tool id="netcdf_read" name="Netcdf Reader" version="0.2.0"> <description>extracts variable values with custom conditions on dimensions</description> <requirements> <requirement type="package" version="2.1.0">matplotlib</requirement> <requirement type="package" version="1.3.1">netCDF4</requirement> <requirement type="package" version="1.0.0">scipy</requirement> <requirement type="package" version="1.1.0">datamash</requirement> </requirements> <command detect_errors="exit_code"><![CDATA[ mkdir output_dir && #if $condi_source_coord.coord_source=="coord_from_file" i=0 && re='^[-+]?[0-9]+\.?[0-9]*$' && while read line; do lat=\$(echo \$line | cut -d' ' -f1) lon=\$(echo \$line | cut -d' ' -f2) && if ! [[ \$lat =~ \$re ]] || ! [[ \$lon =~ \$re ]] ; then continue ;fi && i=\$((\$i+1)) && python '$__tool_directory__/netcdf_read.py' '$input' '$var_tab' $var #for $i,$uc in enumerate($user_choice) #if $uc.condi_between.comparator=="bi" ${uc.dim} ${uc.condi_between.comparator} ${uc.condi_between.t1}-${uc.condi_between.t2} #elif $uc.condi_between.comparator=="be" ${uc.dim} ${uc.condi_between.comparator} ${uc.condi_between.t1}-${uc.condi_between.t2} #else ${uc.dim} ${uc.condi_between.comparator} ${uc.condi_between.value} #end if #end for '$condi_source_coord.lat_dim' \$lat '$condi_source_coord.lon_dim' \$lon && cat 'header' | sed 's/array(\[//g' | sed 's/], dtype=float32)//g'| sed 's/,\s/_/g' | sed 's/(//g' | sed 's/)//g' > 'header_cleaned' && cat 'header_cleaned' 'sortie.tabular' > 'supersortie.tabular' && datamash transpose < 'supersortie.tabular' > 'supersortie_transposed.tabular' && sed -i 's/_/\t/g' 'supersortie_transposed.tabular' && cat 'header_names' 'supersortie_transposed.tabular' | sed 's/\s/\t/g' > 'output_dir/coord'\$i'.tabular'; done<'$coord_tabular' #else python '$__tool_directory__/netcdf_read.py' '$input' '$var_tab' $var #for $i,$uc in enumerate($user_choice) #if $uc.condi_between.comparator=="bi" ${uc.dim} ${uc.condi_between.comparator} ${uc.condi_between.t1}-${uc.condi_between.t2} #elif $uc.condi_between.comparator=="be" ${uc.dim} ${uc.condi_between.comparator} ${uc.condi_between.t1}-${uc.condi_between.t2} #else ${uc.dim} ${uc.condi_between.comparator} ${uc.condi_between.value} #end if #end for #if $condi_source_coord.condi_coord.coord=='yes_cust_coord' $condi_source_coord.condi_coord.lat_dim $condi_source_coord.condi_coord.lat_val $condi_source_coord.condi_coord.lon_dim $condi_source_coord.condi_coord.lon_val #end if && cat 'header' | sed 's/array(\[//g' | sed 's/], dtype=float32)//g'| sed 's/,\s/_/g' | sed 's/(//g' | sed 's/)//g' > 'header_cleaned' && cat 'header_cleaned' 'sortie.tabular' > 'supersortie.tabular' && datamash transpose < 'supersortie.tabular' > 'supersortie_transposed.tabular' && sed -i 's/_/\t/g' 'supersortie_transposed.tabular' && cat 'header_names' 'supersortie_transposed.tabular' | sed 's/\s/\t/g' > 'final.tabular' #end if ]]></command> <inputs> <param type="data" name="input" label="Input netcdf file" format="netcdf,h5"/> <param type="data" label="Tabular of variables" name="var_tab" format="tabular" help="Select the tabular file which summarize the available variables and dimensions."/> <param name="var" type="select" label="Chose the variable to extract"> <options from_dataset="var_tab"> <column name="name" index="0"/> <column name="value" index="0"/> <column name="n_dim" index="1"/> </options> </param> <conditional name="condi_source_coord"> <param name="coord_source" type="select" label="Source of coordinates"> <option value="coord_from_file">Use coordinates from input file</option> <option value="coord_from_stdin">Manually enter coordinate</option> </param> <when value="coord_from_file"> <param type="data" label="Tabular of coord" name="coord_tabular" format="tabular" help="Format : Latitude Longitude"/> <param name="lat_dim" type="select" label="Select latitude" > <options from_dataset="var_tab"> <column name="value" index="0"/> </options> </param> <param name="lon_dim" type="select" label="Select longitude" > <options from_dataset="var_tab"> <column name="value" index="0"/> </options> </param> </when> <when value="coord_from_stdin"> <conditional name="condi_coord"> <param name="coord" type="boolean" label="Search values for custom coordinates" truevalue="yes_cust_coord" checked="true" falsevalue="nope" help="Use this option to get valid values at your custom coordinates. If only NA values are availables the tool will search for the next closest coordinate until valid values."/> <when value="yes_cust_coord"> <param name="lat_dim" type="select" label="Select latitude" > <options from_dataset="var_tab"> <column name="value" index="0"/> </options> </param> <param name="lat_val" type="float" value="0" label="Latitude"/> <param name="lon_dim" type="select" label="Select longitude" > <options from_dataset="var_tab"> <column name="value" index="0"/> </options> </param> <param name="lon_val" type="float" value="0" label="Longitude"/> </when> <when value="nope"></when> </conditional> </when> </conditional> <repeat name="user_choice" title="Filter"> <param name="dim" type="select" label="Dimensions"> <options from_dataset="var_tab"> <column name="value" index="0"/> </options> </param> <conditional name="condi_between"> <param name="comparator" type="select" label="Comparator"> <option value="e">Equal</option> <option value="g">Greater</option> <option value="ge">Greater or equal</option> <option value="l">Less</option> <option value="le">Less or equal</option> <option value="be">Between-exclude ]threshold1,threshold2[</option> <option value="bi">Between-include [threshold1,threshold2]</option> </param> <when value="bi"> <param name="t1" type="float" value="0" label="Inferior threshold"/> <param name="t2" type="float" value="0" label="Superior threshold"/> </when> <when value="be"> <param name="t1" type="float" value="0" label="Inferior threshold"/> <param name="t2" type="float" value="0" label="Superior threshold"/> </when> <when value="e"> <param name="value" type="float" value="0" label="Value"/> </when> <when value="g"> <param name="value" type="float" value="0" label="Value"/> </when> <when value="ge"> <param name="value" type="float" value="0" label="Value"/> </when> <when value="l"> <param name="value" type="float" value="0" label="Value"/> </when> <when value="le"> <param name="value" type="float" value="0" label="Value"/> </when> </conditional> </repeat> </inputs> <outputs> <collection type="list" name="output"> <discover_datasets pattern="__designation_and_ext__" visible="false" format="tabular" directory="output_dir"/> <filter>condi_source_coord['coord_source'] == 'coord_from_file'</filter> </collection> <data name="simpleoutput" from_work_dir="final.tabular" format="tabular"> <filter>condi_source_coord['coord_source'] == 'coord_from_stdin'</filter> </data> </outputs> <tests> <test> <param name="input" value="dataset-ibi-reanalysis-bio-005-003-monthly-regulargrid_1510914389133.nc"/> <param name="var_tab" value="var_tab_dataset-ibi"/> <param name="var" value="phy"/> <param name="dim_tab" value="tab_dim_phy_dataset-ibi"/> <param name="coord" value="yes_cut_coord"/> <param name="lat_dim" value="latitude"/> <param name="lat_val" value="44.0"/> <param name="lon_dim" value="longitude"/> <param name="lon_val" value="-2.0"/> <param name="output" value="Test1.tabular"/> </test> <test> <param name="input" value="dataset-ibi-reanalysis-bio-005-003-monthly-regulargrid_1510914389133.nc"/> <param name="var_tab" value="var_tab_dataset-ibi"/> <param name="var" value="nh4"/> <param name="dim_tab" value="tab_dim_nh4_dataset-ibi"/> <param name="coord" value="nope"/> <param name="dim" value="time"/> <param name="comparator" value="e"/> <param name="value" value="7272.0"/> <param name="dim" value="latitude"/> <param name="comparator" value="ge"/> <param name="value" value="45.0"/> <param name="output" value="Test2.tabular"/> </test> </tests> <help><![CDATA[ **What it does** This tool extracts variable values with custom conditions on dimensions. It can use manualy given coordinates or automaticaly take them from a tabular file to filter informations. If no values are availables at a coordinate X, the tool will search the closest coordinate with a non NA value. Filter can be set on every dimension. Available filtering operations are : =, >, <, >=, <=, [interval], ]interval[. **Input** A netcdf file (.nc). Variable tabular file from 'Netcdf Metadate Info'. Tabular file with coordinates and the following structure : 'lat' 'lon'. **Outputs** A single output with values for the wanted variable if there is only one coordinate. A data collection where one file is created for every coordinate, if multiple coordinates from tabular file. ------------------------------------------------- The Netcdf Read tool can be used after the Netcdf Info. ]]></help> </tool>