Example data
swiftgalaxy comes with utilities to generate some schematic example data on the
fly, and to download some more realistic example datasets. This is implemented via two
helper objects in the demo_data module, generated_examples and
web_examples. You can view the available example data sets with:
from swiftgalaxy.demo_data import generated_examples, web_examples
print(generated_examples)
print(web_examples)
Each example can be accessed as an attribute, for example generated_examples.snapshot
creates an example snapshot file. The helper class is set up so that the path to the
example file(s) is returned when the attribute is accessed. This means that we can pass
the examples directly to swiftgalaxy classes that expect file paths as arguments -
the needed input files will be created/downloaded (unless they already exist) and their
location passed automatically. The example data is stored in a directory
demo_data/ in the current working directory, and this directory is created if it
does not exist.
The example data generated on the fly is very simplistic: the snapshot consists of a cubic
volume with uniform randomly distributed dark matter and gas particles. Two “galaxies” are
superimposed on this by placing additional particles forming a sphere of dark matter and a
disc of stars and gas for each. The halo catalogue examples contain two objects (the two
galaxies) but their properties are mostly written in “by hand” rather than calculated from
the particle distributions. These examples are useful for demonstrating or verifying the
functionality of swiftgalaxy, but not much more.
The example data available for download (about 700 MB for the entire set) is more
realistic. The sample snapshot is taken from a run of the EAGLE_6 example simulation
included with SWIFT. The halo catalogues come from running Velociraptor, SOAP (with
HBT-Herons backend) and Caesar on the snapshot.
Usage
The following code snippets set up a SWIFTGalaxy object with
example data generated on the fly:
# a synthetically created snapshot with a minimalist implementation of a halo catalogue
from swiftgalaxy import SWIFTGalaxy
from swiftgalaxy.demo_data import generated_examples, ToyHF
SWIFTGalaxy(
generated_examples.snapshot,
ToyHF(index=0),
)
# a synthetically created snapshot with a synthetically created SOAP catalogue
from swiftgalaxy.demo_data import generated_examples
from swiftgalaxy import SWIFTGalaxy, SOAP
SWIFTGalaxy(
generated_examples.virtual_snapshot, # notice virtual_snapshot, not snapshot
SOAP(generated_examples.soap, soap_index=0),
)
# a synthetically created snapshot with a synthetically created Velociraptor catalogue
from swiftgalaxy.demo_data import generated_examples
from swiftgalaxy import SWIFTGalaxy, Velociraptor
SWIFTGalaxy(
generated_examples.snapshot,
Velociraptor(generated_examples.velociraptor, halo_index=0),
)
# a synthetically created snapshot with a synthetically created Caesar catalogue
from swiftgalaxy.demo_data import generated_examples
from swiftgalaxy import SWIFTGalaxy, Caesar
SWIFTGalaxy(
generated_examples.snapshot,
Caesar(generated_examples.caesar, group_type="galaxy", group_index=0),
# can also use group_type="halo"
)
The following code snippets set up a SWIFTGalaxy object with
downloaded example data:
# a small EAGLE snapshot with a SOAP catalogue
from swiftgalaxy.demo_data import web_examples
from swiftgalaxy import SWIFTGalaxy, SOAP
SWIFTGalaxy(
web_examples.virtual_snapshot, # notice virtual_snapshot, not snapshot
SOAP(web_examples.soap, soap_index=0),
)
# a small EAGLE snapshot with a Velociraptor catalogue
from swiftgalaxy.demo_data import web_examples
from swiftgalaxy import SWIFTGalaxy, Velociraptor
SWIFTGalaxy(
web_examples.snapshot,
Velociraptor(web_examples.velociraptor, halo_index=0),
)
# a small EAGLE snapshot with a Caesar catalogue
from swiftgalaxy.demo_data import web_examples
from swiftgalaxy import SWIFTGalaxy, Caesar
SWIFTGalaxy(
web_examples.snapshot,
Caesar(web_examples.caesar, group_type="galaxy", group_index=0),
# can also use group_type="halo"
)
The example data can be removed with generated_examples.remove() and
web_examples.remove().