[med-svn] [Git][med-team/dssp][upstream] New upstream version 4.5.6

Maarten L. Hekkelman (@mhekkel-guest) gitlab at salsa.debian.org
Thu Nov 20 08:22:52 GMT 2025



Maarten L. Hekkelman pushed to branch upstream at Debian Med / dssp


Commits:
32a0b645 by Maarten L. Hekkelman at 2025-11-20T09:06:55+01:00
New upstream version 4.5.6
- - - - -


8 changed files:

- .github/workflows/cmake-multi-platform.yml
- .gitignore
- CMakeLists.txt
- changelog
- libdssp/src/dssp-io.cpp
- src/mkdssp.cpp
- test/CMakeLists.txt
- tools/depends.cmd


Changes:

=====================================
.github/workflows/cmake-multi-platform.yml
=====================================
@@ -45,7 +45,7 @@ jobs:
     - name: Install Catch2 macOS
       if: matrix.os == 'macos-latest'
       run: >
-        brew install catch2
+        brew install catch2 boost-python3
 
     - name: Install dependencies Window
       if: matrix.os == 'windows-latest'


=====================================
.gitignore
=====================================
@@ -6,3 +6,4 @@ build/
 src/revision.hpp
 libdssp/src/revision.hpp
 python-module/mkdssp.so
+.cache/


=====================================
CMakeLists.txt
=====================================
@@ -124,13 +124,13 @@ CPMFindPackage(
 
 # CPMFindPackage does not pass on variables set with set_and_check
 # Working around this here
-find_package(cifpp 8.0.1 QUIET)
+find_package(cifpp 9 QUIET)
 
 if(NOT cifpp_FOUND)
 	CPMAddPackage(
 		NAME cifpp
 		GIT_REPOSITORY https://github.com/pdb-redo/libcifpp.git
-		GIT_TAG v8.0.1
+		GIT_TAG v9.0.0
 		EXCLUDE_FROM_ALL YES)
 endif()
 


=====================================
changelog
=====================================
@@ -1,3 +1,6 @@
+Version 4.5.6
+- Using libcifpp version 9.0.0
+
 Version 4.5.5
 - Clean up old DSSP data before writing new
 - Regression: check for pdbx_poly_seq_scheme and if missing


=====================================
libdssp/src/dssp-io.cpp
=====================================
@@ -121,20 +121,20 @@ std::string ResidueToDSSPLine(const dssp::residue_info &info)
 		if (acceptor)
 		{
 			auto d = acceptor.nr() - info.nr();
-			NHO[i] = cif::format("%d,%3.1f", d, acceptorE).str();
+			NHO[i] = cif::format("{:d},{:3.1f}", d, acceptorE);
 		}
 
 		if (donor)
 		{
 			auto d = donor.nr() - info.nr();
-			ONH[i] = cif::format("%d,%3.1f", d, donorE).str();
+			ONH[i] = cif::format("{:d},{:3.1f}", d, donorE);
 		}
 	}
 
 	// auto ca = residue.atomByID("CA");
 	auto const &[cax, cay, caz] = residue.ca_location();
 
-	return cif::format("%5d%5d%1.1s%1.1s %c  %c%c%c%c%c%c%c%c%c%4d%4d%c%4.0f %11s%11s%11s%11s  %6.3f%6.1f%6.1f%6.1f%6.1f %6.1f %6.1f %6.1f",
+	return cif::format("{:5d}{:5d}{:1.1s}{:1.1s} {:1c}  {:1c}{:1c}{:1c}{:1c}{:1c}{:1c}{:1c}{:1c}{:1c}{:4d}{:4d}{:1c}{:4.0f} {:>11s}{:>11s}{:>11s}{:>11s}  {:6.3f}{:6.1f}{:6.1f}{:6.1f}{:6.1f} {:6.1f} {:6.1f} {:6.1f}",
 		info.nr(), residue.pdb_seq_num(), residue.pdb_ins_code(), residue.pdb_strand_id(), code,
 		ss, helix[3], helix[0], helix[1], helix[2], bend, chirality, bridgelabel[0], bridgelabel[1],
 		bp[0], bp[1], sheet, floor(info.accessibility() + 0.5),
@@ -144,8 +144,7 @@ std::string ResidueToDSSPLine(const dssp::residue_info &info)
 		residue.alpha().value_or(360),
 		residue.phi().value_or(360),
 		residue.psi().value_or(360),
-		cax, cay, caz)
-	    .str();
+		cax, cay, caz);
 }
 
 void writeDSSP(const dssp &dssp, std::ostream &os)
@@ -168,40 +167,40 @@ void writeDSSP(const dssp &dssp, std::ostream &os)
 	   << dssp.get_pdb_header_line(dssp::pdb_record_type::SOURCE) << '.' << std::endl
 	   << dssp.get_pdb_header_line(dssp::pdb_record_type::AUTHOR) << '.' << std::endl;
 
-	os << cif::format("%5d%3d%3d%3d%3d TOTAL NUMBER OF RESIDUES, NUMBER OF CHAINS, NUMBER OF SS-BRIDGES(TOTAL,INTRACHAIN,INTERCHAIN)                .",
+	os << cif::format("{:5d}{:3d}{:3d}{:3d}{:3d} TOTAL NUMBER OF RESIDUES, NUMBER OF CHAINS, NUMBER OF SS-BRIDGES(TOTAL,INTRACHAIN,INTERCHAIN)                .",
 			  stats.count.residues, stats.count.chains, stats.count.SS_bridges, stats.count.intra_chain_SS_bridges, (stats.count.SS_bridges - stats.count.intra_chain_SS_bridges))
 	   << std::endl;
 
-	os << cif::format("%8.1f   ACCESSIBLE SURFACE OF PROTEIN (ANGSTROM**2)                                                                         .", stats.accessible_surface) << std::endl;
+	os << cif::format("{:8.1f}   ACCESSIBLE SURFACE OF PROTEIN (ANGSTROM**2)                                                                         .", stats.accessible_surface) << std::endl;
 
 	// hydrogenbond summary
 
-	os << cif::format("%5d%5.1f   TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(J)  , SAME NUMBER PER 100 RESIDUES                              .", stats.count.H_bonds, (stats.count.H_bonds * 100.0 / stats.count.residues)) << std::endl;
+	os << cif::format("{:5d}{:5.1f}   TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(J)  , SAME NUMBER PER 100 RESIDUES                              .", stats.count.H_bonds, (stats.count.H_bonds * 100.0 / stats.count.residues)) << std::endl;
 
-	os << cif::format("%5d%5.1f   TOTAL NUMBER OF HYDROGEN BONDS IN     PARALLEL BRIDGES, SAME NUMBER PER 100 RESIDUES                              .", stats.count.H_bonds_in_parallel_bridges, (stats.count.H_bonds_in_parallel_bridges * 100.0 / stats.count.residues)) << std::endl;
+	os << cif::format("{:5d}{:5.1f}   TOTAL NUMBER OF HYDROGEN BONDS IN     PARALLEL BRIDGES, SAME NUMBER PER 100 RESIDUES                              .", stats.count.H_bonds_in_parallel_bridges, (stats.count.H_bonds_in_parallel_bridges * 100.0 / stats.count.residues)) << std::endl;
 
-	os << cif::format("%5d%5.1f   TOTAL NUMBER OF HYDROGEN BONDS IN ANTIPARALLEL BRIDGES, SAME NUMBER PER 100 RESIDUES                              .", stats.count.H_bonds_in_antiparallel_bridges, (stats.count.H_bonds_in_antiparallel_bridges * 100.0 / stats.count.residues)) << std::endl;
+	os << cif::format("{:5d}{:5.1f}   TOTAL NUMBER OF HYDROGEN BONDS IN ANTIPARALLEL BRIDGES, SAME NUMBER PER 100 RESIDUES                              .", stats.count.H_bonds_in_antiparallel_bridges, (stats.count.H_bonds_in_antiparallel_bridges * 100.0 / stats.count.residues)) << std::endl;
 
 	for (int k = 0; k < 11; ++k)
-		os << cif::format("%5d%5.1f   TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I%c%1d), SAME NUMBER PER 100 RESIDUES                              .", stats.count.H_Bonds_per_distance[k], (stats.count.H_Bonds_per_distance[k] * 100.0 / stats.count.residues), (k - 5 < 0 ? '-' : '+'), abs(k - 5)) << std::endl;
+		os << cif::format("{:5d}{:5.1f}   TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I{:1c}{:1d}), SAME NUMBER PER 100 RESIDUES                              .", stats.count.H_Bonds_per_distance[k], (stats.count.H_Bonds_per_distance[k] * 100.0 / stats.count.residues), (k - 5 < 0 ? '-' : '+'), abs(k - 5)) << std::endl;
 
 	// histograms...
 	os << "  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30     *** HISTOGRAMS OF ***           ." << std::endl;
 
 	for (auto hi : stats.histogram.residues_per_alpha_helix)
-		os << cif::format("%3d", hi);
+		os << cif::format("{:3d}", hi);
 	os << "    RESIDUES PER ALPHA HELIX         ." << std::endl;
 
 	for (auto hi : stats.histogram.parallel_bridges_per_ladder)
-		os << cif::format("%3d", hi);
+		os << cif::format("{:3d}", hi);
 	os << "    PARALLEL BRIDGES PER LADDER      ." << std::endl;
 
 	for (auto hi : stats.histogram.antiparallel_bridges_per_ladder)
-		os << cif::format("%3d", hi);
+		os << cif::format("{:3d}", hi);
 	os << "    ANTIPARALLEL BRIDGES PER LADDER  ." << std::endl;
 
 	for (auto hi : stats.histogram.ladders_per_sheet)
-		os << cif::format("%3d", hi);
+		os << cif::format("{:3d}", hi);
 	os << "    LADDERS PER SHEET                ." << std::endl;
 
 	// per residue information
@@ -215,7 +214,7 @@ void writeDSSP(const dssp &dssp, std::ostream &os)
 		// can be the transition to a different chain, or missing residues in the current chain
 
 		if (ri.nr() != last + 1)
-			os << cif::format("%5d        !%c             0   0    0      0, 0.0     0, 0.0     0, 0.0     0, 0.0   0.000 360.0 360.0 360.0 360.0    0.0    0.0    0.0",
+			os << cif::format("{:5d}        !{:1c}             0   0    0      0, 0.0     0, 0.0     0, 0.0     0, 0.0   0.000 360.0 360.0 360.0 360.0    0.0    0.0    0.0",
 					  (last + 1), (ri.chain_break() == dssp::chain_break_type::NewChain ? '*' : ' '))
 			   << std::endl;
 


=====================================
src/mkdssp.cpp
=====================================
@@ -129,8 +129,6 @@ int d_main(int argc, const char *argv[])
 
 	try
 	{
-		auto &cf = cif::validator_factory::instance();
-
 		cif::gzio::ifstream in(config.operands().front());
 		if (not in.is_open())
 		{
@@ -138,11 +136,18 @@ int d_main(int argc, const char *argv[])
 			exit(1);
 		}
 
+		if (cif::VERBOSE > 0)
+			std::cerr << "Loading file...";
+
 		f.load(in);
-		f.front().set_validator(&cf.get("mmcif_pdbx.dic"));
 
-		if (f.empty() or f.front().get("pdbx_poly_seq_scheme") == nullptr)
-			throw std::runtime_error("Missing pdbx_poly_seq_scheme, will attempt to recover...");
+		if (cif::VERBOSE > 0)
+			std::cerr << " fixup file...";
+
+		cif::pdb::fixup_pdbx(f);
+
+		if (cif::VERBOSE > 0)
+			std::cerr << " done\n";
 	}
 	catch (const std::exception &e)
 	{


=====================================
test/CMakeLists.txt
=====================================
@@ -1,7 +1,7 @@
 CPMFindPackage(
 	NAME Catch2 3
 	GIT_REPOSITORY https://github.com/catchorg/Catch2.git
-	GIT_TAG v3.8.0
+	GIT_TAG v3.4.0
 	EXCLUDE_FROM_ALL YES)
 
 add_executable(unit-test-dssp ${CMAKE_CURRENT_SOURCE_DIR}/unit-test-dssp.cpp ${PROJECT_SOURCE_DIR}/libdssp/src/dssp-io.cpp)


=====================================
tools/depends.cmd
=====================================
@@ -1,10 +1,13 @@
 @ECHO OFF
 SET ZLIB_VERSION=1.3
+SET PCRE2_VERSION=10.45
 
 IF NOT EXIST build_ci\libs (
   MKDIR build_ci\libs
 )
 CD build_ci\libs
+
+ at REM Install ZLib
 IF NOT EXIST zlib-%ZLIB_VERSION%.zip (
   ECHO Downloading https://github.com/libarchive/zlib/archive/v%ZLIB_VERSION%.zip
   curl -L -o zlib-%ZLIB_VERSION%.zip https://github.com/libarchive/zlib/archive/v%ZLIB_VERSION%.zip || EXIT /b 1
@@ -14,9 +17,24 @@ IF NOT EXIST zlib-%ZLIB_VERSION% (
   C:\windows\system32\tar.exe -x -f zlib-%ZLIB_VERSION%.zip || EXIT /b 1
 )
 CD zlib-%ZLIB_VERSION%
-cmake -G "Visual Studio 17 2022" . || EXIT /b 1
-cmake --build . --target ALL_BUILD --config Release || EXIT /b 1
-cmake --build . --target RUN_TESTS --config Release || EXIT /b 1
-cmake --build . --target INSTALL --config Release || EXIT /b 1
+cmake -B build || EXIT /b 1
+cmake --build build --target ALL_BUILD --config Release || EXIT /b 1
+cmake --build build --target RUN_TESTS --config Release || EXIT /b 1
+cmake --build build --target INSTALL --config Release || EXIT /b 1
+
+ at REM Install PCRE2
+IF NOT EXIST pcre2-%PCRE2_VERSION%.zip (
+  ECHO Downloading https://github.com/PCRE2Project/pcre2/releases/download/pcre2-%PCRE2_VERSION%/pcre2-%PCRE2_VERSION%.zip
+  curl -L -o pcre2-%PCRE2_VERSION%.zip https://github.com/PCRE2Project/pcre2/releases/download/pcre2-%PCRE2_VERSION%/pcre2-%PCRE2_VERSION%.zip || EXIT /b 1
+)
+IF NOT EXIST pcre2-%PCRE2_VERSION% (
+  ECHO Unpacking pcre2-%PCRE2_VERSION%.zip
+  C:\windows\system32\tar.exe -x -f pcre2-%PCRE2_VERSION%.zip || EXIT /b 1
+)
+CD pcre2-%PCRE2_VERSION%
+cmake -B build -DPCRE2_BUILD_PCRE2GREP=OFF || EXIT /b 1
+cmake --build build --target ALL_BUILD --config Release || EXIT /b 1
+ at REM cmake --build build --target RUN_TESTS --config Release || EXIT /b 1
+cmake --build build --target INSTALL --config Release || EXIT /b 1
 
 @EXIT /b 0



View it on GitLab: https://salsa.debian.org/med-team/dssp/-/commit/32a0b645b9251882fae61b66e58e397ddbb5f874

-- 
View it on GitLab: https://salsa.debian.org/med-team/dssp/-/commit/32a0b645b9251882fae61b66e58e397ddbb5f874
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20251120/1df90d31/attachment-0001.htm>


More information about the debian-med-commit mailing list