From 61202b287f2ae3ea434e8b4466c496038ceb953d Mon Sep 17 00:00:00 2001 From: Frank Austin Nothaft Date: Sun, 2 Jul 2017 15:09:21 -0700 Subject: [PATCH] [ADAM-1585] Support additional Illumina FASTQ metadata. Resolves #1585, #1589. Adds regex to cover new metadata that Illumina added into FASTQ name line. Also, adds a regex to the InterleavedFastqInputFormat that checks for a wider range of supported first-of-read ending suffices. --- .../adam/io/InterleavedFastqInputFormat.java | 22 +++++++++++--- .../converters/FastqRecordConverter.scala | 7 +++-- .../resources/interleaved_fastq_sample2.ifq | 10 +++---- .../interleaved_fastq_sample2.ifq.output | 8 ++--- .../resources/interleaved_fastq_sample3.ifq | 10 +++---- .../interleaved_fastq_sample3.ifq.output | 8 ++--- .../resources/interleaved_fastq_sample4.ifq | 8 ++--- .../interleaved_fastq_sample4.ifq.output | 8 ++--- .../resources/interleaved_fastq_sample5.ifq | 24 +++++++++++++++ .../interleaved_fastq_sample5.ifq.output | 30 +++++++++++++++++++ .../FastqRecordConverterSuite.scala | 7 +++++ .../io/InterleavedFastqInputFormatSuite.scala | 2 +- 12 files changed, 111 insertions(+), 33 deletions(-) create mode 100644 adam-core/src/test/resources/interleaved_fastq_sample5.ifq create mode 100644 adam-core/src/test/resources/interleaved_fastq_sample5.ifq.output diff --git a/adam-core/src/main/java/org/bdgenomics/adam/io/InterleavedFastqInputFormat.java b/adam-core/src/main/java/org/bdgenomics/adam/io/InterleavedFastqInputFormat.java index 24b7bef32f..88bf18642b 100755 --- a/adam-core/src/main/java/org/bdgenomics/adam/io/InterleavedFastqInputFormat.java +++ b/adam-core/src/main/java/org/bdgenomics/adam/io/InterleavedFastqInputFormat.java @@ -19,6 +19,8 @@ import java.io.EOFException; import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.apache.hadoop.fs.Path; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.Text; @@ -71,6 +73,9 @@ public final class InterleavedFastqInputFormat extends FileInputFormat 2 && - buffer.getBytes()[0] == '@' && - buffer.getBytes()[bufferLength - 2] == '/' && - buffer.getBytes()[bufferLength - 1] == '1'); + if (firstReadRegex == null) { + firstReadRegex = Pattern.compile(firstReadSuffix); + } + + if (bufferLength > 2 && + buffer.getBytes()[0] == '@') { + + // attempt to match regex + Matcher bufferMatcher = firstReadRegex.matcher(buffer.toString()); + return bufferMatcher.matches(); + } else { + return false; + } } /** diff --git a/adam-core/src/main/scala/org/bdgenomics/adam/converters/FastqRecordConverter.scala b/adam-core/src/main/scala/org/bdgenomics/adam/converters/FastqRecordConverter.scala index eaf3a0628c..648aeaeb5e 100644 --- a/adam-core/src/main/scala/org/bdgenomics/adam/converters/FastqRecordConverter.scala +++ b/adam-core/src/main/scala/org/bdgenomics/adam/converters/FastqRecordConverter.scala @@ -32,7 +32,7 @@ import scala.collection.JavaConversions._ * FASTQ format is: * * {{{ - * @readName + * @readName * sequence * + * ASCII quality scores @@ -42,9 +42,12 @@ private[adam] class FastqRecordConverter extends Serializable with Logging { private val firstReadSuffix = """[/ +_]1$""" private val secondReadSuffix = """[/ +_]2$""" + private val illuminaMetadata = """ [12]:[YN]:[02468]+:[0-9]+$""" private val firstReadRegex = firstReadSuffix.r private val secondReadRegex = secondReadSuffix.r - private val suffixRegex = "%s|%s".format(firstReadSuffix, secondReadSuffix).r + private val suffixRegex = "%s|%s|%s".format(firstReadSuffix, + secondReadSuffix, + illuminaMetadata).r /** * @param readName The name of the read. diff --git a/adam-core/src/test/resources/interleaved_fastq_sample2.ifq b/adam-core/src/test/resources/interleaved_fastq_sample2.ifq index 290a1cec76..24f962cc92 100644 --- a/adam-core/src/test/resources/interleaved_fastq_sample2.ifq +++ b/adam-core/src/test/resources/interleaved_fastq_sample2.ifq @@ -1,23 +1,23 @@ GTTAGGGTTAGGGTTGGGTTAGGGTTAGGGTTAGGGTTAGGGGTAGGGTTAGGGTTAGGGGTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGGTAGGGCTAGGGTTAAGGGTAGGGTTAGCGAAAGGGCTGGGGTTAGGGGTGCGGGTACGCGTAGCATTAGGGCTAGAAGTAGGATCTGCAGTGCCTGACCGCGTCTGCGCGGCGACTGCCCAAAGCCTGGGGCCGACTCCAGGCTGAAGCTCAT + >=<=???>?>???=??>>8<=2=<===1194>?#3==>########################################################################################################################################################################################################### -@H06HDADXX130110:2:2116:3345:91806/2 +@H06HDADXX130110:2:2116:3345:91806_2 TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTACCCCTAACCCTAACCCTAACCCTAACCCGTACCCTAAACCCAACCCTAACCACAAAGCAAATCCCAACCTTAACCGGAACCCGAAATCTCGCAGCAAATCTGCAGTAGAGACGCAGACTCAACCATGCGTCTATTAGTACGCATTATCATTGCCTCATGCTTCTTAAGTACAGAGAGATGAC + ==;@@@<>>@??<>>???<=>>?>:><@?4=:>7=5=>:<=@;'@A?######################################################################################################################################################################################################## -@H06HDADXX130110:1:2103:11970:57672/1 +@H06HDADXX130110:1:2103:11970:57672_1 GGATAGGGTTAGGGTTAGGGTTAGGGCTAGGGATAGGGGTAGGGTTGGGGTTGGTCATCGGGTGTTTCTTTGTGTTTGAGGTTGATTATTGTGATGGTTAAGGTATCTAGGTATTGTAAAAGTTGGCTTTTAACTTAGAAAATTATGTCATTCTGTTCACAAGTGTTTAGATTGGTAGATAGGTACTATGCGATCACTTCCATTGGCTGAGAGTTCGATTGATTATGAGCCACGCTAGTGGTTGAGATCT + 69+26933-:7;;135,53<>7<692(?2=9:**;<=##################################################################################################################################################################################################################### -@H06HDADXX130110:1:2103:11970:57672/2 +@H06HDADXX130110:1:2103:11970:57672_2 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCGTCAAACCTTACCTCCTCCCTAGCCTCCACCCTGACCATGACACCAACCATCAGCCTTATAGAAAACCCCAGAGATGCTCTTATCCTATACCACAATTACCCCATAACGAAAGAAAGGACTGAAAACAAATAAGTAAAATTCGTACAAATTATATCTATGAGTATGTCCCTGAGTGTAGGTGTAGGTGCATCC + =>:=>@=?<>>??>;:=;:8;=(5)0-6;1:>?<>############################################################################################################################################################################################################## -@H06JUADXX130110:1:1108:6424:55322/1 +@H06JUADXX130110:1:1108:6424:55322_1 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACTCTAACCCTAACCCTAACCCTAACGGTAACCCTTACCCTTACTGTAACGCTTATCCTAAATCAAATTCTTCCTCTTAAGATCGCTGTTAAAATTAATCCTATTAGAACAGGTCTTCTGGCACCAAGTTATGTCAATATCCCTTACTCTAAACATGCCTTGATCTCTCATGCATCACTTCAGCACAGCTCTTATGGATCTAGGATCCTCAGT + =>;=?=@@=?@?@@9>7@=?=;=?@>29?=?;=>@;4@*0878;40'=@;(3399@9>7@:A############################################################################################################################################################################################ -@H06JUADXX130110:1:1108:6424:55322/2 +@H06JUADXX130110:1:1108:6424:55322_2 AGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGATAGGGCTAGGGTTAGGGATAGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTATCGATAGGGATAGGGATAGGGATAGAGTTAGGGCTATGGGTAGGGTTAGAGTCAGGGAAAGAGATAGGGATGGAGATGGGGTTAAAAAGAAGTCAAGGAATTAAGGTAGGGAAACGGTTCGAGATCTGTAAAGGGCAACGA + >>;>*9?:@??@@????@????>@?>>@>@?>?????@@???????=?;+A?@?>89?@###################################################################################################################################################################################### diff --git a/adam-core/src/test/resources/interleaved_fastq_sample2.ifq.output b/adam-core/src/test/resources/interleaved_fastq_sample2.ifq.output index 1f81505a78..700ff821b7 100755 --- a/adam-core/src/test/resources/interleaved_fastq_sample2.ifq.output +++ b/adam-core/src/test/resources/interleaved_fastq_sample2.ifq.output @@ -1,19 +1,19 @@ >>>interleaved fastq record start>>> -@H06HDADXX130110:1:2103:11970:57672/1 +@H06HDADXX130110:1:2103:11970:57672_1 GGATAGGGTTAGGGTTAGGGTTAGGGCTAGGGATAGGGGTAGGGTTGGGGTTGGTCATCGGGTGTTTCTTTGTGTTTGAGGTTGATTATTGTGATGGTTAAGGTATCTAGGTATTGTAAAAGTTGGCTTTTAACTTAGAAAATTATGTCATTCTGTTCACAAGTGTTTAGATTGGTAGATAGGTACTATGCGATCACTTCCATTGGCTGAGAGTTCGATTGATTATGAGCCACGCTAGTGGTTGAGATCT + 69+26933-:7;;135,53<>7<692(?2=9:**;<=##################################################################################################################################################################################################################### -@H06HDADXX130110:1:2103:11970:57672/2 +@H06HDADXX130110:1:2103:11970:57672_2 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCGTCAAACCTTACCTCCTCCCTAGCCTCCACCCTGACCATGACACCAACCATCAGCCTTATAGAAAACCCCAGAGATGCTCTTATCCTATACCACAATTACCCCATAACGAAAGAAAGGACTGAAAACAAATAAGTAAAATTCGTACAAATTATATCTATGAGTATGTCCCTGAGTGTAGGTGTAGGTGCATCC + =>:=>@=?<>>??>;:=;:8;=(5)0-6;1:>?<>############################################################################################################################################################################################################## <<>>interleaved fastq record start>>> -@H06JUADXX130110:1:1108:6424:55322/1 +@H06JUADXX130110:1:1108:6424:55322_1 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACTCTAACCCTAACCCTAACCCTAACGGTAACCCTTACCCTTACTGTAACGCTTATCCTAAATCAAATTCTTCCTCTTAAGATCGCTGTTAAAATTAATCCTATTAGAACAGGTCTTCTGGCACCAAGTTATGTCAATATCCCTTACTCTAAACATGCCTTGATCTCTCATGCATCACTTCAGCACAGCTCTTATGGATCTAGGATCCTCAGT + =>;=?=@@=?@?@@9>7@=?=;=?@>29?=?;=>@;4@*0878;40'=@;(3399@9>7@:A############################################################################################################################################################################################ -@H06JUADXX130110:1:1108:6424:55322/2 +@H06JUADXX130110:1:1108:6424:55322_2 AGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGATAGGGCTAGGGTTAGGGATAGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTATCGATAGGGATAGGGATAGGGATAGAGTTAGGGCTATGGGTAGGGTTAGAGTCAGGGAAAGAGATAGGGATGGAGATGGGGTTAAAAAGAAGTCAAGGAATTAAGGTAGGGAAACGGTTCGAGATCTGTAAAGGGCAACGA + >>;>*9?:@??@@????@????>@?>>@>@?>?????@@???????=?;+A?@?>89?@###################################################################################################################################################################################### diff --git a/adam-core/src/test/resources/interleaved_fastq_sample3.ifq b/adam-core/src/test/resources/interleaved_fastq_sample3.ifq index c2c4536862..3ef861af91 100644 --- a/adam-core/src/test/resources/interleaved_fastq_sample3.ifq +++ b/adam-core/src/test/resources/interleaved_fastq_sample3.ifq @@ -1,20 +1,20 @@ -@H06HDADXX130110:2:2116:3345:91806/2 +@H06HDADXX130110:2:2116:3345:91806 2 TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTACCCCTAACCCTAACCCTAACCCTAACCCGTACCCTAAACCCAACCCTAACCACAAAGCAAATCCCAACCTTAACCGGAACCCGAAATCTCGCAGCAAATCTGCAGTAGAGACGCAGACTCAACCATGCGTCTATTAGTACGCATTATCATTGCCTCATGCTTCTTAAGTACAGAGAGATGAC + ==;@@@<>>@??<>>???<=>>?>:><@?4=:>7=5=>:<=@;'@A?######################################################################################################################################################################################################## -@H06HDADXX130110:1:2103:11970:57672/1 +@H06HDADXX130110:1:2103:11970:57672 1 GGATAGGGTTAGGGTTAGGGTTAGGGCTAGGGATAGGGGTAGGGTTGGGGTTGGTCATCGGGTGTTTCTTTGTGTTTGAGGTTGATTATTGTGATGGTTAAGGTATCTAGGTATTGTAAAAGTTGGCTTTTAACTTAGAAAATTATGTCATTCTGTTCACAAGTGTTTAGATTGGTAGATAGGTACTATGCGATCACTTCCATTGGCTGAGAGTTCGATTGATTATGAGCCACGCTAGTGGTTGAGATCT + 69+26933-:7;;135,53<>7<692(?2=9:**;<=##################################################################################################################################################################################################################### -@H06HDADXX130110:1:2103:11970:57672/2 +@H06HDADXX130110:1:2103:11970:57672 2 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCGTCAAACCTTACCTCCTCCCTAGCCTCCACCCTGACCATGACACCAACCATCAGCCTTATAGAAAACCCCAGAGATGCTCTTATCCTATACCACAATTACCCCATAACGAAAGAAAGGACTGAAAACAAATAAGTAAAATTCGTACAAATTATATCTATGAGTATGTCCCTGAGTGTAGGTGTAGGTGCATCC + =>:=>@=?<>>??>;:=;:8;=(5)0-6;1:>?<>############################################################################################################################################################################################################## -@H06JUADXX130110:1:1108:6424:55322/1 +@H06JUADXX130110:1:1108:6424:55322 1 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACTCTAACCCTAACCCTAACCCTAACGGTAACCCTTACCCTTACTGTAACGCTTATCCTAAATCAAATTCTTCCTCTTAAGATCGCTGTTAAAATTAATCCTATTAGAACAGGTCTTCTGGCACCAAGTTATGTCAATATCCCTTACTCTAAACATGCCTTGATCTCTCATGCATCACTTCAGCACAGCTCTTATGGATCTAGGATCCTCAGT + =>;=?=@@=?@?@@9>7@=?=;=?@>29?=?;=>@;4@*0878;40'=@;(3399@9>7@:A############################################################################################################################################################################################ -@H06JUADXX130110:1:1108:6424:55322/2 +@H06JUADXX130110:1:1108:6424:55322 2 AGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGATAGGGCTAGGGTTAGGGATAGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTATCGATAGGGATAGGGATAGGGATAGAGTTAGGGCTATGGGTAGGGTTAGAGTCAGGGAAAGAGATAGGGATGGAGATGGGGTTAAAAAGAAGTCAAGGAATTAAGGTAGGGAAACGGTTCGAGATCTGTAAAGGGCAACGA + >>;>*9?:@??@@????@????>@?>>@>@?>?????@@???????=?;+A?@?>89?@###################################################################################################################################################################################### diff --git a/adam-core/src/test/resources/interleaved_fastq_sample3.ifq.output b/adam-core/src/test/resources/interleaved_fastq_sample3.ifq.output index 1f81505a78..773dd7c40b 100755 --- a/adam-core/src/test/resources/interleaved_fastq_sample3.ifq.output +++ b/adam-core/src/test/resources/interleaved_fastq_sample3.ifq.output @@ -1,19 +1,19 @@ >>>interleaved fastq record start>>> -@H06HDADXX130110:1:2103:11970:57672/1 +@H06HDADXX130110:1:2103:11970:57672 1 GGATAGGGTTAGGGTTAGGGTTAGGGCTAGGGATAGGGGTAGGGTTGGGGTTGGTCATCGGGTGTTTCTTTGTGTTTGAGGTTGATTATTGTGATGGTTAAGGTATCTAGGTATTGTAAAAGTTGGCTTTTAACTTAGAAAATTATGTCATTCTGTTCACAAGTGTTTAGATTGGTAGATAGGTACTATGCGATCACTTCCATTGGCTGAGAGTTCGATTGATTATGAGCCACGCTAGTGGTTGAGATCT + 69+26933-:7;;135,53<>7<692(?2=9:**;<=##################################################################################################################################################################################################################### -@H06HDADXX130110:1:2103:11970:57672/2 +@H06HDADXX130110:1:2103:11970:57672 2 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCGTCAAACCTTACCTCCTCCCTAGCCTCCACCCTGACCATGACACCAACCATCAGCCTTATAGAAAACCCCAGAGATGCTCTTATCCTATACCACAATTACCCCATAACGAAAGAAAGGACTGAAAACAAATAAGTAAAATTCGTACAAATTATATCTATGAGTATGTCCCTGAGTGTAGGTGTAGGTGCATCC + =>:=>@=?<>>??>;:=;:8;=(5)0-6;1:>?<>############################################################################################################################################################################################################## <<>>interleaved fastq record start>>> -@H06JUADXX130110:1:1108:6424:55322/1 +@H06JUADXX130110:1:1108:6424:55322 1 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACTCTAACCCTAACCCTAACCCTAACGGTAACCCTTACCCTTACTGTAACGCTTATCCTAAATCAAATTCTTCCTCTTAAGATCGCTGTTAAAATTAATCCTATTAGAACAGGTCTTCTGGCACCAAGTTATGTCAATATCCCTTACTCTAAACATGCCTTGATCTCTCATGCATCACTTCAGCACAGCTCTTATGGATCTAGGATCCTCAGT + =>;=?=@@=?@?@@9>7@=?=;=?@>29?=?;=>@;4@*0878;40'=@;(3399@9>7@:A############################################################################################################################################################################################ -@H06JUADXX130110:1:1108:6424:55322/2 +@H06JUADXX130110:1:1108:6424:55322 2 AGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGATAGGGCTAGGGTTAGGGATAGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTATCGATAGGGATAGGGATAGGGATAGAGTTAGGGCTATGGGTAGGGTTAGAGTCAGGGAAAGAGATAGGGATGGAGATGGGGTTAAAAAGAAGTCAAGGAATTAAGGTAGGGAAACGGTTCGAGATCTGTAAAGGGCAACGA + >>;>*9?:@??@@????@????>@?>>@>@?>?????@@???????=?;+A?@?>89?@###################################################################################################################################################################################### diff --git a/adam-core/src/test/resources/interleaved_fastq_sample4.ifq b/adam-core/src/test/resources/interleaved_fastq_sample4.ifq index 4f990be803..35c8414e23 100755 --- a/adam-core/src/test/resources/interleaved_fastq_sample4.ifq +++ b/adam-core/src/test/resources/interleaved_fastq_sample4.ifq @@ -1,18 +1,18 @@ + ==;@@@<>>@??<>>???<=>>?>:><@?4=:>7=5=>:<=@;'@A?######################################################################################################################################################################################################## -@H06HDADXX130110:1:2103:11970:57672/1 +@H06HDADXX130110:1:2103:11970:57672+1 GGATAGGGTTAGGGTTAGGGTTAGGGCTAGGGATAGGGGTAGGGTTGGGGTTGGTCATCGGGTGTTTCTTTGTGTTTGAGGTTGATTATTGTGATGGTTAAGGTATCTAGGTATTGTAAAAGTTGGCTTTTAACTTAGAAAATTATGTCATTCTGTTCACAAGTGTTTAGATTGGTAGATAGGTACTATGCGATCACTTCCATTGGCTGAGAGTTCGATTGATTATGAGCCACGCTAGTGGTTGAGATCT + 69+26933-:7;;135,53<>7<692(?2=9:**;<=##################################################################################################################################################################################################################### -@H06HDADXX130110:1:2103:11970:57672/2 +@H06HDADXX130110:1:2103:11970:57672+2 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCGTCAAACCTTACCTCCTCCCTAGCCTCCACCCTGACCATGACACCAACCATCAGCCTTATAGAAAACCCCAGAGATGCTCTTATCCTATACCACAATTACCCCATAACGAAAGAAAGGACTGAAAACAAATAAGTAAAATTCGTACAAATTATATCTATGAGTATGTCCCTGAGTGTAGGTGTAGGTGCATCC + =>:=>@=?<>>??>;:=;:8;=(5)0-6;1:>?<>############################################################################################################################################################################################################## -@H06JUADXX130110:1:1108:6424:55322/1 +@H06JUADXX130110:1:1108:6424:55322+1 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACTCTAACCCTAACCCTAACCCTAACGGTAACCCTTACCCTTACTGTAACGCTTATCCTAAATCAAATTCTTCCTCTTAAGATCGCTGTTAAAATTAATCCTATTAGAACAGGTCTTCTGGCACCAAGTTATGTCAATATCCCTTACTCTAAACATGCCTTGATCTCTCATGCATCACTTCAGCACAGCTCTTATGGATCTAGGATCCTCAGT + =>;=?=@@=?@?@@9>7@=?=;=?@>29?=?;=>@;4@*0878;40'=@;(3399@9>7@:A############################################################################################################################################################################################ -@H06JUADXX130110:1:1108:6424:55322/2 +@H06JUADXX130110:1:1108:6424:55322+2 AGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGATAGGGCTAGGGTTAGGGATAGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTATCGATAGGGATAGGGATAGGGATAGAGTTAGGGCTATGGGTAGGGTTAGAGTCAGGGAAAGAGATAGGGATGGAGATGGGGTTAAAAAGAAGTCAAGGAATTAAGGTAGGGAAACGGTTCGAGATCTGTAAAGGGCAACGA + >>;>*9?:@??@@????@????>@?>>@>@?>?????@@???????=?;+A?@?>89?@###################################################################################################################################################################################### diff --git a/adam-core/src/test/resources/interleaved_fastq_sample4.ifq.output b/adam-core/src/test/resources/interleaved_fastq_sample4.ifq.output index 1f81505a78..f94693dcd2 100755 --- a/adam-core/src/test/resources/interleaved_fastq_sample4.ifq.output +++ b/adam-core/src/test/resources/interleaved_fastq_sample4.ifq.output @@ -1,19 +1,19 @@ >>>interleaved fastq record start>>> -@H06HDADXX130110:1:2103:11970:57672/1 +@H06HDADXX130110:1:2103:11970:57672+1 GGATAGGGTTAGGGTTAGGGTTAGGGCTAGGGATAGGGGTAGGGTTGGGGTTGGTCATCGGGTGTTTCTTTGTGTTTGAGGTTGATTATTGTGATGGTTAAGGTATCTAGGTATTGTAAAAGTTGGCTTTTAACTTAGAAAATTATGTCATTCTGTTCACAAGTGTTTAGATTGGTAGATAGGTACTATGCGATCACTTCCATTGGCTGAGAGTTCGATTGATTATGAGCCACGCTAGTGGTTGAGATCT + 69+26933-:7;;135,53<>7<692(?2=9:**;<=##################################################################################################################################################################################################################### -@H06HDADXX130110:1:2103:11970:57672/2 +@H06HDADXX130110:1:2103:11970:57672+2 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCGTCAAACCTTACCTCCTCCCTAGCCTCCACCCTGACCATGACACCAACCATCAGCCTTATAGAAAACCCCAGAGATGCTCTTATCCTATACCACAATTACCCCATAACGAAAGAAAGGACTGAAAACAAATAAGTAAAATTCGTACAAATTATATCTATGAGTATGTCCCTGAGTGTAGGTGTAGGTGCATCC + =>:=>@=?<>>??>;:=;:8;=(5)0-6;1:>?<>############################################################################################################################################################################################################## <<>>interleaved fastq record start>>> -@H06JUADXX130110:1:1108:6424:55322/1 +@H06JUADXX130110:1:1108:6424:55322+1 AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACTCTAACCCTAACCCTAACCCTAACGGTAACCCTTACCCTTACTGTAACGCTTATCCTAAATCAAATTCTTCCTCTTAAGATCGCTGTTAAAATTAATCCTATTAGAACAGGTCTTCTGGCACCAAGTTATGTCAATATCCCTTACTCTAAACATGCCTTGATCTCTCATGCATCACTTCAGCACAGCTCTTATGGATCTAGGATCCTCAGT + =>;=?=@@=?@?@@9>7@=?=;=?@>29?=?;=>@;4@*0878;40'=@;(3399@9>7@:A############################################################################################################################################################################################ -@H06JUADXX130110:1:1108:6424:55322/2 +@H06JUADXX130110:1:1108:6424:55322+2 AGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGATAGGGCTAGGGTTAGGGATAGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTATCGATAGGGATAGGGATAGGGATAGAGTTAGGGCTATGGGTAGGGTTAGAGTCAGGGAAAGAGATAGGGATGGAGATGGGGTTAAAAAGAAGTCAAGGAATTAAGGTAGGGAAACGGTTCGAGATCTGTAAAGGGCAACGA + >>;>*9?:@??@@????@????>@?>>@>@?>?????@@???????=?;+A?@?>89?@###################################################################################################################################################################################### diff --git a/adam-core/src/test/resources/interleaved_fastq_sample5.ifq b/adam-core/src/test/resources/interleaved_fastq_sample5.ifq new file mode 100644 index 0000000000..f5ff9a64af --- /dev/null +++ b/adam-core/src/test/resources/interleaved_fastq_sample5.ifq @@ -0,0 +1,24 @@ +@H06HDADXX130110:2:2116:3345:91806 1:Y:0:0 +GTTAGGGTTAGGGTTGGGTTAGGGTTAGGGTTAGGGTTAGGGGTAGGGTTAGGGTTAGGGGTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGGTAGGGCTAGGGTTAAGGGTAGGGTTAGCGAAAGGGCTGGGGTTAGGGGTGCGGGTACGCGTAGCATTAGGGCTAGAAGTAGGATCTGCAGTGCCTGACCGCGTCTGCGCGGCGACTGCCCAAAGCCTGGGGCCGACTCCAGGCTGAAGCTCAT ++ +>=<=???>?>???=??>>8<=2=<===1194>?#3==>########################################################################################################################################################################################################### +@H06HDADXX130110:2:2116:3345:91806 2:Y:0:0 +TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTACCCCTAACCCTAACCCTAACCCTAACCCGTACCCTAAACCCAACCCTAACCACAAAGCAAATCCCAACCTTAACCGGAACCCGAAATCTCGCAGCAAATCTGCAGTAGAGACGCAGACTCAACCATGCGTCTATTAGTACGCATTATCATTGCCTCATGCTTCTTAAGTACAGAGAGATGAC ++ +==;@@@<>>@??<>>???<=>>?>:><@?4=:>7=5=>:<=@;'@A?######################################################################################################################################################################################################## +@H06HDADXX130110:1:2103:11970:57672 1:Y:0:0 +GGATAGGGTTAGGGTTAGGGTTAGGGCTAGGGATAGGGGTAGGGTTGGGGTTGGTCATCGGGTGTTTCTTTGTGTTTGAGGTTGATTATTGTGATGGTTAAGGTATCTAGGTATTGTAAAAGTTGGCTTTTAACTTAGAAAATTATGTCATTCTGTTCACAAGTGTTTAGATTGGTAGATAGGTACTATGCGATCACTTCCATTGGCTGAGAGTTCGATTGATTATGAGCCACGCTAGTGGTTGAGATCT ++ +69+26933-:7;;135,53<>7<692(?2=9:**;<=##################################################################################################################################################################################################################### +@H06HDADXX130110:1:2103:11970:57672 2:Y:0:0 +AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCGTCAAACCTTACCTCCTCCCTAGCCTCCACCCTGACCATGACACCAACCATCAGCCTTATAGAAAACCCCAGAGATGCTCTTATCCTATACCACAATTACCCCATAACGAAAGAAAGGACTGAAAACAAATAAGTAAAATTCGTACAAATTATATCTATGAGTATGTCCCTGAGTGTAGGTGTAGGTGCATCC ++ +=>:=>@=?<>>??>;:=;:8;=(5)0-6;1:>?<>############################################################################################################################################################################################################## +@H06JUADXX130110:1:1108:6424:55322 1:Y:0:0 +AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACTCTAACCCTAACCCTAACCCTAACGGTAACCCTTACCCTTACTGTAACGCTTATCCTAAATCAAATTCTTCCTCTTAAGATCGCTGTTAAAATTAATCCTATTAGAACAGGTCTTCTGGCACCAAGTTATGTCAATATCCCTTACTCTAAACATGCCTTGATCTCTCATGCATCACTTCAGCACAGCTCTTATGGATCTAGGATCCTCAGT ++ +=>;=?=@@=?@?@@9>7@=?=;=?@>29?=?;=>@;4@*0878;40'=@;(3399@9>7@:A############################################################################################################################################################################################ +@H06JUADXX130110:1:1108:6424:55322 2:Y:0:0 +AGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGATAGGGCTAGGGTTAGGGATAGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTATCGATAGGGATAGGGATAGGGATAGAGTTAGGGCTATGGGTAGGGTTAGAGTCAGGGAAAGAGATAGGGATGGAGATGGGGTTAAAAAGAAGTCAAGGAATTAAGGTAGGGAAACGGTTCGAGATCTGTAAAGGGCAACGA ++ +>>;>*9?:@??@@????@????>@?>>@>@?>?????@@???????=?;+A?@?>89?@###################################################################################################################################################################################### diff --git a/adam-core/src/test/resources/interleaved_fastq_sample5.ifq.output b/adam-core/src/test/resources/interleaved_fastq_sample5.ifq.output new file mode 100644 index 0000000000..dadf7e4cd9 --- /dev/null +++ b/adam-core/src/test/resources/interleaved_fastq_sample5.ifq.output @@ -0,0 +1,30 @@ +>>>interleaved fastq record start>>> +@H06HDADXX130110:2:2116:3345:91806 1:Y:0:0 +GTTAGGGTTAGGGTTGGGTTAGGGTTAGGGTTAGGGTTAGGGGTAGGGTTAGGGTTAGGGGTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGGTAGGGCTAGGGTTAAGGGTAGGGTTAGCGAAAGGGCTGGGGTTAGGGGTGCGGGTACGCGTAGCATTAGGGCTAGAAGTAGGATCTGCAGTGCCTGACCGCGTCTGCGCGGCGACTGCCCAAAGCCTGGGGCCGACTCCAGGCTGAAGCTCAT ++ +>=<=???>?>???=??>>8<=2=<===1194>?#3==>########################################################################################################################################################################################################### +@H06HDADXX130110:2:2116:3345:91806 2:Y:0:0 +TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTACCCCTAACCCTAACCCTAACCCTAACCCGTACCCTAAACCCAACCCTAACCACAAAGCAAATCCCAACCTTAACCGGAACCCGAAATCTCGCAGCAAATCTGCAGTAGAGACGCAGACTCAACCATGCGTCTATTAGTACGCATTATCATTGCCTCATGCTTCTTAAGTACAGAGAGATGAC ++ +==;@@@<>>@??<>>???<=>>?>:><@?4=:>7=5=>:<=@;'@A?######################################################################################################################################################################################################## +<<>>interleaved fastq record start>>> +@H06HDADXX130110:1:2103:11970:57672 1:Y:0:0 +GGATAGGGTTAGGGTTAGGGTTAGGGCTAGGGATAGGGGTAGGGTTGGGGTTGGTCATCGGGTGTTTCTTTGTGTTTGAGGTTGATTATTGTGATGGTTAAGGTATCTAGGTATTGTAAAAGTTGGCTTTTAACTTAGAAAATTATGTCATTCTGTTCACAAGTGTTTAGATTGGTAGATAGGTACTATGCGATCACTTCCATTGGCTGAGAGTTCGATTGATTATGAGCCACGCTAGTGGTTGAGATCT ++ +69+26933-:7;;135,53<>7<692(?2=9:**;<=##################################################################################################################################################################################################################### +@H06HDADXX130110:1:2103:11970:57672 2:Y:0:0 +AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCGTCAAACCTTACCTCCTCCCTAGCCTCCACCCTGACCATGACACCAACCATCAGCCTTATAGAAAACCCCAGAGATGCTCTTATCCTATACCACAATTACCCCATAACGAAAGAAAGGACTGAAAACAAATAAGTAAAATTCGTACAAATTATATCTATGAGTATGTCCCTGAGTGTAGGTGTAGGTGCATCC ++ +=>:=>@=?<>>??>;:=;:8;=(5)0-6;1:>?<>############################################################################################################################################################################################################## +<<>>interleaved fastq record start>>> +@H06JUADXX130110:1:1108:6424:55322 1:Y:0:0 +AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACTCTAACCCTAACCCTAACCCTAACGGTAACCCTTACCCTTACTGTAACGCTTATCCTAAATCAAATTCTTCCTCTTAAGATCGCTGTTAAAATTAATCCTATTAGAACAGGTCTTCTGGCACCAAGTTATGTCAATATCCCTTACTCTAAACATGCCTTGATCTCTCATGCATCACTTCAGCACAGCTCTTATGGATCTAGGATCCTCAGT ++ +=>;=?=@@=?@?@@9>7@=?=;=?@>29?=?;=>@;4@*0878;40'=@;(3399@9>7@:A############################################################################################################################################################################################ +@H06JUADXX130110:1:1108:6424:55322 2:Y:0:0 +AGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTAGGGATAGGGCTAGGGTTAGGGATAGGGATAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTATCGATAGGGATAGGGATAGGGATAGAGTTAGGGCTATGGGTAGGGTTAGAGTCAGGGAAAGAGATAGGGATGGAGATGGGGTTAAAAAGAAGTCAAGGAATTAAGGTAGGGAAACGGTTCGAGATCTGTAAAGGGCAACGA ++ +>>;>*9?:@??@@????@????>@?>>@>@?>?????@@???????=?;+A?@?>89?@###################################################################################################################################################################################### +<< + assert(converter.parseReadInFastq(s"${desc}\nATCG\n+\n1234")._1 === "desc")) + } + test("test parseReadInFastq, read quality shorter than read length, padded with B") { assert(converter.parseReadInFastq("@description\nAAA\n+\nZ", stringency = lenient) === ("description", "AAA", "ZBB")) diff --git a/adam-core/src/test/scala/org/bdgenomics/adam/io/InterleavedFastqInputFormatSuite.scala b/adam-core/src/test/scala/org/bdgenomics/adam/io/InterleavedFastqInputFormatSuite.scala index ab575b0748..a141ce0ce9 100755 --- a/adam-core/src/test/scala/org/bdgenomics/adam/io/InterleavedFastqInputFormatSuite.scala +++ b/adam-core/src/test/scala/org/bdgenomics/adam/io/InterleavedFastqInputFormatSuite.scala @@ -22,7 +22,7 @@ import org.apache.spark.rdd.RDD import org.apache.hadoop.io.Text class InterleavedFastqInputFormatSuite extends ADAMFunSuite { - (1 to 4) foreach { testNumber => + (1 to 5) foreach { testNumber => val inputName = "interleaved_fastq_sample%d.ifq".format(testNumber) val expectedOutputName = inputName + ".output" val expectedOutputPath = testFile(expectedOutputName)