diff --git a/science/dssp/Makefile b/science/dssp/Makefile index 87eaec6066d4..648a5ae9f3c2 100644 --- a/science/dssp/Makefile +++ b/science/dssp/Makefile @@ -1,32 +1,31 @@ PORTNAME= dssp DISTVERSIONPREFIX= v -DISTVERSION= 4.4.11 -PORTREVISION= 2 +DISTVERSION= 4.5.8 CATEGORIES= science MAINTAINER= yuri@FreeBSD.org COMMENT= Application to assign secondary structure to proteins WWW= https://github.com/PDB-REDO/dssp LICENSE= BSD2CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= libmcfp>0:devel/libmcfp \ mrc:devel/mrc LIB_DEPENDS= libboost_iostreams.so:devel/boost-libs \ libcifpp.so:science/libcifpp TEST_DEPENDS= catch2>0:devel/catch2 USES= cmake:noninja,testing compiler:c++17-lang # ninja breaks when mrc is present USE_LDCONFIG= yes USE_GITHUB= yes GH_ACCOUNT= PDB-REDO CMAKE_ON= BUILD_SHARED_LIBS CMAKE_OFF= BUILD_TESTING CMAKE_TESTING_ON= BUILD_TESTING # tests as of 4.4.11: 100% tests passed, 0 tests failed out of 1 .include diff --git a/science/dssp/distinfo b/science/dssp/distinfo index 9481004e9bdd..6b8fae87332c 100644 --- a/science/dssp/distinfo +++ b/science/dssp/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1740732635 -SHA256 (PDB-REDO-dssp-v4.4.11_GH0.tar.gz) = 49dd6560358ba65fb971e158f78a54557ab6da1c49e502704b3bb9518e17acce -SIZE (PDB-REDO-dssp-v4.4.11_GH0.tar.gz) = 163930 +TIMESTAMP = 1774153102 +SHA256 (PDB-REDO-dssp-v4.5.8_GH0.tar.gz) = 634bf8d8dd96954bd680da90f3dcb66b87189c13b12b52b61de8af9d597b74ac +SIZE (PDB-REDO-dssp-v4.5.8_GH0.tar.gz) = 225240 diff --git a/science/dssp/files/patch-libdssp_src_dssp-io.cpp b/science/dssp/files/patch-libdssp_src_dssp-io.cpp new file mode 100644 index 000000000000..9c15f6050be7 --- /dev/null +++ b/science/dssp/files/patch-libdssp_src_dssp-io.cpp @@ -0,0 +1,128 @@ +--- libdssp/src/dssp-io.cpp.orig 2026-03-21 21:49:26.455057000 -0700 ++++ libdssp/src/dssp-io.cpp 2026-03-21 21:49:47.132217000 -0700 +@@ -276,7 +276,7 @@ + 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 +287,7 @@ + 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 +302,7 @@ + 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 +313,7 @@ + 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}); + } + } + } +@@ -525,30 +525,30 @@ + { "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 } }); ++ { "accessible_surface_of_protein", cif::item_value{surface_accessibility} } }); + + 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", cif::item_value{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", cif::item_value{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", cif::item_value{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", cif::item_value{stats.count.H_Bonds_per_distance[k] * 100.0 / stats.count.residues, 1} } }); + + auto &dssp_statistics_histogram = db["dssp_statistics_histogram"]; + +@@ -701,36 +701,36 @@ + { "ladder_1", ladders[0] }, + { "ladder_2", ladders[1] }, + +- { "x_ca", cax, 1 }, +- { "y_ca", cay, 1 }, +- { "z_ca", caz, 1 }, ++ { "x_ca", cif::item_value{cax, 1} }, ++ { "y_ca", cif::item_value{cay, 1} }, ++ { "z_ca", cif::item_value{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", "."); + +@@ -757,7 +757,6 @@ + + if (audit_conform.empty()) + { +- static_assert(std::is_reference_v().get(""))>); + fill_audit_conform(audit_conform); + } + diff --git a/science/dssp/files/patch-libdssp_src_dssp.cpp b/science/dssp/files/patch-libdssp_src_dssp.cpp new file mode 100644 index 000000000000..19dc7cacde12 --- /dev/null +++ b/science/dssp/files/patch-libdssp_src_dssp.cpp @@ -0,0 +1,11 @@ +--- libdssp/src/dssp.cpp.orig 2026-03-21 21:49:26.455914000 -0700 ++++ libdssp/src/dssp.cpp 2026-03-21 21:49:52.366128000 -0700 +@@ -278,7 +278,7 @@ + p = {}; + } + +- void addAtom(cif::row_handle atom) ++ void addAtom(cif::const_row_handle atom) + { + std::string asymID, compID, atomID, type, authAsymID; + std::optional altID; diff --git a/science/dssp/pkg-plist b/science/dssp/pkg-plist index 2647e94578a5..02428e2cde75 100644 --- a/science/dssp/pkg-plist +++ b/science/dssp/pkg-plist @@ -1,10 +1,2 @@ bin/mkdssp -include/dssp.hpp -lib/cmake/dssp/dsspConfig.cmake -lib/cmake/dssp/dsspTargets-%%CMAKE_BUILD_TYPE%%.cmake -lib/cmake/dssp/dsspTargets.cmake -lib/libdssp.so -lib/libdssp.so.4 -lib/libdssp.so.4.4.11 -share/libcifpp/dssp-extension.dic share/man/man1/mkdssp.1.gz