mirror of
https://github.com/PDB-REDO/dssp.git
synced 2026-06-04 13:44:21 +08:00
Updated for libcifpp 10
This commit is contained in:
@@ -118,14 +118,14 @@ CPMFindPackage(
|
||||
EXCLUDE_FROM_ALL YES)
|
||||
|
||||
# No longer using CPM for libcifpp. It is now simply required to install it first.
|
||||
find_package(cifpp 9.0.6 QUIET)
|
||||
find_package(cifpp 10.0.0 QUIET)
|
||||
|
||||
if(NOT (cifpp_FOUND OR TARGET cifpp))
|
||||
# message(FATAL_ERROR "Could not find libcifpp. Please make sure you install libcifpp first, code can be found at https://github.com/PDB-REDO/libcifpp")
|
||||
CPMAddPackage(
|
||||
NAME cifpp
|
||||
GIT_REPOSITORY "https://github.com/PDB-REDO/libcifpp"
|
||||
GIT_TAG v9.0.6
|
||||
GIT_TAG v10.0.0
|
||||
EXCLUDE_FROM_ALL YES)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <algorithm>
|
||||
#include <cif++.hpp>
|
||||
#include <cif++/dictionary_parser.hpp>
|
||||
#include <cif++/row.hpp>
|
||||
#include <format>
|
||||
#include <iostream>
|
||||
#include <type_traits>
|
||||
@@ -276,7 +277,7 @@ void writeBridgePairs(cif::datablock &db, const dssp &dssp)
|
||||
data.emplace_back("acceptor_1_auth_seq_id", acceptor.auth_seq_id());
|
||||
data.emplace_back("acceptor_1_auth_asym_id", acceptor.auth_asym_id());
|
||||
data.emplace_back("acceptor_1_pdbx_PDB_ins_code", acceptor.pdb_ins_code());
|
||||
data.emplace_back("acceptor_1_energy", acceptorEnergy, 1);
|
||||
data.emplace_back("acceptor_1_energy", cif::item_value{ acceptorEnergy, 1 });
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -287,7 +288,7 @@ void writeBridgePairs(cif::datablock &db, const dssp &dssp)
|
||||
data.emplace_back("acceptor_2_auth_seq_id", acceptor.auth_seq_id());
|
||||
data.emplace_back("acceptor_2_auth_asym_id", acceptor.auth_asym_id());
|
||||
data.emplace_back("acceptor_2_pdbx_PDB_ins_code", acceptor.pdb_ins_code());
|
||||
data.emplace_back("acceptor_2_energy", acceptorEnergy, 1);
|
||||
data.emplace_back("acceptor_2_energy", cif::item_value{ acceptorEnergy, 1 });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +303,7 @@ void writeBridgePairs(cif::datablock &db, const dssp &dssp)
|
||||
data.emplace_back("donor_1_auth_seq_id", donor.auth_seq_id());
|
||||
data.emplace_back("donor_1_auth_asym_id", donor.auth_asym_id());
|
||||
data.emplace_back("donor_1_pdbx_PDB_ins_code", donor.pdb_ins_code());
|
||||
data.emplace_back("donor_1_energy", donorEnergy, 1);
|
||||
data.emplace_back("donor_1_energy", cif::item_value{ donorEnergy, 1 });
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -313,7 +314,7 @@ void writeBridgePairs(cif::datablock &db, const dssp &dssp)
|
||||
data.emplace_back("donor_2_auth_seq_id", donor.auth_seq_id());
|
||||
data.emplace_back("donor_2_auth_asym_id", donor.auth_asym_id());
|
||||
data.emplace_back("donor_2_pdbx_PDB_ins_code", donor.pdb_ins_code());
|
||||
data.emplace_back("donor_2_energy", donorEnergy, 1);
|
||||
data.emplace_back("donor_2_energy", cif::item_value{ donorEnergy, 1 });
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -518,37 +519,38 @@ void writeStatistics(cif::datablock &db, const dssp &dssp)
|
||||
if (stats.accessible_surface > 0)
|
||||
surface_accessibility = stats.accessible_surface;
|
||||
|
||||
auto stats_i = dssp_statistics.emplace({ //
|
||||
{ "entry_id", db.name() },
|
||||
auto stats_i = dssp_statistics.emplace({ { "entry_id", db.name() },
|
||||
{ "nr_of_residues", stats.count.residues },
|
||||
{ "nr_of_chains", stats.count.chains },
|
||||
{ "nr_of_ss_bridges_total", stats.count.SS_bridges },
|
||||
{ "nr_of_ss_bridges_intra_chain", stats.count.intra_chain_SS_bridges },
|
||||
{ "nr_of_ss_bridges_inter_chain", stats.count.SS_bridges - stats.count.intra_chain_SS_bridges },
|
||||
{ "accessible_surface_of_protein", surface_accessibility, 2 } });
|
||||
{ "nr_of_ss_bridges_inter_chain", stats.count.SS_bridges - stats.count.intra_chain_SS_bridges } });
|
||||
|
||||
if (surface_accessibility)
|
||||
(*stats_i)["accessible_surface_of_protein"] = { *surface_accessibility, 2 };
|
||||
|
||||
auto &dssp_struct_hbonds = db["dssp_statistics_hbond"];
|
||||
|
||||
dssp_struct_hbonds.emplace({ { "entry_id", db.name() },
|
||||
{ "type", "O(I)-->H-N(J)" },
|
||||
{ "count", stats.count.H_bonds },
|
||||
{ "count_per_100", stats.count.H_bonds * 100.0 / stats.count.residues, 1 } });
|
||||
{ "count_per_100", { stats.count.H_bonds * 100.0 / stats.count.residues, 1 } } });
|
||||
|
||||
dssp_struct_hbonds.emplace({ { "entry_id", db.name() },
|
||||
{ "type", "PARALLEL BRIDGES" },
|
||||
{ "count", stats.count.H_bonds_in_parallel_bridges },
|
||||
{ "count_per_100", stats.count.H_bonds_in_parallel_bridges * 100.0 / stats.count.residues, 1 } });
|
||||
{ "count_per_100", { stats.count.H_bonds_in_parallel_bridges * 100.0 / stats.count.residues, 1 } } });
|
||||
|
||||
dssp_struct_hbonds.emplace({ { "entry_id", db.name() },
|
||||
{ "type", "ANTIPARALLEL BRIDGES" },
|
||||
{ "count", stats.count.H_bonds_in_antiparallel_bridges },
|
||||
{ "count_per_100", stats.count.H_bonds_in_antiparallel_bridges * 100.0 / stats.count.residues, 1 } });
|
||||
{ "count_per_100", { stats.count.H_bonds_in_antiparallel_bridges * 100.0 / stats.count.residues, 1 } } });
|
||||
|
||||
for (int k = 0; k < 11; ++k)
|
||||
dssp_struct_hbonds.emplace({ { "entry_id", db.name() },
|
||||
{ "type", "O(I)-->H-N(I"s + (k - 5 < 0 ? '-' : '+') + std::to_string(abs(k - 5)) + ")" },
|
||||
{ "count", stats.count.H_Bonds_per_distance[k] },
|
||||
{ "count_per_100", stats.count.H_Bonds_per_distance[k] * 100.0 / stats.count.residues, 1 } });
|
||||
{ "count_per_100", { stats.count.H_Bonds_per_distance[k] * 100.0 / stats.count.residues, 1 } } });
|
||||
|
||||
auto &dssp_statistics_histogram = db["dssp_statistics_histogram"];
|
||||
|
||||
@@ -701,36 +703,36 @@ void writeSummary(cif::datablock &db, const dssp &dssp)
|
||||
{ "ladder_1", ladders[0] },
|
||||
{ "ladder_2", ladders[1] },
|
||||
|
||||
{ "x_ca", cax, 1 },
|
||||
{ "y_ca", cay, 1 },
|
||||
{ "z_ca", caz, 1 },
|
||||
{ "x_ca", { cax, 1 } },
|
||||
{ "y_ca", { cay, 1 } },
|
||||
{ "z_ca", { caz, 1 } },
|
||||
};
|
||||
|
||||
if (writeAccessibility)
|
||||
data.emplace_back("accessibility", res.accessibility(), 1);
|
||||
data.emplace_back("accessibility", cif::item_value{ res.accessibility(), 1 });
|
||||
|
||||
if (res.tco().has_value())
|
||||
data.emplace_back("TCO", *res.tco(), 3);
|
||||
data.emplace_back("TCO", cif::item_value{ *res.tco(), 3 });
|
||||
else
|
||||
data.emplace_back("TCO", ".");
|
||||
|
||||
if (res.kappa().has_value())
|
||||
data.emplace_back("kappa", *res.kappa(), 1);
|
||||
data.emplace_back("kappa", cif::item_value{ *res.kappa(), 1 });
|
||||
else
|
||||
data.emplace_back("kappa", ".");
|
||||
|
||||
if (res.alpha().has_value())
|
||||
data.emplace_back("alpha", *res.alpha(), 1);
|
||||
data.emplace_back("alpha", cif::item_value{ *res.alpha(), 1 });
|
||||
else
|
||||
data.emplace_back("alpha", ".");
|
||||
|
||||
if (res.phi().has_value())
|
||||
data.emplace_back("phi", *res.phi(), 1);
|
||||
data.emplace_back("phi", cif::item_value{ *res.phi(), 1 });
|
||||
else
|
||||
data.emplace_back("phi", ".");
|
||||
|
||||
if (res.psi().has_value())
|
||||
data.emplace_back("psi", *res.psi(), 1);
|
||||
data.emplace_back("psi", cif::item_value{ *res.psi(), 1 });
|
||||
else
|
||||
data.emplace_back("psi", ".");
|
||||
|
||||
|
||||
@@ -278,7 +278,7 @@ struct dssp::residue
|
||||
p = {};
|
||||
}
|
||||
|
||||
void addAtom(cif::row_handle atom)
|
||||
void addAtom(cif::const_row_handle atom)
|
||||
{
|
||||
std::string asymID, compID, atomID, type, authAsymID;
|
||||
std::optional<std::string> altID;
|
||||
|
||||
Reference in New Issue
Block a user