def add_to_record(self, record: Record) -> None: for feature in self.new_cds_features: record.add_cds_feature(feature) for motifs in self.motifs_by_locus.values(): for motif in motifs: record.add_cds_motif(motif)
def add_to_record(self, record: secmet.Record) -> None: """ Adds any relevant result constructions to the record """ for features in self.cds_features.values(): for cds in features: record.add_cds_feature(cds) for motif in self.motifs: record.add_cds_motif(motif)
def add_to_record(self, record: Record) -> None: for feature in self.new_cds_features: record.add_cds_feature(feature) motifs_added: Set[str] = set() for motifs in self.motifs_by_locus.values(): for motif in motifs: if motif.get_name() not in motifs_added: record.add_cds_motif(motif) motifs_added.add(motif.get_name())
def annotate_domains(record: Record) -> None: """ Annotates NRPS/PKS domains on CDS features. The `nrps_pks` member of each feature will be updated, along with creating CDSMotif features when relevant. Arguments: record: the secmet.Record of which to annotate CDS features Returns: None """ cds_within_clusters = record.get_cds_features_within_clusters() assert cds_within_clusters # because every cluster should have genes fasta = get_fasta_from_features(cds_within_clusters) cds_domains = find_domains(fasta, record) cds_motifs = find_ab_motifs(fasta) for cds in cds_within_clusters: cds_name = cds.get_name() # gather domains and classify domains = cds_domains.get(cds_name) if not domains: continue domain_type = classify_feature([domain.hit_id for domain in domains]) cds.nrps_pks.type = domain_type for domain in domains: cds.nrps_pks.add_domain(domain) # construct motif features motifs = cds_motifs.get(cds_name) if not motifs: continue motif_features = generate_motif_features(record, cds, motifs) for motif in motif_features: record.add_cds_motif(motif) cds.motifs.extend(motif_features)
def strip_record(record: Record) -> None: """ Discard antismash specific features and feature qualifiers """ logging.debug( "Stripping antiSMASH features and annotations from record: %s", record.id) record.clear_clusters() record.clear_superclusters() record.clear_subregions() record.clear_regions() record.clear_antismash_domains() record.clear_pfam_domains() # clean up antiSMASH-created CDSMotifs, but leave the rest motifs = list(record.get_cds_motifs()) record.clear_cds_motifs() for motif in motifs: if not motif.created_by_antismash: record.add_cds_motif(motif) # clean up antiSMASH annotations in CDS features for feature in record.get_cds_features(): feature.sec_met = SecMetQualifier() feature.gene_functions.clear()