aakash0017's picture
Upload folder using huggingface_hub
b7731cd
# Copyright 2011-2017 by Peter Cock. All rights reserved.
#
# This file is part of the Biopython distribution and governed by your
# choice of the "Biopython License Agreement" or the "BSD 3-Clause License".
# Please see the LICENSE file that should have been included as part of this
# package.
"""Genome Diagram Feature cross-link module."""
from reportlab.lib import colors
class CrossLink:
"""Hold information for drawing a cross link between features."""
def __init__(
self, featureA, featureB, color=colors.lightgreen, border=None, flip=False
):
"""Create a new cross link.
Arguments featureA and featureB should GenomeDiagram feature objects,
or 3-tuples (track object, start, end), and currently must be on
different tracks.
The color and border arguments should be ReportLab colour objects, or
for border use a boolean False for no border, otherwise it defaults to
the same as the main colour.
The flip argument draws an inverted cross link, useful for showing a
mapping where one sequence has been reversed. It is conventional to
also use a different colour (e.g. red for simple links, blue for any
flipped links).
"""
# Initialize attributes
self.featureA = featureA
self.featureB = featureB
self.color = color # default color to draw the feature
self.border = border
self.flip = flip
@property
def startA(self):
"""Start position of Feature A."""
try:
return self.featureA.start
except AttributeError:
track, start, end = self.featureA
return start
@property
def endA(self):
"""End position of Feature A."""
try:
return self.featureA.end
except AttributeError:
track, start, end = self.featureA
return end
def _trackA(self, tracks):
try:
track, start, end = self.featureA
assert track in tracks
return track
except TypeError:
for track in tracks:
for feature_set in track.get_sets():
if hasattr(feature_set, "features"):
if self.featureA in feature_set.features.values():
return track
return None
@property
def startB(self):
"""Start position of Feature B."""
try:
return self.featureB.start
except AttributeError:
track, start, end = self.featureB
return start
@property
def endB(self):
"""End position of Feature B."""
try:
return self.featureB.end
except AttributeError:
track, start, end = self.featureB
return end
def _trackB(self, tracks):
try:
track, start, end = self.featureB
assert track in tracks
return track
except TypeError:
for track in tracks:
for feature_set in track.get_sets():
if hasattr(feature_set, "features"):
if self.featureB in feature_set.features.values():
return track
return None