Placeholders¶
Some positional fields may contain an undefined value S: sequence;
L/C: overlap; P: overlaps; E: eid, alignment; F:
alignment; G: gid, var; U/O: pid. In GFA this value is
represented by a *.
In Gfapy the class Placeholder represent the undefined value.
Distinguishing placeholders¶
The gfapy.is_placeholder() method
allows to check if a value is a placeholder; a value is a placeholder if
it is a Placeholder instance, or would represent
a placeholder in GFA (a string containing *), or would be represented
by a placeholder in GFA (e.g. an empty array).
>>> gfapy.is_placeholder("*")
True
>>> gfapy.is_placeholder("**")
False
>>> gfapy.is_placeholder([])
True
>>> gfapy.is_placeholder(gfapy.Placeholder())
True
Note that, as a placeholder is False in boolean context, just a
if not placeholder will also work, if the value is an instance
of Placeholder, but not always for the other cases (in particular not
for the string representation *).
Therefore using
gfapy.is_placeholder()
is better.
>>> if "*": print('* is not a placeholder')
* is not a placeholder
>>> if gfapy.is_placeholder("*"): print('but it represents a placeholder')
but it represents a placeholder
Compatibility methods¶
Some methods are defined for placeholders, which allow them to respond to the same methods as defined values. This allows to write generic code.
>>> placeholder = gfapy.Placeholder()
>>> placeholder.validate() # does nothing
>>> len(placeholder)
0
>>> placeholder[1]
gfapy.Placeholder()
>>> placeholder + 1
gfapy.Placeholder()