Package Bio :: Module SeqFeature :: Class FeatureLocation
[hide private]
[frames] | no frames]

Class FeatureLocation

source code

Specify the location of a feature along a sequence.

This attempts to deal with fuzziness of position ends, but also make it easy to get the start and end in the 'normal' case (no fuzziness).

You should access the start and end attributes with your_location.start and your_location.end. If the start and end are exact, this will return the positions, if not, we'll return the approriate Fuzzy class with info about the position and fuzziness.

Note that the start and end location numbering follow Python's scheme, thus a GenBank entry of 123..150 (one based counting) becomes a location of [122:150] (zero based counting).

Instance Methods [hide private]
 
__init__(self, start, end)
Specify the start and end of a sequence feature.
source code
 
__str__(self)
Returns a representation of the location (with python counting).
source code
 
__repr__(self)
A string representation of the location for debugging.
source code
 
__getattr__(self, attr)
Make it easy to get non-fuzzy starts and ends.
source code
Method Details [hide private]

__init__(self, start, end)
(Constructor)

source code 

Specify the start and end of a sequence feature.

start and end arguments specify the values where the feature begins and ends. These can either by any of the *Position objects that inherit from AbstractPosition, or can just be integers specifying the position. In the case of integers, the values are assumed to be exact and are converted in ExactPosition arguments. This is meant to make it easy to deal with non-fuzzy ends.

__str__(self)
(Informal representation operator)

source code 

Returns a representation of the location (with python counting).

For the simple case this uses the python splicing syntax, [122:150] (zero based counting) which GenBank would call 123..150 (one based counting).

__getattr__(self, attr)
(Qualification operator)

source code 

Make it easy to get non-fuzzy starts and ends.

We override get_attribute here so that in non-fuzzy cases we can just return the start and end position without any hassle.

To get fuzzy start and ends, just ask for item.start and item.end. To get non-fuzzy attributes (ie. the position only) ask for 'item.nofuzzy_start', 'item.nofuzzy_end'. These should return the largest range of the fuzzy position. So something like: (10.20)..(30.40) should return 10 for start, and 40 for end.

The special tricky case where is when we have a single between position argument like 2^3 for the range. We want nofuzzy_start and nofuzzy_end to give a reasonable approximation of what this really means, which is an empty string -- so the same position for both. Doing a special case here sucks, but there is really not a general rule you can apply to this.