TIMatch - #1193
TIMatch#1193ndlevinzon wants to merge 32 commits into
Conversation
… of a liquid slab - Introduced the 'surftension' command with detailed options for calculating surface tension based on height fluctuations. - Updated ChangeLog to reflect the new command and its usage. - Registered the command in Command.cpp and included necessary source and header files. - Added a test target for 'surftension' in the Makefile and included it in the complete tests list. - Bumped version to 7.11.0 to signify the addition of this new functionality.
…nd consistency - Updated log messages to improve readability, changing "bins along" to "bins along" for better context. - Enhanced output in the Print function to include completed block information, displaying gamma, kappa, and roughness more clearly. - Removed redundant error message logging for kappa when it is not applicable. - Adjusted variable names in output for consistency with other parts of the code.
- Introduced a new HeightPower function that computes the 2-D FFT of height fields using cpptraj's PubFFT, matching numpy's fft2 convention. - Updated ChangeLog to reflect the new FFT implementation and its usage. - Adjusted output messages to include details about the new FFT method. - Removed the old direct DFT implementation for height power spectrum calculation.
- Updated the 'surftension' command to support an additional mask for lower surfaces, allowing for single or double interface configurations. - Introduced new parameters: 'nsurf' to specify the number of interfaces, 'side' to select the interface for single interface cases, and 'summaryout' for outputting a key/value summary file. - Adjusted the default behavior for 'qmin' and added 'blocktime' and 'dt' parameters for better control over analysis. - Enhanced documentation in ChangeLog to reflect these changes and added tests for new functionalities in the RunTest script. - Bumped version to 7.11.0 to signify the addition of these features. Co-authored-by: Cursor <cursoragent@cursor.com>
- Changed the 'spectrumout' parameter to be aliased as 'out' for simplified usage. - Implemented error handling in the initialization phase to ensure that the parent directory for output files exists, preventing loss of data during long trajectory writes. - Updated documentation in ChangeLog to reflect these changes and clarify output file handling.
- Updated author name formatting for consistency. - Corrected mathematical symbols in comments for clarity, including replacing "n" with "−n" and "≤" with "≤". - Enhanced descriptions of functions and parameters to improve understanding of the capillary-wave theory and its implementation. - Adjusted comments to reflect accurate mathematical expressions and units, ensuring clarity in the context of surface tension calculations. - Improved overall readability of the code documentation.
…tail - Expanded comments to provide a clearer understanding of the capillary-wave surface tension calculations and the per-frame processing pipeline. - Improved descriptions of functions, parameters, and mathematical expressions to ensure accuracy and readability. - Updated variable and function comments to reflect consistent terminology and units, enhancing overall documentation quality.
… checks - Introduced a static inline function, ST_Finite, to determine if a given double value is finite (not NaN or ±Inf). - This addition enhances the robustness of numerical calculations by providing a utility for validating input values in surface tension computations.
- Renamed 'q_fund_' to 'q_fundamental_' to better reflect its purpose as 2π / max(L₁, L₂) from the first good frame. - This change enhances code readability and maintains consistency in terminology.
…for improved clarity - Updated the initialization of gamma and kappa variables to use ST_NaN() for better handling of uninitialized values. - This change enhances code readability and ensures that variables are explicitly set to a known state before use.
… output files - Modified the script to use a cubic lattice of O atoms for testing surface tension. - Updated input files and commands for Willard-Chandler, ITIM, normal x, normal y, and nsurf 1 tests. - Added summary output files for each test case to enhance result tracking and analysis. - Removed obsolete smoke test sections to streamline the testing process.
…umentation updates - Added 'fprefix' parameter to prepend a specified prefix to output file names, allowing for better organization of results. - Updated documentation in Action_SurfaceTension and ChangeLog to reflect the new 'fprefix' functionality and its usage. - Improved error handling for parent directory checks to ensure output files are correctly managed during execution. Co-authored-by: Cursor <cursoragent@cursor.com>
- Enhanced RunTest.sh documentation to clarify the characteristics of slab.pdb. - Updated surface tension data files with new gamma and roughness values for better simulation fidelity. - Adjusted parameters in st.itim.dat.save, st.normalx.dat.save, st.normaly.dat.save, st.nsurf1.dat.save, st.willard.dat.save, and st2_summary.dat.save to reflect recent findings and improve test results.
…ension tests - Enhanced RunTest.sh to support dual frame analysis for both serial and MPI executions, ensuring consistent results across different ranks. - Updated input parameters in st.itim.dat.save, st.normalx.dat.save, st.normaly.dat.save, st.nsurf1.dat.save, st.willard.dat.save, and st2_summary.dat.save to reflect the change from 1 to 2 frames, improving the accuracy of simulation outputs.
- Updated section headers to use consistent Markdown formatting. - Consolidated build status badges and descriptions for better readability. - Enhanced author and contributor sections for clarity. - Improved formatting of library dependencies and installation instructions. Co-authored-by: Cursor <cursoragent@cursor.com>
Map analog topologies onto a user template so shared atoms share indices; extra atoms are insertions. Ships official ModXNA parent fragments and tests partial maps for nucleotides (FLE/ERN), amino acids (Cys/Sec), and small molecules (phenol/benzene).
- Introduced the `tiout <prefix>` option to generate dual-topology files, allowing for simultaneous handling of shared and unique atoms in TI calculations. - Updated documentation to clarify the output structure, including `.mol2`, `.lib`, and `.scmask` files. - Enhanced the `Exec_TemplateMatch` class to manage dual-topology mappings and ensure correct atom indexing. - Added tests for dual-topology outputs with examples for FLE/ERN, phenol/benzene, and selenocysteine/cysteine transitions.
- Updated the description of dummy atoms to specify that they now copy the partner's name and coordinates, have charge 0, mass 0, and Amber type DUM. - Improved the Help function in Exec_TemplateMatch to clarify the usage of commands and the structure of the output files. - Added 'go' commands in the documentation to indicate when to execute the input commands for better user guidance.
- Introduced the Exec_TIMatch class to facilitate matching target topologies to user-supplied templates, enabling shared atom indexing for thermodynamic integration. - Implemented the Help function to provide detailed usage instructions and command options, including the generation of Amber OFF libraries and dual-topology outputs. - Added functionality to handle both topology and coordinate datasets, enhancing the flexibility of the matching process.
- Renamed the templatematch command to timatch across all relevant files for improved clarity and consistency in terminology. - Updated documentation, comments, and test cases to reflect the new command name, ensuring all references are aligned with the change. - Enhanced the Help function in Exec_TIMatch to provide clear instructions on usage and output options, including Amber OFF library generation and dual-topology support.
…integration - Introduced the Exec_TIMap class and its header file to facilitate the alignment of target topologies with user-supplied templates, ensuring shared atom indexing for thermodynamic integration. - Implemented the Help function to provide comprehensive usage instructions, including options for generating Amber OFF libraries and dual-topology outputs. - Enhanced functionality to support both topology and coordinate datasets, improving the flexibility of the matching process.
- Renamed all instances of the command from 'timatch' to 'timap' across source files, documentation, and tests to ensure clarity and consistency in terminology. - Updated README.md and cpptraj documentation to reflect the new command name and its usage. - Adjusted test scripts and expected output files to align with the command name change, ensuring all references are accurate.
…matching - Added support for `aaorder` to reorder amino acids according to the ff19SB amino19.lib standard, allowing for consistent atom indexing in noncanonical residues. - Updated documentation to reflect the new `aaorder` option and its usage alongside `naorder`, clarifying the behavior when both are specified. - Enhanced the Help function in Exec_TIMap to provide detailed instructions on the new ordering options and their implications for thermodynamic integration. - Improved tests to validate the new amino-acid ordering functionality, ensuring accurate mapping for residues with shuffled atom orders.
- Added a new `series` option to the `timap` command, allowing users to auto-select a parent topology from a list of analogs based on shared atom indices. - Enhanced documentation to detail the new `series` functionality, including usage examples and output file specifications. - Updated the Help function in `Exec_TIMap` to reflect the new series mode and its implications for thermodynamic integration. - Added tests to validate the series mode functionality, ensuring correct mapping and output generation for specified analogs.
- Introduced multiple new ModXNA fragments including 5PO, A9Z, DAA, DDD, DPO, DTT, OME, RBO, RUR, TMC, UFB, and others to enhance the library for thermodynamic integration. - Added a new PARENTS.txt file detailing the official ModXNA parent templates and their usage in the context of the cpptraj tool. - Implemented the TIMatch class and associated methods for improved template matching functionality, allowing for better alignment of target topologies with user-supplied templates. - Enhanced documentation to reflect the new fragments and their roles in thermodynamic integration, including usage examples and output specifications. - Updated tests to validate the new fragments and ensure correct mapping and output generation for specified analogs.
…istency - Updated references from 'templatematch' to 'timap' across documentation, source files, and tests to enhance clarity. - Adjusted file paths in documentation and test scripts to reflect the new directory structure under 'dat/timap/'. - Enhanced the Exec_TIMap class and associated methods to improve template matching functionality, ensuring better alignment of target topologies. - Updated tests to validate the new naming conventions and ensure correct mapping and output generation for specified analogs.
drroe
left a comment
There was a problem hiding this comment.
Just some general comments, will continue reviewing in the meantime.
There was a problem hiding this comment.
Should this file be tracked?
There was a problem hiding this comment.
Usually the files in the dat subdirectory are files needed for CPPTRAJ commands to function (e.g. the Karplus.txt file for the jcoupling action. If these files are just for testing they should be in the relevant test directory.
There was a problem hiding this comment.
Could you potentially make use of the already existing test/Test_Build/amino12.lib file instead?
There was a problem hiding this comment.
Is the purpose of this just for creating the test saves?
| */ | ||
|
|
||
| // Exec_TIMap::Help() | ||
| void Exec_TIMap::Help() const { |
There was a problem hiding this comment.
This is a really large amount of help text. Typically it's more useful for the user if the default help text can fit inside a regularly-sized terminal window. For this it may be better to use the ::Help() function to print a more terse help message, then use ::Help(ArgList&) for extended help (see e.g. the dataset command).
| * | ||
| * \param dsOut If non-null, receives the dataset pointer (TOPOLOGY or COORDS). | ||
| */ | ||
| static Topology* FindNamedTop(DataSetList& dsl, std::string const& name, DataSet** dsOut) |
There was a problem hiding this comment.
Why are all the functions in here static instead of private members of the Exec_TIMap class? Making them part of the class makes it more clear where they belong, especially if you're looking at internal symbols. It's not strictly necessary although I believe it is cleaner.
- Revised the README.md to improve formatting and enhance clarity, including updates to section headers and build status badges. - Removed the .vscode/settings.json file and several unused data files (e.g., amino19.lib, README.txt) to streamline the project structure. - Added new ModXNA fragment files (5PO, A9Z, DAA, DDD, DPO, DTT, OME, RBO, RUR) to the test suite for improved template matching functionality. - Introduced a new PARENTS.txt file to document the ModXNA parent fragments and their usage in the context of the cpptraj tool.
…e matching - Revised README.md to clarify the usage of the 'timap' command and updated references to the new test data structure. - Enhanced the Exec_TIMap class with additional Help function overloads for extended command options. - Updated PARENTS.txt to reflect the new example ModXNA parent fragments and their usage in tests. - Adjusted test scripts to utilize the new directory structure and clarified the context of example data. - Improved comments and documentation throughout the codebase to ensure consistency and clarity in template matching functionality.
Adds the immediate command timap (alias timatch) and the TIMatch engine. It reorders a target residue so atoms that correspond to a template share the same indices, which is the shared-atom order used for thermodynamic integration. Matching is a partial graph match, so extra atoms (a 2′-OH, a phenolic OH, selenium in place of sulfur) are insertions rather than a failure. Unlike atommap, a 1:1 correspondence is not required.
Map onto a template, or walk the target itself with naorder (Amber nucleic-acid order) or aaorder (ff19SB amino19.lib order).
series picks one parent among several analogs and maps every member onto it.
Writes the reordered residue as Amber OFF .lib, mol2, or pdb. tiout writes a dual-topology pair (same NATOM, charge-0 / mass-0 DUM atoms) plus scmask and a per-slot atom table for pmemd.
Ships ModXNA parent fragments and dat/timap/amino19.lib. Covered by test/Test_TIMap.