Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / globplot / biopython-1.50 / Bio / Std.py
diff --git a/website/archive/binaries/mac/src/globplot/biopython-1.50/Bio/Std.py b/website/archive/binaries/mac/src/globplot/biopython-1.50/Bio/Std.py
new file mode 100644 (file)
index 0000000..ba44af1
--- /dev/null
@@ -0,0 +1,503 @@
+# This is a Python module.
+"""This module is DEPRECATED.
+
+Andrew Dalke is no longer maintaining Martel or Bio.Mindy, and these modules
+and associate ones like Bio.Std are now deprecated.  They are no longer
+used in any of the current Biopython parsers, and are likely to be removed
+in a future release.
+"""
+
+import warnings
+warnings.warn("Martel and those parts of Biopython depending on it" \
+              +" directly (such as Bio.Mindy and Bio.Std) are now" \
+              +" deprecated, and will be removed in a future release of"\
+              +" Biopython.  If you want to continue to use this code,"\
+              +" please get in contact with the Biopython developers via"\
+              +" the mailing lists to avoid its permanent removal from"\
+              +" Biopython.", \
+              DeprecationWarning)
+# Standard Bioformats definitions
+
+import Martel
+Group = Martel.Group
+
+namespace = "bioformat"
+NS = namespace + ":"
+XMLNS = "http://biopython.org/bioformat"
+
+def _set_if_given(attrs, field, d, valid = None, convert = None):
+    value = attrs.get(field)
+    if value is not None:
+        if valid is not None:
+            if value not in valid:
+                raise TypeError("%s (%r) must be one of %s" % \
+                                (field, value, valid))
+        if convert is None:
+            d[field] = value
+        else:
+            d[field] = convert(value)
+
+def _complain_if_given(attrs, name):
+    if attrs.has_key(name) and attrs[name] is not None:
+        raise NotImplementedError("Don't yet handle %r" % (name,))
+
+def _must_have(expr, f):
+    tag = f.tag
+    if tag not in expr.group_names():
+        raise TypeError(
+            "group %r not present in the expression but is required" % \
+            (tag,))
+
+def _must_have_set(expr, sets):
+    names = expr.group_names()
+    for set in sets:
+        for f in set:
+            tag = f.tag
+            if tag not in names:
+                break
+        else:
+            return
+    if len(sets) == 1:
+        raise TypeError("missing required tags (need %s) in expression" %
+                        [f.tag for f in sets[0]])
+    lines = ["missing required tags in expression; must have one set from:"]
+    for set in sets:
+        lines.append( str( [t.tag for f in set] ) )
+    s = "\n".join(lines)
+    raise TypeError(s)
+
+def _must_not_have(expr, f):
+    f.tag
+    if tag in expr.group_names():
+        raise TypeError(
+            "group %r present in the expression but is not allowed" % \
+            (tag,))
+
+
+# pre- Python 2.2 functions didn't allow attributes
+def _f():
+    pass
+try:
+    _f.x = 1
+    _use_hack = 0
+except AttributeError:
+    _use_hack = 1
+del _f
+
+def _check_name(f, text):
+    if text == "record": # XXX FIXME
+        return
+    assert NS + f.func_name == text, (NS + ":" + f.func_name, text)
+
+def _check_attrs(attrs, names):
+    for name in attrs.keys():
+        if name not in names:
+            raise TypeError("attr %r is not allowed here (valid terms: %s)" % \
+                            (name, names))
+    d = attrs.copy()
+    for name in names:
+        if not d.has_key(name):
+            d[name] = None
+    return d
+
+if not _use_hack:
+    def _settag(f, tag):
+        _check_name(f, tag)
+        f.tag = tag
+else:
+    # Convert the functions into callable objects
+    class StdTerm:
+        def __init__(self, func):
+            self._func = func
+        def __call__(self, *args, **kwargs):
+            return self._func( *args, **kwargs)
+
+    def _settag(f, tag):
+        _check_name(f, tag)
+        x = globals()[f.func_name] = StdTerm(f)
+        x.tag = tag
+
+################ identifier, description, and cross-references
+def record(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("format",))
+    d = {"xmlns:bioformat": XMLNS}
+    _set_if_given(attrs, "format", d)
+    return Group("record", expr, d) # XXX FIXME
+_settag(record, "record") # XXX AND FIXME
+
+
+def dbid(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("type", "style", "dbname"))
+    d = {}
+    _set_if_given(attrs, "type", d, ("primary", "accession", "secondary"))
+    _set_if_given(attrs, "dbname", d)
+    return Group(NS + "dbid", expr, d)
+_settag(dbid, NS + "dbid")
+
+def description_block(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("join",))
+    _must_have(expr, description)
+    d = {}
+    _set_if_given(attrs, "join", d, ("english", "concat", "space", "newline"))
+    return Group(NS + "description_block", expr, d)
+_settag(description_block, NS + "description_block")
+
+def description(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "description", expr)
+_settag(description, NS + "description")
+
+def description_line(expr, attrs = {}):
+    return description_block(description(expr, attrs))
+
+def fast_dbxref(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("style",))
+    d = {}
+    _set_if_given(attrs, "style", d, ("sp-general", "sp-prosite", "sp-embl"))
+    return Group(NS + "fast_dbxref", expr, d)
+
+def dbxref(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("style",))
+    _must_have(expr, dbxref_dbid)
+    d = {}
+    _complain_if_given(attrs, "style")
+    return Group(NS + "dbxref", expr, d)
+_settag(dbxref, NS + "dbxref")
+
+def dbxref_dbname(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("style",))
+    d = {}
+    _set_if_given(attrs, "style", d)
+    return Group(NS + "dbxref_dbname", expr, d)
+_settag(dbxref_dbname, NS + "dbxref_dbname")
+
+def dbxref_dbid(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("dbname", "type", "style", "negate"))
+    d = {}
+    _set_if_given(attrs, "dbname", d)
+    _set_if_given(attrs, "type", d, ("primary", "accession", "secondary"))
+    _complain_if_given(attrs, "style")
+    _set_if_given(attrs, "negate", d, (0, 1), str)
+    
+    return Group(NS + "dbxref_dbid", expr, d)
+_settag(dbxref_dbid, NS + "dbxref_dbid")
+
+def dbxref_negate(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "dbxref_negate", expr)
+_settag(dbxref_negate, NS + "dbxref_negate")
+
+##################### sequences
+
+def _check_gapchar(s):
+    if not ( ord(" ") <= ord(s) <= 126 ):
+        raise TypeError("%r not allowed as a gap character" % (s,))
+    return s
+
+# What about three letter codes?
+def sequence_block(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("alphabet", "gapchar", "remove_spaces"))
+    _must_have(expr, sequence)
+    d = {}
+    _set_if_given(attrs, "alphabet", d,
+                  ("iupac-protein", "iupac-dna", "iupac-rna",
+                   "iupac-ambiguous-protein",
+                   "iupac-ambiguous-dna",
+                   "iupac-ambiguous-rna",
+                   "protein", "dna", "rna", "unknown"))
+    _set_if_given(attrs, "gapchar", d, convert = _check_gapchar)
+    _set_if_given(attrs, "remove_spaces", d, (0, 1), str)
+    return Group(NS + "sequence_block", expr, d)
+_settag(sequence_block, NS + "sequence_block")
+
+def sequence(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "sequence", expr)
+_settag(sequence, NS + "sequence")
+
+def alphabet(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("alphabet",))
+    d = {}
+    _set_if_given(attrs, "alphabet", d,
+                  ("iupac-protein", "iupac-dna", "iupac-rna",
+                   "iupac-ambiguous-protein",
+                   "iupac-ambiguous-dna",
+                   "iupac-ambiguous-rna",
+                   "protein", "dna", "rna", "nucleotide", "unknown"))
+    return Group(NS + "alphabet", expr, d)
+_settag(alphabet, NS + "alphabet")
+
+    
+
+############################## features
+
+# In PIR
+
+# FEATURE
+#    1-25                #domain signal sequence #status predicted #label SIG\
+#    26-737              #product procollagen-lysine 5-dioxygenase 2 #status
+#                        predicted #label MAT\
+#    63,209,297,365,522,
+#    725                 #binding_site carbohydrate (Asn) (covalent) #status
+#                        predicted
+
+# The whole thing is a 'feature_block'
+
+# One 'feature' is
+#    26-737              #product procollagen-lysine 5-dioxygenase 2 #status
+#                        predicted #label MAT\
+
+# One 'feature_name' is "binding_site".
+
+# An example of the feature_location_block and feature_block, which I
+# will abbreviate as 'flb' and 'fl', is:
+# <flb>   <fl>63,209,297,365,522,</fl>
+#    <fl>725</fl>                 #binding_site carbohydrate ...
+
+# PIR doesn't have a 'feature_description'
+
+# Let:
+#   fq = feature_qualifier
+#   fqb = feature_qualifier
+#   fqn = feature_qualifier_name
+#   fqd = feature_qualifier_description
+# then the text
+#   
+#    26-737              #product procollagen-lysine 5-dioxygenase 2 #status
+#                        predicted #label MAT\
+# 
+# can be represented as (the rather tedious)
+# 
+#    26-737              <fqb><fq>#<fqn>product</fqn> <fqd>procollagen-\
+# lysine 5-dioxygenase 2</fqd></fq> #<fq><fqn>status</fqn>
+#                        <fqd>predicted</fqd> #<fq><fqn>label\
+# </fqn> <fqd>MAT</fqd></fq>\</fqb>
+#
+
+# 'style' determines the namespace for the feature name
+def feature_block(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("style", "location-style"))
+    d = {}
+    _set_if_given(attrs, "style", d)
+    _set_if_given(attrs, "location-style", d)
+    _must_have(expr, feature)
+    return Group(NS + "feature_block", expr, d)
+_settag(feature_block, NS + "feature_block")
+
+def feature(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("location-style",))
+    d = {}
+    _set_if_given(attrs, "location-style", d)
+    _must_have(expr, feature_name)
+    _must_have_set(expr, [[feature_location],
+                          [feature_location_start, feature_location_end]])
+    return Group(NS + "feature", expr, d)
+_settag(feature, NS + "feature")
+
+def feature_name(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "feature_name", expr)
+_settag(feature_name, NS + "feature_name")
+
+def feature_location(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "feature_location", expr)
+_settag(feature_location, NS + "feature_location")
+
+def feature_location_start(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "feature_location_start", expr)
+_settag(feature_location_start, NS + "feature_location_start")
+
+def feature_location_end(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "feature_location_end", expr)
+_settag(feature_location_end, NS + "feature_location_end")
+
+def feature_description(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "feature_description", expr)
+_settag(feature_description, NS + "feature_description")
+
+
+##def feature_qualifier_block(expr, attrs = {}):
+##    attrs = _check_attrs(attrs, ())
+##    _must_have(expr, feature_qualifier)
+##    return Group(NS + "feature_qualifier_block", expr)
+##_settag(feature_qualifier_block, NS + "feature_qualifier_block")
+
+def feature_qualifier(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    _must_have(expr, feature_qualifier_name)
+    return Group(NS + "feature_qualifier", expr)
+_settag(feature_qualifier, NS + "feature_qualifier")
+
+def feature_qualifier_name(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "feature_qualifier_name", expr)
+_settag(feature_qualifier_name, NS + "feature_qualifier_name")
+
+def feature_qualifier_description(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group(NS + "feature_qualifier_description", expr)
+_settag(feature_qualifier_description, NS + "feature_qualifier_description")
+
+
+############ For homology searches
+
+# "BLASTN", "BLASTP"
+def application_name(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("app",))
+    return Group("bioformat:application_name", expr, attrs)
+
+# "2.0.11", "2.0a19MP-WashU"
+def application_version(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:application_version", expr, attrs)
+
+def search_header(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:search_header", expr, attrs)
+
+def search_table(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:search_table", expr, attrs)
+
+def search_table_description(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("bioformat:decode",))
+    d = {"bioformat:decode": "strip"}
+    _set_if_given(attrs, "bioformat:decode", d)
+    return Group("bioformat:search_table_description", expr, d)
+
+def search_table_value(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("name", "bioformat:decode"))
+    return Group("bioformat:search_table_value", expr, attrs)
+
+def search_table_entry(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:search_table_entry", expr, attrs)
+
+def query_description_block(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("join-query",))
+    d = {"join-query": "join|fixspaces"}
+    _set_if_given(attrs, "join-query", d)
+    return Group("bioformat:query_description_block", expr, d)
+
+def query_description(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("bioformat:decode"))
+    d = {}
+    _set_if_given(attrs, "bioformat:decode", d)
+    return Group("bioformat:query_description", expr, d)
+
+def query_size(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:query_size", expr)
+
+def database_name(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:database_name", expr, attrs)
+
+def database_num_sequences(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("bioformat:decode",))
+    return Group("bioformat:database_num_sequences", expr, attrs)
+
+def database_num_letters(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("bioformat:decode",))
+    return Group("bioformat:database_num_letters", expr, attrs)
+
+def hit(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("join-description",))
+    d = {"join-description": "join|fixspaces"}
+    _set_if_given(attrs, "join-description", d)
+    return Group("bioformat:hit", expr, d)
+
+def hit_length(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hit_length", expr, attrs)
+
+def hit_description(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("bioformat:decode"))
+    d = {}
+    _set_if_given(attrs, "bioformat:decode", d)
+    return Group("bioformat:hit_description", expr, d)
+
+def hsp(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp", expr, attrs)
+
+def hsp_value(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("name", "bioformat:decode"))
+    return Group("bioformat:hsp_value", expr, attrs)
+
+def hsp_frame(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("which",))
+    d = {}
+    _set_if_given(attrs, "which", d, valid = ("query", "homology", "subject"))
+    return Group("bioformat:hsp_frame", expr, d)
+
+def hsp_strand(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("strand", "which"))
+    d = {}
+    _set_if_given(attrs, "which", d, valid = ("query", "homology", "subject"))
+    _set_if_given(attrs, "strand", d, valid = ("+1", "0", "-1", ""))
+    return Group("bioformat:hsp_strand", expr, d)
+
+def hsp_seqalign_query_seq(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_query_seq", expr, attrs)
+
+def hsp_seqalign_homology_seq(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_homology_seq", expr, attrs)
+
+def hsp_seqalign_subject_seq(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_subject_seq", expr, attrs)
+
+def hsp_seqalign_query_leader(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_query_leader", expr, attrs)
+    
+
+def hsp_seqalign_query_name(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_query_name", expr, attrs)
+
+def hsp_seqalign_subject_name(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_subject_name", expr, attrs)
+
+def hsp_seqalign(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign", expr, attrs)
+
+def hsp_seqalign_query_start(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_query_start", expr, attrs)
+
+def hsp_seqalign_query_end(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_query_end", expr, attrs)
+
+def hsp_seqalign_subject_start(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_subject_start", expr, attrs)
+
+def hsp_seqalign_subject_end(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ())
+    return Group("bioformat:hsp_seqalign_subject_end", expr, attrs)
+
+def search_parameter(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("name", "bioformat:decode"))
+    d = {}
+    _set_if_given(attrs, "name", d)
+    _set_if_given(attrs, "bioformat:decode", d)
+    return Group("bioformat:search_parameter", expr, d)
+
+def search_statistic(expr, attrs = {}):
+    attrs = _check_attrs(attrs, ("name", "bioformat:decode"))
+    d = {}
+    _set_if_given(attrs, "name", d)
+    _set_if_given(attrs, "bioformat:decode", d)
+    return Group("bioformat:search_statistic", expr, d)
+