def test_blank_records(self): blank_no_pfams = DummyRecord() blank_no_ids = Record(Seq("ATGTTATGAGGGTCATAACAT", generic_dna)) fake_pfam = DummyPFAMDomain(identifier="PF00000") blank_no_ids.add_pfam_domain(fake_pfam) assert not pfam2go.get_gos_for_pfams(blank_no_pfams) assert not pfam2go.get_gos_for_pfams(blank_no_ids)
def test_get_gos_id_handling(self): pfams = { 'PF00015.42': FeatureLocation(0, 3), 'PF0015.42': FeatureLocation(0, 3) } fake_record = set_dummy_with_pfams(pfams) with self.assertRaisesRegex(ValueError, 'Pfam id PF0015 is not a valid Pfam id'): pfam2go.get_gos_for_pfams(fake_record)
def test_blank_records(self): blank_no_pfams = DummyRecord() blank_no_ids = Record(Seq("ATGTTATGAGGGTCATAACAT", generic_dna)) fake_pfam_location = FeatureLocation(0, 12) fake_pfam = PFAMDomain(location=fake_pfam_location, description='MCPsignal', protein_start=0, protein_end=5, identifier="PF00000", tool="test") fake_pfam.domain_id = 'BLANK' blank_no_ids.add_pfam_domain(fake_pfam) assert not pfam2go.get_gos_for_pfams(blank_no_pfams) assert not pfam2go.get_gos_for_pfams(blank_no_ids)
def test_to_json(self): fake_pfam_location = FeatureLocation(0, 12) pfams = {'PF00015': fake_pfam_location, 'PF00351': fake_pfam_location} fake_record = set_dummy_with_pfams(pfams) gos_for_fake_pfam = pfam2go.get_gos_for_pfams(fake_record) fake_results = pfam2go.Pfam2GoResults(fake_record.id, gos_for_fake_pfam) result_json = fake_results.to_json() expected_result = { "pfams": { "PF00015": { "GO:0004871": "signal transducer activity", "GO:0007165": "signal transduction", "GO:0016020": "membrane" }, "PF00351": { "GO:0016714": ("oxidoreductase activity, acting on paired donors, " "with incorporation or reduction of molecular oxygen, " "reduced pteridine as one donor, and incorporation of " "one atom of oxygen"), "GO:0055114": "oxidation-reduction process" } }, "record_id": fake_record.id, "schema_version": 1 } assert result_json["record_id"] == expected_result["record_id"] assert result_json["schema_version"] == 1 for pfam in expected_result["pfams"]: assert expected_result["pfams"][pfam] == result_json["pfams"][pfam]
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, identifier="PF00015.2", tool="test") 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.full_identifier == '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 if pfam.identifier == "PF00015": assert pfam.version in [2, 27] assert sorted(pfam.gene_ontologies.ids) == sorted( fake_results.get_all_gos(fake_duplicate_pfam))
def test_blank_records(self): blank_no_pfams = DummyRecord() blank_no_ids = Record(Seq("ATGTTATGAGGGTCATAACAT", generic_dna)) fake_pfam_location = FeatureLocation(0, 12) fake_pfam = PFAMDomain(location=fake_pfam_location, description='MCPsignal', protein_start=0, protein_end=5) fake_pfam.domain_id = 'BLANK' blank_no_ids.add_pfam_domain(fake_pfam) with self.assertLogs(level='DEBUG') as log_cm: gos_for_no_pfams = pfam2go.get_gos_for_pfams(blank_no_pfams) assert 'No Pfam domains found' in str(log_cm.output) assert not gos_for_no_pfams gos_for_no_ids = pfam2go.get_gos_for_pfams(blank_no_ids) assert 'No Pfam ids found' in str(log_cm.output) assert not gos_for_no_ids
def test_adding_to_wrong_record(self): pfams = {'PF00015': FeatureLocation(0, 3)} fake_record = set_dummy_with_pfams(pfams) gos_for_fake_pfam = pfam2go.get_gos_for_pfams(fake_record) fake_results = pfam2go.Pfam2GoResults('FAKEID', gos_for_fake_pfam) with self.assertRaisesRegex( ValueError, "Record to store in and record analysed don't match"): fake_results.add_to_record(fake_record)
def test_results(self): pfams = {'PF00015': FeatureLocation(0, 3)} fake_record = set_dummy_with_pfams(pfams) gos_for_fake_pfam = pfam2go.get_gos_for_pfams(fake_record) fake_results = pfam2go.Pfam2GoResults(fake_record.id, gos_for_fake_pfam) assert gos_for_fake_pfam == fake_results.pfam_domains_with_gos assert fake_record.id == fake_results.record_id for pfam, all_ontologies in fake_results.pfam_domains_with_gos.items(): for ontologies in all_ontologies: assert ontologies.pfam == pfam.identifier
def test_get_gos(self): pfams = { 'PF00015': FeatureLocation(0, 3), 'PF00351.42': FeatureLocation(6, 12) } fake_record = set_dummy_with_pfams(pfams) gos_for_fake_pfam = pfam2go.get_gos_for_pfams(fake_record) for all_ontologies in gos_for_fake_pfam.values(): for ontologies in all_ontologies: go_ids = [str(go_entry) for go_entry in ontologies.go_entries] for go_id in go_ids: assert go_id in self.known_connections[ontologies.pfam]
def test_results(self): pfams = {'PF00015': FeatureLocation(0, 3)} fake_record = set_dummy_with_pfams(pfams) gos_for_fake_pfam = pfam2go.get_gos_for_pfams(fake_record) fake_results = pfam2go.Pfam2GoResults(fake_record.id, gos_for_fake_pfam) assert gos_for_fake_pfam == fake_results.pfam_domains_with_gos assert fake_record.id == fake_results.record_id for pfam, all_ontologies in fake_results.pfam_domains_with_gos.items(): pfam_ids_without_versions = [ pfam_id.partition('.')[0] for pfam_id in pfam.db_xref ] for ontologies in all_ontologies: assert ontologies.pfam in pfam_ids_without_versions
def test_from_json(self): fake_pfam_location = FeatureLocation(0, 12) pfams = { 'PF00015': fake_pfam_location, 'PF00351': fake_pfam_location, 'PF05147': fake_pfam_location } fake_record = set_dummy_with_pfams(pfams) gos_for_fake_pfam = pfam2go.get_gos_for_pfams(fake_record) fake_results = pfam2go.Pfam2GoResults(fake_record.id, gos_for_fake_pfam) result_json = fake_results.to_json() results_from_json = pfam2go.Pfam2GoResults.from_json( result_json, fake_record) assert 'PF05147' not in result_json["pfams"] for pfam in results_from_json.pfam_domains_with_gos: assert pfam.identifier in result_json["pfams"] from_json_to_json = results_from_json.to_json() assert result_json == from_json_to_json assert from_json_to_json["schema_version"] == 1