def run(self): features = [] for feature in iter_domains(open(self.params['location'])): feature.sequence_index = get_id_index(self.target.msa.ids, feature.sequence_id) if feature.sequence_index is None: continue feature.mapping = map_region_to_msa(feature.region, self.target.msa.msa_positions[feature.sequence_index]) if feature.mapping is None: continue features.append(feature) self.target.add_features(features)
def from_pfam_match_etree(cls, match_element, msa, sequence_index, offset, sequence_id=None): loc = match_element.find('location') start = int(loc.attrib['start']) - 1 region = Region(start, int(loc.attrib['end']) - start) mapping = map_region_to_msa(region, msa.msa_positions[sequence_index], offset) if not mapping: return None hmm_start = int(loc.attrib['hmm_start']) - 1 return cls(sequence_index=sequence_index, sequence_id=sequence_id, source=match_element.attrib['type'], name=match_element.attrib['id'], region=region, mapping=mapping, accession=match_element.attrib['accession'], hmm_region=Region(hmm_start, int(loc.attrib['hmm_end']) - hmm_start), score=float(loc.attrib['bitscore']), evalue=float(loc.attrib['evalue']))
def run(self): f = open(self.params['location']) prediction = DisopredPrediction.from_file(f) f.close() if not prediction: return sequence_index = self.coord.sequence offset = prediction.sequence.find(self.target.unaligned[sequence_index]) if offset < 0: return msa_positions = self.target.msa_positions[sequence_index] sequence_id = self.target.ids[sequence_index] features = [] for region in prediction.regions: mapping = map_region_to_msa(region, msa_positions, offset) if not mapping: continue features.append(SequenceFeature(sequence_index, sequence_id, 'disopred', 'natively disordered', region, mapping)) self.target.features.add_features(features)