Skip to content

Commit bbb8354

Browse files
authored
Alternate/optional fields for CIF parsing (#78)
Some modeling tools (e.g., Boltz-2) write CIF files that we can't currently parse. The CIF standard lists `_atom_site.label_atom_id` as a required field, but we use `_atom_site.auth_atom_id`. This allows both. It also makes `_atom_site.pdbx_formal_charge` optional. Reference: https://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v50.dic/Categories/atom_site.html#
1 parent c70cc28 commit bbb8354

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

src/mmcif.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ end
387387
AtomRecord(d::MMCIFDict, i::Integer) = AtomRecord(
388388
d["_atom_site.group_PDB"][i] == "HETATM",
389389
parse(Int, d["_atom_site.id"][i]),
390-
d["_atom_site.auth_atom_id"][i],
390+
get(d, "_atom_site.auth_atom_id", d["_atom_site.label_atom_id"])[i],
391391
d["_atom_site.label_alt_id"][i] in missingvals ? ' ' : d["_atom_site.label_alt_id"][i][1],
392392
d["_atom_site.auth_comp_id"][i],
393393
d["_atom_site.auth_asym_id"][i],
@@ -401,7 +401,7 @@ AtomRecord(d::MMCIFDict, i::Integer) = AtomRecord(
401401
d["_atom_site.occupancy"][i] in missingvals ? 1.0 : parse(Float64, d["_atom_site.occupancy"][i]),
402402
d["_atom_site.B_iso_or_equiv"][i] in missingvals ? 0.0 : parse(Float64, d["_atom_site.B_iso_or_equiv"][i]),
403403
d["_atom_site.type_symbol"][i] in missingvals ? " " : d["_atom_site.type_symbol"][i],
404-
d["_atom_site.pdbx_formal_charge"][i] in missingvals ? " " : d["_atom_site.pdbx_formal_charge"][i],
404+
haskey(d, "_atom_site.pdbx_formal_charge") ? (d["_atom_site.pdbx_formal_charge"][i] in missingvals ? " " : d["_atom_site.pdbx_formal_charge"][i]) : " ",
405405
)
406406

407407
# Format a mmCIF data value by enclosing with quotes or semicolon lines where

0 commit comments

Comments
 (0)