Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
6a34c84
Implement tests for cosmo_quantity.
kyleaoman Dec 12, 2024
07aac86
Initial cosmo_quantity implementation.
kyleaoman Dec 12, 2024
648e177
Merge branch 'master' into cosmo_quantity
kyleaoman Dec 12, 2024
6eede33
First rough working implementation of a numpy func overload.
kyleaoman Dec 12, 2024
32f9a2e
Start trudging through list of functions to wrap.
kyleaoman Dec 13, 2024
c9b8b6b
Work out an approach for concatenate-like functions.
kyleaoman Dec 13, 2024
37dd6af
Implement a few more funcs, rough in all the rest.
kyleaoman Dec 13, 2024
fd255dc
Fill in FFT functions, continue roughing in.
kyleaoman Dec 14, 2024
960bdbb
Implement block, around.
kyleaoman Dec 14, 2024
77f1d27
Implement a few more funcs.
kyleaoman Dec 14, 2024
914910a
Implement a few more numpy funcs.
kyleaoman Dec 14, 2024
a30350a
Start implementing histograms.
kyleaoman Dec 15, 2024
c51cd0b
Implement a few more numpy funcs.
kyleaoman Dec 15, 2024
f27c527
Implement linalg.det.
kyleaoman Dec 16, 2024
21585c5
Attempt histogramdd implementation.
kyleaoman Dec 16, 2024
daa2196
Wrap up histogram testing.
kyleaoman Dec 17, 2024
9f5f6e5
Amend physical conversion test because array_equal is now cosmo_array…
kyleaoman Dec 17, 2024
16e40cc
Implement a couple more numpy functions.
kyleaoman Dec 17, 2024
240b991
Check cosmo_factor for consistent scale_factor when preparing arguments.
kyleaoman Dec 18, 2024
8880a13
Implement a few more numpy functions.
kyleaoman Dec 18, 2024
30f4e35
Implement a few more numpy functions.
kyleaoman Dec 18, 2024
cf11cfd
Implement a few more numpy functions.
kyleaoman Dec 18, 2024
dd106fd
Implement more numpy functions.
kyleaoman Dec 19, 2024
77db41e
Finish implementing numpy functions, immediate tests pass.
kyleaoman Dec 19, 2024
922de1b
Overhaul initialisation to allow list of cosmo_arrays as input.
kyleaoman Dec 19, 2024
ec9e932
Cleanup some caught warnings that no longer happen :)
kyleaoman Dec 19, 2024
44a6f59
Remove some unused imports and variables.
kyleaoman Dec 19, 2024
3d87708
Add reshape to cosmo_quantity to enable some functions like meshgrid.
kyleaoman Dec 19, 2024
165f422
Implement numpy take function.
kyleaoman Jan 10, 2025
ef43675
Wrap np.ndarray.take properly.
kyleaoman Jan 10, 2025
c86b9c9
Replace some internal uses of unyt_array with cosmo_array.
kyleaoman Jan 28, 2025
59594ff
Replace unyt array/quantity with cosmo array/quantity in tests.
kyleaoman Jan 29, 2025
791b24a
Cleanup some unused imports and unused variables.
kyleaoman Jan 29, 2025
6501b3f
Remove duplicate comoving=... in __repr__.
kyleaoman Jan 29, 2025
efa66d5
Prepare to handle np functions that 'just work' in unyt but don't for…
kyleaoman Jan 29, 2025
75078d2
Make use of cosmo_array being supported in numpy in power_spectrum fu…
kyleaoman Jan 29, 2025
cb08f9d
Make checks on numpy functions more stringent and fix revealed bugs.
kyleaoman Jan 30, 2025
7de44a7
Simplify implementation of amin, amax, and implement meshgrid.
kyleaoman Jan 30, 2025
63f4557
Split out cosmo attribute copying into separate function & fix some b…
kyleaoman Jan 30, 2025
38c49d8
Check against unyt warning when running unyt version of function.
kyleaoman Jan 30, 2025
4452fa7
Add a few more functions and a check that we're covering all function…
kyleaoman Jan 30, 2025
453ef89
Check many more array funcs.
kyleaoman Jan 30, 2025
f21f1b7
Keep cosmo_array to cosmo_quantity conversion in one location.
kyleaoman Jan 31, 2025
5dfcb02
Simplify wrapping some methods and properties.
kyleaoman Jan 31, 2025
9e46bf7
Simplify array function checks and finish checking all unyt-supported…
kyleaoman Jan 31, 2025
5836650
Remove some redundant wrappers.
kyleaoman Jan 31, 2025
e687143
Greatly simplify array function handling with wrapper functions.
kyleaoman Jan 31, 2025
37870ce
Remove version guard since we're going to pin a higher unyt version a…
kyleaoman Jan 31, 2025
218b156
Cleanup another import guard since we'll require newer numpy now.
kyleaoman Jan 31, 2025
5bb02fb
Move array_func helper functions to _array_functions.py.
kyleaoman Jan 31, 2025
f891b85
Replace awkward unyt usage with new numpy supported cosmo versions.
kyleaoman Jan 31, 2025
d120fdb
Point requirements to unyt github main branch (temporarily).
kyleaoman Jan 31, 2025
44477fb
Handle comoving is None in str representation
kyleaoman Feb 1, 2025
04e522a
Refactor to keep code for casting return types in one place.
kyleaoman Feb 5, 2025
65cd3fa
Cleanup while checking unyt usage.
kyleaoman Feb 5, 2025
0d9a1c8
Add a test for cosmo_quantity conversion.
kyleaoman Feb 5, 2025
0657ba9
Cleanup while checking unyt usage.
kyleaoman Feb 5, 2025
9289480
Refactor ca_cfs to just use cf directly.
kyleaoman Feb 5, 2025
303668d
Troubleshooting after refactor.
kyleaoman Feb 6, 2025
448ba7d
Remove unused import.
kyleaoman Feb 6, 2025
85f3900
Replace some unyt usage with cosmo versions.
kyleaoman Feb 6, 2025
0f80416
Some cleanup of array constructors.
kyleaoman Feb 7, 2025
b2ce2df
Cleanup and document _array_functions.py
kyleaoman Feb 7, 2025
3b0fc84
Start reviewing objects.py docstrings.
kyleaoman Feb 8, 2025
51e5f2f
Merge branch 'master' into cosmo_quantity
kyleaoman Feb 8, 2025
d9fe006
Merge branch 'master' into cosmo_quantity
kyleaoman Feb 8, 2025
a396554
Run black.
kyleaoman Feb 8, 2025
1b89f1c
Edit a few more docstrings.
kyleaoman Feb 8, 2025
d9fe3c9
Fix warnings from neutrino cosmology.
kyleaoman Feb 8, 2025
489d60c
Use squeeze safely.
kyleaoman Feb 9, 2025
9c8eb0a
Review type hints and docstrings in objects.py.
kyleaoman Feb 9, 2025
a1689ae
Fix some sphinx issues.
kyleaoman Feb 9, 2025
2b46c57
Remove a and cosmo_factor from global namespace (was temporarily adde…
kyleaoman Feb 9, 2025
95704e0
Fill in descriptions of all cosmo_array tests.
kyleaoman Feb 9, 2025
7cc732e
Remove some more unused imports.
kyleaoman Feb 10, 2025
de7ffad
Add now-redundant checks on rotation_center argument.
kyleaoman Feb 10, 2025
d3dcdff
Cleanup more imports.
kyleaoman Feb 10, 2025
8e9052b
Refactor try/except into getattr for fetching hsml.
kyleaoman Feb 10, 2025
36a4ba2
Remove stray print statement from debugging.
kyleaoman Feb 10, 2025
5871b1e
Gradually coercing vis functions to share code.
kyleaoman Feb 10, 2025
4274798
Remove redundant boxsize argument, get from metadata.
kyleaoman Feb 10, 2025
c80267e
Remove argument from tests, too.
kyleaoman Feb 10, 2025
fc2177d
Cleanup more imports.
kyleaoman Feb 10, 2025
20534b4
Prepared to create helper function in vis functions.
kyleaoman Feb 10, 2025
9530290
Start refactoring visualisation functions with helpers.
kyleaoman Feb 10, 2025
63bfb25
Move more to helper functions and cleanup.
kyleaoman Feb 11, 2025
530c78f
Continue cleanup of visualisation functions.
kyleaoman Feb 11, 2025
79780f9
Consolidate handling cosmo_arrays in visualisation and big namespace …
kyleaoman Feb 12, 2025
e85741c
Run black.
kyleaoman Feb 12, 2025
399bec6
Run CI black version.
kyleaoman Feb 12, 2025
c4b5795
Move wrapper from backends to be called in frontend functions.
kyleaoman Feb 12, 2025
06cc3ca
Move norm argument onto wrapper function.
kyleaoman Feb 12, 2025
d784b29
Update tests with norm arg removed from backend functions.
kyleaoman Feb 13, 2025
bccf1ca
Run black.
kyleaoman Feb 13, 2025
1b3feae
Update some vis docstrings.
kyleaoman Feb 14, 2025
71c9212
Support __round__ for cosmo_quantity and dot for cosmo_array.
kyleaoman Feb 14, 2025
7b765b7
Make a pass over the visualisation docs.
kyleaoman Feb 14, 2025
4f7d3d7
Switch on intersphinx, why not.
kyleaoman Feb 14, 2025
bc3ff27
Reorganize docs a little bit and flesh out the cosmo_array description.
kyleaoman Feb 15, 2025
53d6fe1
Run black.
kyleaoman Feb 15, 2025
34d9497
Add new vis backend submodules (from reorganising) to installed modules.
kyleaoman Feb 18, 2025
14a0f73
Unyt fixed ftt->fft typo, update to match.
kyleaoman Mar 11, 2025
feae367
cache@v2 in workflows deprecated, update so that we can run CI.
kyleaoman Mar 11, 2025
44483fc
Merge branch 'cache_v4' into cosmo_quantity
kyleaoman Mar 11, 2025
fdd0c76
Point to unyt on pypi now that 3.0.4 is released.
kyleaoman Mar 14, 2025
db688b0
Add support for multiplying a cosmo_array by a bare unit object from …
kyleaoman Mar 18, 2025
ab72215
Re-point unyt to pypi (tests will fail).
kyleaoman Mar 18, 2025
f843827
Point unyt dependency to fork.
kyleaoman Mar 19, 2025
8036099
Remove accidentally added png files.
kyleaoman Mar 19, 2025
17a384a
Rename attr copy function for clarity.
kyleaoman Mar 19, 2025
b130975
Add a constructor to initialize a cosmo_factor without import .
kyleaoman Mar 19, 2025
b91c1c5
Refactor accumulation of preservation and multiplication of cosmo_fac…
kyleaoman Mar 19, 2025
ab739fb
Close if statement with else instead of elif.
kyleaoman Mar 19, 2025
0088892
Remove unused 'inputs' argument to _power_cosmo_factor.
kyleaoman Mar 19, 2025
2fb63a9
Restore inputs argument to _power_cosmo_factor, it's used after all.
kyleaoman Mar 19, 2025
a82ffc3
Merge branch 'cosmo_quantity' of github.com:SWIFTSIM/swiftsimio into …
kyleaoman Mar 19, 2025
fcf3c28
Add a new way to construct cosmo_array with scale factor and exponent.
kyleaoman Mar 19, 2025
c204234
Make use of new tidier constructors for arrays and quantities.
kyleaoman Mar 19, 2025
404c071
Remember to run the autoformatter.
kyleaoman Mar 19, 2025
26636eb
Update docs for new constructors.
kyleaoman Mar 19, 2025
6ff3c74
Add some tests for initializing with new constructors.
kyleaoman Mar 20, 2025
be9d2e7
Rename cosmo_array ufunc tests file descriptively.
kyleaoman Mar 20, 2025
e834562
Add tests for new constructors for cosmo_array.
kyleaoman Mar 20, 2025
6956553
Tidy up tests to flag non-critical unresolved issues in unyt.
kyleaoman Mar 20, 2025
dbf8135
Re-point dependency at latest unyt release.
kyleaoman Mar 20, 2025
e605a53
Update visualisation example.
kyleaoman Mar 20, 2025
e4372ab
Revisions to visualisation examples.
kyleaoman Mar 20, 2025
2709f01
Run black.
kyleaoman Mar 20, 2025
2109da2
We do actually need numpy>=2.1.0, and pin unyt>=3.0.4
kyleaoman Mar 20, 2025
5b89f62
Corrections to unit conversion in test.
kyleaoman Mar 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
with:
python-version: ${{ matrix.python-version }}
- name: Cache pip
uses: actions/cache@v2
uses: actions/cache@v4
with:
# This path is specific to Ubuntu
path: ~/.cache/pip
Expand Down
11 changes: 11 additions & 0 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"sphinx.ext.napoleon",
"sphinx.ext.mathjax",
"sphinx.ext.autosummary",
"sphinx.ext.intersphinx",
]

# Add any paths that contain templates here, relative to this directory.
Expand Down Expand Up @@ -98,3 +99,13 @@ def run_apidoc(_):

def setup(app):
app.connect("builder-inited", run_apidoc)


intersphinx_mapping = dict(
numpy=("https://numpy.org/doc/stable/", None),
numba=("https://numba.readthedocs.io/en/stable/", None),
unyt=("https://unyt.readthedocs.io/en/stable/", None),
scipy=("https://docs.scipy.org/doc/scipy/", None),
swiftgalaxy=("https://swiftsimio.readthedocs.io/en/latest/", None),
velociraptor=("https://velociraptor-python.readthedocs.io/en/latest/", None),
)
91 changes: 91 additions & 0 deletions docs/source/cosmo_array/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
The ``cosmo_array``
===================

:mod:`swiftsimio` uses a customized class based on the :class:`~unyt.array.unyt_array`
to store data arrays. The :class:`~swiftsimio.objects.cosmo_array` has all of the same
functionality as the :class:`~unyt.array.unyt_array`, but also adds information about
data transformation between physical and comoving coordinates, and descriptive metadata.

For instance, should you ever need to know what a dataset represents, you can
ask for a description by accessing the ``name`` attribute:

.. code-block:: python

print(rho_gas.name)

which will output ``Co-moving mass densities of the particles``.

The cosmology information is stored in three attributes:

+ ``comoving``
+ ``cosmo_factor``
+ ``valid_transform``

The ``comoving`` attribute specifies whether the array is a physical (``True``) or
comoving (``False``) quantity, while the ``cosmo_factor`` stores the expression needed
to convert back and forth between comoving and physical quantities and the value of
the scale factor. The conversion factors can be accessed like this:

.. code-block:: python

# Conversion factor to make the densities a physical quantity
print(rho_gas.cosmo_factor.a_factor)
physical_rho_gas = rho_gas.cosmo_factor.a_factor * rho_gas

# Symbolic scale-factor expression
print(rho_gas.cosmo_factor.expr)

which will output ``132651.002785671`` and ``a**(-3.0)``. Converting an array to/from physical/comoving
is done with the :meth:`~swiftsimio.objects.cosmo_array.to_physical`, :meth:`~swiftsimio.objects.cosmo_array.to_comoving`, :meth:`~swiftsimio.objects.cosmo_array.convert_to_physical` and :meth:`~swiftsimio.objects.cosmo_array.to_comoving` methods, for instance:

.. code-block:: python

physical_rho_gas = rho_gas.to_physical()

# Convert in-place
rho_gas.convert_to_physical()

The ``valid_transform`` is a boolean flag that is set to ``False`` for some arrays that don't make sense to convert to comoving.

:class:`~swiftsimio.objects.cosmo_array` supports array arithmetic and the entire :mod:`numpy` range of functions. Attempting to combine arrays (e.g. by addition) will validate the cosmology information first. The implementation is designed to be permissive: it will only raise exceptions when a genuinely invalid combination is encountered, but is tolerant of missing cosmology information. When one argument in a relevant operation (like addition, for example) is not a :class:`~swiftsimio.objects.cosmo_array` the attributes of the :class:`~swiftsimio.objects.cosmo_array` will be assumed for both arguments. In such cases a warning is produced stating that this assumption has been made.

.. note::

:class:`~swiftsimio.objects.cosmo_array` and the related :class:`~swiftsimio.objects.cosmo_quantity` are now intended to support all :mod:`numpy` functions, propagating units and cosmology information correctly through mathematical operations. Try making a histogram with weights and ``density=True`` with :func:`numpy.histogram`! There are a large number of functions and a very large number of possible parameter combinations, so some corner cases may have been missed in development. Please report any errors or unexpected results using github issues or other channels so that they can be fixed. Currently :mod:`scipy` functions are not supported (although some might "just work"). Requests to support specific functions can be accommodated.

To make the most of the utility offered by the :class:`~swiftsimio.objects.cosmo_array` class, it is helpful to know how to create your own. A good template for this looks like:

.. code-block:: python

import unyt as u
from swiftsimio.objects import cosmo_array, cosmo_factor

# suppose the scale factor is 0.5 and it scales as a**1, then:
my_cosmo_array = cosmo_array(
[1, 2, 3],
u.Mpc,
comoving=True,
scale_factor=0.5, # a=0.5, i.e. z=1
scale_exponent=1, # distances scale as a**1, so the scale exponent is 1
)
# consider getting the scale factor from metadata when applicable, i.e. replace:
# scale_factor=0.5
# with:
# scale_factor=data.metadata.a

There is also a very similar :class:`~swiftsimio.objects.cosmo_quantity` class designed for scalar values,
analogous to the :class:`~unyt.array.unyt_quantity`. You may encounter this being returned by :mod:`numpy` functions. Cosmology-aware scalar values can be initialized similarly:

.. code-block:: python

import unyt as u
from swiftsimio.objects import cosmo_quantity, cosmo_factor

my_cosmo_quantity = cosmo_quantity(
2,
u.Mpc,
comoving=False,
scale_factor=0.5,
cosmo_factor=1,
)

4 changes: 2 additions & 2 deletions docs/source/getting_started/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ In the above it's important to note the following:
+ Only the density and temperatures (corresponding to the ``PartType0/Densities`` and
``PartType0/Temperatures``) datasets are read in.
+ That data is only read in once the
:meth:`swiftsimio.objects.cosmo_array.convert_to_cgs` method is called.
+ :meth:`swiftsimio.objects.cosmo_array.convert_to_cgs` converts data in-place;
:meth:`~swiftsimio.objects.cosmo_array.convert_to_cgs` method is called.
+ :meth:`~swiftsimio.objects.cosmo_array.convert_to_cgs` converts data in-place;
i.e. it returns `None`.
+ The data is cached and not re-read in when ``plt.scatter`` is called.

Expand Down
2 changes: 2 additions & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ snapshots to enable partial reading.

getting_started/index
loading_data/index
cosmo_array/index
masking/index
visualisation/index
soap/index
velociraptor/index
creating_initial_conditions/index
statistics/index
Expand Down
76 changes: 0 additions & 76 deletions docs/source/loading_data/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -247,47 +247,6 @@ Then, to access individual columns (in this case element abundances):
data.gas.element_mass_fractions.silicon


Non-unyt properties
-------------------

Each data array has some custom properties that are not present within the base
:obj:`unyt.unyt_array` class. We create our own version of this in
:obj:`swiftsimio.objects.cosmo_array`, which allows each dataset to contain
its own cosmology and name properties.

For instance, should you ever need to know what a dataset represents, you can
ask for a description:

.. code-block:: python

print(rho_gas.name)

which will output ``Co-moving mass densities of the particles``. They include
scale-factor information, too, through the ``cosmo_factor`` object,

.. code-block:: python

# Conversion factor to make the densities a physical quantity
print(rho_gas.cosmo_factor.a_factor)
physical_rho_gas = rho_gas.cosmo_factor.a_factor * rho_gas

# Symbolic scale-factor expression
print(rho_gas.cosmo_factor.expr)

which will output ``132651.002785671`` and ``a**(-3.0)``. This is an easy way
to convert your co-moving values to physical ones.

An even easier way to convert your properties to physical is to use the
built-in ``to_physical`` and ``convert_to_physical`` methods, as follows:

.. code-block:: python

physical_rho_gas = rho_gas.to_physical()

# Convert in-place
rho_gas.convert_to_physical()


User-defined particle types
---------------------------

Expand All @@ -310,38 +269,3 @@ in SWIFT will be automatically read.
"extra_test.hdf5",
)


Halo Catalogues
---------------

SWIFT-compatible halo catalogues, such as those written with SOAP, can be
loaded entirely transparently with ``swiftsimio``. It is generally possible
to use all of the functionality (masking, visualisation, etc.) that is used
with snapshots with these files, assuming the files conform to the
correct metadata standard.

An example SOAP file is available at
``http://virgodb.cosma.dur.ac.uk/swift-webstorage/IOExamples/soap_example.hdf5``

You can load SOAP files as follows:

.. code-block:: python

from swiftsimio import load

catalogue = load("soap_example.hdf5")

print(catalogue.spherical_overdensity_200_mean.total_mass)

# >>> [ 591. 328.5 361. 553. 530. 507. 795.
# 574. 489.5 233.75 0. 1406. 367.5 2308.
# ...
# 0. 534. 0. 191.75 1450. 600. 290. ] 10000000000.0*Msun (Physical)

What's going on here? Under the hood, ``swiftsimio`` has a discrimination function
between different metadata types, based upon a property stored in the HDF5 file,
``Header/OutputType``. If this is set to ``FullVolume``, we have a snapshot,
and use the :obj:`swiftsimio.metadata.objects.SWIFTSnapshotMetadata`
class. If it is ``SOAP``, we use
:obj:`swiftsimio.metadata.objects.SWIFTSOAPMetadata`, which instructs
``swiftsimio`` to read slightly different properties from the HDF5 file.
41 changes: 41 additions & 0 deletions docs/source/soap/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
Halo Catalogues & SOAP integration
==================================

SWIFT-compatible halo catalogues, such as those written with SOAP, can be
loaded entirely transparently with ``swiftsimio``. It is generally possible
to use all of the functionality (masking, visualisation, etc.) that is used
with snapshots with these files, assuming the files conform to the
correct metadata standard.

An example SOAP file is available at
``http://virgodb.cosma.dur.ac.uk/swift-webstorage/IOExamples/soap_example.hdf5``

You can load SOAP files as follows:

.. code-block:: python

from swiftsimio import load

catalogue = load("soap_example.hdf5")

print(catalogue.spherical_overdensity_200_mean.total_mass)

# >>> [ 591. 328.5 361. 553. 530. 507. 795.
# 574. 489.5 233.75 0. 1406. 367.5 2308.
# ...
# 0. 534. 0. 191.75 1450. 600. 290. ] 10000000000.0*Msun (Physical)

What's going on here? Under the hood, ``swiftsimio`` has a discrimination function
between different metadata types, based upon a property stored in the HDF5 file,
``Header/OutputType``. If this is set to ``FullVolume``, we have a snapshot,
and use the :obj:`swiftsimio.metadata.objects.SWIFTSnapshotMetadata`
class. If it is ``SOAP``, we use
:obj:`swiftsimio.metadata.objects.SWIFTSOAPMetadata`, which instructs
``swiftsimio`` to read slightly different properties from the HDF5 file.

swiftgalaxy
-----------

The :mod:`swiftgalaxy` companion package to :mod:`swiftsimio` offers further integration with halo catalogues in SOAP, Caesar and Velociraptor formats (so far). It greatly simplifies efficient loading of particles belonging to an object from a catalogue, and additional tools that are useful when working with a galaxy or other localized collection of particles. Refer to the `swiftgalaxy documentation`_ for details.

.. _swiftgalaxy documentation: https://swiftgalaxy.readthedocs.io/en/latest/
11 changes: 6 additions & 5 deletions docs/source/visualisation/index.rst
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
Visualisation
=============

:mod:`swiftsimio` provides visualisation routines accelerated with the
:mod:`numba` module. They work without this module, but we strongly recommend
installing it for the best performance (1000x+ speedups). These are provided
in the :mod:`swiftismio.visualisation` sub-modules.
:mod:`swiftsimio` provides visualisation routines in the
:mod:`swiftsimio.visualisation` sub-module. They are accelerated with the
:mod:`numba` module. They can work without :mod:`numba`, but we strongly recommend
installing it for the best performance (1000x+ speedups).

The three built-in rendering types (described below) have the following
The four built-in rendering types (described below) have the following
common interface:

.. code-block:: python
Expand All @@ -30,6 +30,7 @@ additional functionality.
projection
slice
volume_render
ray_trace
power_spectra
tools

Loading