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
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
Metadata Files
README.md
d-SEAMS
Deferred Structural Elucidation Analysis for Molecular Simulations
- Check our build status here.
- The docs themselves are here and development is ongoing on GitHub
- We also have a Zenodo community for user-contributions like reviews, testimonials and tutorials
- Trajectories are hosted on figshare.
- Our wiki is here
\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
This has been published at the Journal of Chemical Information and Modeling (JCIM)
You may also read the preprint on arXiv
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:

Contributing
Please ensure that all contributions are formatted according to the clang-format configuration file.
Specifically, consider using the following:
Sublime Plugin for users of Sublime Text
format-all for Emacs
vim-clang-format for Vim
Visual Studio: http://llvm.org/builds/, or use the integrated support in Visual Studio 2017
Xcode: https://github.com/travisjeffery/ClangFormat-Xcode
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:
- CMake for compilation (cmake-init was used as a reference)
- Clang because it is more descriptive with better tools
- Doxygen for the developer API
- clang-format for code formatting
- clang-format-hooks for
githooks to enforce formatting
- clang-format-hooks for
- lua for the scripting engine
- yaml for the configuration
Third Party Libraries
The libraries used are:
- backward-cpp for better stacktraces without
gdb - cxxopts for parsing command line options
- rang for terminal styles (ANSI)
- sol2 for interfacing with lua
- yaml-cpp for working with
yaml - fmt for safe and fast formatting
- Linear Algebra PACKage (LAPACK)
- Basic Linear Algebra Subprograms (BLAS)
- Spectra
- Boost Geometry for working with different coordinates
- Boost Math for spherical harmonics
- Blaze for very fast modern linear algebra
- nanoflann to calculate nearest neighbors
- icecream-cpp for pretty-printing and debugging
Owner
- Name: d-SEAMS
- Login: d-SEAMS
- Kind: organization
- Website: https://dseams.info
- Repositories: 4
- Profile: https://github.com/d-SEAMS
Deferred Structural Elucidation Analysis for Molecular Simulations
GitHub Events
Total
- Watch event: 4
Last Year
- Watch event: 4
Committers
Last synced: 10 months ago
Top Committers
| Name | 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)
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
Pull Request Labels
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
- Documentation: https://pkg.go.dev/github.com/d-seams/seams-core#section-documentation
- License: mit
-
Latest release: v1.0.1
published almost 6 years ago
Rankings
proxy.golang.org: github.com/d-SEAMS/seams-core
- Documentation: https://pkg.go.dev/github.com/d-SEAMS/seams-core#section-documentation
- License: mit
-
Latest release: v1.0.1
published almost 6 years ago
Rankings
Dependencies
- actions/checkout v2.3.4 composite
- cachix/cachix-action v10 composite
- cachix/install-nix-action v12 composite
- peaceiris/actions-gh-pages v3 composite
- actions/checkout v2.3.4 composite
- cachix/cachix-action v10 composite
- cachix/install-nix-action v16 composite
- actions/checkout v3 composite
- mamba-org/setup-micromamba v1 composite