!4/Y      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXNone"#%&'-.27>DHSX_`  BiobaseFastaBComplete information on line and column start and end for a chunk.DTODO This is a 1-based format? Lets use the BiobaseTypes facilities! BiobaseFastafirst line for this chunk (lines in complete file!) BiobaseFasta)first column in first line for this chunk BiobaseFastalast line for this chunk (lines in complete file!) BiobaseFasta'last column in last line for this chunk BiobaseFastaJfirst index in this fasta block. Counts just the number of symbols in the Fasta payload. BiobaseFasta>s are chunked pieces of data, where the raw data is a strict  ByteStringT. Each element also retains information on the first and last line and column (via  ) that are part of this chunk. BiobaseFastacA Header event, multiple header events signal that the header name was longer than the chunk size.  BiobaseFasta|A data event. We keep a pointer to the previous chunk (which is useful for some algorithms). The chunk is free of newlines! BiobaseFasta    None"#%&'-.27>DHSX_`- # BiobaseFastaControl structure for =.& BiobaseFasta-the collected header parts (in reverse order)' BiobaseFastaaccumulated header length( BiobaseFasta/the (size-truncated) header for this fasta file) BiobaseFasta5overlap (if any) from earlier parts of the fasta file* BiobaseFasta*collection of dataParts, in reverse order!+ BiobaseFastaLtotal length of data parts, simplifies checking if enough data was collected, BiobaseFasta#count how many entries we have seen- BiobaseFasta>Current Fasta window, together with the start index (0-based).= BiobaseFastaYFully stream a fasta file, making sure to never exceed a constant amount of memory. The go function yields values of type a( down the line for continued streaming. r4 = toList . streamingFasta (HeaderSize 2) (OverlapSize 1) (CurrentSize 2) go . S8.fromStrict $ BS.pack t0 where go (Header h) (Overlap o) (Current c) = yield (h,o,c) = BiobaseFasta+Maximal length of the header. Ok to set to 20 0005, only guards against an extremely long header line. BiobaseFastaHow much of the current size to carry over to the next step. Even if set larger than current size, it will only be at most current size. (But see todo at overlappedFasta) BiobaseFasta(The size of each window to be processed. BiobaseFastaThe processing function. Takes in the header, any overlap from the previous window, the current window and produces a stream of as. BiobaseFasta&A streaming bytestring of Fasta files. BiobaseFastaThe outgoing stream of as being processed.#$%,&'()*+-./0123456789:;<=>?@#$%,&'()*+-./0123456789:;<=>?@None"#%&'-.27>DHSX_`/STUVWSTUVWY      !"#$$%&'()*+,--./001223445566789:;<=>?@ABCDEFGHIJKLMNOPQRS+BiobaseFasta-0.2.0.0-IddPn5hBiRV7T2edw2bY5fBiobase.Fasta.TypesBiobase.Fasta.StreamingBiobase.Fasta.ExportLineInfo firstLinefirstCollastLinelastCol firstIndex StreamEvent StreamHeader StreamFasta streamHeader streamLines streamFastaprevStreamFasta RawFastaEntry_rawFastaEntryFasta fastaHeader fastaSequence$fNFDataLineInfo$fNFDataStreamEvent $fEqFasta$fShowRawFastaEntry$fEqRawFastaEntry$fOrdRawFastaEntry$fShowLineInfo $fEqLineInfo $fOrdLineInfo$fGenericLineInfo$fShowStreamEvent$fEqStreamEvent$fOrdStreamEvent$fGenericStreamEvent FindHeader HasHeader headerParts headerLengthheader dataOverlap dataParts dataLengthentriesCurrent currentFasta currentStartOverlap getOverlapHeader getHeader CurrentSize OverlapSize HeaderSizestreamingFasta eachFastaparseFastaFile parseFasta$fEqHeaderSize$fOrdHeaderSize$fShowHeaderSize$fEqOverlapSize$fOrdOverlapSize$fShowOverlapSize$fEqCurrentSize$fOrdCurrentSize$fShowCurrentSize $fEqHeader $fOrdHeader $fShowHeader $fEqOverlap $fOrdOverlap $fShowOverlap $fEqCurrent $fOrdCurrent $fShowCurrentprettyPrintFastaprettyByteStringFastabreakByteStringfromIntToInt64writeFastaFile $fShowFasta