Package: kuibit
kuibitkuibitis a Python library to analyze simulations performed with the Einstein
Toolkit largely inspired byPostCactus.kuibitcan read simulation data and represent it with high-level classes. This
page is mainly intended for developers. Documentation for users is availablehere.Quick linksOfficial documentationTutorialsExamplesArchive with most recent examples and toolsChangelogWhat people say about kuibitUsers/developers group chatInstallationkuibitis available in PyPI. To install it withpippip3installkuibitIf they are not already available,pipwill install all the necessary dependencies.kuibitfollowsNEP29and requires
Python >= 3.7.If you intend to developkuibit, seeCONTRIBUTING.mdand
follow the instruction below.DevelopmentFor development, we usepoetry. Poetry simplifies
dependency management, building, and publishing the package.To installkuibitwith poetry, clone this repo, move into the folder, and run:poetryinstall-EfullThis will download all the needed dependencies in a sandboxed environment (the-E fullflag is for the optional dependencies). When you want to usekuibit, just runpoetry shellfrom within thekuibitdirectory.
This will drop you in a shell in
which you have full access tokuibitin "development" version, and its
dependencies (including the one needed only for development). Alternatively, you
can activate the virtual environment directly. You can find where the environment
in installed running the commandpoetry env info --pathin thekuibitdirectory.
This is a standard virtual environment, which can be activated with theactivatescripts in thebinfolder. Once you do that, you will be able to usekuibitfor anywhere.As of version1.3.0, we adopt the following  philosophy forgitbranches:masteralways corresponds to the latest stable version, the one available on
PyPI. Hotfixes are applied directly on master, and a new release is tagged.nextis where most of the development occurs. This corresponds to the next
version ofkuibit.nextoften experiences rebasing.Specific features that can be developed on their separate feature branch. This
will be merged intonext.The documentation of the development version is served atsbozzolo.github.io/kuibit/dev.Help!Users and developers ofkuibitmeet in theTelegram
group. If you have any problem or suggestion, that's a
good place where to discuss it. Alternatively, you can also open an issue on
GitHub.Documentationkuibituses Sphinx to generate the documentation. To produce the documentationcddocs&&makehtmlDocumentation is automatically generated after each commit by GitHub Actions.We usenbsphinxto translate Jupyter
notebooks to the examples. The extension is required. Note: Jupyter notebooks
have to be un-evaluated.nbsphinxrequirespandoc. If
don't havepandoc, you should comment outnbsphinxindocs/conf.py, or
compiling the documentation will fail.VideosHere is a list of videos describingkuibitand how to use it:Tutorial: Post-processing Cactus simulations with PythonIntroduction on kuibit - Einstein Toolkit Seminar, 2021Using kuibitkuibit - Einstein Toolkit Summer School, 2021Tutorial: Post-processing Cactus simulations with Python - Einstein Toolkit
Summer School, 2022TheUsing
kuibitseries is a great place where to get started withkuibit.Testskuibitcomes with a suite of unit tests. To run the tests, (in a poetry shell),poetryrunpython-munittestTests are automatically run after each commit by GitHub Actions.If you want to look at the coverage of your tests, run (in a poetry shell)coveragerun-munittest
coveragehtmlThis will produce a directory with the html files containing the analysis of
the coverage of the tests.What is akuibit?A kuibit (also known askukuipad, meaning harvest pole) is the tool
traditionally used by the Tohono O'odham people to reach the fruit of the
Saguaro cacti during the harvesting season. In the same way, this package is a
tool that you can use to collect the fruit of yourCactussimulations.Creditskuibitfollows the same design and part of the implementation details ofPostCactus, code developed by Wolfgang Kastaun. This fork completely rewrites
the original code, adding emphasis on documentation, testing, and extensibility.
The logo contains elements designed byfreepik.com. We thankkuibitfirst users, Stamatis Vretinaris and Pedro Espino, for providing
comments to improve the code and the documentation.Citationkuibitis built and maintained by the dedication of one graduate student. Please,
consider citingkuibitif you find the software useful. You can use the followingbibtexkey (as provided by ADSABS).@article{kuibit,author={{Bozzola}, Gabriele},title="{kuibit: Analyzing Einstein Toolkit simulations with Python}",journal={The Journal of Open Source Software},keywords={numerical relativity, Python, Einstein Toolkit, astrophysics, Cactus, General Relativity and Quantum Cosmology, Astrophysics - High Energy Astrophysical Phenomena},year=2021,month=apr,volume={6},number={60},eid={3099},pages={3099},doi={10.21105/joss.03099},archivePrefix={arXiv},eprint={2104.06376},primaryClass={gr-qc},adsurl={https://ui.adsabs.harvard.edu/abs/2021JOSS....6.3099B},adsnote={Provided by the SAO/NASA Astrophysics Data System}}You can find this entry in Python withfrom kuibit import __bibtex__.kuibitis built withNumPy,SciPy, andh5py, and optionally usesmatplotlib,mayavi, andnumba. Consider citing these packages too.Disclaimerkuibitis developed as professional tool that can be used for research to be
published in peer-reviewed journals. As such,kuibitis tested to ensure that
results are scientifically sound. However, we do not guarantee that the entirety
of the software is correct and does what it is intended to do. Hence, users are
strongly recommended to perform their independent validations and to report any
problem.