def to_fastq opts = {}
      if fastq?
        "@#{@header}\n#{@seq}\n+#{@desc}\n#{qual}"
      else
        qual = opts.fetch :qual, "I"
        check_qual qual

        desc  = opts.fetch :desc, ""

        qual_str = make_qual_str qual

        "@#{@header}\n#{@seq}\n+#{desc}\n#{qual_str}"
      end
    end
def to_fastq opts = {}
      if fastq?
        "@#{@header}\n#{@seq}\n+#{@desc}\n#{qual}"
      else
        qual = opts.fetch :qual, "I"
        check_qual qual

        desc  = opts.fetch :desc, ""

        qual_str = make_qual_str qual

        "@#{@header}\n#{@seq}\n+#{desc}\n#{qual_str}"
      end
    end
Returns a fastA record ready to print.

 If the record is fastA like, the desc and qual can be specified.

 @return [String] a printable fastQ sequence record

 @example When the record is fastA like, no args
   rec = Record.new header: "Apple", seq: "ACTG"
   rec.to_fastq #=> "@Apple\nACTG\n+\nIIII"

 @example When the record is fastA like, desc and qual specified
   rec = Record.new header: "Apple", seq: "ACTG"
   rec.to_fastq decs: "Hi", qual: "A" #=> "@Apple\nACTG\n+Hi\nAAAA"

 @example When the record is fastA like, can specify fancy qual strings
   rec = Record.new header: "Apple", seq: "ACTGACTG"
   rec.to_fastq decs: "Hi", qual: "!a2" #=> "@Apple\nACTG\n+Hi\n!a2!a2!a"

 @example When the record is fastQ like
   rec = Record.new header: "Apple", seq: "ACTG", desc: "Hi", qual: "IIII"
   rec.to_fastq #=> ">Apple\nACTG"

 @raise [ParseFasta::Error::ArgumentError] if qual is ""