feature = Std.feature(
    Martel.Str("FT   ") + \
    Std.feature_name(Martel.UntilSep(sep = " ")) + \
    whitespace + \
    Std.feature_location(Martel.UntilEol()) + \
    Martel.AnyEol() + \
    Martel.Rep(Martel.Str("FT                   ") + \
               Martel.AssertNot(Martel.Str("/")) + \
               Std.feature_location(Martel.UntilEol()) + \
               Martel.AnyEol()
               ) + \
    Martel.Rep(feature_qualifier)
    )
    
FT_block = Std.feature_block(Martel.Rep(feature),
                             {"location-style": "genbank"})

                         
    

## CC - comments or notes          (>=0 per entry)
CC_line = Martel.Str("CC   ") + \
          Martel.ToEol("comment")
CC_block = Martel.Rep1(CC_line)

## XX - spacer line                (many per entry)
XX = Martel.Str("XX") + Martel.AnyEol()

## SQ - sequence header            (1 per entry)
SQ_line = Martel.Str("SQ   Sequence ") + \
          Martel.Digits("num_BP") + \
Exemple #2
0
qualifier = Std.feature_qualifier(
    qualifier_space + 
    Martel.Str("/") +
    Std.feature_qualifier_name(Martel.Alt(*feature_qualifiers)) +
    (Martel.AnyEol() | #  '/pseudo'
     (Martel.Str("=") +
      (unquoted_string |  #  '/evidence=experimental'
       quoted_string)))   #  '/translation="AAAAAAAA....
                          #   AAAAAAAAAAAAAAAAAAAA'
    )
feature = Std.feature(feature_key_line +
                      Martel.Rep(qualifier))

feature_block = Std.feature_block(
    features_line + \
    Martel.Rep1(feature),
    {"location-style": "genbank"}
    )


# BASE COUNT    28300 a  15069 c  15360 g  27707 t
base_count = Martel.Group("base_count",
                          Martel.Re("[\w\d ]+"))
base_count_line = Martel.Group("base_count_line",
                               Martel.Str("BASE COUNT") +
                               blank_space +
                               base_count +
                               Martel.AnyEol())

# ORIGIN      
#       1 ggacaaggcc aaggatgctg ctgctgcagc tggagcttcc gcgcaacaag taaacagata
           Martel.Str(" ") + \
           FT_end + \
           Martel.Opt(Martel.Str("       ") + \
                      FT_desc) + \
           Martel.AnyEol()

FT_continuation = Martel.Str("FT                                ") + \
                  FT_desc + \
                  Martel.AnyEol()

FT = Std.feature(FT_range + Martel.Rep(FT_continuation),
                 {"location-style": "sp"})


##feature_block = Martel.Group("feature_block", Martel.Rep1(FT))
feature_block = Std.feature_block(Martel.Rep1(FT),
                                  {"style": "swissprot"})


#--- SQ

# SQ   SEQUENCE  XXXX AA; XXXXX MW;  XXXXX CRC32;
# (Those X's don't really indicate the size)

SQ = Martel.Group("SQ",
   Martel.Re("SQ   SEQUENCE +(?P<sequence_length>\d+) AA;" \
             " +(?P<molecular_weight>\d+) MW;" \
             " +(?P<crc?type=32>\w+) CRC32;\R")
                  )
##SQ_data = Martel.Group("SQ_data",
##                       Martel.Re("     (?P<sequence>[^\R]*)\R"))
SQ_data = Martel.Str("     ") + \