seams-core

The d-SEAMS C++ core engine

https://github.com/d-seams/seams-core

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.9%) to scientific vocabulary

Keywords

analysis-framework d-seams lua molecular-dynamics molecular-dynamics-simulation nix trajectories trajectory-analysis
Last synced: 6 months ago · JSON representation

Repository

The d-SEAMS C++ core engine

Basic Info
  • Host: GitHub
  • Owner: d-SEAMS
  • License: mit
  • Language: C++
  • Default Branch: main
  • Homepage: https://dseams.info
  • Size: 8.98 MB
Statistics
  • Stars: 36
  • Watchers: 4
  • Forks: 10
  • Open Issues: 16
  • Releases: 1
Topics
analysis-framework d-seams lua molecular-dynamics molecular-dynamics-simulation nix trajectories trajectory-analysis
Created about 7 years ago · Last pushed over 1 year ago
Metadata Files
Readme Contributing License Code of conduct Citation Codeowners

README.md

d-SEAMS

Deferred Structural Elucidation Analysis for Molecular Simulations

Build Status

built with nix

\brief The C++ core of d-SEAMS, a molecular dynamics trajectory analysis engine.

\note The related pages describe the examples and how to obtain the data-sets (trajectories) from figshare.

\warning If you are unwilling to use the nix build system, then please note that you must manage the dependencies MANUALLY, including the compiler versions. Optionally, use the provided conda environment.

Citation

If you use this software please cite the following:

Goswami, R., Goswami, A., & Singh, J. K. (2020). d-SEAMS: Deferred Structural Elucidation Analysis for Molecular Simulations. Journal of Chemical Information and Modeling. https://doi.org/10.1021/acs.jcim.0c00031

The corresponding bibtex entry is:

@Article{Goswami2020,
author={Goswami, Rohit and Goswami, Amrita and Singh, Jayant Kumar},
title={d-SEAMS: Deferred Structural Elucidation Analysis for Molecular Simulations},
journal={Journal of Chemical Information and Modeling},
year={2020},
month={Mar},
day={20},
publisher={American Chemical Society},
issn={1549-9596},
doi={10.1021/acs.jcim.0c00031},
url={https://doi.org/10.1021/acs.jcim.0c00031}
}

Compilation

We use a deterministic build system to generate both bug reports and uniform usage statistics. This also handles the lua scripting engine.

\note The lua functions are documented on the on the API Docs

We also provide a conda environment as a fallback, which is also recommended for MacOS users.

Build

Conda (working now)

Although we strongly suggest using nix, for MacOS systems, the following instructions may be more suitable. We will assume the presence of micromamba:

bash cd ~/seams-core micromamba create -f environment.yml micromamba activate dseams luarocks install luafilesystem

Now the installation can proceed.

\note we do not install lua-luafilesystem within the conda environment because it is outdated on osx

bash mkdir build cd build export EIGEN3_INCLUDE_DIR=$CONDA_PREFIX/include/eigen3 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=YES -DCMAKE_INSTALL_PREFIX:PATH=$CONDA_PREFIX ../ make -j$(nproc) make install LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib $CONDA_PREFIX/bin/yodaStruct -c lua_inputs/config.yml

We have opted to install into the conda environment, if this is not the intended behavior, use /usr/local instead.

Spack (not working at the moment)

Manually this can be done in a painful way as follows:

bash spack install eigen@3.3.9 lua@5.2 spack install catch2 fmt yaml-cpp openblas boost cmake ninja meson spack load catch2 fmt yaml-cpp openblas boost cmake ninja meson eigen@3.3.9 lua@5.2 luarocks install luafilesystem

Or better:

```bash spack env activate $(pwd)

After loading the packages

luarocks install luafilesystem ```

Now we can build and install as usual.

bash cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_EXPORT_COMPILE_COMMANDS=YES -GNinja \ -DCMAKE_INSTALL_PREFIX=$HOME/.local \ -DCMAKE_CXX_FLAGS="-pg -fsanitize=address " \ -DCMAKE_EXE_LINKER_FLAGS=-pg -DCMAKE_SHARED_LINKER_FLAGS=-pg \ -DBUILD_TESTING=NO cmake --build build

Or more reasonably:

```bash export INSTDIR=$HOME/.local cd src meson setup bbdir --prefix $INSTDIR meson compile -C bbdir meson install -C bbdir

if not done

export PATH=$PATH:$INSTDIR/bin export LDLIBRARYPATH=$LDLIBRARYPATH:$INSTDIR/lib cd ../ yodaStruct -c lua_inputs/config.yml ```

Nix (not working at the moment)

Since this project is built with nix, we can simply do the following from the root directory (longer method):

```sh

Make sure there are no artifacts

rm -rf build

This will take a long time the first time as it builds the dependencies

nix-build . # Optional

Install into your path

nix-env -if . # Required

Run the command anywhere

yodaStruct -c lua_inputs/config.yml ```

A faster method of building the software is by using the cachix binary cache as shown:

```bash

Install cachix

nix-env -iA cachix -f https://cachix.org/api/v1/install

Use the binary cache

cachix use dseams

Faster with the cache than building from scratch

nix-build . # Optional

Install into your path

nix-env -if . # Required

Run the command anywhere

yodaStruct -c lua_inputs/config.yml ```

Usage

Having installed the yodaStruct binary and library, we can now use it.

bash yodaStruct -c lua_inputs/config.yml

\note The paths in the .yml should be relative to the folder from which the binary is called.

If you're confused about how to handle the relative paths, run the command yodaStruct -c lua_inputs/config.yml in the top-level directory, and set the paths relative to the top-level directory. This is the convention used in the examples as well.

Language Server Support

To generate a compile_commands.json file for working with a language server like ccls use the following commands:

```sh

Pure environment

nix-shell --pure mkdir -p build && cd build cmake -DCMAKEBUILDTYPE=Debug -DCMAKEEXPORTCOMPILECOMMANDS=YES ../ cp compilecommands.json ../ ```

Note that there is no need to actually compile the project if you simply need to get the compiler database for the language server.

Do Not commit the .json file.

Development

We can simply use the nix environment:

```sh

From the project root

nix-shell --pure ```

Running

This is built completely with nix:

```{bash}

Install systemwide

nix-env -if . ```

To run the sample inputs, simply install the software, and ensure that input/ is a child directory.

```{bash}

Assuming you are in the src directory

Check help with -h

yodaStruct -c lua_inputs/config.yml ```

Tests

Apart from the examples, the test-suite can be run with the yodaStruct_test binary, which will drop into the nix environment before building and executing gdb:

```{bash}

Just run this

./testBuild.sh

At this point the binary and library are copied into the root

One might, in a foolhardy attempt, use gdb at this point

Here be dragons :)

USE NIX

Anyway

gdb --args ./yodaStruct -c lua_inputs/config.yml

quit gdb with quit

Go run the test binary

cd shellBuild ./yodaStruct_test ```

Do note that the regular installation via nix-env runs the tests before the installation

Developer Documentation

While developing, it is sometimes expedient to update the packages used. It is then useful to note that we use niv to handle our pinned packages (apart from the ones built from Github). Thus, one might need, say:

bash niv update nixpkgs -b nixpkgs-unstable

Test the build with nix:

```bash nix-build .

Outputs are in ./result

If you get a CMake error

rm -rf build nix-store --delete /nix/store/$whatever # $whatever is the derivation complaining nix-collect-garbage # then try again [worst case scenario] ```

Leaks and performance

While testing for leaks, use clang (for AddressSanitizer and LeakSanitizer) and the following:

```{bash}

From the developer shell

export CXX=/usr/bin/clang++ && export CC=/usr/bin/clang cmake .. -DCMAKECXXFLAGS="-pg -fsanitize=address " -DCMAKEEXELINKERFLAGS=-pg -DCMAKESHAREDLINKERFLAGS=-pg ```

Overview

As of Mon Jan 20 15:57:18 2020, the lines of code calculated by cloc are as follows:

Cloc Lines

Contributing

Please ensure that all contributions are formatted according to the clang-format configuration file.

Specifically, consider using the following:

Where some of the above suggestions are derived from this depreciated githook.

Also, do note that we have a CONTRIBUTING file you need to read to contribute, for certain reasons, like, common sense.

Commit Hook

Note that we expect compliance with the clang-format as mentioned above, and this may be enforced by using the provided scripts for a pre-commit hook: bash ./scripts/git-pre-commit-format install

This will ensure that new commits are in accordance to the clang-format file.

Development Builds

The general idea is to drop into an interactive shell with the dependencies and then use cmake as usual.

```bash nix-shell --pure --run bash --show-trace --verbose cd build cmake .. -DCMAKEBUILDTYPE=Debug -DNOWARN=TRUE \ -DFINDEIGEN=TRUE \ -DCMAKEEXPORTCOMPILE_COMMANDS=1 \ -G "Ninja" ninja

Test

cd ../ yodaStruct -c lua_inputs/config.yml

Debug

gdb --args yodaStruct -c lua_inputs/config.yml `` To load debugging symbols from the shared library, when you are insidegdb` (from the top-level directory, for instance), use the following command:

bash add-symbol-file build/libyodaLib.so Then you can set breakpoints in the C++ code; for instance:

bash b seams_input.cpp:408

Acknowledgements

The following tools are used in this project:

Third Party Libraries

The libraries used are:

Owner

  • Name: d-SEAMS
  • Login: d-SEAMS
  • Kind: organization

Deferred Structural Elucidation Analysis for Molecular Simulations

GitHub Events

Total
  • Watch event: 4
Last Year
  • Watch event: 4

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 1,319
  • Total Committers: 4
  • Avg Commits per committer: 329.75
  • Development Distribution Score (DDS): 0.497
Past Year
  • Commits: 2
  • Committers: 1
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
HaoZeke r****i@a****m 664
Amrita Goswami a****6@g****m 622
Ruhila S r****9@g****m 32
Zhiwen Shi c****w@g****m 1
Committer Domains (Top 20 + Academic)
aol.com: 1

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 23
  • Total pull requests: 20
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 13 days
  • Total issue authors: 4
  • Total pull request authors: 4
  • Average comments per issue: 0.7
  • Average comments per pull request: 0.3
  • Merged pull requests: 17
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • HaoZeke (11)
  • RuhiRG (7)
  • amritagos (2)
  • Clarkszw (2)
Pull Request Authors
  • RuhiRG (9)
  • HaoZeke (6)
  • amritagos (3)
  • Clarkszw (1)
Top Labels
Issue Labels
good first issue (4) gsoc23 (4) enhancement (2) todo :spiral_notepad: (2) macos (1) python-bindings (1) bug (1)
Pull Request Labels
gsoc23 (1) gsoc (1) enhancement (1) documentation (1)

Packages

  • Total packages: 2
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 4
proxy.golang.org: github.com/d-seams/seams-core
  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 9.0%
Average: 9.6%
Dependent repos count: 10.2%
Last synced: 6 months ago
proxy.golang.org: github.com/d-SEAMS/seams-core
  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 9.0%
Average: 9.6%
Dependent repos count: 10.2%
Last synced: 6 months ago

Dependencies

.github/workflows/build_apidocs.yml actions
  • actions/checkout v2.3.4 composite
  • cachix/cachix-action v10 composite
  • cachix/install-nix-action v12 composite
  • peaceiris/actions-gh-pages v3 composite
.github/workflows/build_pkg.yml actions
  • actions/checkout v2.3.4 composite
  • cachix/cachix-action v10 composite
  • cachix/install-nix-action v16 composite
.github/workflows/build_meson.yml actions
  • actions/checkout v3 composite
  • mamba-org/setup-micromamba v1 composite
environment.yml pypi