Added
- Improved docstrings on interval objects.
- Location objects now have a `full_span` optional flag on all `intersction`, `overlaps` and `contains` functions. This flag has compound intervals be treated as their full span, i.e. from start to end, regardless of compound structure. This flag defaults to `False` in all cases. When two `CompoundInterval` are compared, they are both always compared in their full spans when this flag is `True`.
- `Interval` and `IntervalCollection` objects now are capable of being lifted to arbitrary coordinate systems, returning a new copy. These operations rely on first lifting to a shared chromosomal coordinate system.
Changed
- New `SequenceType` enum stores whether interval sequences are `chromosome` or `chunk_relative`.
- All objects that accept `SequenceType` information accepts either the `SequenceType` enum OR raw strings.
- `AnnotationCollection` will look at the provided `parent_or_seq_chunk_parent` to see if the bounds of the object can be inferred from the parent object. This is only performed if no `start`/`end` are explicitly provided. If neither are provided, the bounds of the collection are the bounds of its children.
- Refactored `CDSInterval` to be based on `AbstractFeatureInterval`. Moved `CDSPhase` and `CDSFrame` to accomodate the circular import this introduced.
- All `Interval` objects are allowed to have *chromosome* parents without sequence information.
- Removed versioneer in favor of hard coded versions.
Fixed
- Some functions on Interval objects were not operating in chromosome coordinates
- `AnnotationCollection.query_by_position()` was not returning valid results if the parent was a sequence chunk.
- GFF3 parser was not inferring transcripts for a gene feature with no children.
- Fixed a bug with missing gene biotypes in GFF3 parsing.