Skip to main content

OpenCosmo


CI PyPI - Version Conda Version GitHub License

The OpenCosmo Python Toolkit provides utilities for reading, writing and manipulating data from cosmological simulations produced by the Cosmolgical Physics and Advanced Computing (CPAC) group at Argonne National Laboratory. It can be used to work with smaller quantities data retrieved with the CosmoExplorer, as well as the much larget datasets these queries draw from. The OpenCosmo toolkit integrates with standard tools such as AstroPy, and allows you to manipulate data in a fully-consistent cosmological context.

Installation

The OpenCosmo library is available for Python 3.11 and up on Linux and MacOS (and Windows via WSL). It can be installed easily with pip:

pip install opencosmo

There's a good chance the default version of Python on your system is less than 3.11. Whether or not this is the case, we recommend installing opencosmo into a virtual environment. If you're using Conda, you can create a new environment and install opencosmo into it automatically:

conda create -n opencosmo_env conda-forge::opencosmo
conda activate opencosmo_env

or if you already have a virtual environment to use:

conda install conda-forge::opencosmo

If you plan to use opencosmo in a Jupyter notebook, you can install the ipykernel package to make the environment available as a kernel:

pip install ipykernel # can also be installed with conda
python -m ipykernel install --user --name=opencosmo

Be sure you have run the "activate" command shown above before running the ipykernel command.

Getting Started

To get started, download the "haloproperites.hdf5" from the OpenCosmo Google Drive. This file contains properties of dark-matter halos from a small hydrodynamical simulation run with HACC. You can easily open the data with the open command:

import opencosmo as oc

dataset = oc.open("haloproperties.hdf5")
print(dataset)
OpenCosmo Dataset (length=237441)
Cosmology: FlatLambdaCDM(name=None, H0=<Quantity 67.66 km / (Mpc s)>, Om0=0.3096446816186967, Tcmb0=<Quantity 0. K>, Neff=3.04, m_nu=None, Ob0=0.04897468161869667)
First 10 rows:
block fof_halo_1D_vel_disp fof_halo_center_x ... sod_halo_sfr unique_tag
             km / s               Mpc        ... solMass / yr
int32       float32             float32      ...   float32      int64
----- -------------------- ----------------- ... ------------ ----------
    0            32.088795         1.4680439 ...       -101.0      21674
    0             41.14525        0.19616994 ...       -101.0      44144
    0             73.82962         1.5071135 ...    3.1447952      48226
    0             31.17231         0.7526525 ...       -101.0      58472
    0            23.038841         5.3246417 ...       -101.0      60550
    0            37.071426         0.5153746 ...       -101.0     537760
    0            26.203058         2.1734374 ...       -101.0     542858
    0              78.7636         2.1477687 ...          0.0     548994
    0             37.12636         6.9660196 ...       -101.0     571540
    0             58.09235          6.072006 ...    1.5439711     576648

The open function returns a Dataset object, which can retrieve the relevant data from disk with a simple method call. It also holds metadata about the simulation, such as the comsology. You can easily access the data and cosmology as Astropy objects:

dataset.get_data()
dataset.cosmology

The first will return an astropy table of the data, with all associated units already applied. The second will return the astropy cosmology object that represents the cosmology the simulation was run with.

Basic Querying

Although you can access data directly, opencosmo provides tools for querying and transforming the data in a fully cosmology-aware context. For example, suppose we wanted to plot the concentration-mass relationship for the halos in our simulation above a certain mass. One way to perform this would be as follows:

dataset = dataset
    .filter(oc.col("fof_halo_mass") > 1e13)
    .take(1000, at="random")
    .select(("fof_halo_mass", "sod_halo_cdelta"))

print(dataset)
OpenCosmo Dataset (length=1000)
Cosmology: FlatLambdaCDM(name=None, H0=<Quantity 67.66 km / (Mpc s)>, Om0=0.3096446816186967, Tcmb0=<Quantity 0. K>, Neff=3.04, m_nu=None, Ob0=0.04897468161869667)
First 10 rows:
 fof_halo_mass   sod_halo_cdelta
    solMass
    float32          float32
---------------- ---------------
11220446000000.0       4.5797048
17266723000000.0       7.4097505
51242150000000.0       1.8738283
70097712000000.0       4.2764015
51028305000000.0        2.678151
11960567000000.0       3.9594727
15276915000000.0        5.793542
16002001000000.0       2.4318497
47030307000000.0       3.7146702
15839942000000.0        3.245569

We could then plot the data, or perform further transformations. This is cool on its own, but the real power of opencosmo comes from its ability to work with different data types. Go ahead and download the "haloparticles" file from the OpenCosmo Google Drive and try the following:

import opencosmo as oc

data = oc.open("haloproperties.hdf5", "haloparticles.hdf5")

This will return a data collection that will allow you to query and transform the data as before, but will associate the halos with their particles.

data = data
    .filter(oc.col("fof_halo_mass") > 1e13)
    .take(1000, at="random")

for halo in data.halos():
    halo_properties = halo["halo_properties"]
    dm_particles = halo["dm_particles"]
    star_particles = halo["star_particles"]

In each iteration, "halo properties" will be a dictionary containing the properties of the halo (such as its total mass), while "dm_particles" and "star_particles" will be OpenCosmo datasets containing the dark matter and stars associated with the halo, respectively. Because these are just like the dataset object we saw eariler, we can further query and transform the particles as needed for our analysis. For more details on how to use the library, check out the full documentation.

Testing

To run tests, first download the test data from Google Drive. Set environment variable OPENCOSMO_DATA_PATH to the path where the data is stored. Then run the tests with pytest:

export OPENCOSMO_DATA_PATH=/path/to/data
# From the repository root
pytest --ignore test/parallel 

Although opencosmo does support multi-core processing via MPI, the default installation does not include the necessary dependencies to work in an MPI environment. If you need these capabilities, check out the guide in our documentation.

Contributing

We welcome bug reports and feature requests from the community. If you would like to contribute to the project, please check out the contributing guide for more information.


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

opencosmo-1.3.6-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (520.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

opencosmo-1.3.6-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (514.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

opencosmo-1.3.6-cp314-cp314-macosx_11_0_arm64.whl (478.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

opencosmo-1.3.6-cp314-cp314-macosx_10_12_x86_64.whl (483.5 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

opencosmo-1.3.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (521.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

opencosmo-1.3.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (514.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

opencosmo-1.3.6-cp313-cp313-macosx_11_0_arm64.whl (478.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

opencosmo-1.3.6-cp313-cp313-macosx_10_12_x86_64.whl (483.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

opencosmo-1.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (522.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

opencosmo-1.3.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (514.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

opencosmo-1.3.6-cp312-cp312-macosx_11_0_arm64.whl (478.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

opencosmo-1.3.6-cp312-cp312-macosx_10_12_x86_64.whl (483.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

Details for the file opencosmo-1.3.6-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 39f416944c1e417873ee2bd64034c6c9ba795e170170f42831abc0d7d43730f6
MD5 5c749399cde5ffaeaa347fa8845c8a1d
BLAKE2b-256 be6e929cd97e6be147eb382ee1e321805d4d5ca22aacd439b08d5e8c60182813

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a4beb4d7faada16dec99b4ca3933249f594e84c662769c44ab89c8290e6f23c0
MD5 b55a9d874af04e78706a61352e0a5487
BLAKE2b-256 15839e2a65a26d5fc928af0894de9a3fbddaf7ebad6f6b0cf19afd0e7fa8b070

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fcf3fea1623e6ebefc4f572ad9a4bd793c4cdc3cf77ae02f328382cb723920ff
MD5 e5daf8507ef96b4cf44a53676841e4b3
BLAKE2b-256 d0a7c941e5954640fc3f89e1a65894b8387b1df7d0a22c88eceb72522970f85a

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8855f1193d239ea35b2022de0bad10838deb384b019b55a30c2f785194d16ad4
MD5 a79b623ef0375b8f74556ca748980a25
BLAKE2b-256 71ffb1e8cb9a704f32cfb678e0c1f3516ab09670a5978af486dc171569269f23

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6a113b6bc35d66b03a53e5b876c5ee13c431dc0f73f459d524754c7a6c01361
MD5 8074a0c1580ef90cd1fc80704fe8b4a1
BLAKE2b-256 3012cd6608c5e27532f614ba967a7c572d81fe1a1931975ca3de3d0b98eaddb2

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 894bd928dafd76b69289644f946e02175b2db702f646ce3b6365414a39f042af
MD5 f2152ac2879f466862382938dfcd1240
BLAKE2b-256 8efdd26dba405a29e656ab51c853a5777956862d1035c466349f7225ee981165

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95ba5e6ec42781cbcb151d961af2436285bed425e6f11201331f56a8ad4804fa
MD5 1ac06c4f7e68ccb2564b097a5dbf51b5
BLAKE2b-256 3f50a701da844035af262f69f07099bc7ee6342cd99b516f23685e86c112fa7a

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ab6ac0e3a8391401e1e117a5e297340dba4effda1a9b81536a6db9d2568a8394
MD5 06ac4cc096dcda427b3c33d7a5fe6815
BLAKE2b-256 dd10ca95d895b954f4ce9021351d30c4eac1d58aefed3a5aa4db7f97bc6dcc08

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 38bf0ea9c34d30ac5ff9e285f9a5be1449e95d0c4f1acf8ea68fdaa8976fb6c9
MD5 0a34420cbaa5d51b9b9441ccd63e6ed9
BLAKE2b-256 ae7da03c03a5966f9ca083b95d2053578b967e0ac1679455675c5ca919706b34

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f82865471ee2a4d430818f13f3f6884031e2e4afe93973c2c5beed216ae56f67
MD5 4639bf86b624bf3a680c54005bf87255
BLAKE2b-256 a49c2abba765479f223460f7f860b18af51df98fb398964e817dd0f4d66d211a

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b66f40d297ad5b9743db7e4442a0c14f7e88a128a8d3614107eaa17be840570e
MD5 52da2b4c01a885a5b2a64bacbf24aa14
BLAKE2b-256 cd23b6dc0153adf4eb0061ce66e644fd385dfb5a1541c48abbacb32fdb5fafeb

See more details on using hashes here.

File details

Details for the file opencosmo-1.3.6-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4b679d9c2dd5696e88c87ee9b566a54d08aeada0a788962e812905d626fe39fe
MD5 db43310dfcff101c4cea5123c2755531
BLAKE2b-256 cc0b4dae8bbeaa81ab3ca548f2cc7a61e3445792d611f812a8ab860cbd008a3c

See more details on using hashes here.

Release history Release notifications | RSS feed

1.3.11

12 files

1.3.10

12 files

1.3.9

12 files

1.3.8

12 files

1.3.7

12 files

This release

1.3.6 This release

12 files

1.3.5

12 files

1.3.4

12 files

1.3.3

12 files

1.3.2

12 files

1.3.1

12 files

1.2.7

2 files

1.2.6

2 files

1.2.5

2 files

1.2.4

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.9.6

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.1

2 files

0.8.0

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page