Repository 'cutadapt'
hg clone https://toolshed.g2.bx.psu.edu/repos/lparsons/cutadapt

Changeset 27:de6cebe3c043 (2021-11-01)
Previous changeset 26:44e2cc14f75b (2021-10-21) Next changeset 28:c053d4cad713 (2021-11-27)
Commit message:
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/cutadapt commit 5eacc4a26d9cd55d1d34d1c35ab200733da6948f"
modified:
cutadapt.xml
macros.xml
added:
test-data/cutadapt_out2_cutoff.fq.gz
test-data/cutadapt_rest.json
b
diff -r 44e2cc14f75b -r de6cebe3c043 cutadapt.xml
--- a/cutadapt.xml Thu Oct 21 16:06:55 2021 +0000
+++ b/cutadapt.xml Mon Nov 01 12:14:05 2021 +0000
[
@@ -79,6 +79,10 @@
 
 -j=\${GALAXY_SLOTS:-4}
 
+#if 'json_stats' in $output_selector:
+        --json stats.json
+#end if
+
 #if str( $library.type ) == "single":
     @read1_options@
     #if 'multiple_output' in $output_selector:
@@ -158,6 +162,9 @@
 '${read1}'
 #if $paired:
     '${read2}'
+    #if $library.r2.quality_cutoff2:
+        -Q=$library.r2.quality_cutoff2
+    #end if
 #end if
 
 #if 'report' in $output_selector:
@@ -248,7 +255,7 @@
 
         <!-- Read Modification Options -->
         <section name="read_mod_options" title="Read Modification Options">
-            <param argument="--quality-cutoff" type="text" value="0" label="Quality cutoff" help=" Trim low-quality bases from 5' and/or 3' ends of each read before adapter removal. Applied to both reads if data is paired. If one value is given, only the 3' end is trimmed. If two comma-separated cutoffs are given, the 5' end is trimmed with the first cutoff, the 3' end with the second.">
+            <param argument="--quality-cutoff" type="text" value="0" label="Quality cutoff" help=" Trim low-quality bases from 5' and/or 3' ends of each read before adapter removal. Applied to both reads for paired-end data, unless a separate value for the second read is specified. If one value is given, only the 3' end is trimmed. If two comma-separated cutoffs are given, the 5' end is trimmed with the first cutoff, the 3' end with the second.">
                 <sanitizer>
                     <valid initial="string.digits"><add value="," /></valid>
                 </sanitizer>
@@ -310,6 +317,7 @@
             <option value="too_long_file">Too long reads: write reads that are too long (according to maximum length specified)</option>
             <option value="untrimmed_file">Untrimmed reads: write reads that do not contain the adapter to a separate file, instead of writing them to the regular output file (default: output to same file as trimmed)</option>
             <option value="multiple_output">Multiple output: create a separate file for each adapter trimmed (default: all trimmed reads are in a single file)</option>
+            <option value="json_stats">Statistics in JSON format</option>
         </param>
     </inputs>
 
@@ -372,8 +380,10 @@
             <filter>output_selector and 'too_long_file' in output_selector</filter>
             <expand macro="inherit_format_2" />
         </data>
-
-        <collection name="split_output" type="list" label="${tool.name} on ${on_string}: Split outputs"  >
+        <data name="json_stats" format="json" from_work_dir="stats.json" label="${tool.name} on ${on_string}: Statistics (JSON)" >
+            <filter>output_selector and 'json_stats' in output_selector</filter>
+        </data>
+        <collection name="split_output" type="list" label="${tool.name} on ${on_string}: Split outputs" format="fastqsanger" >
             <discover_datasets pattern="(?P&lt;designation&gt;.+)\.(?P&lt;ext&gt;fastq.*)" directory="split" />
             <filter>output_selector and 'multiple_output' in output_selector</filter>
         </collection>
@@ -505,8 +515,8 @@
                 <has_text text="--discard-trimmed"/>
             </assert_command>
         </test>
-        <!-- Ensure rest file output works -->
-        <test expect_num_outputs="2">
+        <!-- Ensure rest file output works, test json output -->
+        <test expect_num_outputs="3">
             <param name="input_1" ftype="fasta" value="cutadapt_rest.fa" />
             <section name="r1">
                 <repeat name="adapters">
@@ -518,8 +528,9 @@
             </section>
             <param name="output_filtering" value="default"/>
             <param name="read_modification" value="none"/>
-            <param name="output_selector" value="rest_file"/>
+            <param name="output_selector" value="rest_file,json_stats"/>
             <output name="out1" file="cutadapt_rest.out" ftype="fasta"/>
+            <output name="json_stats" file="cutadapt_rest.json" ftype="json"/>
             <output name="rest_output" file="cutadapt_rest2.out" ftype="fasta"/>
         </test>
         <!-- Ensure nextseq-trim option works -->
@@ -1082,6 +1093,70 @@
                 <has_text text="TGTAGGCCX"/>
             </assert_command>
         </test>
+        <!-- Ensure individual per adapter noindels parameter works -->
+        <test expect_num_outputs="3">
+            <param name="type" value="paired_collection" />
+            <param name="input_1">
+                <collection type="paired">
+                    <element name="forward" ftype="fastq.gz" value="bwa-mem-fastq1.fq.gz" />
+                    <element name="reverse" ftype="fastq.gz" value="bwa-mem-fastq2.fq.gz" />
+                </collection>
+            </param>
+            <section name="r1">
+                <repeat name="adapters">
+                    <conditional name="adapter_source">
+                        <param name="adapter_source_list" value="user"/>
+                        <param name="adapter" value="AGATCGGAAGAGC"/>
+                    </conditional>
+                    <param name="single_noindels" value=";noindels" />
+                </repeat>
+            </section>
+            <section name="r2">
+                <repeat name="adapters2">
+                    <conditional name="adapter_source2">
+                        <param name="adapter_source_list2" value="user"/>
+                        <param name="adapter2" value="AGATCGGAAGAGC"/>
+                    </conditional>
+                    <param name="single_noindels" value=";noindels" />
+                </repeat>
+            </section>
+            <output_collection name="out_pairs" type="paired">
+                <element name="forward" decompress="True" file="cutadapt_out1.fq.gz" ftype="fastq.gz" />
+                <element name="reverse" decompress="True" file="cutadapt_out2.fq.gz" ftype="fastq.gz" />
+            </output_collection>
+        </test>
+        <!-- Ensure specifying quality cutoff (for both reads) works -->
+        <test expect_num_outputs="3">
+            <param name="type" value="paired_collection" />
+            <param name="input_1">
+                <collection type="paired">
+                    <element name="forward" ftype="fastq.gz" value="bwa-mem-fastq1.fq.gz" />
+                    <element name="reverse" ftype="fastq.gz" value="bwa-mem-fastq2.fq.gz" />
+                </collection>
+            </param>
+            <param name="quality_cutoff" value="5" />
+            <section name="r1">
+                <repeat name="adapters">
+                    <conditional name="adapter_source">
+                        <param name="adapter_source_list" value="user"/>
+                        <param name="adapter" value="AGATCGGAAGAGC"/>
+                    </conditional>
+                </repeat>
+            </section>
+            <section name="r2">
+                <repeat name="adapters2">
+                    <conditional name="adapter_source2">
+                        <param name="adapter_source_list2" value="user"/>
+                        <param name="adapter2" value="AGATCGGAAGAGC"/>
+                    </conditional>
+                </repeat>
+                <param name="quality_cutoff2" value="15,20"/>
+            </section>
+            <output_collection name="out_pairs" type="paired">
+                <element name="forward" decompress="True" file="cutadapt_out1.fq.gz" ftype="fastq.gz" />
+                <element name="reverse" decompress="True" file="cutadapt_out2_cutoff.fq.gz" ftype="fastq.gz" />
+            </output_collection>
+        </test>
     </tests>
 
     <help><![CDATA[
b
diff -r 44e2cc14f75b -r de6cebe3c043 macros.xml
--- a/macros.xml Thu Oct 21 16:06:55 2021 +0000
+++ b/macros.xml Mon Nov 01 12:14:05 2021 +0000
[
b'@@ -1,6 +1,6 @@\n <macros>\n-    <token name="@TOOL_VERSION@">3.4</token>\n-    <token name="@VERSION_SUFFIX@">2</token>\n+    <token name="@TOOL_VERSION@">3.5</token>\n+    <token name="@VERSION_SUFFIX@">0</token>\n     <token name="@FASTQ_TYPES@">fastq.gz,fastq,fasta</token>\n     <xml name="edam_ontology">\n         <edam_topics>                                                                                  \n@@ -31,35 +31,35 @@\n \n         #for $a in $library.r1.adapters\n             #if $a.adapter_source.adapter_source_list == \'builtin\':\n-                -a \'${a.adapter_source.adapter.fields.name}\'=\'${a.adapter_source.adapter}${adapter_options.internal}\'\n+                -a \'${a.adapter_source.adapter.fields.name}\'=\'${a.adapter_source.adapter}${adapter_options.internal}${a.single_noindels}\'\n             #else if $a.adapter_source.adapter_source_list == \'file\':\n-                -a file:\'${a.adapter_source.adapter_file}${adapter_options.internal}\'\n+                -a file:\'${a.adapter_source.adapter_file}${adapter_options.internal}${a.single_noindels}\'\n             #else if str($a.adapter_source.adapter_name) != "":\n-                -a \'${a.adapter_source.adapter_name}\'=\'${a.adapter_source.adapter}${adapter_options.internal}\'\n+                -a \'${a.adapter_source.adapter_name}\'=\'${a.adapter_source.adapter}${adapter_options.internal}${a.single_noindels}\'\n             #else\n-                -a \'${a.adapter_source.adapter}${adapter_options.internal}\'\n+                -a \'${a.adapter_source.adapter}${adapter_options.internal}${a.single_noindels}\'\n             #end if\n         #end for\n         #for $aa in $library.r1.anywhere_adapters\n             #if $aa.anywhere_adapter_source.anywhere_adapter_source_list == \'builtin\':\n-                -b \'${aa.anywhere_adapter_source.anywhere_adapter.fields.name}\'=\'${aa.anywhere_adapter_source.anywhere_adapter}\'\n+                -b \'${aa.anywhere_adapter_source.anywhere_adapter.fields.name}\'=\'${aa.anywhere_adapter_source.anywhere_adapter}${aa.single_noindels}\'\n             #else if $aa.anywhere_adapter_source.anywhere_adapter_source_list == \'file\':\n-                -b file:\'${aa.anywhere_adapter_source.anywhere_adapter_file}\'\n+                -b file:\'${aa.anywhere_adapter_source.anywhere_adapter_file}${aa.single_noindels}\'\n             #else if str($aa.anywhere_adapter_source.anywhere_adapter_name) != "":\n-                -b \'${aa.anywhere_adapter_source.anywhere_adapter_name}\'=\'${aa.anywhere_adapter_source.anywhere_adapter}\'\n+                -b \'${aa.anywhere_adapter_source.anywhere_adapter_name}\'=\'${aa.anywhere_adapter_source.anywhere_adapter}${aa.single_noindels}\'\n             #else\n-                -b \'${aa.anywhere_adapter_source.anywhere_adapter}\'\n+                -b \'${aa.anywhere_adapter_source.anywhere_adapter}${aa.single_noindels}\'\n             #end if\n         #end for\n         #for $fa in $library.r1.front_adapters\n             #if $fa.front_adapter_source.front_adapter_source_list == \'builtin\':\n-                -g \'${fa.front_adapter_source.front_adapter.fields.name}\'=\'${adapter_options.internal}${fa.front_adapter_source.front_adapter}\'\n+                -g \'${fa.front_adapter_source.front_adapter.fields.name}\'=\'${adapter_options.internal}${fa.front_adapter_source.front_adapter}${fa.single_noindels}\'\n             #else if $fa.front_adapter_source.front_adapter_source_list == \'file\':\n-                -g file:\'${adapter_options.internal}${fa.front_adapter_source.front_adapter_file}\'\n+                -g file:\'${adapter_options.internal}${fa.front_adapter_source.front_adapter_file}${fa.single_noindels}\'\n             #else if str($fa.front_adapter_source.front_adapter_name) != "":\n-                -g \'${fa.front_adapter_source.front_adapter_name}\'=\'${adapter_options.internal}${fa.front_adapter_source.front_adapter}\'\n+                -g \'${fa.front_adapter_source.front_adapter_name}\'=\'${adapter_options.internal}${fa.front_adapter_source.front_adapter}${fa.single_noindels}\'\n             #el'..b'+                    <param name="single_noindels" type="boolean" truevalue=";noindels" falsevalue="" checked="false" label="Disallow indels for this adapter"/>\n                 </repeat>\n \n                 <param name="cut" argument="--cut" type="integer" value="0" optional="True" label="Cut bases from reads before adapter trimming" help="Remove bases from each read (first read only if paired). If positive, remove bases from the beginning. If negative, remove bases from the end. This is applied *before* adapter trimming." />\n@@ -300,6 +303,7 @@\n                             <param name="adapter_file2" argument="-a" format="fasta" type="data" help="Should be of datatype &quot;FASTA&quot;" label="Choose file containing 3\' adapters" />\n                         </when>\n                     </conditional>\n+                    <param name="single_noindels" type="boolean" truevalue=";noindels" falsevalue="" checked="false" label="Disallow indels for this adapter"/>\n                 </repeat>\n \n                 <repeat name="front_adapters2" title="5\' (Front) Adapters" help="Sequence of an adapter ligated to the 5\' end of the second read in each pair. The adapter and any preceding bases are trimmed. Partial matches at the 5\' end are allowed. If a \'^\' character is prepended (\'anchoring\'), the adapter is only found if it is a prefix of the read. To search for a linked adapter, separate the 2 sequences with 3 dots (ADAPTER1...ADAPTER2), see Help below.">\n@@ -321,6 +325,7 @@\n                             <param name="front_adapter_file2" argument="-g" format="fasta" type="data" help="Should be of datatype &quot;FASTA&quot;" label="Choose file containing 5\' adapters" />\n                         </when>\n                     </conditional>\n+                    <param name="single_noindels" type="boolean" truevalue=";noindels" falsevalue="" checked="false" label="Disallow indels for this adapter"/>\n                 </repeat>\n \n                 <repeat name="anywhere_adapters2" title="5\' or 3\' (Anywhere) Adapters" help="Sequence of an adapter that may be ligated to the 5\' or 3\' end of the second read in each pair. Both types of matches as described under under 3\' und 5\' Adapters are allowed. If the first base of the read is part of the match, the behavior is as with 5\' Adapters, otherwise as with 3\' Adapters. This option is mostly for rescuing failed library preparations - do not use if you know which end your adapter was ligated to!">\n@@ -342,10 +347,16 @@\n                             <param name="anywhere_adapter_file2" argument="-b" format="fasta" type="data" help="Should be of datatype &quot;FASTA&quot;" label="Choose file containing 3\' or 5\' adapters" />\n                         </when>\n                     </conditional>\n+                    <param name="single_noindels" type="boolean" truevalue=";noindels" falsevalue="" checked="false" label="Disallow indels for this adapter"/>\n                 </repeat>\n \n             <param name="cut2" argument="-U" type="integer" value="0" optional="True" label="Cut bases from the second read in each pair." help="Remove bases from the beginning or end of each read before trimming adapters. If positive, the bases are removed from the beginning of each read. If negative, the bases are removed from the end of each read." />\n-\n+            <param name="quality_cutoff2" type="text" optional="true" label="Optional separate quality cutoff for Read 2" help="Trim low-quality bases from 5\' and/or 3\' ends of each read before adapter removal. If one value is given, only the 3\' end is trimmed. If two comma-separated cutoffs are given, the 5\' end is trimmed with the first cutoff, the 3\' end with the second. Leave blank to use the same value as for Read 1">\n+                <sanitizer>\n+                    <valid initial="string.digits"><add value="," /></valid>\n+                </sanitizer>\n+                <validator type="regex">[0-9,]+</validator>\n+            </param>\n             </section>\n \n         </xml>\n'
b
diff -r 44e2cc14f75b -r de6cebe3c043 test-data/cutadapt_out2_cutoff.fq.gz
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cutadapt_out2_cutoff.fq.gz Mon Nov 01 12:14:05 2021 +0000
b
b'@@ -0,0 +1,396 @@\n+@M01368:8:000000000-A3GHV:1:1101:6911:8255/2\n+TC\n++\n+1>\n+@M01368:8:000000000-A3GHV:1:1101:14518:9998/2\n+CATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGGGTGTGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTCCTGCCTCATCCTATTATTTATCGCACCTACGTTCAATATTACAGGCGAACATACTTACTAAAGTGTGTTAATTAATTAATGCTTGTAGGACATAATAATA\n++\n+CCCCCFCCCCCFGGGGGGGGGGHHHHHHHHHHHHHHHHGFHHHHGGGGGHGFHHHHHHHHHHHHHHHHHHHGHGGEHGGGGCGGGHHGGCGGGGGHHGHHHGGGGGGGG.BFFFGAGADFGAFDGFGGCFFF;DDFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFF09FFFE00;BE@;DABBFFFFFBBFB00;F:9;FFBFFF9BFFFFFFFFFFFFF90/::BFFFBF\n+@M01368:8:000000000-A3GHV:1:1101:18422:19051/2\n+CTACAAGCATTAATTAATTAACACACTTTAGTAAGTATGTTCGCCTGTAATATTGAACGTAGGTGCGATAAATAATAGGATGAGGCAGGAATCAAAGACAGATACTGCGACATAGGGTGCTCCGGCTCCAGCGTCTCGCAATGCTATCGCGTGCACACCCCCCAGACGAAAATACCAAATGCATGGAGAGCTCCCGTGAGTGGTTAATAGGGGGATAGACCTGTGATCCATCGTGATGTCTTATTTAAGGG\n++\n+BCCCCFFCFFFFGGGGGGGGGGHHHGHHHHHHHHHHHHHHHHGGGGHHHHHHHHEHHHHHHHGGHHGGHGGHHHHHHHGHGGHHHGGGGGHGHHHHGGGHFHFHHHHHGGGGGHBFFCGDHHHGGGGGGHGGGGGGHHGCGGGFGHHBGGGGGFFFHEGGGGGCDCCE@EFGHHHHFHEGHGFFHHGB;ECBFGGGEFEFFGF0AFGFGFFG.;;DFFFFFFFFFF090BFFFE?FEFBBFBFFFB990BF\n+@M01368:8:000000000-A3GHV:1:1101:25545:21098/2\n+GCCCATAACACTTGGGGGTAGCTAAAGTGAACTGTATCCGACATCTGGTTCCTACTTCAGGGTCATAAAACCTAAATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGGGTGTTCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCAACCTATGTCGCAGTATCTGTCTTTGAT\n++\n+3AAA34BFFFFFGCGGCGGGCGHHHGHHHHCGHFGHFHGFGGCDGGBD5FGFFFHFHGGGHAEBFGHHHEHGGFHBGGFHHHGGGEEFHHHFHFFHDHGHGHHHHFFHHGGFAEGFFFFFBGHHHFFHHHHHHHFHFHHFHGFHGHGA/<@EFHEHH1GGHFFFHG1>=FGHFHGF.GE//-<BB?9.9BFFFB==AA/FFFFFA-@BA.;;D?F9FAB;---./99BFFFBBAE-.9B/BFB9F/9BFBB\n+@M01368:8:000000000-A3GHV:1:1101:5446:12248/2\n+ATCCGACATCTGGTTCCTACTTCAGGGTCATAAAACCTAAATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGGGTGTGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTCCTGCCTCATCCTATTATTTATCGCACCTACGT\n++\n+CCDDDCCCCFFFGGGGGGGGGGHHHHHGHHHHHHHHGHHHHHHGHHHHGGGGHHHHHHHHHHHHHHHHHHHHHHGGGGGHHHHHHHGFGHHHHHHHHHHHHHHHHHGHHHHHGGGGGHHHHHHHHHHHHHHHGHHHHHHGHGHGHHGGGGGGGGGGGFFFFFFFFFFFFFFAFFFFFFFFFFFFFBFC?.EAFFFFFFFFAFFFFFFFFFFFFFFFEFFFF0FFFFFFF0BFFFFFFFFF?.BDCFFEDA\n+@M01368:8:000000000-A3GHV:1:1101:5861:6452/2\n+TTATCCGACATCTGGTTCCTACTTCAGGGTCATAAAACCTAAATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGGGTGTGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTCCTGCCTCATCCTATTATTTATCGCACCT\n++\n+BCCCCFBBCCCFGGGGGGGGGGHHHHHHHHHHHHHHHHGHHHHHHHHHHHGGGGHHHHHHHHGHHHHHHHHHHHHHGGHGGHHHHHHHGHHHHHHHHHHHHHHHHHHHGGHHHHGGGGGGEHGHHHHHHHHHHHGHHHHHHGHGHGHGGGGCGGGGGFFFFFFFFFFFFFFFFFFFFFFFF?FFEAF:DAEF9DEFFFFFFF-A.BFFFFFEFFFFEFFFFFFFF0FFEB0FFFFBFFFFFFADEFCF\n+@M01368:8:000000000-A3GHV:1:1102:10403:6021/2\n+GGATGAGGCAGGAATCAAAGACAGATACTGCGACATAGGGGGCTCCGGCTCCAGCGTCTCGCAATGCTATCGCGGGCACACCCCCCAGACGAAAATACCAAATGCATGGAGAGCTCCCGTGAGAGGTTAATAGGGGGATAGACCTGTGATCCATCGTGATGTCTTATTTAAGGGGAACGTGTGGGCTATTTAGGTTTTATGACGCTGAAGTAGGAACCAGATGTCGGATACAGTTGACTTTAGGTAACCC\n++\n+AA?A34BF>AADEBGGGGFFCGGHHA5DFGAE?AAEDFHG2AEE1FBE00A1BGE0?E1FFGEEEGB4F43?EE/>///F??//@BCBAC<<BAGHB?11F/FGFGGBFBGBD.11><.<<<C0<A</<<=0GFHC@-.;FF09BFFGB00B0;FE.C/:CCF0;0C0;BBBFF@.9AF.:9EFF.;.BFF/FF/;/./BFB/..;;ABF/9FF//.;AAF9BBBA;-A.B/9///9/BF////;///:9\n+@M01368:8:000000000-A3GHV:1:1102:10677:23253/2\n+AATTAACACACTTTAGTAAGTATGTTCGCCTGTAATATTGAACGTAGGTGCGATAAATAATAGGATGAGGCAGGAATCAAAGACAGATACTGCGACATAGGGTGCTCCGGCTCCAGCGTCTCGCAATGCTATCGCGTGCACACCCCCCAGACGAAAATACCAAATGCATGGAGAGCTCCCGTGAGTGGTTAATAGGGTGATAGACCTGTGATCCATCGTGATGTCTTATTTAAGGCTGTCTCTTATACA\n++\n+CDDDDFFFFCCFGGGGGGGGGGHHHHHGGGGHHHHHHHHHHHHHHHHGGHHGGHGGHHHHHHGHGHGHHHGGGGGGGGHHHHHFHHHFHHHHGGGGGGHHGHHGGHHHGGGCGGHFFFGGGHHGGGFHHGHHHGGGCGGHFHHGGGGGGFHGC<@GGHGHHCHE00:CFHHHFGACGFFEG:D.E;FG;EFBBFGGGFEE0CBBBFFGBFFGFGFFFFFFFF0:B0:BFFFFFFF/0.;:0F0B:BFFF\n+@M01368:8:000000000-A3GHV:1:1102:13809:1733/2'..b'GATCCTGTCTCTTATACACATCTGA\n++\n+BCCCBFFFFFFFGGGGGGGGGGHHHHHFHHHGHHHGFGHGGHGGHHHHHHGHHHHHHHGGGGFHHHHHHEGHHHHHHHHFGGFCGEHFHFGEGHHHFGGGGGHHHGGGEHGGGGGHHHHHHGDCCCGHHHHDGGGGCD/FCC-><FGFGEHEBDF0DGFFFFGGFFHCE.;.A;CF0;BFBFFGF/9C0;0CFGGF0F09FGGGFFFBBFEFFFB0FFEF0;\n+@M01368:8:000000000-A3GHV:1:1113:25528:14016/2\n+GTATCCGACATCTGGTTCCTACTTCAGGGTCATAAAACCTAAATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGGGTGTGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTCCTGCCTCATCCTATTATTTATCGCACCTAC\n++\n+BAABCFCCCCCFGGGGGGGGGGHHHHHHHHHHHHHHHHGHGHHHHHHHHHGGGGHHHHHHHHHFHHHHHHHHHHHHGGGGGHHHHHHHGHHHHHHHHHHGGHHHHGHHGGHHHEGGGGGHHHHHHHHHGHHHHHGHHHHHGGHGHGHHGGGGGGGGGFEACFFFFFFFFFFFFFFFDFFFAFFFFBFAB@EFAAEFFFFF.ACF.BBFFEBFFFEB;FFFFFFFA/BFBFBBBFFFBFFFFFED.>DFFF\n+@M01368:8:000000000-A3GHV:1:1113:5741:16959/2\n+GTATCCGACATCTGGTTCCTACTTCAGGGTCATAAAACCTAAATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGGGTGTGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTCCTGCCTCATCCTATTATTTATCGCACCTAC\n++\n+BBBBCFCCCCCFGGGGGGGGGGHHHHHHHGHHHHHHHHGHHHHGHDGHHHGGGGHHHHHHHHHHHHHHHGHHHHHGGGEGGHHHHFHHHHHHHHHHHHHHHHHHHHHHGHHGHHGGGGGHHHHHHHHHHHGHHHFHHHHHHGHGHGHGGGGCGGFGGFFFFFFFFFFFFFBFFFFFFFFFFFFFFAFFFFEAEFFFFFFFFFFF9BFFBFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFADAB-/BF\n+@M01368:8:000000000-A3GHV:1:1114:10130:11959/2\n+ATCAGAGACAGATACTGCGACATAGGGTGCTCCGGCTCCAGCGTCTCGCAATGCTATCGCGTGCACACCCCCCAGACGAAAATACCAAATGCATGGAGAGCTCCCGTGAGTGGTTAATAGGGTGATAGACCTGTGATCCATCGTGATGTCTTATTTAAGGGGAACGCTGTCTCTTATACACATCTGACGCTGCCGACGAGCGATCTAGT\n++\n+BCCDDFFFFFFFGGGGGGGGGGGHHHHHGGHHHGGGCGGHGHGGGGHHGGGGHHHHHHGGGEGGHHHFGGGGG?E1FE?/EEHHHHHGHHGHHHHGHFHGHGHHGDGGFG2FF2?GHHHHHGCCCFHGHGHHHHGHHFEHHFGHHGHH<1=DGHHHGHHGHGAGAEEDG.CGCGHC0CGBFHGFBBF0ABDDEFF@?--:BB@.;:BF;\n+@M01368:8:000000000-A3GHV:1:1114:14540:5315/2\n+CACTTGGGGGTAGCTAAAGTGAACTGTATCCGACATCTGGTTCCTACTTCAGGGTCATAAAACCTAAATAGCCCACACGTTCCCCTTAAATAAGACATCACGATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGGGTGTGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTCCTGCC\n++\n+CCCCCFFCCDCCGGGGGGGGGGHHHHHHHHHGGGGGHHHHHHHHHHHHHHHHHHHGHHHHHHHGHHHHFHFHHHGGGGGHHHHHHHHHHHHHGHHHHHHHHGGGGGGHHHFHHHGHHHHHHHHHHHHHHHHHHGHGHHHGGGFGHHHHHHHHFHHHHHF?1FHHGHGHGHGHHGGFFFFDBFBE;BCC.:BFFFFFFFFFFFFFF;AFFFFF-=-.AEDEFFFFF..9A;9FFFF0FFFFE00FFF0:BA\n+@M01368:8:000000000-A3GHV:1:1114:15066:16302/2\n+TTATTATTATGTCCTACAAGCATTAATTAATTAACACACTTTAGTAAGTATGTTCGCCTGTAATATTGAACGTAGGTGCGATAAATAATAGGATGAGGCAGGAATCAAAGACAGATACTGCGACATAGGGTGCTCCGGCTCCAGCGTCTCGCAATGCTATCGCGTGCACACCCCCCAGACGAAAATACCAAATGCATGGAGAGCTCCCGTGAGTGGTTAATAG\n++\n+CCCCCFFFFFFFGGGGGGGGGGHHHHHHHHHHHHHHHDGHHHHFHHGHHGHHHHHGGGGEHHHHFHHFF5FHHFEGHHHGDHGGHGHGFGGGEHFGHHGGGGGHGHHHGHHFHHB3FGHHFGGGG?GFFHCCEBGFFECCDFEGFCFGCHHGFDDHHHGHHCFGGGGGFBFDGFG?-:..AFG.-C0C009;:00;00:9/:CEFFF?AE::9;9?0:FEF0;\n+@M01368:8:000000000-A3GHV:1:1114:16639:15258/2\n+TTATTATTATGTCCTACAAGCATTAATTAATTAACACACTTTAGTAAGTATGTTCGCCTGTAATATTGAACGTAGGTGCGATAAATAATAGGATGAGGCAGGAATCAAAGACAGATACTGCGACATAGGGTGCTCCGGCTCCAGCGTCTCGCAATGCTATCGCGTGCGCACCCCCCAGACGAAAATACCAAATGCATGGAGAGCTCCCGTGAGTGGTTAATAGGGGGATAGACCTGTGATCCATCGTGAT\n++\n+CDCCCFFFFFFFGGGGGGGGGGHHHHHHHHHHHHHHHHGHHHHHHHHGHHHHHHGGGGGHGIHHHIH5DEGHHHF?FGHGGHGGHEGGHFHHGHGEHHGGGGGFFFGHFBG2GHEBGHHGHGGEG/GFGABEDFGHEED?GGHHFFGGGCFEGD/GFHFFGEFGCGG?CC??D-EF@EEEFGCDDBBFGGGEBBFFF09090A.BFGA.9CCA0;EBAB00BBFF.@-./;BB;BFFF0:00099AAFFF\n+@M01368:8:000000000-A3GHV:1:1114:2404:13066/2\n+ATGGATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCATTTGGTATTTTCGTCTGGGGGGTGTGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTCCTGCCTCATCCTATTATTTATCGCACCTACGTTCAATATTACAGGCGACCATACTTACTAAAGTGTGTTAATTAATTAATGCTTGTAGGACTGTCTCTTATACACAT\n++\n+CCCCCFFFFFFCGGGGGGGGGGHHHHHHHHHFFHHHHGGGGGHFFFHHFHHHHHHHHHHHHHHHGFEGGGHGEDFCDFHGHFG@@DGGHHHHHHGGGGCGGGGGEHGGCGBB?CF99EGFGGFGG?D9CFFFF/BBFFFFFEF9BFFAFFFFEFFFFFFFFFFFFFFFFFFFFF.FFBBFFFFFFFFFFFF-9;;;BFFFFFB9BFBFBFABFFEFFFFFFFFFF::BFFBFFFF.9//;FFFFF/BFFB\n'
b
diff -r 44e2cc14f75b -r de6cebe3c043 test-data/cutadapt_rest.json
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cutadapt_rest.json Mon Nov 01 12:14:05 2021 +0000
[
@@ -0,0 +1,85 @@
+{
+  "tag": "Cutadapt report",
+  "schema_version": [0, 1],
+  "cutadapt_version": "3.5",
+  "python_version": "3.9.7",
+  "command_line_arguments": [
+    "-j=1",
+    "--json",
+    "stats.json",
+    "-a",
+    "AAAGATG",
+    "--rest-file=rest_output.fa",
+    "--output=out1.fa",
+    "--error-rate=0.1",
+    "--times=1",
+    "--overlap=3",
+    "--action=trim",
+    "cutadapt_rest_fa.fa"
+  ],
+  "cores": 1,
+  "input": {
+    "path1": "cutadapt_rest_fa.fa",
+    "path2": null,
+    "paired": false
+  },
+  "read_counts": {
+    "input": 5,
+    "filtered": {
+      "too_short": null,
+      "too_long": null,
+      "too_many_n": null,
+      "too_many_expected_errors": null,
+      "casava_filtered": null,
+      "discard_trimmed": null,
+      "discard_untrimmed": null
+    },
+    "output": 5,
+    "reverse_complemented": null,
+    "read1_with_adapter": 5,
+    "read2_with_adapter": null
+  },
+  "basepair_counts": {
+    "input": 97,
+    "input_read1": 97,
+    "input_read2": null,
+    "quality_trimmed": null,
+    "quality_trimmed_read1": null,
+    "quality_trimmed_read2": null,
+    "output": 35,
+    "output_read1": 35,
+    "output_read2": null
+  },
+  "adapters_read1": [
+    {
+      "name": "1",
+      "total_matches": 5,
+      "on_reverse_complement": null,
+      "linked": false,
+      "five_prime_end": null,
+      "three_prime_end": {
+        "type": "regular_three_prime",
+        "sequence": "AAAGATG",
+        "error_rate": 0.1,
+        "indels": true,
+        "error_lengths": [7],
+        "matches": 5,
+        "adjacent_bases": {
+          "A": 0,
+          "C": 0,
+          "G": 5,
+          "T": 0,
+          "": 0
+        },
+        "dominant_adjacent_base": null,
+        "trimmed_lengths": [
+          {"len": 7, "expect": 0.0, "counts": [1]},
+          {"len": 12, "expect": 0.0, "counts": [1]},
+          {"len": 14, "expect": 0.0, "counts": [2]},
+          {"len": 15, "expect": 0.0, "counts": [1]}
+        ]
+      }
+    }
+  ],
+  "adapters_read2": null
+}