spglib

C library for finding and handling crystal symmetries

https://github.com/spglib/spglib

Science Score: 77.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 8 DOI reference(s) in README
  • Academic publication links
    Links to: wiley.com
  • Committers with academic emails
    12 of 37 committers (32.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.6%) to scientific vocabulary

Keywords from Contributors

closember init services system systemd
Last synced: 6 months ago · JSON representation ·

Repository

C library for finding and handling crystal symmetries

Basic Info
Statistics
  • Stars: 328
  • Watchers: 18
  • Forks: 116
  • Open Issues: 74
  • Releases: 9
Created over 12 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

Spglib

CI Status Documentation Status Codecov Status

License Status CMake Status Python Versions

Release Status Conda Status PyPI Status Fedora Status Homebrew Status Spack Status Vcpkg Status

PyPI Downloads Conda Downloads

C library for finding and handling crystal symmetries

What does Spglib do?

A crystal structure is given to a spglib function to obtain symmetry information. spg_get_dataset is the function that returns most fruitful space group information. This returns the result in the C-structure SpglibDataset. We don't know the length of symmetry operations to be returned, the memory spaces are allocated dynamically, which means we have to free them. by spg_free_dataset. To tolerate tiny distortion of crystal structure, it has to be specified when calling symmetry search function. The following pages show the details.

```C

include

include "spglib.h"

int main(void) { SpglibDataset *dataset; // Wurtzite structure (P63mc) double lattice[3][3] = { {3.111, -1.5555, 0}, {0, 2.6942050311733885, 0}, {0, 0, 4.988}}; double position[4][3] = { {1.0 / 3, 2.0 / 3, 0.0}, {2.0 / 3, 1.0 / 3, 0.5}, {1.0 / 3, 2.0 / 3, 0.6181}, {2.0 / 3, 1.0 / 3, 0.1181}, }; int types[4] = {1, 1, 2, 2}; int numatom = 4; double symprec = 1e-5;

// SplibDataset has to be freed after use.
dataset = spg_get_dataset(lattice, position, types, num_atom, symprec);

// Obtain data in SpglibDataset.
// The space group number 186 corresponds to the wurtzite-type (P6_3mc).
// See https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-table
assert(dataset->spacegroup_number == 186);

// Deallocate SpglibDataset, otherwise induce memory leak.
spg_free_dataset(dataset);

} ```

Requirements

  • C standard: As of version 2.1.0, Spglib explicitly enforces a minimum standard of C11

How to use Spglib

We currently only officially support conda and pip packaging of spglib, with plans to expand to FedoraProject in the near future. We are looking for additional contributors to package on other linux distributions. For the systems that are not yet officially supported please look at the instructions for manual compilation

The main interface for spglib is the C api, but we also officially support Fortran and Python interfaces. For a minimal example of how to use this library please check the provided examples

How install the python library

Spglib is available on PyPi, so it can be installed as:

console $ pip install spglib

Alternatively you can install the conda package that bundles the C and Fortran libraries

console $ conda install -c conda-forge spglib

This python library will default to the system installed Spglib library detected, specified via LD_LIBRARY_PATH on Linux or DYLD_LIBRARY_PATH on MacOS, otherwise defaulting to a bundled version.

For more details and how to build the python project from source, see the python documentation.

How to manually compile

The minimum configuration, build and install instructions are as follows:

console $ cmake . -B ./build $ cmake --build ./build $ cmake --install ./build

For more details on configuration options and how to link your project check the cmake documentation. A minimal example project using spglib is available at example.

How to run test

The C library tests are incorporated in the CMake projects and enabled by default. To execute these tests, run the following command with the appropriate path to the build directory

console $ ctest --test-dir ./build

Additionally, there are python tests that cover more use-cases. See the README in the python folder for more details

How to cite Spglib

If you use spglib in your research, please consider citing the following work:

@article{spglib, author = {Atsushi Togo, Kohei Shinohara and Isao Tanaka}, title = {Spglib: a software library for crystal symmetry search}, journal = {Sci. Technol. Adv. Mater., Meth.}, volume = {4}, number = {1}, pages = {2384822--2384836}, year = {2024}, doi = {10.1080/27660400.2024.2384822}, url = {https://doi.org/10.1080/27660400.2024.2384822}, }

If you use functions to search for magnetic symmetry operations in spglib, please also consider citing the following work:

@article{spglibv2, author = "Shinohara, Kohei and Togo, Atsushi and Tanaka, Isao", title = "{Algorithms for magnetic symmetry operation search and identification of magnetic space group from magnetic crystal structure}", journal = "Acta Cryst. A", year = "2023", volume = "79", number = "5", pages = "390--398", month = "Sep", doi = {10.1107/S2053273323005016}, url = {https://doi.org/10.1107/S2053273323005016}, }

Contributing

We welcome any contribution from the core development of the library to documentation improvements. See Contributing.md for more details.

Documentation

See https://spglib.readthedocs.io/ for further documentation. See the documentation for more information on how to contribute to the documentation.

Owner

  • Name: spglib
  • Login: spglib
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: >-
  If you use this software, please cite it using the
  metadata from this file.
repository-code: 'https://github.com/spglib/spglib'
preferred-citation:
  title: >-
    $\texttt{Spglib}$: a software library for crystal symmetry
    search
  authors:
    - given-names: Atsushi
      family-names: Togo
    - given-names: Isao
      family-names: Tanaka
  type: misc
  doi: 10.48550/arXiv.1808.01590
  year: 2018
  archivePrefix: arXiv
  primaryClass: cond-mat.mtrl-sci
references:
  - authors:
      - given-names: Kohei
        family-names: Shinohara
      - given-names: Atsushi
        family-names: Togo
      - given-names: Isao
        family-names: Tanaka
    type: article
    title: Algorithms for magnetic symmetry operation search and identification of magnetic space group from magnetic crystal structure
    journal: Acta Cryst. A
    year: 2023
    volume: 79
    number: 5
    pages: 390--398
    month: Sep
    doi: 10.1107/S2053273323005016
    url: https://doi.org/10.1107/S2053273323005016

GitHub Events

Total
  • Create event: 3
  • Release event: 1
  • Issues event: 42
  • Watch event: 41
  • Delete event: 2
  • Issue comment event: 199
  • Push event: 118
  • Pull request review comment event: 30
  • Pull request review event: 57
  • Pull request event: 68
  • Fork event: 6
Last Year
  • Create event: 3
  • Release event: 1
  • Issues event: 42
  • Watch event: 41
  • Delete event: 2
  • Issue comment event: 199
  • Push event: 118
  • Pull request review comment event: 30
  • Pull request review event: 57
  • Pull request event: 68
  • Fork event: 6

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 1,352
  • Total Committers: 37
  • Avg Commits per committer: 36.541
  • Development Distribution Score (DDS): 0.358
Past Year
  • Commits: 256
  • Committers: 9
  • Avg Commits per committer: 28.444
  • Development Distribution Score (DDS): 0.441
Top Committers
Name Email Commits
Atsushi Togo a****o@g****m 868
Cristian Le c****e@m****e 143
lan496 k****8@g****m 130
Pawel T. Jochym j****m@w****l 84
Pawel T. Jochym p****m@i****l 22
Jingheng Fu f****8@m****n 11
Cristian Le g****t@l****v 11
Paweł T. Jochym j****m 8
Michael Lamparski d****e@g****m 8
Andrius Merkys a****s@g****m 6
Seaton Ullberg s****g@g****m 6
Bodo Martin b****n@a****e 6
__sp__ o****p@e****u 6
Mikael Kuisma k****i@g****m 5
Dimitar Pashov d****v@g****m 4
Eisuke Kawashima e****m 4
Julien Nabet s****2@y****r 3
Lauri Himanen l****n@g****m 3
Cristian Le c****e@m****e 2
Colin Daniels c****s@g****m 2
Cody c****y@q****m 2
StefanBruens s****s@r****e 2
steinmig m****r@p****h 2
Denis Davydov d****n@g****m 1
Alexandr Fonari a****i@g****m 1
Tiziano Müller t****r@c****h 1
Keith Refson K****n@s****k 1
odidev o****v@p****m 1
Henry Schreiner H****I@g****m 1
Heiko Becker h****a@e****g 1
and 7 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 183
  • Total pull requests: 259
  • Average time to close issues: 4 months
  • Average time to close pull requests: 21 days
  • Total issue authors: 56
  • Total pull request authors: 21
  • Average comments per issue: 4.21
  • Average comments per pull request: 4.27
  • Merged pull requests: 209
  • Bot issues: 1
  • Bot pull requests: 6
Past Year
  • Issues: 27
  • Pull requests: 69
  • Average time to close issues: 4 days
  • Average time to close pull requests: 4 days
  • Issue authors: 19
  • Pull request authors: 12
  • Average comments per issue: 2.07
  • Average comments per pull request: 2.42
  • Merged pull requests: 47
  • Bot issues: 0
  • Bot pull requests: 4
Top Authors
Issue Authors
  • LecrisUT (49)
  • atztogo (28)
  • lan496 (25)
  • hongyi-zhao (6)
  • yurivict (5)
  • kbarros (4)
  • crystalfp (3)
  • merkys (3)
  • krefson (3)
  • YKQ98 (2)
  • toxa81 (2)
  • site-g (2)
  • dmt4 (2)
  • jaemolihm (1)
  • janosh (1)
Pull Request Authors
  • LecrisUT (186)
  • lan496 (56)
  • atztogo (36)
  • renovate[bot] (8)
  • e-kwsm (6)
  • site-g (6)
  • henryiii (3)
  • janosh (2)
  • mikaelkuisma1 (2)
  • ClausKlein (2)
  • Connor1y (2)
  • ktns (2)
  • krefson (2)
  • DanielYang59 (2)
  • lokik (2)
Top Labels
Issue Labels
bug (10) layer-group (6) enhancement (6) documentation (5) help wanted (4) question (3) deprecation (1)
Pull Request Labels
bug (24) enhancement (22) documentation (8) layer-group (6) breaking-changes (3) deprecation (2) help wanted (1)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 247,997 last-month
  • Total docker downloads: 90,488
  • Total dependent packages: 122
    (may contain duplicates)
  • Total dependent repositories: 216
    (may contain duplicates)
  • Total versions: 155
  • Total maintainers: 3
pypi.org: spglib

This is the spglib module.

  • Versions: 107
  • Dependent Packages: 83
  • Dependent Repositories: 206
  • Downloads: 247,997 Last month
  • Docker Downloads: 90,488
Rankings
Dependent packages count: 0.2%
Downloads: 0.9%
Dependent repos count: 1.1%
Docker downloads count: 1.2%
Average: 2.0%
Stargazers count: 4.4%
Forks count: 4.5%
Maintainers (3)
Last synced: 6 months ago
conda-forge.org: spglib

Spglib is a library for finding and handling crystal symmetries.

  • Versions: 48
  • Dependent Packages: 39
  • Dependent Repositories: 10
Rankings
Dependent packages count: 1.8%
Dependent repos count: 11.1%
Average: 13.9%
Forks count: 18.0%
Stargazers count: 24.8%
Last synced: 6 months ago

Dependencies

pyproject.toml pypi
  • numpy *
.github/workflows/ci.yaml actions
  • re-actors/alls-green release/v1 composite
.github/workflows/release.yaml actions
  • actions/checkout v4 composite
  • actions/download-artifact v3 composite
  • pypa/gh-action-pypi-publish release/v1 composite
  • softprops/action-gh-release v1 composite
.github/workflows/step_build-wheel.yaml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • docker/setup-qemu-action v2 composite
  • pypa/cibuildwheel v2.15.0 composite
.github/workflows/step_test.yaml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite
  • codecov/codecov-action v3 composite
  • danielealbano/lcov-action v3 composite
  • ilammy/msvc-dev-cmd v1 composite
  • lukka/get-cmake latest composite
  • lukka/run-cmake v10.3 composite
  • pre-commit/action v3.0.0 composite
  • re-actors/alls-green release/v1 composite