Skip to content

Releases: lorenzo-rovigatti/oxDNA

v3.7.0

16 Nov 10:21
Compare
Choose a tag to compare

This release contains both new features and bugfixes. Note that the bug fixed in 6096fdb, introduced in version 3.6.0, was particularly dire, and affected all simulations of the DNA2 model run with VMMC.

  • Add two new options to manage the format of the numerical output of some observables [6d03f40]
  • Deprecate many old plugins in the contrib/rovigatti folder [95bd2e0]
  • Add compiler flags to support Ampere GPUs [21d7e48]
  • Update generate-sa.py to support generation of dsDNA with sticky ends and add an example to show its functionalities [08dcc2c]
  • Add an attraction plane that constrains particles to stay on one side of it while attracting them with a constant force (type = attraction_plane). Documentation is also included [f0e0c9d]
  • Port the ANNaMo interaction to CUDA [3568256]
  • Make it possible to print the kinetic and total energies with any precision [f42d61d]
  • Make the NA interaction support custom bases (fix #129) [306a276]
  • Make it possible to simulate arbitrary LJ binary mixtures [b191c3d]
  • DPS: Add an optional Yukawa repulsion to the model [dbdc726]
  • DPS: Add an input file key to disable three body interaction [2d62ba7]
  • DPS: Fix a bug whereby species with 0 particles would not be handled correctly [2d33bcc]
  • Fix a bug whereby the CUDA code would crash for particular initial configurations made by nucleotides aligned along z (#120) [2b69edf]
  • Fix an example (#123) [f4853f9]
  • Fix a bug whereby the code would hang if bases_file (used by HBEnergy) was not readable [a20df96]
  • Fix a bug that made VMMC simulate the wrong model when used with the DNA2 interaction [6096fdb]
  • Improve the docs (see e.g. #116)

oxpy

  • Fix #97 (FFS Simulation Type Fails to Log Correctly When Running Consecutive Processes) [2b93f63]
  • Add a workaround documentation to a known oxpy bug [960a8c5]
  • Fix #138: make oxpy's get_bool() to handle non-lowercase booleans [208049d]
  • Improve the docs

oat

  • Duplex angle plotter now works with ANY nucleotide id in the duplex [eb17a42]
  • Fixed bug where output_bonds would fail instead of exiting normally when no plot was requested [c287226]
  • Fixed bug where duplexes were detected as longer than they should be if they became unpaired [e1580e6]
  • Fixed bug where inboxing would always center the structure, center=False works now [b23bdb7]
  • Fixed parser and data type errors in oxDNA_PDB [d951742]
  • Fixed bug where strands would sometimes be backwards in converted PDBs and fixed bug where the box center was incorrect during inboxing [2f179ad]
  • In oxview.py, now from_path supports multiple systems loading [0050492]
  • Updated bond_analysis to be able to drop data files [27d2fbb]
  • Added len methods to System and Strand [ac5e632]
  • Changed read_force_file to interpret particle IDs as ints rather than floats [e7f6818]
  • Make oxDNA_PDB callable from scripting interface [a20207b]
  • Improved consistency in oat cli calls [3d628eb]
  • Updated oat superimpose to allow separate index files for each configuration [8a6ed9d]
  • Removal of now removed 'center' keywords from align function call [1cb3b40]
  • Fix error in input file parsing (#119) [bca41ab]
  • Created forces/pairs to dot-bracket converters and a skeleton script for trajectory analysis [cce8009]
  • Fixed bugs in pdb output file naming and improved RNA detection [e753007]
  • Fix parsing error for strand circularity in oat's new topology reader [a168f8d]
  • Faster linear version of decimate script [adbba3c]
  • Added PDB -> oxDNA converter to oat [e0084bc]

Thanks to everybody who contributed (@lorenzo-rovigatti , @tgfrancesco , @mlsample , @ErikPoppleton , @zoombya , @Subhajit-Roy-Partho , @jinhzhou , @elija-feigl , @JeDeveloper , @eryykr)

v3.6.1

12 Mar 12:18
Compare
Choose a tag to compare

This is mostly a bugfixing release.

  • Fix some bugs and docs errors due to the DRH -> NA change (see #81) [79728d3 and 7cf4b94]
  • Add and document an option to control the DH cut-off (see #83) [95a9f0d]
  • Make the MPI VMMC backend runnable once again, after it had been broken for years (see #85) [8becd5f]
  • Fix how the trap, twist and string forces behave on CUDA (see #71) [e92695c]
  • Fix the oat test's suite (see #89) [ffd1dd9]
  • Add an observable that can be used to print the total external force acting on particles [7f0eff6]
  • Fix a bug whereby the DPS interaction would segfault instead of dying gracefully when too many patches were used [b38ae1c]

oxpy

  • Add a method to Python's InputFile and update some outdated info [bd7c9e6]

oat

  • Added RMSD calculation to superimpose [99320e0]
  • Added output file naming option to superimpose [3d316b6]
  • Clarified argparse strings for distance and subset [eae41a9]
  • Fixed missing newline bug in write_conf [0e5c28d]
  • Fixed bad error in get_confs [171f2ca]
  • Overhaul of clustering to have significantly more options and cleaner output [80920ab]

v. 3.6.0

15 Nov 16:26
Compare
Choose a tag to compare

This release includes support for a new topology file format and a new interaction that can simulate DNA/RNA hybrids.

  • Add 6 more tests to the run level; these tests use the new topology and check that the DNA, RNA and NA interactions compute the right energies for a short nicked duplex
  • Add support for a "new" topology format where nucleotides are listed in the 5' -> 3' order, which is the standard in the community
  • Add the NA interaction, which can be used to simulated hybrid DNA/RNA systems (by @eryykr, see #68 )
  • Add a old<->new topology converter to the utils folder
  • Add an option stiff_rate to the mutual_trap force
  • Remove a few warnings when compiling with CUDA
  • Fix the computation of the stress tensor on the GPU

oxpy

  • Update pybind version from 2.2 to 2.11 to make oxpy compatible with Python 3.11
  • Deprecate support for Python versions < 3.8 (see here if an older version is still needed)
  • Add (undocumented) support for -Dpython=On and -DPYTHON=On

oat

  • Add support for the new topology format
  • Fixed an error in the oxDNA_PDB CLI parser
  • Added error handling for truncated trajectories in the oat parser (see #67)

v. 3.5.2

29 May 10:49
Compare
Choose a tag to compare

This is a bugfixing release that fixes two oat bugs introduced in the previous release:

oat

  • Remove usage of | to specify type annotations for unions to make oat compatible with Python 3.9
  • Improve the portability of the setup.py script to fix installation issues on some systems

v. 3.5.1

26 May 19:03
Compare
Choose a tag to compare

This is a minor release that fixes several minor bugs and add some minor functionality (e.g. the possibility of computing the stress tensor on GPUs)

  • Add the stress tensor calculation on GPUs for DNA
  • Improve the performance and memory consumption of the DNA and RNA interactions
  • Improve the numerical stability of the CUDA RNA and DNA codes
  • Make the StressAutocorrelation observable output also the bulk and longitudinal ACFs
  • Remove some unnecessary checks on the required keys from the MC backend
  • Add a pivot move to the MC2 backend
  • Add the possibility of disabling JSON support at compile time (-DJSON_ENABLED=Off)
  • Fix a bug whereby a DNA force was sometimes incorrectly evaluated on GPU
  • Fix two minor bugs in the CUDARNA interaction [0112a3e]
  • Fix a bug whereby the code would sometimes segfault due to plugins [b6ed721]

oxpy

  • Make the metad interface set more default input options

oat

  • Completely rewrote oxDNA/ANM -> PDB converter
    • Now works with RNA as well as DNA and proteins
    • No longer depends on Biopython (removed from oat dependencies).
    • More control over output files.
  • All oat utilities that don't involve oxpy have compete and correct type annotations
  • Many doctoring updates.
  • Better error messages when something that isn't a configuration file is passed to the configuration parser.
  • Update the dot-bracket parser to accept pseudoknotted structures
  • bugfixes:
    • Decimal in particle IDs no longer break forces2pairs.
    • Extra spaces in the header of the topology parser no longer crash it.

v. 3.5.0

20 Jan 22:54
Compare
Choose a tag to compare

This is the release that will be connected to the JOSS paper.

  • Strip down the exprtk library to speed up compilation
  • Fix a bug whereby setting lastconf_file to /dev/null would segfault
  • Make the code compilable on older gcc versions (>= 5.4)
  • Update some examples (fix the oxDNA path and remove references to the old UTILS folder)
  • Remove some outdated examples
  • Update the documentation

oxpy

  • Remove a redundant library from oxpy's linking stage
  • Clean up include paths for pybind11, python_defs

oat

  • Functionalized db_to_force and forces2pairs
  • Cleanup typing in forces2pairs
  • Fixed bug where oxpy calls always said t=0
  • Fixed oxDNA1 incompatibility in output_bonds
  • Added trajectory visualization and generally cleaned up bond_analysis
  • Added desired bond output for the summary in bond_analysis
  • RyeReader now handles confs with velocities removed
  • Updated oxDNA_PDB to use RyeReader
  • Removed deprecated readers.py

v. 3.4.2

08 Sep 11:31
Compare
Choose a tag to compare

v. 3.4.2 [6794178]

This is mostly a bugfixing release

  • Change libcommon.so to liboxdna_common.so, allowing the file to be reasonably placed in a system-wide / non-specific library directory
  • Add methods to sync data from and to CUDA interactions (see 7e437f6)
  • Fix a bug whereby confs without momenta would be printed with trailing spaces
  • Fix a bug whereby the code wouldn't sometimes compile with CUDA 10.x
  • Update a CUDA error message
  • Fix some typos in the documentation

oxpy

  • Fix a bug whereby oxpy couldn't be compiled in debug mode (-DDebug=True)

oat

  • Fix external_force_utils import in exclude_force.py

v3.4.1

22 Aug 06:39
Compare
Choose a tag to compare

v. 3.4.1 [238196f]

  • Fix a compilation bug in a contrib observable

v3.4

20 Aug 13:35
Compare
Choose a tag to compare

v. 3.4 [1c89963]

  • Observables can now update their data structures while the sim runs
  • Add a new observable to compute the stress autocorrelation
  • Normalise the behaviour of log-lin trajectories
  • Improve error messages on CUDA
  • Remove a deprecated function by reworking how textures are accessed
  • Fix a bug whereby the kinetic energy was not correctly printed to configuration files (issue #22)
  • Fix a bug whereby RNA simulations with CUDA11 would crash
  • Fix a bug in the CUDA barostat that sometimes made the code crash
  • Fix a bug whereby "use_average_seq" would be always interpreted as an int rather than a boolean value (issue #27)
  • Fix a bug whereby the code would not compile on Apple systems (issue #30)

oxpy

  • Make it possible to access the last_conf observable from python
  • Add a Jupyter Notebook example
  • Make the code deallocate ConfigInfo at the end of each simulation
  • Fix a bug whereby oxpy simulations on CUDA couldn't be run consequently
  • Fix a bug whereby the ConfigInfo object wouldn't be accessible from Python through the analysis backend

oat

  • Clarify python version requirements
  • Change svd_align to not always align to (0, 0, 0)
  • Add oxview visual bindings
  • Update get_confs to handle times larger than the max value of int
  • Update pca to have CLI control over how many oxView json files get printed (see issue #24)
  • Add cli documentation to oat
  • Fix a typo in db_to_force parser
  • Several documentation improvements

v3.3

07 Jul 10:03
Compare
Choose a tag to compare

The first official release of the new oxDNA code is here!

Here is the complete changelog with respect to the last version released on sourceforge:

v. 3.3 [7cb66cf]

  • Add variables to the input file
  • Add support for mathematical expressions to the input file
  • Add tests for the new input features
  • Greatly improve the performance of the configuration parser. The speed increase is very noticeable when using DNAnalysis on large trajectories.
  • Add a Python-powered metadynamics interface (examples/METADYNAMICS)
  • Add Python bindings to the external forces
  • Add support for observable and external force files written in JSON
  • Add tests for oxpy
  • Complete rewrite of the docs files. The documentation is now much more complete and handled by sphinx
  • Remove the old (and outdated) UTILS folder
  • Add oxDNA_analysis_tools to the repo (in the analysis folder)

v. 3.2.1 [ee2553c]

  • Fix a bug by avoiding free'ing uninitialised CUDA arrays
  • Substitute a call to the deprecated cudaThreadSetCacheConfig function
  • Fix compilation with double precision on CUDA
  • Fix compilation of plugins on Mac OS X and remove warnings
  • Port the COMForce force to CUDA
  • Reduce the host memory consumption when using forces on CUDA
  • Add an overloaded operator to print LR_matrix instances
  • Make a Python3-compatible version of the standalone generator

v. 3.2.0 [399f3e4]

  • Add the list of papers to cite to the README and to the oxDNA output
  • Add a method to remove outputs from the simulation
  • Refactor IBaseInteraction to remove the need of the Curiously Recurring Template Pattern
  • Move methods from IBaseInteraction to Mesh
  • Remove warnings found by clang
  • Compile with the -march=native option by default (use -DNATIVE_COMPILATION=Off to disable it)
  • Add a new object (FlattenedConfigInfo) to access the simulation details as plain arrays, which get turned into numpy arrays on Python
  • Add a Molecule class to the python bindings
  • Port the test suite to python3
  • Create bindings for the AnalysisBackend class
  • Make it possible to install a GPU-powered oxpy with pip
  • Bugfixing
    • Fix the way the DNA and RNA sites where computed on Python

v. 3.1.2 [83e7823]

  • Add a rudimentary subscriber/notifier mechanism and use it to implement a way of handling temperature changes
  • Make the code compilable with the -DMPI=ON option
  • Remove calls to tmpfile() from the codebase
  • Use setuptools and setuptools-scm to install the python bindings
  • Make oxpy installable with pip
  • Add an example implementing replica-exchange MD simulations with oxpy
  • Make it possible to define custom observables on Python
  • Update github's issue templates
  • Add a github workflow to update the online python documentation
  • Bugfixing:
    • Fix a bug whereby a failing list update on CUDA would not throw an exception as it should
    • Fix compilation of oxpy and with CUDA

v. 3.1.1 [c83eda2]

  • Make oxDNA compile with older CMake versions
  • Add github CI scripts
  • Remove a few useless members from SimBackend
  • Make the code compatible with CUDA 11
  • Make it possible to print non-averaged density profiles
  • Add a method to print a configuration at will from Python (OxpyManager::print_configuration)
  • Add a method to get the system's total energy (OxpyManager::system_energy)
  • Bugfixing:
    • Fix a bug whereby the Hilbert sorting done on GPU would lead to wrong results due to a wrong updating of the particle data structures
    • Fix a bug a CPU simulation run with a CUDA-enabled oxDNA would take up a GPU

v. 3.1.0 [0897aa1]

  • Implement a molecular barostat (i.e. a barostat that acts on the centres of mass of molecules)
  • Add a simple in-backend implementation of another Langevin thermostat
  • Add data structures to handle "molecules"
  • LR_vector* changed in bool in IBaseInteraction's methods
  • Add an oxpy example
  • Improve oxpy's documentation
  • Make it possible to change the input file options from Python
  • Make plugins loadable also from oxpy
  • Create a utils Python module
  • Add python bindings to obtain the positions of nucleotide sites
  • Add Python bindings for BaseObservable
  • Bugfixing:
    • Make it possible to compile the contrib folders with old CMake versions
    • Fix a small bug in VolumeMove and CUDA barostat

v. 3.0.0-alpha [5634f27]

  • Python bindings are now available. It is now possible to run simulations from Python, although not every option is available and most behaviour is still controlled by the input file
  • Substitute the number and number4 templated stuff with using statements (which are equivalent to typedefs) chosen at compile time:
    • on the CPU side the default precision is double;
    • on the CUDA side number and number4 have become c_number and c_number4 and default to float and float4;
    • on CUDA the mixed precision can be used only if -DCUDA_DOUBLE=OFF, which is the default behaviour.
  • Plugins now require a single entry point, which should be called make_MyPlugin, where MyPlugin is the name of the plugin class (and file).
  • The codebase underwent a substantial cleaning up; compilation time went down and performance went up by a few percent.