diff --git a/translate2modelcif.py b/translate2modelcif.py index 89b92b1920229ddaa7da40cfe2305a579df89256..29b6e7187e6473bd6b3bfa554989c3b0e281fffe 100644 --- a/translate2modelcif.py +++ b/translate2modelcif.py @@ -222,7 +222,8 @@ def _get_entities(pdb_file, up_acs): cif_ent = {} sqe = _get_sequence(chn) upkb = _get_upkb_for_sequence(sqe, up_acs[i]) - cif_ent["cif_sequence"] = sqe + cif_ent["pdb_sequence"] = sqe + cif_ent["pdb_chain_id"] = chn.name cif_ent.update(upkb) entities.append(cif_ent) @@ -237,16 +238,18 @@ def _store_as_modelcif(interaction_name, data_json, file_prfx): id=interaction_name.upper(), model_details=data_json["model_details"], ) - # create target entities, references, source... + # create target entities, references, source, asymmetric units... # for source we assume all chains come from the same taxon source = ihm.source.Natural( ncbi_taxonomy_id=data_json["target_entities"][0]["up_ncbi_taxid"], scientific_name=data_json["target_entities"][0]["up_organism"], ) + + asym_units = {} for cif_ent in data_json["target_entities"]: # ToDo [input]: Get entity description mdlcif_ent = modelcif.Entity( - cif_ent["cif_sequence"], + cif_ent["pdb_sequence"], description="entity.pdbx_description", source=source, references=[ @@ -265,8 +268,14 @@ def _store_as_modelcif(interaction_name, data_json, file_prfx): ) ], ) + # ToDo [input]: Add details + asym_units[cif_ent["pdb_chain_id"]] = modelcif.AsymUnit( + mdlcif_ent, + details="struct_asym.details", + strand_id=cif_ent["pdb_chain_id"], + ) - system.entities.append(mdlcif_ent) + system.asym_units.extend(asym_units.values()) system.target_entities.append(mdlcif_ent) # audit_authors @@ -337,4 +346,4 @@ if __name__ == "__main__": # LocalWords: sqe olc ACDEFGHIKLMNPQRSTVWY RuntimeError upkb txt pylint iter # LocalWords: rspns unicode startswith sline len elif NCBI TaxID ncbi taxid # LocalWords: seqlen crc ISOFORM DT dt flds isoforms isoform ent LoadPDB ihm -# LocalWords: mdlcf mdlcif +# LocalWords: mdlcf mdlcif asym AsymUnit