def from_file(cls, f, sequence_id=None): if sequence_id is None: sequence_id = os.path.splitext(os.path.basename(f.name))[0] sequence = [] prediction = [] for line in f: words = line.split() if len(words) != 2: continue linetype = words[0].lower() if linetype == 'aa:': sequence.append(words[1]) elif linetype == 'pred:': prediction.append(words[1]) regions = make_regions(''.join(prediction), '*') return cls(sequence_id, sequence=''.join(sequence), regions=regions)
def handle_msa_change(self, msa, change): if not change.has_changed('sequences'): return if msa.ungapped is None: self.backbones = None self.gaps = None return self.backbones = [ContiguousRegion(make_regions(u, bool)) for u in msa.ungapped] self.gaps = [] for backbone in self.backbones: gap_parts = [] previous = None for part in backbone.parts: if previous is None: previous = part continue gap_start = previous.start + previous.length gap_parts.append(Region(gap_start, part.start - gap_start)) self.gaps.append(ContiguousRegion(gap_parts)) self.emit('changed', Change('visualization'))