YASS is a modern, flexible atomic simulation suite written in Julia. It aims to provide:
- 🎯 Simple, and intuitive API
- ⚡ High performance native Julia implementation
- 🔧 Easy extensibility for custom methods
- 📦 Built-in potentials and analysis tools
using YetAnotherSimulationSuite
# Read molecule
water = readSystem("water.xyz")
# Run 10ps NVE simulation
traj = run(TIP4Pf(), water, (0.0, 10.0ps), 1.0fs, NVE())
# Analyze results
energies = [img.energy for img in traj.images]
temperatures = [img.temp for img in traj.images]- 🧪 Multiple molecular dynamics ensembles (NVE, NVT)
- 🔬 Built-in analysis tools (RDF, VACF)
- ⚛️ Geometry and cell optimizations
- 📊 Common water models (TIP4P/2005f, SPC-F)
- 💻 Easy-to-extend architecture
- 🚄 High performance through Julia's native speed
- 📝 Comprehensive documentation
pkg> add YetAnotherSimulationSuite
Julia often delivers substantial performance gains over Python for numerical and scientific code because it is JIT‑compiled, type‑stable, and generates native LLVM code, so well‑written Julia can approach C/Fortran speeds. However, that speed comes with trade‑offs: just‑in‑time compilation (and package precompilation) introduces startup latency, and Julia’s compilation artifacts and runtime can consume more memory than lightweight Python interpreters. In practice, Julia is most advantageous for long‑running, compute‑intensive workflows; for short scripts or very memory‑constrained environments you should weigh the startup and memory overheads or use precompilation strategies to mitigate them.
A benchmark comparing YASS to other similar packages can be found in the documentation.
Currently, YASS has a roughly 1 GB memory overhead due to dependencies, buffer allocations, and compilation artifacts. This overhead is typical for Julia packages with similar functionality, but may be significant for users with limited memory resources. This overhead is static and does not scale with system size, so larger simulations will see a smaller relative impact. Future optimizations may reduce this overhead.
A few examples of memory usage for different system sizes can be found in the documentation.
We welcome contributions! Whether it's:
- 🐛 Bug fixes
- ✨ New features
- 📚 Documentation improvements
- 🧪 Additional test cases
If you find YASS useful or just want to show support, please consider starring the repository!
YASS is currently in pre-release phase.
Here's what we're working on:
- Core functionality cleanup
- Comprehensive documentation
- Example scripts and tutorials
- Test coverage >70%
- Unitful.jl integration
- Chemfiles.jl integration
- NPT ensemble simulations
- Anharmonic vibrational analysis
- Path integral molecular dynamics (PIMD)
- Additional analysis tools
YASS is MIT licensed. See LICENSE for details.
If you use YASS in your research, please cite:
@misc{yass2023,
author = {Brian C. Ferrari},
title = {YetAnotherSimulationSuite.jl},
year = {2023},
publisher = {GitHub},
url = {https://github.com/Cavenfish/YetAnotherSimulationSuite.jl}
}