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_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_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