changeset 30:e098e839ff97 draft default tip

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/ncbi_acc_download commit 1531ae67584525f6eeec71a72d7861f4ad48f96a-dirty"
author dfornika
date Mon, 02 Dec 2019 23:04:09 +0000
parents 94aa25f863d6
children
files ncbi_acc_download.xml test-data/accessions
diffstat 1 files changed, 85 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/ncbi_acc_download.xml	Fri Nov 29 23:31:08 2019 +0000
+++ b/ncbi_acc_download.xml	Mon Dec 02 23:04:09 2019 +0000
@@ -8,22 +8,36 @@
     </requirements>
     <command detect_errors="exit_code"><![CDATA[
         #if $query_source.select == "accession_file":
-            grep -v "^[ \t]*$" $query_source.accession_file > accessions &&
+            { grep -v "^[ \t]*$" $query_source.accession_file > accessions ||
+            { echo "No accession numbers in input. Aborting." 1>&2; exit 1; } } &&
         #else if $query_source.select == "accession_list":
             echo '$query_source.accession_list' | sed -r 's/(\,|__cn__)/\n/g' | grep -v "^[ \t]*$" > accessions &&
         #end if
         mkdir outdir &&
         cd outdir &&
+        ignore_errors=$ignore_failed &&
         while read accession; do
-        echo "Downloading accession number: " \$accession &&
+        echo "Downloading accession number: " \$accession " ..." >> ../error.log &&
         ncbi-acc-download
             --molecule '${molecule.select}'
             --format '${molecule.format}'
             #if $molecule.format != 'featuretable' and $molecule.format != 'gff3':
                 --extended-validation all
             #end if
-            \${accession} || echo \$accession >> ../failed.txt && sleep 2;
-        done < ../accessions 2> >(tee -a ../error.log >&2)
+            \${accession};
+        failure=\$?;
+        if [ \$failure -ne 0 ]; then
+            echo " failed." >> ../error.log;
+            if [ \$ignore_errors -ne 0 ]; then
+                echo \$accession >> ../failed.txt;
+            else
+                exit 1;
+            fi;
+        else
+            echo " done." >> ../error.log;
+        fi;
+        sleep 2;
+        done < ../accessions 2> >(tee -a ../error.log >&2);
     ]]></command>
     <inputs>
         <conditional name="query_source">
@@ -35,7 +49,9 @@
                 <param label="Accession File" name="accession_file" type="data" format="txt,tabular"/>
             </when>
             <when value="accession_list">
-                <param label="ID List" name="accession_list" type="text" area="true" help="Newline/Comma separated list of IDs"/>
+                <param label="ID List" name="accession_list" type="text" area="true" help="Newline/Comma separated list of IDs">
+                    <validator type="expression" message="ID list cannot be empty">value.strip()</validator>
+                </param>
             </when>
         </conditional>
         <conditional name="molecule">
@@ -57,6 +73,11 @@
                 </param>
             </when>
         </conditional>
+        <param name="ignore_failed" type="select" display="radio"
+        label="How to handle download failures">
+            <option value="0">Abort with error on first failure</option>
+            <option value="1">Add accession to failed list and continue</option>
+        </param>
     </inputs>
     <outputs>
         <collection name="output" type="list" label="${tool.name} on ${on_string}: Downloaded Files">
@@ -65,8 +86,10 @@
             <discover_datasets pattern="(?P&lt;name&gt;.+)\.gff$" directory="outdir" format="gff"/>
             <discover_datasets pattern="(?P&lt;name&gt;.+)\.ft$" directory="outdir" format="txt"/>
         </collection>
-        <data name="error_log" from_work_dir="error.log" label="${tool.name} on ${on_string}: Error Log" format="txt"/>
-        <data name="failed_accessions" from_work_dir="failed.txt" label="${tool.name} on ${on_string}: Failed accessions" format="txt"/>
+        <data name="error_log" from_work_dir="error.log" label="${tool.name} on ${on_string}: Log" format="txt"/>
+        <data name="failed_accessions" from_work_dir="failed.txt" label="${tool.name} on ${on_string}: Failed accessions" format="txt">
+            <filter>str(ignore_failed)=='1'</filter>
+        </data>
     </outputs>
     <tests>
         <test>
@@ -186,6 +209,61 @@
             </conditional>
             <conditional name="query_source">
                 <param name="select" value="accession_list" />
+                <param name="accession_list" value="CP011064,CP0XXXXX,CP021680"/>
+            </conditional>
+            <param name="ignore_failed" value="1" />
+            <output_collection name="output" type="list">
+                <element name="CP011064" ftype="fasta">
+                    <assert_contents>
+                        <has_line line=">CP011064.1 Escherichia coli str. Sanji plasmid pSJ_94, complete sequence" />
+                    </assert_contents>
+                </element>
+                <element name="CP021680" ftype="fasta">
+                    <assert_contents>
+                        <has_line line=">CP021680.1 Escherichia coli strain AR_0162 plasmid tig00002623, complete sequence" />
+                    </assert_contents>
+                </element>
+            </output_collection>
+            <output name="failed_accessions">
+                <assert_contents>
+                    <has_line line="CP0XXXXX" />
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <conditional name="molecule">
+                <param name="select" value="nucleotide"/>
+                <param name="format" value="fasta"/>
+            </conditional>
+            <conditional name="query_source">
+                <param name="select" value="accession_list" />
+                <param name="accession_list" value="CP0XXXXX"/>
+            </conditional>
+            <param name="ignore_failed" value="1" />
+            <output name="failed_accessions">
+                <assert_contents>
+                    <has_line line="CP0XXXXX" />
+                </assert_contents>
+            </output>
+        </test>
+        <test expect_failure="true">
+            <conditional name="molecule">
+                <param name="select" value="nucleotide"/>
+                <param name="format" value="fasta"/>
+            </conditional>
+            <conditional name="query_source">
+                <param name="select" value="accession_list" />
+                <param name="accession_list" value="CP011064,CP0XXXXX,CP021680"/>
+            </conditional>
+            <param name="ignore_failed" value="0" />
+        </test>
+        <test>
+            <conditional name="molecule">
+                <param name="select" value="nucleotide"/>
+                <param name="format" value="fasta"/>
+            </conditional>
+            <conditional name="query_source">
+                <param name="select" value="accession_list" />
                 <param name="accession_list" value="CP011064&#10;CP021680"/>
             </conditional>
             <output_collection name="output" type="list">