Spaces:
No application file
No application file
DrVai-Rag-Testing
/
myenv
/lib
/python3.10
/site-packages
/Bio
/Graphics
/GenomeDiagram
/_CrossLink.py
| # 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 | |
| def startA(self): | |
| """Start position of Feature A.""" | |
| try: | |
| return self.featureA.start | |
| except AttributeError: | |
| track, start, end = self.featureA | |
| return start | |
| 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 | |
| def startB(self): | |
| """Start position of Feature B.""" | |
| try: | |
| return self.featureB.start | |
| except AttributeError: | |
| track, start, end = self.featureB | |
| return start | |
| 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 | |