From 3122ea3651bca76694f467001f116bfe58967125 Mon Sep 17 00:00:00 2001 From: Joshua Meyers Date: Mon, 7 Dec 2020 16:27:28 +0000 Subject: [PATCH 1/2] fix sifts mapping and add tests --- ssbio/databases/pdb.py | 27 +- ssbio/test/conftest.py | 9 +- ssbio/test/test_databases_pdb.py | 15 +- .../test/test_files/structures/1atp.sifts.xml | 6219 +++++++++++++++++ 4 files changed, 6263 insertions(+), 7 deletions(-) create mode 100644 ssbio/test/test_files/structures/1atp.sifts.xml diff --git a/ssbio/databases/pdb.py b/ssbio/databases/pdb.py index 85975fe..214a22a 100644 --- a/ssbio/databases/pdb.py +++ b/ssbio/databases/pdb.py @@ -312,11 +312,30 @@ def map_uniprot_resnum_to_pdb(uniprot_resnum, chain_id, sifts_file): # TODO: "Engineered_Mutation is also a possible annotation, need to figure out what to do with that my_pdb_annotation = False - # Find the right chain (entities in the xml doc) + # Find the right chain (entities in the xml doc). + # Note EntityID != ChainID. Entities are alphabetical e.g. Chains ('E','F','X') == Entities ('A','B','C') + + # first find all chains in SIFTS file ent = './/{http://www.ebi.ac.uk/pdbe/docs/sifts/eFamily.xsd}entity' - for chain in root.findall(ent): - # TODO: IMPORTANT - entityId is not the chain ID!!! it is just in alphabetical order! - if chain.attrib['entityId'] == chain_id: + sifts_chain_ids = [] + all_entities = root.findall(ent) + for i, chain in enumerate(all_entities): + # keep track of chain ids + uchains = './/{http://www.ebi.ac.uk/pdbe/docs/sifts/eFamily.xsd}crossRefDb[@dbSource="PDB"]' + my_chains = chain.findall(uchains) + if len(my_chains): + cid = my_chains[0].attrib['dbChainId'] + if cid not in sifts_chain_ids: + sifts_chain_ids.append(cid) + + # then assume alphabet mapping of chains -> entities + if chain_id not in sifts_chain_ids: + return None, False + sifts_entity_id = chr(ord('@') + (sifts_chain_ids.index(chain_id) + 1)) + + # find the right chain entity. and parse. + for chain in all_entities: + if chain.attrib['entityId'] == sifts_entity_id: # Find the "crossRefDb" tag that has the attributes dbSource="UniProt" and dbResNum="your_resnum_here" # Then match it to the crossRefDb dbResNum that has the attribute dbSource="PDBresnum" diff --git a/ssbio/test/conftest.py b/ssbio/test/conftest.py index 0d9db42..6fb3163 100644 --- a/ssbio/test/conftest.py +++ b/ssbio/test/conftest.py @@ -101,4 +101,11 @@ def pdb_ids_obsolete(): @pytest.fixture(scope='module') def pdb_ids_false(): - return ['soda','meow','1984','pycharm'] \ No newline at end of file + return ['soda','meow','1984','pycharm'] + + +@pytest.fixture(scope='module') +def sifts_xmls_working(test_files_structures): + """ SIFTS XML file for protein structure with non-A,B chains """ + # ssbio/test/test_files/structures/1atp.sifts.xml + return op.join(test_files_structures, '1atp.sifts.xml') diff --git a/ssbio/test/test_databases_pdb.py b/ssbio/test/test_databases_pdb.py index 26e7b98..89d6d24 100644 --- a/ssbio/test/test_databases_pdb.py +++ b/ssbio/test/test_databases_pdb.py @@ -16,6 +16,7 @@ def test_download_mmcif_header(pdb_ids_working, pdb_ids_obsolete, pdb_ids_false, with pytest.raises(URLError): pdb.download_mmcif_header(pdb_id=fp, outdir=test_files_tempdir, force_rerun=True) + def test_download_sifts_xml(pdb_ids_working, pdb_ids_obsolete, pdb_ids_false, test_files_tempdir): for wp in pdb_ids_working: pdb.download_sifts_xml(pdb_id=wp, outdir=test_files_tempdir) @@ -28,8 +29,18 @@ def test_download_sifts_xml(pdb_ids_working, pdb_ids_obsolete, pdb_ids_false, te with pytest.raises(URLError): pdb.download_sifts_xml(pdb_id=fp, outdir=test_files_tempdir, force_rerun=True) -def test_map_uniprot_resnum_to_pdb(pdb_ids_working, pdb_ids_obsolete, pdb_ids_false, test_files_tempdir): - pass + +def test_map_uniprot_resnum_to_pdb(sifts_xmls_working): + mapping_cases = [ + # Tuple(inputs, expected_outputs) + ({'uniprot_resnum': 20, 'chain_id': 'I', 'sifts_file': sifts_xmls_working[0]}, (19, True)), + ({'uniprot_resnum': 20, 'chain_id': 'A', 'sifts_file': sifts_xmls_working[0]}, (False, None)), # invalid chain + ({'uniprot_resnum': 999, 'chain_id': 'I', 'sifts_file': sifts_xmls_working[0]}, (False, None)), # invalid res + ] + for inputs, outputs in mapping_cases: + mapped_resnum, is_observed = pdb.map_uniprot_resnum_to_pdb(**inputs) + assert (mapped_resnum, is_observed) == outputs + def test_best_structures(pdb_ids_working, pdb_ids_obsolete, pdb_ids_false, test_files_tempdir): pass diff --git a/ssbio/test/test_files/structures/1atp.sifts.xml b/ssbio/test/test_files/structures/1atp.sifts.xml new file mode 100644 index 0000000..498d9c7 --- /dev/null +++ b/ssbio/test/test_files/structures/1atp.sifts.xml @@ -0,0 +1,6219 @@ + + + + + + Copyright notice: (c) 2004-2020, EMBL-EBI, PDBe-UniProt + Jose M. Dana, Nidhi Tyagi, Preeti Choudhary, Aleksandras Gutmanas, Claire O'Donovan, Maria J. Martin, Sameer Velankar. + The information included is supplied as-is, under the terms and conditions of the licence agreement. + + + + + + + + + + + + + + + + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + Not_Observed + + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + E + strand + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + H + helix + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + H + helix + + + + + + + + + + + + T + loop + + + + + + + + + + + + T + loop + + + + + + + + + KAPCA_MOUSE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + H + helix + + + + + + + + + H + helix + + + + + + + + + H + helix + + + + + + + + + H + helix + + + + + + + + + H + helix + + + + + + + + + H + helix + + + + + + + + + H + helix + + + + + + + + + H + helix + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + T + loop + + + + + + + + + IPKA_MOUSE + + + + + + + + + + + + + + + + + + + + From 624618602437e2c2e4adf90962adcef3af2d5b40 Mon Sep 17 00:00:00 2001 From: Joshua Meyers Date: Mon, 7 Dec 2020 16:50:58 +0000 Subject: [PATCH 2/2] fix tests --- ssbio/test/conftest.py | 2 +- ssbio/test/test_databases_pdb.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ssbio/test/conftest.py b/ssbio/test/conftest.py index 6fb3163..b9a77df 100644 --- a/ssbio/test/conftest.py +++ b/ssbio/test/conftest.py @@ -105,7 +105,7 @@ def pdb_ids_false(): @pytest.fixture(scope='module') -def sifts_xmls_working(test_files_structures): +def sifts_xml(test_files_structures): """ SIFTS XML file for protein structure with non-A,B chains """ # ssbio/test/test_files/structures/1atp.sifts.xml return op.join(test_files_structures, '1atp.sifts.xml') diff --git a/ssbio/test/test_databases_pdb.py b/ssbio/test/test_databases_pdb.py index 89d6d24..36f8ec8 100644 --- a/ssbio/test/test_databases_pdb.py +++ b/ssbio/test/test_databases_pdb.py @@ -30,12 +30,12 @@ def test_download_sifts_xml(pdb_ids_working, pdb_ids_obsolete, pdb_ids_false, te pdb.download_sifts_xml(pdb_id=fp, outdir=test_files_tempdir, force_rerun=True) -def test_map_uniprot_resnum_to_pdb(sifts_xmls_working): +def test_map_uniprot_resnum_to_pdb(sifts_xml): mapping_cases = [ # Tuple(inputs, expected_outputs) - ({'uniprot_resnum': 20, 'chain_id': 'I', 'sifts_file': sifts_xmls_working[0]}, (19, True)), - ({'uniprot_resnum': 20, 'chain_id': 'A', 'sifts_file': sifts_xmls_working[0]}, (False, None)), # invalid chain - ({'uniprot_resnum': 999, 'chain_id': 'I', 'sifts_file': sifts_xmls_working[0]}, (False, None)), # invalid res + ({'uniprot_resnum': 20, 'chain_id': 'I', 'sifts_file': sifts_xml}, (19, True)), + ({'uniprot_resnum': 20, 'chain_id': 'A', 'sifts_file': sifts_xml}, (None, False)), # invalid chain + ({'uniprot_resnum': 999, 'chain_id': 'I', 'sifts_file': sifts_xml}, (None, False)), # invalid res ] for inputs, outputs in mapping_cases: mapped_resnum, is_observed = pdb.map_uniprot_resnum_to_pdb(**inputs)