def test_add_results_to_record(self): pfams = { 'PF00015.2': FeatureLocation(0, 3), 'PF00351.1': FeatureLocation(0, 3), 'PF00015.27': FeatureLocation(3, 6) } fake_record = set_dummy_with_pfams(pfams) fake_duplicate_pfam = PFAMDomain(location=FeatureLocation(6, 9), description='DUPLICATE', protein_start=0, protein_end=5) fake_duplicate_pfam.db_xref = ['PF00015.2'] fake_duplicate_pfam.domain_id = 'DUPLICATE' fake_record.add_pfam_domain(fake_duplicate_pfam) assert fake_duplicate_pfam in fake_record.get_pfam_domains() gos_for_fake_pfam = pfam2go.get_gos_for_pfams(fake_record) fake_results = pfam2go.Pfam2GoResults(fake_record.id, gos_for_fake_pfam) fake_results.add_to_record(fake_record) assert fake_duplicate_pfam.db_xref == ['PF00015.2'] for pfam in fake_record.get_pfam_domains(): assert sorted(pfam.gene_ontologies.ids) == sorted( fake_results.get_all_gos(pfam)) # make sure identical pfams (with different version numbers) all have the same gene ontologies for pfam_id in pfam.db_xref: if pfam_id.startswith('PF00015'): assert sorted(pfam.gene_ontologies.ids) == sorted( fake_results.get_all_gos(fake_duplicate_pfam))
def set_dummy_with_pfams(pfam_ids: Dict[str, FeatureLocation]) -> DummyRecord: pfam_domains = [] for pfam_id, pfam_location in pfam_ids.items(): pfam_domain = PFAMDomain(location=pfam_location, description='FAKE', protein_start=0, protein_end=5) pfam_domain.db_xref = [pfam_id] pfam_domain.domain_id = '%s.%d.%d' % (pfam_id, pfam_location.start, pfam_location.end) pfam_domains.append(pfam_domain) return DummyRecord(features=pfam_domains)