Name | pystog JSON |
Version |
0.5.8
JSON |
| download |
home_page | None |
Summary | Total scattering function manipulator |
upload_time | 2025-08-13 15:44:41 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.10 |
license | GPL version 3.0 |
keywords |
neutrons
pystog
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
|
## Total Scattering Function Manipulator:
| Health | Release | Other |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| [](https://actions-badge.atrox.dev/neutrons/pystog/goto?ref=master) | [](https://badge.fury.io/py/pystog) | [](https://mybinder.org/v2/gh/neutrons/pystog/master?filepath=tutorials) |
| [](https://codecov.io/gh/neutrons/pystog) | [](https://anaconda.org/neutrons/pystog) | [](https://www.gnu.org/licenses/gpl-3.0) |
| [](https://pystog.readthedocs.io/en/latest/?badge=latest) | [](https://www.repostatus.org/#active) | |
From total scattering functions, we have reciprocal-space structure factors and real-space pair distribution functions that are related via a Fourier transform.
PyStoG is a package that allows for:
1. Converting between the various functions used by different "communities" (ie researchers who study crystalline versus amorphous or glass materials). Conversions are for either real-space or reciprocal-space.
2. Perform the transform between the different available functions of choice
3. Fourier filter to remove spurious artificats in the data (ie aphysical, sub-angstrom low-r peaks in G(r) from experiments)

The name **PyStoG** comes from the fact that this is a _Pythonized_ version of **StoG**, a ~30 year old Fortran program that is part of the [RMCProfile software suite](http://www.rmcprofile.org/Main_Page).
**StoG** means **"S(Q) to G(r)"** for the fact that it takes recirpocal-space S(Q) patterns from files and transforms them into a single G(r) pattern.
The original _StoG_ program has been developed, in reverse chronological order, by:
- Matthew Tucker and Martin Dove (~2009)
- Spencer Howells (~1989)
- Jack Carpenter (prior to 1989)
A current state of the **StoG** program is kept in the `fortran` directory of this package.
This project was initially just a "sandbox" for taking the capabilities of **StoG** and migrating them over to the [Mantid Framework](https://github.com/mantidproject/mantid).
Yet, with more and more use cases, **PyStoG** was further developed as the stand-alone project it is now.
Yet, migration to the Mantid Framework is still a goal since it feeds into the [ADDIE project](https://github.com/neutrons/addie)
## Installation
Installation is available via [`pip`](https://pip.pypa.io/en/stable/):
```bash
pip install pystog
```
And [conda](https://docs.conda.io/en/latest/):
```bash
conda install -c neutrons pystog
```
## Getting started
Once installed, you can access the packages classes that perform the function manipulation.
```python
import pystog
from pystog import Converter
from pystog import Transformer
from pystog import FourierFilter
from pystog import StoG
```
** WARNING: Testing of the CLI is still ongoing**
A CLI command is also included, which can be run with JSON input files. The script will be installed into the `bin` directory in your virtual environment directory.
For example:
- `.pixi/envs/default/bin/`
- `pystog/.venv/bin/`
- `.../miniconda/envs/pystog/bin/`
You can simply activate your virtual environment (`pixi shell`, `. .venv/bin/activate`, or `conda activate pystog`) and run `pystog-cli`:
```bash
pystog-cli --json <input json>
```
For a list of available options, run:
```bash
pystog-cli --help
```
An example JSON can be found [here](https://github.com/neutrons/pystog/blob/master/data/examples/argon_pystog.json)
## Documentation
The official documentation is hosted on readthedocs.org: [https://pystog.readthedocs.io/en/latest/](https://pystog.readthedocs.io/en/latest/)
Also, a useful example reference is the [PDFFourierTransform](http://docs.mantidproject.org/nightly/algorithms/PDFFourierTransform-v1.html) algorithm in the Mantid Framework that has similar yet limited capabilities.
Finally, tutorials in the form of Jupyter Notebooks can be launched via Binder by clicking the badge here [](https://mybinder.org/v2/gh/neutrons/pystog/master?filepath=tutorials) or at the top of the page.
## Development
Pystog uses [pixi](https://pixi.sh/latest) to manage packaging and dependencies.
To get started, [install pixi](https://pixi.sh/latest/installation), then install pystog by running:
```bash
cd pystog/
pixi install
```
Pixi will automatically create a virtual environment in `pystog/.pixi/`.
A number of convenience "tasks" are available, and can be viewed within the `pyproject.toml`, or by running:
```bash
pixi task list
```
### Testing
[pytest](https://docs.pytest.org/en/latest/) is used to write and run the test suite.
To run the tests, simply run:
```bash
pixi run test
```
Any additional flags or options you desire may be passed, for example:
```bash
pixi run test some.specific:test
# or
pixi run test -vv
```
### Formatting and Static analysis
[pre-commit](https://pre-commit.com/) is used for style enforcement and static analysis.
To install, after creating the environment run
```sh
pre-commit install
```
and it will run for every commit.
```sh
pre-commit run --all
```
will run it without committing.
Raw data
{
"_id": null,
"home_page": null,
"name": "pystog",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "neutrons, pystog",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/38/10/b46cb502bafab10363079d0ee42cbaac5b7d431b7749fca993f9329c0edd/pystog-0.5.8.tar.gz",
"platform": null,
"description": "## Total Scattering Function Manipulator:\n\n| Health | Release | Other |\n| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |\n| [](https://actions-badge.atrox.dev/neutrons/pystog/goto?ref=master) | [](https://badge.fury.io/py/pystog) | [](https://mybinder.org/v2/gh/neutrons/pystog/master?filepath=tutorials) |\n| [](https://codecov.io/gh/neutrons/pystog) | [](https://anaconda.org/neutrons/pystog) | [](https://www.gnu.org/licenses/gpl-3.0) |\n| [](https://pystog.readthedocs.io/en/latest/?badge=latest) | [](https://www.repostatus.org/#active) | |\n\nFrom total scattering functions, we have reciprocal-space structure factors and real-space pair distribution functions that are related via a Fourier transform.\nPyStoG is a package that allows for:\n\n1. Converting between the various functions used by different \"communities\" (ie researchers who study crystalline versus amorphous or glass materials). Conversions are for either real-space or reciprocal-space.\n2. Perform the transform between the different available functions of choice\n3. Fourier filter to remove spurious artificats in the data (ie aphysical, sub-angstrom low-r peaks in G(r) from experiments)\n\n\n\nThe name **PyStoG** comes from the fact that this is a _Pythonized_ version of **StoG**, a ~30 year old Fortran program that is part of the [RMCProfile software suite](http://www.rmcprofile.org/Main_Page).\n**StoG** means **\"S(Q) to G(r)\"** for the fact that it takes recirpocal-space S(Q) patterns from files and transforms them into a single G(r) pattern.\nThe original _StoG_ program has been developed, in reverse chronological order, by:\n\n- Matthew Tucker and Martin Dove (~2009)\n- Spencer Howells (~1989)\n- Jack Carpenter (prior to 1989)\n\nA current state of the **StoG** program is kept in the `fortran` directory of this package.\n\nThis project was initially just a \"sandbox\" for taking the capabilities of **StoG** and migrating them over to the [Mantid Framework](https://github.com/mantidproject/mantid).\nYet, with more and more use cases, **PyStoG** was further developed as the stand-alone project it is now.\nYet, migration to the Mantid Framework is still a goal since it feeds into the [ADDIE project](https://github.com/neutrons/addie)\n\n## Installation\n\nInstallation is available via [`pip`](https://pip.pypa.io/en/stable/):\n\n```bash\npip install pystog\n```\n\nAnd [conda](https://docs.conda.io/en/latest/):\n\n```bash\nconda install -c neutrons pystog\n```\n\n## Getting started\n\nOnce installed, you can access the packages classes that perform the function manipulation.\n\n```python\nimport pystog\nfrom pystog import Converter\nfrom pystog import Transformer\nfrom pystog import FourierFilter\nfrom pystog import StoG\n```\n\n** WARNING: Testing of the CLI is still ongoing**\n\nA CLI command is also included, which can be run with JSON input files. The script will be installed into the `bin` directory in your virtual environment directory.\nFor example:\n\n- `.pixi/envs/default/bin/`\n- `pystog/.venv/bin/`\n- `.../miniconda/envs/pystog/bin/`\n\nYou can simply activate your virtual environment (`pixi shell`, `. .venv/bin/activate`, or `conda activate pystog`) and run `pystog-cli`:\n\n```bash\npystog-cli --json <input json>\n```\n\nFor a list of available options, run:\n\n```bash\npystog-cli --help\n```\n\nAn example JSON can be found [here](https://github.com/neutrons/pystog/blob/master/data/examples/argon_pystog.json)\n\n## Documentation\n\nThe official documentation is hosted on readthedocs.org: [https://pystog.readthedocs.io/en/latest/](https://pystog.readthedocs.io/en/latest/)\n\nAlso, a useful example reference is the [PDFFourierTransform](http://docs.mantidproject.org/nightly/algorithms/PDFFourierTransform-v1.html) algorithm in the Mantid Framework that has similar yet limited capabilities.\n\nFinally, tutorials in the form of Jupyter Notebooks can be launched via Binder by clicking the badge here [](https://mybinder.org/v2/gh/neutrons/pystog/master?filepath=tutorials) or at the top of the page.\n\n## Development\n\nPystog uses [pixi](https://pixi.sh/latest) to manage packaging and dependencies.\nTo get started, [install pixi](https://pixi.sh/latest/installation), then install pystog by running:\n\n```bash\ncd pystog/\npixi install\n```\n\nPixi will automatically create a virtual environment in `pystog/.pixi/`.\nA number of convenience \"tasks\" are available, and can be viewed within the `pyproject.toml`, or by running:\n\n```bash\npixi task list\n```\n\n### Testing\n\n[pytest](https://docs.pytest.org/en/latest/) is used to write and run the test suite.\n\nTo run the tests, simply run:\n\n```bash\npixi run test\n```\n\nAny additional flags or options you desire may be passed, for example:\n\n```bash\npixi run test some.specific:test\n# or\npixi run test -vv\n```\n\n### Formatting and Static analysis\n\n[pre-commit](https://pre-commit.com/) is used for style enforcement and static analysis.\nTo install, after creating the environment run\n\n```sh\npre-commit install\n```\n\nand it will run for every commit.\n\n```sh\npre-commit run --all\n```\n\nwill run it without committing.\n",
"bugtrack_url": null,
"license": "GPL version 3.0",
"summary": "Total scattering function manipulator",
"version": "0.5.8",
"project_urls": {
"homepage": "https://github.com/neutrons/pystog/",
"issues": "https://github.com/neutrons/pystog/issues",
"repository": "https://github.com/neutrons/pystog/"
},
"split_keywords": [
"neutrons",
" pystog"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c57d697108ead5f788e59a310995e8ca1688b1b4156b2bd1868c9a9737b3147a",
"md5": "f36fdfe5bb678ec847f158237a7c200a",
"sha256": "6fec1f8853c216045f43aeacfec01ba8f8bc29e7bbb18f94e76b89eb5fb8608e"
},
"downloads": -1,
"filename": "pystog-0.5.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f36fdfe5bb678ec847f158237a7c200a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 38153,
"upload_time": "2025-08-13T15:44:38",
"upload_time_iso_8601": "2025-08-13T15:44:38.953282Z",
"url": "https://files.pythonhosted.org/packages/c5/7d/697108ead5f788e59a310995e8ca1688b1b4156b2bd1868c9a9737b3147a/pystog-0.5.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3810b46cb502bafab10363079d0ee42cbaac5b7d431b7749fca993f9329c0edd",
"md5": "2daade4354397aa39c5c9d1bc2149257",
"sha256": "6dc054c3aeeb37fd706a77549c80d6c881c9e4172e629f5678f4aeebb84a62f7"
},
"downloads": -1,
"filename": "pystog-0.5.8.tar.gz",
"has_sig": false,
"md5_digest": "2daade4354397aa39c5c9d1bc2149257",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 21763863,
"upload_time": "2025-08-13T15:44:41",
"upload_time_iso_8601": "2025-08-13T15:44:41.107695Z",
"url": "https://files.pythonhosted.org/packages/38/10/b46cb502bafab10363079d0ee42cbaac5b7d431b7749fca993f9329c0edd/pystog-0.5.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-13 15:44:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "neutrons",
"github_project": "pystog",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "pystog"
}