Name | atooms JSON |
Version |
3.23.0
JSON |
| download |
home_page | None |
Summary | A framework for simulations of interacting particles |
upload_time | 2024-12-14 22:28:44 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.7 |
license | GPLv3 |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
Atooms
======
[](https://pypi.python.org/pypi/atooms/)
[](https://pypi.python.org/pypi/atooms/)
[](https://en.wikipedia.org/wiki/GNU_General_Public_License)
[](https://mybinder.org/v2/git/https%3A%2F%2Fframagit.org%2Fatooms%2Fatooms/HEAD?labpath=docs%2F)
[](https://doi.org/10.5281/zenodo.1183301)
[](https://framagit.org/atooms/atooms/badges/master/pipeline.svg)
[](https://framagit.org/atooms/atooms/-/commits/master)
**atooms** is a high-level Python framework for simulations of interacting particles, such as molecular dynamics or Monte Carlo.
This is the core package: it provides a consistent interface to the basic objects of particle-based simulations. [Feature packages](Feature packages) are built on top of it and implement complex simulation methods and analysis tools.
Quick start
-----------
Here is a small example for setting up a mixture of two types of particles, A and B, in a periodic elongated cell. The number density is set to unity.
```python
from atooms.system import System
system = System(N=64)
system.replicate(times=4, axis=0)
system.composition = {'A': 128, 'B': 128}
system.density = 1.0
```
Particles in the central part of the cell get a random displacement and are folded back into the simulation cell
```python
import numpy
for p in system.particle:
if abs(p.position[0]) < system.cell.side[0] / 4:
p.position += 0.5 * (numpy.random.random() - 0.5)
p.fold(system.cell)
system.show('ovito')
```

Simulation data are stored in trajectory files, which are easy to manipulate and convert with atooms. Here, we write the system species and positions in a single-frame trajectory file using the [xyz format](https://en.wikipedia.org/wiki/XYZ_format).
```python
from atooms.trajectory import TrajectoryXYZ
with TrajectoryXYZ('input.xyz', 'w') as th:
th.variables = ['species', 'position'] # actually, this is the default
th.write(system)
```
The trajectory file can now be used to start a simulation using one the available [simulation backends](https://atooms.frama.io/atooms/tutorial/simulations.html) or your own code.
Features
--------
- Focus on a simple and expressive interface
- API refined over the years towards consistency
- Modular and extensible design via namespace packages
- Semantic versioning - for what is worth
- Easy to interface: in-house codes and custom formats are first-class citizens
- Support for efficient simulation backends, with a focus on GPU codes
Documentation
-------------
Check out the [tutorial](https://atooms.frama.io/atooms/tutorial) for more examples and the [public API](https://atooms.frama.io/atooms/api/atooms) for more details.
Org-mode and jupyter notebooks are available under [docs](https://framagit.org/atooms/atooms/-/blob/master/docs/). You can run them interactively on [Binder](https://mybinder.org/v2/git/https%3A%2F%2Fframagit.org%2Fatooms%2Fatooms/HEAD?labpath=docs%2).
Installation
------------
From the python package index
```
pip install atooms
```
From the code repository
```
git clone https://framagit.org/atooms/atooms.git
cd atooms
make install
```
Contributing
------------
You are welcome to contribute to this project! Please have a look at [these guidelines](https://framagit.org/atooms/atooms/-/blob/master/CONTRIBUTING.md).
Feature packages
------------------
Atooms is modular: it is easy to add new functionalities, and just those you actually need.
Feature packages are available from the [atooms main repository](https://framagit.org/atooms). They are installed in the `atooms` namespace to prevent name clashing. If you want to add your own feature package to the atooms namespace, structure it this way
```bash
atooms/your_package
atooms/your_package/__init__.py
```
where ```__init__.py``` contains
```python
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
```
Install `your_package` and you are ready to go
```python
import atooms.your_package
```
Authors
-------
Daniele Coslovich: https://www.units.it/daniele.coslovich/
Thanks go to Francesco Turci and Geert Kapteijns for their contributions.
Raw data
{
"_id": null,
"home_page": null,
"name": "atooms",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": null,
"author": null,
"author_email": "Daniele Coslovich <daniele.coslovich@umontpellier.fr>",
"download_url": "https://files.pythonhosted.org/packages/41/14/f582aed3015482947624f7e5025c53701d16db65d7943fba37687118024e/atooms-3.23.0.tar.gz",
"platform": null,
"description": "Atooms\n======\n\n[](https://pypi.python.org/pypi/atooms/)\n[](https://pypi.python.org/pypi/atooms/)\n[](https://en.wikipedia.org/wiki/GNU_General_Public_License)\n[](https://mybinder.org/v2/git/https%3A%2F%2Fframagit.org%2Fatooms%2Fatooms/HEAD?labpath=docs%2F)\n[](https://doi.org/10.5281/zenodo.1183301)\n[](https://framagit.org/atooms/atooms/badges/master/pipeline.svg)\n[](https://framagit.org/atooms/atooms/-/commits/master)\n\n**atooms** is a high-level Python framework for simulations of interacting particles, such as molecular dynamics or Monte Carlo.\n\nThis is the core package: it provides a consistent interface to the basic objects of particle-based simulations. [Feature packages](Feature packages) are built on top of it and implement complex simulation methods and analysis tools.\n\nQuick start\n-----------\n\nHere is a small example for setting up a mixture of two types of particles, A and B, in a periodic elongated cell. The number density is set to unity.\n```python\nfrom atooms.system import System\n\nsystem = System(N=64)\nsystem.replicate(times=4, axis=0)\nsystem.composition = {'A': 128, 'B': 128}\nsystem.density = 1.0\n```\n\nParticles in the central part of the cell get a random displacement and are folded back into the simulation cell\n```python\nimport numpy\n\nfor p in system.particle:\n if abs(p.position[0]) < system.cell.side[0] / 4:\n p.position += 0.5 * (numpy.random.random() - 0.5)\n p.fold(system.cell)\nsystem.show('ovito')\n```\n\n\n\nSimulation data are stored in trajectory files, which are easy to manipulate and convert with atooms. Here, we write the system species and positions in a single-frame trajectory file using the [xyz format](https://en.wikipedia.org/wiki/XYZ_format).\n```python\nfrom atooms.trajectory import TrajectoryXYZ\n\nwith TrajectoryXYZ('input.xyz', 'w') as th:\n th.variables = ['species', 'position'] # actually, this is the default\n th.write(system)\n```\n\nThe trajectory file can now be used to start a simulation using one the available [simulation backends](https://atooms.frama.io/atooms/tutorial/simulations.html) or your own code.\n\nFeatures\n--------\n\n- Focus on a simple and expressive interface\n- API refined over the years towards consistency\n- Modular and extensible design via namespace packages\n- Semantic versioning - for what is worth\n- Easy to interface: in-house codes and custom formats are first-class citizens\n- Support for efficient simulation backends, with a focus on GPU codes\n\nDocumentation\n-------------\nCheck out the [tutorial](https://atooms.frama.io/atooms/tutorial) for more examples and the [public API](https://atooms.frama.io/atooms/api/atooms) for more details.\n\nOrg-mode and jupyter notebooks are available under [docs](https://framagit.org/atooms/atooms/-/blob/master/docs/). You can run them interactively on [Binder](https://mybinder.org/v2/git/https%3A%2F%2Fframagit.org%2Fatooms%2Fatooms/HEAD?labpath=docs%2).\n\nInstallation\n------------\nFrom the python package index\n```\npip install atooms\n```\n\nFrom the code repository\n```\ngit clone https://framagit.org/atooms/atooms.git\ncd atooms\nmake install\n```\n\nContributing\n------------\nYou are welcome to contribute to this project! Please have a look at [these guidelines](https://framagit.org/atooms/atooms/-/blob/master/CONTRIBUTING.md).\n\nFeature packages \n------------------\nAtooms is modular: it is easy to add new functionalities, and just those you actually need.\n\nFeature packages are available from the [atooms main repository](https://framagit.org/atooms). They are installed in the `atooms` namespace to prevent name clashing. If you want to add your own feature package to the atooms namespace, structure it this way\n```bash\natooms/your_package\natooms/your_package/__init__.py\n```\n\nwhere ```__init__.py``` contains\n\n```python\nfrom pkgutil import extend_path\n__path__ = extend_path(__path__, __name__)\n```\n\nInstall `your_package` and you are ready to go\n```python\nimport atooms.your_package\n```\n\nAuthors\n-------\nDaniele Coslovich: https://www.units.it/daniele.coslovich/\n\nThanks go to Francesco Turci and Geert Kapteijns for their contributions.\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "A framework for simulations of interacting particles",
"version": "3.23.0",
"project_urls": {
"changelog": "https://framagit.org/atooms/atooms/-/blob/master/CHANGELOG.md",
"documentation": "https://atooms.frama.io/atooms",
"homepage": "https://framagit.org/atooms/atooms",
"repository": "https://framagit.org/atooms/atooms"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "dcef6a7b0b09c57da6126f3cad29a77765822feaa0c5eab9016feebcf64c4778",
"md5": "48e48415ed24b607937b474b21eedab5",
"sha256": "0e46ca32ff52ac3403834ca21a737ac4e3ae7836c7e0b54ba9e0c7667d589a1d"
},
"downloads": -1,
"filename": "atooms-3.23.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "48e48415ed24b607937b474b21eedab5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 149962,
"upload_time": "2024-12-14T22:28:41",
"upload_time_iso_8601": "2024-12-14T22:28:41.001862Z",
"url": "https://files.pythonhosted.org/packages/dc/ef/6a7b0b09c57da6126f3cad29a77765822feaa0c5eab9016feebcf64c4778/atooms-3.23.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4114f582aed3015482947624f7e5025c53701d16db65d7943fba37687118024e",
"md5": "c31629041724de88fa6832e7e5c0a6bd",
"sha256": "d7b356292f748660abed5befb739ec9e3ce48a992b2073bb9660d948c4e9c721"
},
"downloads": -1,
"filename": "atooms-3.23.0.tar.gz",
"has_sig": false,
"md5_digest": "c31629041724de88fa6832e7e5c0a6bd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 149251,
"upload_time": "2024-12-14T22:28:44",
"upload_time_iso_8601": "2024-12-14T22:28:44.380396Z",
"url": "https://files.pythonhosted.org/packages/41/14/f582aed3015482947624f7e5025c53701d16db65d7943fba37687118024e/atooms-3.23.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-14 22:28:44",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "atooms"
}