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") + \
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(" ") + \