Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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())
Пример #4
0
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)
Пример #5
0
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()