hillclimber 0.1.6__cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. hillclimber/__init__.py +41 -0
  2. hillclimber/actions.py +53 -0
  3. hillclimber/analysis.py +590 -0
  4. hillclimber/biases.py +293 -0
  5. hillclimber/calc.py +22 -0
  6. hillclimber/cvs.py +1070 -0
  7. hillclimber/interfaces.py +133 -0
  8. hillclimber/metadynamics.py +416 -0
  9. hillclimber/nodes.py +6 -0
  10. hillclimber/opes.py +359 -0
  11. hillclimber/pycv.py +362 -0
  12. hillclimber/selectors.py +230 -0
  13. hillclimber/virtual_atoms.py +341 -0
  14. hillclimber-0.1.6.dist-info/METADATA +325 -0
  15. hillclimber-0.1.6.dist-info/RECORD +475 -0
  16. hillclimber-0.1.6.dist-info/WHEEL +6 -0
  17. hillclimber-0.1.6.dist-info/entry_points.txt +8 -0
  18. hillclimber-0.1.6.dist-info/licenses/LICENSE +165 -0
  19. hillclimber-0.1.6.dist-info/sboms/auditwheel.cdx.json +1 -0
  20. hillclimber.libs/libgomp-a49a47f9.so.1.0.0 +0 -0
  21. plumed/__init__.py +104 -0
  22. plumed/_lib/bin/plumed +0 -0
  23. plumed/_lib/bin/plumed-config +9 -0
  24. plumed/_lib/bin/plumed-patch +9 -0
  25. plumed/_lib/include/plumed/adjmat/AdjacencyMatrixBase.h +659 -0
  26. plumed/_lib/include/plumed/adjmat/ContactMatrix.h +59 -0
  27. plumed/_lib/include/plumed/asmjit/arch.h +228 -0
  28. plumed/_lib/include/plumed/asmjit/arm.h +43 -0
  29. plumed/_lib/include/plumed/asmjit/asmjit.h +69 -0
  30. plumed/_lib/include/plumed/asmjit/asmjit_apibegin.h +143 -0
  31. plumed/_lib/include/plumed/asmjit/asmjit_apiend.h +93 -0
  32. plumed/_lib/include/plumed/asmjit/asmjit_build.h +971 -0
  33. plumed/_lib/include/plumed/asmjit/assembler.h +183 -0
  34. plumed/_lib/include/plumed/asmjit/base.h +56 -0
  35. plumed/_lib/include/plumed/asmjit/codebuilder.h +944 -0
  36. plumed/_lib/include/plumed/asmjit/codecompiler.h +767 -0
  37. plumed/_lib/include/plumed/asmjit/codeemitter.h +528 -0
  38. plumed/_lib/include/plumed/asmjit/codeholder.h +777 -0
  39. plumed/_lib/include/plumed/asmjit/constpool.h +286 -0
  40. plumed/_lib/include/plumed/asmjit/cpuinfo.h +402 -0
  41. plumed/_lib/include/plumed/asmjit/func.h +1327 -0
  42. plumed/_lib/include/plumed/asmjit/globals.h +370 -0
  43. plumed/_lib/include/plumed/asmjit/inst.h +137 -0
  44. plumed/_lib/include/plumed/asmjit/logging.h +317 -0
  45. plumed/_lib/include/plumed/asmjit/misc_p.h +103 -0
  46. plumed/_lib/include/plumed/asmjit/moved_string.h +318 -0
  47. plumed/_lib/include/plumed/asmjit/operand.h +1599 -0
  48. plumed/_lib/include/plumed/asmjit/osutils.h +207 -0
  49. plumed/_lib/include/plumed/asmjit/regalloc_p.h +597 -0
  50. plumed/_lib/include/plumed/asmjit/runtime.h +227 -0
  51. plumed/_lib/include/plumed/asmjit/simdtypes.h +1104 -0
  52. plumed/_lib/include/plumed/asmjit/utils.h +1387 -0
  53. plumed/_lib/include/plumed/asmjit/vmem.h +183 -0
  54. plumed/_lib/include/plumed/asmjit/x86.h +45 -0
  55. plumed/_lib/include/plumed/asmjit/x86assembler.h +125 -0
  56. plumed/_lib/include/plumed/asmjit/x86builder.h +117 -0
  57. plumed/_lib/include/plumed/asmjit/x86compiler.h +322 -0
  58. plumed/_lib/include/plumed/asmjit/x86emitter.h +5149 -0
  59. plumed/_lib/include/plumed/asmjit/x86globals.h +535 -0
  60. plumed/_lib/include/plumed/asmjit/x86inst.h +2547 -0
  61. plumed/_lib/include/plumed/asmjit/x86instimpl_p.h +74 -0
  62. plumed/_lib/include/plumed/asmjit/x86internal_p.h +108 -0
  63. plumed/_lib/include/plumed/asmjit/x86logging_p.h +92 -0
  64. plumed/_lib/include/plumed/asmjit/x86misc.h +417 -0
  65. plumed/_lib/include/plumed/asmjit/x86operand.h +1133 -0
  66. plumed/_lib/include/plumed/asmjit/x86regalloc_p.h +734 -0
  67. plumed/_lib/include/plumed/asmjit/zone.h +1157 -0
  68. plumed/_lib/include/plumed/bias/Bias.h +82 -0
  69. plumed/_lib/include/plumed/bias/ReweightBase.h +58 -0
  70. plumed/_lib/include/plumed/blas/blas.h +253 -0
  71. plumed/_lib/include/plumed/blas/def_external.h +61 -0
  72. plumed/_lib/include/plumed/blas/def_internal.h +97 -0
  73. plumed/_lib/include/plumed/blas/real.h +49 -0
  74. plumed/_lib/include/plumed/cltools/CLTool.h +32 -0
  75. plumed/_lib/include/plumed/clusters/ClusteringBase.h +70 -0
  76. plumed/_lib/include/plumed/colvar/Colvar.h +32 -0
  77. plumed/_lib/include/plumed/colvar/ColvarInput.h +68 -0
  78. plumed/_lib/include/plumed/colvar/ColvarShortcut.h +81 -0
  79. plumed/_lib/include/plumed/colvar/CoordinationBase.h +52 -0
  80. plumed/_lib/include/plumed/colvar/MultiColvarTemplate.h +333 -0
  81. plumed/_lib/include/plumed/colvar/PathMSDBase.h +101 -0
  82. plumed/_lib/include/plumed/colvar/RMSDVector.h +78 -0
  83. plumed/_lib/include/plumed/config/Config.h +118 -0
  84. plumed/_lib/include/plumed/config/version.h +9 -0
  85. plumed/_lib/include/plumed/contour/ContourFindingObject.h +87 -0
  86. plumed/_lib/include/plumed/contour/DistanceFromContourBase.h +82 -0
  87. plumed/_lib/include/plumed/contour/FindContour.h +67 -0
  88. plumed/_lib/include/plumed/core/Action.h +540 -0
  89. plumed/_lib/include/plumed/core/ActionAnyorder.h +48 -0
  90. plumed/_lib/include/plumed/core/ActionAtomistic.h +343 -0
  91. plumed/_lib/include/plumed/core/ActionForInterface.h +99 -0
  92. plumed/_lib/include/plumed/core/ActionPilot.h +57 -0
  93. plumed/_lib/include/plumed/core/ActionRegister.h +124 -0
  94. plumed/_lib/include/plumed/core/ActionSet.h +163 -0
  95. plumed/_lib/include/plumed/core/ActionSetup.h +48 -0
  96. plumed/_lib/include/plumed/core/ActionShortcut.h +73 -0
  97. plumed/_lib/include/plumed/core/ActionToGetData.h +59 -0
  98. plumed/_lib/include/plumed/core/ActionToPutData.h +101 -0
  99. plumed/_lib/include/plumed/core/ActionWithArguments.h +140 -0
  100. plumed/_lib/include/plumed/core/ActionWithMatrix.h +87 -0
  101. plumed/_lib/include/plumed/core/ActionWithValue.h +258 -0
  102. plumed/_lib/include/plumed/core/ActionWithVector.h +94 -0
  103. plumed/_lib/include/plumed/core/ActionWithVirtualAtom.h +123 -0
  104. plumed/_lib/include/plumed/core/CLTool.h +177 -0
  105. plumed/_lib/include/plumed/core/CLToolMain.h +102 -0
  106. plumed/_lib/include/plumed/core/CLToolRegister.h +108 -0
  107. plumed/_lib/include/plumed/core/Colvar.h +115 -0
  108. plumed/_lib/include/plumed/core/DataPassingObject.h +94 -0
  109. plumed/_lib/include/plumed/core/DataPassingTools.h +54 -0
  110. plumed/_lib/include/plumed/core/DomainDecomposition.h +120 -0
  111. plumed/_lib/include/plumed/core/ExchangePatterns.h +47 -0
  112. plumed/_lib/include/plumed/core/FlexibleBin.h +63 -0
  113. plumed/_lib/include/plumed/core/GREX.h +61 -0
  114. plumed/_lib/include/plumed/core/GenericMolInfo.h +89 -0
  115. plumed/_lib/include/plumed/core/Group.h +41 -0
  116. plumed/_lib/include/plumed/core/ModuleMap.h +30 -0
  117. plumed/_lib/include/plumed/core/ParallelTaskManager.h +1023 -0
  118. plumed/_lib/include/plumed/core/PbcAction.h +61 -0
  119. plumed/_lib/include/plumed/core/PlumedMain.h +632 -0
  120. plumed/_lib/include/plumed/core/PlumedMainInitializer.h +118 -0
  121. plumed/_lib/include/plumed/core/RegisterBase.h +340 -0
  122. plumed/_lib/include/plumed/core/TargetDist.h +48 -0
  123. plumed/_lib/include/plumed/core/Value.h +547 -0
  124. plumed/_lib/include/plumed/core/WithCmd.h +93 -0
  125. plumed/_lib/include/plumed/dimred/SMACOF.h +55 -0
  126. plumed/_lib/include/plumed/drr/DRR.h +383 -0
  127. plumed/_lib/include/plumed/drr/colvar_UIestimator.h +777 -0
  128. plumed/_lib/include/plumed/fisst/legendre_rule_fast.h +44 -0
  129. plumed/_lib/include/plumed/function/Custom.h +54 -0
  130. plumed/_lib/include/plumed/function/Function.h +85 -0
  131. plumed/_lib/include/plumed/function/FunctionOfMatrix.h +368 -0
  132. plumed/_lib/include/plumed/function/FunctionOfScalar.h +135 -0
  133. plumed/_lib/include/plumed/function/FunctionOfVector.h +296 -0
  134. plumed/_lib/include/plumed/function/FunctionSetup.h +180 -0
  135. plumed/_lib/include/plumed/function/FunctionShortcut.h +130 -0
  136. plumed/_lib/include/plumed/function/FunctionWithSingleArgument.h +165 -0
  137. plumed/_lib/include/plumed/gridtools/ActionWithGrid.h +43 -0
  138. plumed/_lib/include/plumed/gridtools/EvaluateGridFunction.h +99 -0
  139. plumed/_lib/include/plumed/gridtools/FunctionOfGrid.h +295 -0
  140. plumed/_lib/include/plumed/gridtools/GridCoordinatesObject.h +179 -0
  141. plumed/_lib/include/plumed/gridtools/GridSearch.h +135 -0
  142. plumed/_lib/include/plumed/gridtools/Interpolator.h +45 -0
  143. plumed/_lib/include/plumed/gridtools/KDE.h +455 -0
  144. plumed/_lib/include/plumed/gridtools/RDF.h +40 -0
  145. plumed/_lib/include/plumed/gridtools/SumOfKernels.h +219 -0
  146. plumed/_lib/include/plumed/isdb/MetainferenceBase.h +398 -0
  147. plumed/_lib/include/plumed/lapack/def_external.h +207 -0
  148. plumed/_lib/include/plumed/lapack/def_internal.h +388 -0
  149. plumed/_lib/include/plumed/lapack/lapack.h +899 -0
  150. plumed/_lib/include/plumed/lapack/lapack_limits.h +79 -0
  151. plumed/_lib/include/plumed/lapack/real.h +50 -0
  152. plumed/_lib/include/plumed/lepton/CompiledExpression.h +164 -0
  153. plumed/_lib/include/plumed/lepton/CustomFunction.h +143 -0
  154. plumed/_lib/include/plumed/lepton/Exception.h +93 -0
  155. plumed/_lib/include/plumed/lepton/ExpressionProgram.h +137 -0
  156. plumed/_lib/include/plumed/lepton/ExpressionTreeNode.h +145 -0
  157. plumed/_lib/include/plumed/lepton/Lepton.h +85 -0
  158. plumed/_lib/include/plumed/lepton/MSVC_erfc.h +123 -0
  159. plumed/_lib/include/plumed/lepton/Operation.h +1302 -0
  160. plumed/_lib/include/plumed/lepton/ParsedExpression.h +165 -0
  161. plumed/_lib/include/plumed/lepton/Parser.h +111 -0
  162. plumed/_lib/include/plumed/lepton/windowsIncludes.h +73 -0
  163. plumed/_lib/include/plumed/mapping/Path.h +44 -0
  164. plumed/_lib/include/plumed/mapping/PathProjectionCalculator.h +57 -0
  165. plumed/_lib/include/plumed/matrixtools/MatrixOperationBase.h +54 -0
  166. plumed/_lib/include/plumed/matrixtools/MatrixTimesMatrix.h +309 -0
  167. plumed/_lib/include/plumed/matrixtools/MatrixTimesVectorBase.h +365 -0
  168. plumed/_lib/include/plumed/matrixtools/OuterProduct.h +238 -0
  169. plumed/_lib/include/plumed/maze/Core.h +65 -0
  170. plumed/_lib/include/plumed/maze/Loss.h +86 -0
  171. plumed/_lib/include/plumed/maze/Member.h +66 -0
  172. plumed/_lib/include/plumed/maze/Memetic.h +799 -0
  173. plumed/_lib/include/plumed/maze/Optimizer.h +357 -0
  174. plumed/_lib/include/plumed/maze/Random_MT.h +156 -0
  175. plumed/_lib/include/plumed/maze/Tools.h +183 -0
  176. plumed/_lib/include/plumed/metatomic/vesin.h +188 -0
  177. plumed/_lib/include/plumed/molfile/Gromacs.h +2013 -0
  178. plumed/_lib/include/plumed/molfile/endianswap.h +217 -0
  179. plumed/_lib/include/plumed/molfile/fastio.h +683 -0
  180. plumed/_lib/include/plumed/molfile/largefiles.h +78 -0
  181. plumed/_lib/include/plumed/molfile/libmolfile_plugin.h +77 -0
  182. plumed/_lib/include/plumed/molfile/molfile_plugin.h +1034 -0
  183. plumed/_lib/include/plumed/molfile/periodic_table.h +248 -0
  184. plumed/_lib/include/plumed/molfile/readpdb.h +447 -0
  185. plumed/_lib/include/plumed/molfile/vmdplugin.h +236 -0
  186. plumed/_lib/include/plumed/multicolvar/MultiColvarShortcuts.h +45 -0
  187. plumed/_lib/include/plumed/opes/ExpansionCVs.h +79 -0
  188. plumed/_lib/include/plumed/sasa/Sasa.h +32 -0
  189. plumed/_lib/include/plumed/secondarystructure/SecondaryStructureBase.h +372 -0
  190. plumed/_lib/include/plumed/setup/ActionSetup.h +25 -0
  191. plumed/_lib/include/plumed/small_vector/small_vector.h +6114 -0
  192. plumed/_lib/include/plumed/symfunc/CoordinationNumbers.h +41 -0
  193. plumed/_lib/include/plumed/tools/Angle.h +52 -0
  194. plumed/_lib/include/plumed/tools/AtomDistribution.h +138 -0
  195. plumed/_lib/include/plumed/tools/AtomNumber.h +152 -0
  196. plumed/_lib/include/plumed/tools/BiasRepresentation.h +106 -0
  197. plumed/_lib/include/plumed/tools/BitmaskEnum.h +167 -0
  198. plumed/_lib/include/plumed/tools/Brent1DRootSearch.h +159 -0
  199. plumed/_lib/include/plumed/tools/CheckInRange.h +44 -0
  200. plumed/_lib/include/plumed/tools/Citations.h +74 -0
  201. plumed/_lib/include/plumed/tools/ColvarOutput.h +118 -0
  202. plumed/_lib/include/plumed/tools/Communicator.h +316 -0
  203. plumed/_lib/include/plumed/tools/ConjugateGradient.h +80 -0
  204. plumed/_lib/include/plumed/tools/DLLoader.h +79 -0
  205. plumed/_lib/include/plumed/tools/ERMSD.h +73 -0
  206. plumed/_lib/include/plumed/tools/Exception.h +406 -0
  207. plumed/_lib/include/plumed/tools/File.h +28 -0
  208. plumed/_lib/include/plumed/tools/FileBase.h +153 -0
  209. plumed/_lib/include/plumed/tools/FileTools.h +37 -0
  210. plumed/_lib/include/plumed/tools/ForwardDecl.h +54 -0
  211. plumed/_lib/include/plumed/tools/Grid.h +638 -0
  212. plumed/_lib/include/plumed/tools/HistogramBead.h +136 -0
  213. plumed/_lib/include/plumed/tools/IFile.h +117 -0
  214. plumed/_lib/include/plumed/tools/KernelFunctions.h +113 -0
  215. plumed/_lib/include/plumed/tools/Keywords.h +380 -0
  216. plumed/_lib/include/plumed/tools/LatticeReduction.h +66 -0
  217. plumed/_lib/include/plumed/tools/LeptonCall.h +64 -0
  218. plumed/_lib/include/plumed/tools/LinkCells.h +126 -0
  219. plumed/_lib/include/plumed/tools/Log.h +41 -0
  220. plumed/_lib/include/plumed/tools/LoopUnroller.h +163 -0
  221. plumed/_lib/include/plumed/tools/Matrix.h +721 -0
  222. plumed/_lib/include/plumed/tools/MatrixSquareBracketsAccess.h +138 -0
  223. plumed/_lib/include/plumed/tools/MergeVectorTools.h +153 -0
  224. plumed/_lib/include/plumed/tools/Minimise1DBrent.h +244 -0
  225. plumed/_lib/include/plumed/tools/MinimiseBase.h +120 -0
  226. plumed/_lib/include/plumed/tools/MolDataClass.h +51 -0
  227. plumed/_lib/include/plumed/tools/NeighborList.h +112 -0
  228. plumed/_lib/include/plumed/tools/OFile.h +286 -0
  229. plumed/_lib/include/plumed/tools/OpenACC.h +180 -0
  230. plumed/_lib/include/plumed/tools/OpenMP.h +75 -0
  231. plumed/_lib/include/plumed/tools/PDB.h +154 -0
  232. plumed/_lib/include/plumed/tools/Pbc.h +139 -0
  233. plumed/_lib/include/plumed/tools/PlumedHandle.h +105 -0
  234. plumed/_lib/include/plumed/tools/RMSD.h +493 -0
  235. plumed/_lib/include/plumed/tools/Random.h +80 -0
  236. plumed/_lib/include/plumed/tools/RootFindingBase.h +79 -0
  237. plumed/_lib/include/plumed/tools/Stopwatch.h +475 -0
  238. plumed/_lib/include/plumed/tools/Subprocess.h +142 -0
  239. plumed/_lib/include/plumed/tools/SwitchingFunction.h +208 -0
  240. plumed/_lib/include/plumed/tools/Tensor.h +724 -0
  241. plumed/_lib/include/plumed/tools/TokenizedLine.h +123 -0
  242. plumed/_lib/include/plumed/tools/Tools.h +638 -0
  243. plumed/_lib/include/plumed/tools/Torsion.h +55 -0
  244. plumed/_lib/include/plumed/tools/TrajectoryParser.h +118 -0
  245. plumed/_lib/include/plumed/tools/Tree.h +61 -0
  246. plumed/_lib/include/plumed/tools/TypesafePtr.h +463 -0
  247. plumed/_lib/include/plumed/tools/Units.h +167 -0
  248. plumed/_lib/include/plumed/tools/Vector.h +433 -0
  249. plumed/_lib/include/plumed/tools/View.h +296 -0
  250. plumed/_lib/include/plumed/tools/View2D.h +100 -0
  251. plumed/_lib/include/plumed/tools/h36.h +39 -0
  252. plumed/_lib/include/plumed/vatom/ActionWithVirtualAtom.h +32 -0
  253. plumed/_lib/include/plumed/ves/BasisFunctions.h +380 -0
  254. plumed/_lib/include/plumed/ves/CoeffsBase.h +310 -0
  255. plumed/_lib/include/plumed/ves/CoeffsMatrix.h +220 -0
  256. plumed/_lib/include/plumed/ves/CoeffsVector.h +251 -0
  257. plumed/_lib/include/plumed/ves/FermiSwitchingFunction.h +74 -0
  258. plumed/_lib/include/plumed/ves/GridIntegrationWeights.h +50 -0
  259. plumed/_lib/include/plumed/ves/GridLinearInterpolation.h +81 -0
  260. plumed/_lib/include/plumed/ves/GridProjWeights.h +61 -0
  261. plumed/_lib/include/plumed/ves/LinearBasisSetExpansion.h +303 -0
  262. plumed/_lib/include/plumed/ves/Optimizer.h +444 -0
  263. plumed/_lib/include/plumed/ves/TargetDistModifer.h +53 -0
  264. plumed/_lib/include/plumed/ves/TargetDistribution.h +266 -0
  265. plumed/_lib/include/plumed/ves/VesBias.h +545 -0
  266. plumed/_lib/include/plumed/ves/VesTools.h +142 -0
  267. plumed/_lib/include/plumed/ves/WaveletGrid.h +75 -0
  268. plumed/_lib/include/plumed/volumes/ActionVolume.h +268 -0
  269. plumed/_lib/include/plumed/volumes/VolumeShortcut.h +147 -0
  270. plumed/_lib/include/plumed/wrapper/Plumed.h +5025 -0
  271. plumed/_lib/include/plumed/xdrfile/xdrfile.h +663 -0
  272. plumed/_lib/include/plumed/xdrfile/xdrfile_trr.h +89 -0
  273. plumed/_lib/include/plumed/xdrfile/xdrfile_xtc.h +90 -0
  274. plumed/_lib/lib/PythonCVInterface.so +0 -0
  275. plumed/_lib/lib/libplumed.a +0 -0
  276. plumed/_lib/lib/libplumed.so +0 -0
  277. plumed/_lib/lib/libplumedKernel.so +0 -0
  278. plumed/_lib/lib/libplumedWrapper.a +0 -0
  279. plumed/_lib/lib/pkgconfig/plumed.pc +13 -0
  280. plumed/_lib/lib/pkgconfig/plumedInternals.pc +13 -0
  281. plumed/_lib/lib/pkgconfig/plumedWrapper.pc +13 -0
  282. plumed/_lib/lib/plumed/fortran/plumed.f90 +879 -0
  283. plumed/_lib/lib/plumed/fortran/plumed_f08.f90 +2625 -0
  284. plumed/_lib/lib/plumed/modulefile +69 -0
  285. plumed/_lib/lib/plumed/patches/gromacs-2022.5.config +43 -0
  286. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt +543 -0
  287. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt.preplumed +540 -0
  288. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp +1628 -0
  289. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1590 -0
  290. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h +103 -0
  291. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h.preplumed +99 -0
  292. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp +2527 -0
  293. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2513 -0
  294. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  295. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  296. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +408 -0
  297. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +394 -0
  298. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp +2348 -0
  299. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2091 -0
  300. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp +3573 -0
  301. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3495 -0
  302. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1506 -0
  303. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1402 -0
  304. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  305. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  306. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp +997 -0
  307. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +906 -0
  308. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp +2780 -0
  309. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2738 -0
  310. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  311. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  312. plumed/_lib/lib/plumed/patches/gromacs-2023.5.config +43 -0
  313. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt +549 -0
  314. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt.preplumed +546 -0
  315. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
  316. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
  317. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h +104 -0
  318. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
  319. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp +2624 -0
  320. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2610 -0
  321. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  322. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  323. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +409 -0
  324. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +395 -0
  325. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp +2419 -0
  326. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2164 -0
  327. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp +3546 -0
  328. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3468 -0
  329. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
  330. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
  331. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  332. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  333. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp +991 -0
  334. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +900 -0
  335. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp +2895 -0
  336. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2849 -0
  337. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  338. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  339. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp +886 -0
  340. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +880 -0
  341. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +347 -0
  342. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +345 -0
  343. plumed/_lib/lib/plumed/patches/gromacs-2024.3.config +43 -0
  344. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt +575 -0
  345. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt.preplumed +572 -0
  346. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
  347. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
  348. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h +104 -0
  349. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
  350. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp +2564 -0
  351. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2550 -0
  352. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  353. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  354. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h +410 -0
  355. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +396 -0
  356. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp +2435 -0
  357. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp.preplumed +2187 -0
  358. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp +3592 -0
  359. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3514 -0
  360. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
  361. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
  362. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  363. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  364. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp +958 -0
  365. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp.preplumed +929 -0
  366. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp +2987 -0
  367. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp.preplumed +2941 -0
  368. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  369. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  370. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp +904 -0
  371. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +898 -0
  372. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +353 -0
  373. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +351 -0
  374. plumed/_lib/lib/plumed/patches/gromacs-2025.0.config +39 -0
  375. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake +82 -0
  376. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake.preplumed +82 -0
  377. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp +162 -0
  378. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp.preplumed +154 -0
  379. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp +107 -0
  380. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp.preplumed +99 -0
  381. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h +120 -0
  382. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h.preplumed +111 -0
  383. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp +215 -0
  384. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp.preplumed +197 -0
  385. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h +87 -0
  386. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h.preplumed +86 -0
  387. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp +2971 -0
  388. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp.preplumed +2970 -0
  389. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h +430 -0
  390. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h.preplumed +429 -0
  391. plumed/_lib/lib/plumed/patches/namd-2.12.config +30 -0
  392. plumed/_lib/lib/plumed/patches/namd-2.12.diff +267 -0
  393. plumed/_lib/lib/plumed/patches/namd-2.13.config +30 -0
  394. plumed/_lib/lib/plumed/patches/namd-2.13.diff +267 -0
  395. plumed/_lib/lib/plumed/patches/namd-2.14.config +30 -0
  396. plumed/_lib/lib/plumed/patches/namd-2.14.diff +268 -0
  397. plumed/_lib/lib/plumed/patches/patch.sh +500 -0
  398. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.config +25 -0
  399. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90 +368 -0
  400. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90.preplumed +366 -0
  401. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90 +71 -0
  402. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90.preplumed +24 -0
  403. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90 +62 -0
  404. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  405. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90 +189 -0
  406. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90.preplumed +185 -0
  407. plumed/_lib/lib/plumed/patches/qespresso-6.2.config +26 -0
  408. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90 +422 -0
  409. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90.preplumed +420 -0
  410. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90 +70 -0
  411. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  412. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90 +62 -0
  413. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  414. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90 +233 -0
  415. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90.preplumed +230 -0
  416. plumed/_lib/lib/plumed/patches/qespresso-7.0.config +28 -0
  417. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile +175 -0
  418. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile.preplumed +171 -0
  419. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90 +486 -0
  420. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90.preplumed +484 -0
  421. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90 +74 -0
  422. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  423. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90 +64 -0
  424. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  425. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90 +532 -0
  426. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90.preplumed +518 -0
  427. plumed/_lib/lib/plumed/patches/qespresso-7.2.config +28 -0
  428. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile +249 -0
  429. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile.preplumed +244 -0
  430. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90 +532 -0
  431. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90.preplumed +535 -0
  432. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90 +74 -0
  433. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  434. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90 +64 -0
  435. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  436. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90 +569 -0
  437. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90.preplumed +560 -0
  438. plumed/_lib/lib/plumed/plumed-config +9 -0
  439. plumed/_lib/lib/plumed/plumed-mklib +9 -0
  440. plumed/_lib/lib/plumed/plumed-newcv +9 -0
  441. plumed/_lib/lib/plumed/plumed-partial_tempering +9 -0
  442. plumed/_lib/lib/plumed/plumed-patch +9 -0
  443. plumed/_lib/lib/plumed/plumed-runtime +0 -0
  444. plumed/_lib/lib/plumed/plumed-selector +9 -0
  445. plumed/_lib/lib/plumed/plumed-vim2html +9 -0
  446. plumed/_lib/lib/plumed/scripts/config.sh +126 -0
  447. plumed/_lib/lib/plumed/scripts/mklib.sh +175 -0
  448. plumed/_lib/lib/plumed/scripts/newcv.sh +26 -0
  449. plumed/_lib/lib/plumed/scripts/partial_tempering.sh +319 -0
  450. plumed/_lib/lib/plumed/scripts/patch.sh +4 -0
  451. plumed/_lib/lib/plumed/scripts/selector.sh +234 -0
  452. plumed/_lib/lib/plumed/scripts/vim2html.sh +190 -0
  453. plumed/_lib/lib/plumed/src/colvar/Template.cpp +116 -0
  454. plumed/_lib/lib/plumed/src/config/compile_options.sh +3 -0
  455. plumed/_lib/lib/plumed/src/config/config.txt +179 -0
  456. plumed/_lib/lib/plumed/src/lib/Plumed.cmake +8 -0
  457. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.runtime +5 -0
  458. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.shared +5 -0
  459. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.static +5 -0
  460. plumed/_lib/lib/plumed/src/lib/Plumed.inc +8 -0
  461. plumed/_lib/lib/plumed/src/lib/Plumed.inc.runtime +5 -0
  462. plumed/_lib/lib/plumed/src/lib/Plumed.inc.shared +5 -0
  463. plumed/_lib/lib/plumed/src/lib/Plumed.inc.static +5 -0
  464. plumed/_lib/lib/plumed/vim/scripts.vim +6 -0
  465. plumed/_plumed_core.cpython-311-aarch64-linux-gnu.so +0 -0
  466. plumed/_plumed_core.cpython-312-aarch64-linux-gnu.so +0 -0
  467. plumed/_plumed_core.cpython-313-aarch64-linux-gnu.so +0 -0
  468. plumed/_plumed_core.cpython-314-aarch64-linux-gnu.so +0 -0
  469. plumed/_plumed_core.cpython-314t-aarch64-linux-gnu.so +0 -0
  470. plumedCommunications.cpython-311-aarch64-linux-gnu.so +0 -0
  471. plumedCommunications.cpython-312-aarch64-linux-gnu.so +0 -0
  472. plumedCommunications.cpython-313-aarch64-linux-gnu.so +0 -0
  473. plumedCommunications.cpython-314-aarch64-linux-gnu.so +0 -0
  474. plumedCommunications.cpython-314t-aarch64-linux-gnu.so +0 -0
  475. plumedCommunications.pyi +431 -0
@@ -0,0 +1,133 @@
1
+ import pathlib
2
+ from typing import Protocol
3
+
4
+ import ase
5
+ from ase.calculators.calculator import Calculator
6
+ from PIL import Image
7
+
8
+
9
+ class NodeWithCalculator(Protocol):
10
+ """Any class with a `get_calculator` method returning an ASE Calculator."""
11
+
12
+ def get_calculator(
13
+ self, *, directory: str | pathlib.Path | None = None, **kwargs
14
+ ) -> Calculator: ...
15
+
16
+
17
+ class AtomSelector(Protocol):
18
+ """Protocol for selecting atoms within a single ASE Atoms object.
19
+
20
+ This interface defines the contract for selecting atoms based on various
21
+ criteria within an individual frame/structure.
22
+ """
23
+
24
+ def select(self, atoms: ase.Atoms) -> list[list[int]]:
25
+ """Select atoms based on the implemented criteria.
26
+
27
+ Parameters
28
+ ----------
29
+ atoms : ase.Atoms
30
+ The atomic structure to select from.
31
+
32
+ Returns
33
+ -------
34
+ list[list[int]]
35
+ Groups of indices of selected atoms. All indices in the inner lists
36
+ are representative of the same group, e.g. one molecule.
37
+ """
38
+ ...
39
+
40
+
41
+ class PlumedGenerator(Protocol):
42
+ """Protocol for generating PLUMED strings from collective variables."""
43
+
44
+ def to_plumed(self, atoms: ase.Atoms) -> list[str]: ...
45
+
46
+
47
+ class CollectiveVariable(Protocol):
48
+ """Protocol for collective variables (CVs) that can be used in PLUMED."""
49
+
50
+ prefix: str
51
+
52
+ def get_img(self, atoms: ase.Atoms) -> Image.Image: ...
53
+
54
+ def to_plumed(self, atoms: ase.Atoms) -> tuple[list[str], list[str]]:
55
+ """
56
+ Convert the collective variable to a PLUMED string.
57
+
58
+ Parameters
59
+ ----------
60
+ atoms : ase.Atoms
61
+ The atomic structure to use for generating the PLUMED string.
62
+
63
+ Returns
64
+ -------
65
+ tuple[list[str], str]
66
+ - List of distance labels.
67
+ - list of PLUMED strings representing the CV.
68
+ """
69
+ ...
70
+
71
+
72
+ class BiasProtocol(Protocol):
73
+ """Protocol for individual bias potentials that act on collective variables.
74
+
75
+ Individual bias potentials (restraints, walls) operate on collective variables
76
+ and generate their own PLUMED commands via to_plumed(). These biases are added
77
+ to MetaDynamicsModel via the `actions` parameter.
78
+
79
+ This is distinct from MetadynamicsBias, which is used for configuring the
80
+ collective METAD command itself (via the `bias_cvs` parameter).
81
+ """
82
+
83
+ cv: CollectiveVariable
84
+
85
+ def to_plumed(self, atoms: ase.Atoms) -> list[str]:
86
+ """Generate PLUMED input strings for this bias.
87
+
88
+ Parameters
89
+ ----------
90
+ atoms : ase.Atoms
91
+ The atomic structure to use for generating the PLUMED string.
92
+
93
+ Returns
94
+ -------
95
+ list[str]
96
+ List of PLUMED command strings.
97
+ """
98
+ ...
99
+
100
+
101
+ class MetadynamicsBias(Protocol):
102
+ """Protocol for metadynamics bias configuration objects.
103
+
104
+ This protocol defines the configuration structure for per-CV metadynamics
105
+ parameters (sigma, grid settings, etc.). These configuration objects are
106
+ used in the `bias_cvs` parameter of MetaDynamicsModel to build the collective
107
+ METAD command.
108
+
109
+ This is distinct from BiasProtocol, which is for individual bias potentials
110
+ (restraints, walls) that generate their own PLUMED commands and are added
111
+ via the `actions` parameter.
112
+ """
113
+
114
+ cv: CollectiveVariable
115
+ sigma: float | None = None
116
+ grid_min: float | str | None = None
117
+ grid_max: float | str | None = None
118
+ grid_bin: int | None = None
119
+
120
+
121
+ __all__ = [
122
+ "NodeWithCalculator",
123
+ "AtomSelector",
124
+ "PlumedGenerator",
125
+ "CollectiveVariable",
126
+ "BiasProtocol",
127
+ "MetadynamicsBias",
128
+ ]
129
+
130
+
131
+ def interfaces() -> dict[str, list[str]]:
132
+ """Return a dictionary of available interfaces."""
133
+ return {"plumed-nodes": __all__}
@@ -0,0 +1,416 @@
1
+ import dataclasses
2
+ import sys
3
+ import typing as t
4
+ from pathlib import Path
5
+
6
+ import ase.units
7
+ import zntrack
8
+
9
+ from hillclimber.calc import NonOverwritingPlumed
10
+ from hillclimber.interfaces import (
11
+ CollectiveVariable,
12
+ NodeWithCalculator,
13
+ PlumedGenerator,
14
+ )
15
+ from hillclimber.pycv import PyCV
16
+
17
+
18
+ @dataclasses.dataclass
19
+ class MetadBias:
20
+ """Metadynamics bias configuration for a collective variable.
21
+
22
+ Parameters
23
+ ----------
24
+ cv : CollectiveVariable
25
+ The collective variable to bias.
26
+ sigma : float, optional
27
+ The width of the Gaussian potential in the same units as the CV
28
+ (e.g., Å for distances, radians for angles), by default None.
29
+ grid_min : float | str, optional
30
+ The minimum value of the grid in CV units (or PLUMED expression like "-pi"),
31
+ by default None.
32
+ grid_max : float | str, optional
33
+ The maximum value of the grid in CV units (or PLUMED expression like "pi"),
34
+ by default None.
35
+ grid_bin : int, optional
36
+ The number of bins in the grid, by default None.
37
+
38
+ Resources
39
+ ---------
40
+ - https://www.plumed.org/doc-master/user-doc/html/METAD/
41
+ """
42
+
43
+ cv: CollectiveVariable
44
+ sigma: float | None = None
45
+ grid_min: float | str | None = None
46
+ grid_max: float | str | None = None
47
+ grid_bin: int | None = None
48
+
49
+
50
+ @dataclasses.dataclass
51
+ class MetaDynamicsConfig:
52
+ """Base configuration for metadynamics.
53
+
54
+ This contains only the global parameters that apply to all CVs.
55
+
56
+ Units
57
+ -----
58
+ hillclimber uses ASE units throughout. The UNITS line in the PLUMED input tells
59
+ PLUMED to interpret all values in ASE units:
60
+ - Distances: Ångström (Å)
61
+ - Energies: electronvolt (eV) - including HEIGHT, SIGMA for energy-based CVs, etc.
62
+ - Time: femtoseconds (fs)
63
+ - Temperature: Kelvin (K)
64
+
65
+ Parameters
66
+ ----------
67
+ height : float, optional
68
+ The height of the Gaussian potential in eV, by default 1.0.
69
+ pace : int, optional
70
+ The frequency of Gaussian deposition in MD steps, by default 500.
71
+ biasfactor : float, optional
72
+ The bias factor for well-tempered metadynamics, by default None.
73
+ temp : float, optional
74
+ The temperature of the system in Kelvin, by default 300.0.
75
+ file : str, optional
76
+ The name of the hills file, by default "HILLS".
77
+ adaptive : t.Literal["GEOM", "DIFF"] | None, optional
78
+ The adaptive scheme to use, by default None.
79
+ If None, no ADAPTIVE parameter is written to PLUMED.
80
+ flush : int | None
81
+ The frequency of flushing the output files in MD steps.
82
+ If None, uses the plumed default.
83
+
84
+ Resources
85
+ ---------
86
+ - https://www.plumed.org/doc-master/user-doc/html/METAD/
87
+ - https://www.plumed.org/doc-master/user-doc/html/FLUSH/
88
+ """
89
+
90
+ height: float = 1.0 # kJ/mol
91
+ pace: int = 500
92
+ biasfactor: float | None = None
93
+ temp: float = 300.0
94
+ file: str = "HILLS"
95
+ adaptive: t.Literal["GEOM", "DIFF"] | None = None
96
+ flush: int | None = None
97
+
98
+
99
+ # THERE SEEMS to be an issue with MetaDynamicsModel changing but ASEMD not updating?!?!
100
+
101
+
102
+ class MetaDynamicsModel(zntrack.Node, NodeWithCalculator):
103
+ """A metadynamics model.
104
+
105
+ Parameters
106
+ ----------
107
+ config : MetaDynamicsConfig
108
+ The configuration for the metadynamics simulation.
109
+ data : list[ase.Atoms]
110
+ The input data for the simulation.
111
+ data_idx : int, optional
112
+ The index of the data to use, by default -1.
113
+ bias_cvs : list[MetaDBiasCV], optional
114
+ The collective variables to bias, by default [].
115
+ actions : list[PlumedGenerator], optional
116
+ A list of actions to perform during the simulation, by default [].
117
+ timestep : float, optional
118
+ The timestep of the simulation in fs, by default 1.0.
119
+ model : NodeWithCalculator
120
+ The model to use for the simulation.
121
+
122
+ Example
123
+ -------
124
+ >>> import hillclimber as pn
125
+ >>> import ipsuite as ips
126
+ >>>
127
+ >>> data = ips.AddData("seed.xyz")
128
+ >>> cv1 = pn.DistanceCV(
129
+ ... x1=pn.SMARTSSelector(pattern="[H]O[H]"),
130
+ ... x2=pn.SMARTSSelector(pattern="CO[C:1]"),
131
+ ... prefix="d",
132
+ ... )
133
+ >>> metad_cv1 = pn.MetadBias(
134
+ ... cv=cv1, sigma=0.1, grid_min=0.0, grid_max=2.0, grid_bin=200
135
+ ... )
136
+ >>> model = pn.MetaDynamicsModel(
137
+ ... config=pn.MetaDynamicsConfig(height=0.25, temp=300, pace=2000, biasfactor=10),
138
+ ... bias_cvs=[metad_cv1],
139
+ ... data=data.frames,
140
+ ... model=ips.MACEMP(),
141
+ ... timestep=0.5
142
+ ... )
143
+ >>> md = ips.ASEMD(
144
+ ... model=model, data=data.frames, ...
145
+ ... )
146
+ """
147
+
148
+ config: MetaDynamicsConfig = zntrack.deps()
149
+ data: list[ase.Atoms] = zntrack.deps()
150
+ data_idx: int = zntrack.params(-1)
151
+ bias_cvs: list[MetadBias] = zntrack.deps(default_factory=list)
152
+ actions: list[PlumedGenerator] = zntrack.deps(default_factory=list)
153
+ timestep: float = zntrack.params(1.0) # in fs, default is 1 fs
154
+ model: NodeWithCalculator = zntrack.deps()
155
+
156
+ figures: Path = zntrack.outs_path(zntrack.nwd / "figures", independent=True)
157
+
158
+ def run(self):
159
+ self.figures.mkdir(parents=True, exist_ok=True)
160
+ for cv in self.bias_cvs:
161
+ img = cv.cv.get_img(self.data[self.data_idx])
162
+ img.save(self.figures / f"{cv.cv.prefix}.png")
163
+
164
+ def get_calculator(
165
+ self, *, directory: str | Path | None = None, **kwargs
166
+ ) -> NonOverwritingPlumed:
167
+ if directory is None:
168
+ raise ValueError("Directory must be specified for PLUMED input files.")
169
+ directory = Path(directory)
170
+ directory.mkdir(parents=True, exist_ok=True)
171
+
172
+ atoms = self.data[self.data_idx]
173
+
174
+ # Write adapter scripts for any PyCV instances
175
+ self._write_pycv_adapter_scripts(directory, atoms)
176
+
177
+ lines = self.to_plumed(atoms)
178
+ # Replace FILE= with FILE={directory}/ for output files (HILLS, COLVAR, etc.)
179
+ # but NOT for LOAD commands (which have absolute paths to plugins)
180
+ processed_lines = []
181
+ for line in lines:
182
+ if line.startswith("LOAD FILE="):
183
+ # Don't modify LOAD commands - they have absolute paths
184
+ processed_lines.append(line)
185
+ else:
186
+ processed_lines.append(line.replace("FILE=", f"FILE={directory}/"))
187
+ lines = processed_lines
188
+
189
+ # Write plumed input file
190
+ with (directory / "plumed.dat").open("w") as file:
191
+ for line in lines:
192
+ file.write(line + "\n")
193
+
194
+ # Add directory to sys.path so PLUMED can import PyCV adapter scripts
195
+ # This is required because PLUMED's pycv plugin imports Python modules
196
+ # and needs to find the generated _pycv_*.py adapter scripts
197
+ directory_str = str(directory.resolve())
198
+ if directory_str not in sys.path:
199
+ sys.path.insert(0, directory_str)
200
+
201
+ kT = ase.units.kB * self.config.temp
202
+
203
+ return NonOverwritingPlumed(
204
+ calc=self.model.get_calculator(directory=directory),
205
+ atoms=atoms,
206
+ input=lines,
207
+ timestep=float(self.timestep * ase.units.fs),
208
+ kT=float(kT),
209
+ log=(directory / "plumed.log").as_posix(),
210
+ )
211
+
212
+ def _write_pycv_adapter_scripts(
213
+ self, directory: Path, atoms: ase.Atoms
214
+ ) -> list[Path]:
215
+ """Write adapter scripts for all PyCV instances.
216
+
217
+ Parameters
218
+ ----------
219
+ directory : Path
220
+ Directory to write scripts to.
221
+ atoms : ase.Atoms
222
+ Reference structure for atom selection.
223
+
224
+ Returns
225
+ -------
226
+ list[Path]
227
+ Paths to written adapter scripts.
228
+ """
229
+ scripts = []
230
+
231
+ # Collect all PyCV instances from bias_cvs
232
+ for bias_cv in self.bias_cvs:
233
+ if isinstance(bias_cv.cv, PyCV):
234
+ script_path = self._write_single_pycv_script(
235
+ bias_cv.cv, directory, atoms
236
+ )
237
+ scripts.append(script_path)
238
+
239
+ return scripts
240
+
241
+ def _write_single_pycv_script(
242
+ self, pycv: PyCV, directory: Path, atoms: ase.Atoms
243
+ ) -> Path:
244
+ """Write adapter script for a single PyCV instance.
245
+
246
+ Parameters
247
+ ----------
248
+ pycv : PyCV
249
+ The PyCV instance.
250
+ directory : Path
251
+ Directory to write to.
252
+ atoms : ase.Atoms
253
+ Reference structure.
254
+
255
+ Returns
256
+ -------
257
+ Path
258
+ Path to written script.
259
+ """
260
+ cv_class = type(pycv)
261
+
262
+ return pycv.write_adapter_script(
263
+ directory=directory,
264
+ atoms=atoms,
265
+ cv_class_module=cv_class.__module__,
266
+ cv_class_name=cv_class.__name__,
267
+ cv_init_args=pycv.get_init_args(),
268
+ )
269
+
270
+ def _has_pycv(self) -> bool:
271
+ """Check if any bias CV is a PyCV instance."""
272
+ return any(isinstance(bias_cv.cv, PyCV) for bias_cv in self.bias_cvs)
273
+
274
+ def to_plumed(self, atoms: ase.Atoms) -> list[str]:
275
+ """Generate PLUMED input string for the metadynamics model."""
276
+ # check for duplicate CV prefixes
277
+ cv_labels = set()
278
+ for bias_cv in self.bias_cvs:
279
+ if bias_cv.cv.prefix in cv_labels:
280
+ raise ValueError(f"Duplicate CV prefix found: {bias_cv.cv.prefix}")
281
+ cv_labels.add(bias_cv.cv.prefix)
282
+
283
+ plumed_lines = []
284
+ all_labels = []
285
+
286
+ sigmas, grid_mins, grid_maxs, grid_bins = [], [], [], []
287
+
288
+ # PLUMED UNITS line specifies conversion factors from ASE units to PLUMED's native units:
289
+ # - LENGTH=A: ASE uses Ångström (A), PLUMED native is nm → A is a valid PLUMED unit
290
+ # - TIME: ASE uses fs, PLUMED native is ps → 1 fs = 0.001 ps
291
+ # - ENERGY: ASE uses eV, PLUMED native is kJ/mol → 1 eV = 96.485 kJ/mol
292
+ # See: https://www.plumed.org/doc-master/user-doc/html/ (MD engine integration docs)
293
+ plumed_lines.append(
294
+ f"UNITS LENGTH=A TIME={1 / 1000} ENERGY={ase.units.mol / ase.units.kJ}"
295
+ )
296
+
297
+ # Add LOAD command for pycv plugin if any PyCV instances are present
298
+ if self._has_pycv():
299
+ import plumed
300
+
301
+ pycv_path = plumed.get_pycv_path()
302
+ plumed_lines.append(f"LOAD FILE={pycv_path}")
303
+
304
+ for bias_cv in self.bias_cvs:
305
+ labels, cv_str = bias_cv.cv.to_plumed(atoms)
306
+ plumed_lines.extend(cv_str)
307
+ all_labels.extend(labels)
308
+
309
+ # Collect per-CV parameters for later - repeat for each label
310
+ # PLUMED requires one parameter value per ARG, so if a CV generates
311
+ # multiple labels, we need to repeat the parameter values
312
+ for _ in labels:
313
+ sigmas.append(str(bias_cv.sigma) if bias_cv.sigma is not None else None)
314
+ grid_mins.append(
315
+ str(bias_cv.grid_min) if bias_cv.grid_min is not None else None
316
+ )
317
+ grid_maxs.append(
318
+ str(bias_cv.grid_max) if bias_cv.grid_max is not None else None
319
+ )
320
+ grid_bins.append(
321
+ str(bias_cv.grid_bin) if bias_cv.grid_bin is not None else None
322
+ )
323
+
324
+ metad_parts = [
325
+ "METAD",
326
+ f"ARG={','.join(all_labels)}",
327
+ f"HEIGHT={self.config.height}",
328
+ f"PACE={self.config.pace}",
329
+ f"TEMP={self.config.temp}",
330
+ f"FILE={self.config.file}",
331
+ ]
332
+ if self.config.adaptive is not None:
333
+ metad_parts.append(f"ADAPTIVE={self.config.adaptive}")
334
+ if self.config.biasfactor is not None:
335
+ metad_parts.append(f"BIASFACTOR={self.config.biasfactor}")
336
+
337
+ # Add SIGMA, GRID_MIN, GRID_MAX, GRID_BIN only if any value is set
338
+ if any(v is not None for v in sigmas):
339
+ # When using ADAPTIVE, PLUMED requires only one sigma value
340
+ if self.config.adaptive is not None:
341
+ # Validate that all sigma values are the same when adaptive is set
342
+ unique_sigmas = set(v for v in sigmas if v is not None)
343
+ if len(unique_sigmas) > 1:
344
+ raise ValueError(
345
+ f"When using ADAPTIVE={self.config.adaptive}, all CVs must have the same sigma value. "
346
+ f"Found different sigma values: {unique_sigmas}"
347
+ )
348
+ # Use the first non-None sigma value
349
+ sigma_value = next(v for v in sigmas if v is not None)
350
+ metad_parts.append(f"SIGMA={sigma_value}")
351
+ else:
352
+ # Standard mode: one sigma per CV
353
+ metad_parts.append(
354
+ f"SIGMA={','.join(v if v is not None else '0.0' for v in sigmas)}"
355
+ )
356
+ if any(v is not None for v in grid_mins):
357
+ metad_parts.append(
358
+ f"GRID_MIN={','.join(v if v is not None else '0.0' for v in grid_mins)}"
359
+ )
360
+ if any(v is not None for v in grid_maxs):
361
+ metad_parts.append(
362
+ f"GRID_MAX={','.join(v if v is not None else '0.0' for v in grid_maxs)}"
363
+ )
364
+ if any(v is not None for v in grid_bins):
365
+ metad_parts.append(
366
+ f"GRID_BIN={','.join(v if v is not None else '0' for v in grid_bins)}"
367
+ )
368
+
369
+ plumed_lines.append(f"metad: {' '.join(metad_parts)}")
370
+
371
+ # Track defined commands to detect duplicates and conflicts
372
+ # Map label -> full command for labeled commands (e.g., "d: DISTANCE ...")
373
+ defined_commands = {}
374
+ for line in plumed_lines:
375
+ # Check if this is a labeled command (format: "label: ACTION ...")
376
+ if ": " in line:
377
+ label = line.split(": ", 1)[0]
378
+ defined_commands[label] = line
379
+
380
+ # Add any additional actions (restraints, walls, print actions, etc.)
381
+ for action in self.actions:
382
+ action_lines = action.to_plumed(atoms)
383
+
384
+ # Filter out duplicate CV definitions, but detect conflicts
385
+ filtered_lines = []
386
+ for line in action_lines:
387
+ # Check if this is a labeled command
388
+ if ": " in line:
389
+ label = line.split(": ", 1)[0]
390
+
391
+ # Check if this label was already defined
392
+ if label in defined_commands:
393
+ # If the command is identical, skip (deduplication)
394
+ if defined_commands[label] == line:
395
+ continue
396
+ # If the command is different, raise error (conflict)
397
+ else:
398
+ raise ValueError(
399
+ f"Conflicting definitions for label '{label}':\n"
400
+ f" Already defined: {defined_commands[label]}\n"
401
+ f" New definition: {line}"
402
+ )
403
+ else:
404
+ # New labeled command, track it
405
+ defined_commands[label] = line
406
+ filtered_lines.append(line)
407
+ else:
408
+ # Unlabeled command, always add
409
+ filtered_lines.append(line)
410
+
411
+ plumed_lines.extend(filtered_lines)
412
+
413
+ # Add FLUSH if configured
414
+ if self.config.flush is not None:
415
+ plumed_lines.append(f"FLUSH STRIDE={self.config.flush}")
416
+ return plumed_lines
hillclimber/nodes.py ADDED
@@ -0,0 +1,6 @@
1
+ from hillclimber import __all__
2
+
3
+
4
+ def nodes() -> dict[str, list[str]]:
5
+ """Return all available nodes."""
6
+ return {"hillclimber": __all__}