Parse the sequences in the current block.

    Sequence looks like:

    $3=227(209):
    >gi|15606894|ref|NP_214275.1|  {|2(244)|<Aquificae(B)>}DNA polymerase III gamma subunit [Aquifex aeolicus VF5] >gi|2984127|gb|AAC07663.1| DNA polymerase III gamma subunit [Aquifex aeolicus VF5] >gi|75
    {()YVPFARKYRPKFFREVIGQEAPVRILKNAIKNDRVAHaYLFAGPRGVGKTTIARILAKALNcknpskgepcgecencreiDRGVFPDLIEMDAASNRGIDDVRA-LKEAVNYKPIKG-KYKVYIIDEAHMLTKEAFNALLKTLEEPPPRTVFVLCTTEYDKILPTILSRCQRIIFSKVRKEKVIEYLKKICEKEGIECEEGALEVLAHASEGCMRDAASLLDQASVYGE()}*

def _parse_sequences(ilines, expect_qlen):
    """Parse the sequences in the current block.

    Sequence looks like:

    $3=227(209):
    >gi|15606894|ref|NP_214275.1|  {|2(244)|<Aquificae(B)>}DNA polymerase III gamma subunit [Aquifex aeolicus VF5] >gi|2984127|gb|AAC07663.1| DNA polymerase III gamma subunit [Aquifex aeolicus VF5] >gi|75
    {()YVPFARKYRPKFFREVIGQEAPVRILKNAIKNDRVAHaYLFAGPRGVGKTTIARILAKALNcknpskgepcgecencreiDRGVFPDLIEMDAASNRGIDDVRA-LKEAVNYKPIKG-KYKVYIIDEAHMLTKEAFNALLKTLEEPPPRTVFVLCTTEYDKILPTILSRCQRIIFSKVRKEKVIEYLKKICEKEGIECEEGALEVLAHASEGCMRDAASLLDQASVYGE()}*

    """
    while True:
        first = next(ilines)
        if first.startswith('_') and first.endswith('].'):
            # End of sequences & end of block
            break

        # ENH: handle wrapped lines?
        try:
            index, this_len, query_len = _parse_seq_preheader(first)
        except ValueError:
            logging.warn('Unparseable line (SKIPPING):\n%s', first)
            continue
        (rec_id, dbxrefs, headlen, taillen, phylum, taxchar, description
                ) = _parse_seq_header(next(ilines))
        try:
            headseq, molseq, tailseq = _parse_seq_body(next(ilines))
        except ValueError:
            logging.warn('Unparseable sequence: %s -- SKIPPING', rec_id)
            continue

        # Validation
        if expect_qlen != query_len:
            logging.warn("Query length in %s given as %d; expected %d",
                         rec_id, query_len, expect_qlen)
        if not headseq and not headlen:
            headlen = 0
        if not tailseq and not taillen:
            taillen = 0
        if headseq:
            if headlen is None:
                headlen = len(headseq)
            elif headlen != len(headseq):
                logging.warn("Conflicting head flank lengths in %s: %d, %d",
                             rec_id, headlen, len(headseq))
        if tailseq:
            if taillen is None:
                taillen = len(tailseq)
            elif taillen != len(tailseq):
                logging.warn("Conflicting tail flank lengths in %s: %d, %d",
                             rec_id, taillen, len(tailseq))

        yield {'index': index,
               'id': rec_id,
               'description': description,
               'dbxrefs': dbxrefs,
               'phylum': phylum,
               'taxchar': taxchar,
               'head_len': headlen,
               'tail_len': taillen,
               'head_seq': headseq,
               'tail_seq': tailseq,
               'length': this_len,
               'seq': molseq,
               }