Source code for pygenprop.evidence
#!/usr/bin/env python
"""
Created by: Lee Bergstrand (2017)
Description: The evidence class.
"""
from pygenprop.functional_element import FunctionalElement
[docs]class Evidence(object):
"""A piece of evidence (ex. InterPro HMM hit or GenProp) that supports the existence of a functional element."""
def __init__(self, evidence_identifiers=None, gene_ontology_terms=None,
sufficient=False, parent: FunctionalElement=None):
"""
Creates a new Evidence object.
:param evidence_identifiers: A list of identifiers of proteins or processes supporting the existence of a
FunctionalElement (i.e a list of Intro Consortium IDs or GenProp Accessions).
:param gene_ontology_terms: The ids for gene ontology (GO) terms defining the protein or process supporting
the existence of a FunctionalElement.
:param sufficient: Can this evidence alone prove the existence of FunctionalElement?
"""
if evidence_identifiers is None:
evidence_identifiers = []
if gene_ontology_terms is None:
gene_ontology_terms = []
if sufficient is None:
sufficient = False
self.evidence_identifiers = evidence_identifiers
self.gene_ontology_terms = gene_ontology_terms
self.sufficient = sufficient
self.parent = parent
def __repr__(self):
repr_data = ['Evidence_IDs: ' + str(self.evidence_identifiers),
'GO Terms: ' + str(self.gene_ontology_terms),
'Sufficient: ' + str(self.sufficient)]
return '(' + ', '.join(repr_data) + ')'
@property
def has_genome_property(self):
"""
Is the evidence a genome property?
:return: Return True if evidence is a genome property.
"""
genome_property = False
for identifier in self.evidence_identifiers:
if "genprop" in identifier.lower():
genome_property = True
break
return genome_property
@property
def genome_property_identifiers(self):
"""
Gets the genome properties identifiers representing a piece of evidence.
:return: A list of genome property identifiers.
"""
genome_property_identifiers = []
for identifier in self.evidence_identifiers:
if "genprop" in identifier.lower():
genome_property_identifiers.append(identifier)
return genome_property_identifiers
@property
def interpro_identifiers(self):
"""
Gets the InterPro (IPRXXXXXX) identifiers representing a piece of evidence.
:return: A list of genome property identifiers.
"""
genome_property_identifiers = []
for identifier in self.evidence_identifiers:
if "ipr" in identifier.lower():
genome_property_identifiers.append(identifier)
return genome_property_identifiers
@property
def consortium_identifiers(self):
"""
Gets the InterPro consortium signature identifiers (PFAM, TIGRFAM, etc.) representing a piece of evidence.
:return: A set of genome property identifiers.
"""
genome_property_identifiers = []
for identifier in self.evidence_identifiers:
lowercase_identifier = identifier.lower()
if "genprop" not in lowercase_identifier and "ipr" not in lowercase_identifier:
genome_property_identifiers.append(identifier)
return genome_property_identifiers
@property
def genome_properties(self):
"""
Get genome properties that are used by this evidence.
:return: A list of genome properties.
"""
parent_genome_property = self.parent.parent.parent
return [genome_property for genome_property in parent_genome_property.children if
genome_property.id in self.genome_property_identifiers]