From 89de8c8ee092448241b8e20824fb6db19685b308 Mon Sep 17 00:00:00 2001 From: James Loy Date: Fri, 15 Mar 2024 01:00:18 -0500 Subject: [PATCH] Support multi character chain labels in CIF output format (#99) --- src/cif.cc | 2 +- src/freesasa.h | 2 +- src/node.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/cif.cc b/src/cif.cc index a965cd1..03fc31c 100644 --- a/src/cif.cc +++ b/src/cif.cc @@ -603,7 +603,7 @@ populate_freesasa_result_vectors(gemmi::cif::Table &table, freesasa_node *result append_freesasa_rsa_residue_to_block(table.bloc, residue); atom = freesasa_node_children(residue); while (atom) { - auto cName = std::string(1, freesasa_node_atom_chain(atom)); + auto cName = std::string(freesasa_node_atom_chain(atom)); // TODO figure out why this returns decimal string sometimes auto rNum = std::to_string(std::atoi(freesasa_node_atom_residue_number(atom))); auto rName = freesasa_node_atom_residue_name(atom); diff --git a/src/freesasa.h b/src/freesasa.h index 0cabaa0..8275ddf 100644 --- a/src/freesasa.h +++ b/src/freesasa.h @@ -1670,7 +1670,7 @@ freesasa_node_atom_residue_name(const freesasa_node *node); @ingroup node */ -char freesasa_node_atom_chain(const freesasa_node *node); +char* freesasa_node_atom_chain(const freesasa_node *node); /** Residue number. diff --git a/src/node.c b/src/node.c index 414d25b..07fd89e 100644 --- a/src/node.c +++ b/src/node.c @@ -14,7 +14,7 @@ struct atom_properties { int is_bb; double radius; char *pdb_line; - char chain; + char *chain; char *res_number; char *res_name; }; @@ -231,7 +231,7 @@ node_atom(const freesasa_structure *structure, atom->properties.atom.is_polar = freesasa_structure_atom_class(structure, atom_index) == FREESASA_ATOM_POLAR; atom->properties.atom.is_bb = freesasa_atom_is_backbone(atom->name); atom->properties.atom.radius = freesasa_structure_atom_radius(structure, atom_index); - atom->properties.atom.chain = freesasa_structure_atom_chain(structure, atom_index); + atom->properties.atom.chain = freesasa_structure_atom_chain_lcl(structure, atom_index); atom->properties.atom.res_number = strdup(freesasa_structure_atom_res_number(structure, atom_index)); if (atom->properties.atom.res_number == NULL) { @@ -590,7 +590,7 @@ freesasa_node_atom_residue_name(const freesasa_node *node) return node->properties.atom.res_name; } -char freesasa_node_atom_chain(const freesasa_node *node) +char* freesasa_node_atom_chain(const freesasa_node *node) { assert(node->type == FREESASA_NODE_ATOM); return node->properties.atom.chain;