## DR - database cross-reference (>=0 per entry) DR_block = sprot38.DR_block ## FH - feature table header (0 or 2 per entry) FH_block = Martel.Str("FH Key Location/Qualifiers") + \ Martel.AnyEol() + \ Martel.Str("FH") + \ Martel.AnyEol() ## FT - feature table data (>=0 per entry) ##FT_line = Martel.Str("FT ") + \ ## Martel.ToEol("ft_data") ##FT_block = Martel.Rep1(FT_line) fq_dbxref = Std.feature_qualifier_name(Martel.Str("db_xref")) + \ Martel.Str('=') + \ Std.feature_qualifier_description( Martel.Str('"') + \ Std.dbxref(Std.dbxref_dbname(Martel.UntilSep(None, ":")) + \ Martel.Str(":") + \ Std.dbxref_dbid(Martel.UntilSep(None, '"'))) + \ Martel.Str('"')) + \ Martel.AnyEol() fq_generic = \ Martel.Assert(Martel.Word() + Martel.Str("=")) + \ Std.feature_qualifier_name(Martel.Word()) + \ Martel.Str("=") + \ Std.feature_qualifier_description(Martel.UntilEol()) + \
# qualifiers escape quotes using double quotes 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"} )
# qualifiers escape quotes using double quotes 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.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