fq_generic = \ Martel.Assert(Martel.Word() + Martel.Str("=")) + \ Std.feature_qualifier_name(Martel.Word()) + \ Martel.Str("=") + \ Std.feature_qualifier_description(Martel.UntilEol()) + \ Martel.AnyEol() + \ Martel.Rep( Martel.Str("FT ") + \ (Martel.AssertNot(Martel.Str("/")) | Martel.AssertNot(Martel.Re(r"/\w+="))) + \ Std.feature_qualifier_description(Martel.UntilEol()) + \ Martel.AnyEol()) feature_qualifier = Std.feature_qualifier( Martel.Str("FT /") + \ (fq_dbxref | fq_generic)) 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) )
quote = Martel.Str('"') quoted_chars = Std.feature_qualifier_description(Martel.Re(r'([^"\R]|"")*')) quoted_string = (quote + quoted_chars + Martel.Rep(Martel.AnyEol() + qualifier_space + quoted_chars) + quote + Martel.AnyEol()) unquoted_string = Martel.AssertNot(quote) + \ Std.feature_qualifier_description(Martel.UntilEol()) + \ Martel.AnyEol() 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
quoted_chars = Std.feature_qualifier_description(Martel.Re(r'([^"\R]|"")*')) quoted_string = (quote + quoted_chars + Martel.Rep(Martel.AnyEol() + qualifier_space + quoted_chars) + quote + Martel.AnyEol()) unquoted_string = Martel.AssertNot(quote) + \ Std.feature_qualifier_description(Martel.UntilEol()) + \ Martel.AnyEol() qualifier = Std.feature_qualifier( qualifier_space + Martel.Str("/") + Std.feature_qualifier_name(Martel.Word("feature_qualifier_name")) + (Martel.AnyEol() | # '/pseudo' (Martel.Str("=") + Martel.Group("feature_qualifier_description", (unquoted_string | # '/evidence=experimental' quoted_string)))) # '/translation="AAAAAAAA.... # AAAAAAAAAAAAAAAAAAAA' ) feature = Std.feature(feature_key_line + Martel.Rep(qualifier)) feature_block = Std.feature_block(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 ]+"))