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.12 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.12. 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. Extract it into test_data/ at the repository root, or set OPENCOSMO_DATA_PATH to an extracted data directory elsewhere. See test/TEST_DATA.md for the expected layout. 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.

Citation

If you use OpenCosmo in your work, please cite the release paper in any publications:

@article{wells2026_opencosmo,
      title={OpenCosmo: Community Portal and Analysis Framework for Flagship Cosmological Simulations}, 
      author={Patrick R. Wells and Michael Buelhmann and Patricia Larsen and William M. Hicks and Manpreet Dhillon and Idunnuoluwa A. Adeniji and Katrin Heitmann and Salman Habib and Benoit Côté and Thomas Uram and Gideon McFarland and Andrew Hearin and Ezar Shinabro and Michael E. Papka},
      year={2026},
      eprint={2607.16059},
      archivePrefix={arXiv},
      primaryClass={astro-ph.IM},
      url={https://arxiv.org/abs/2607.16059}, 
}

Metadata

Release files for opencosmo 1.4.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for opencosmo 1.4.7
File Actions
opencosmo-1.4.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details for opencosmo-1.4.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
opencosmo-1.4.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details for opencosmo-1.4.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
opencosmo-1.4.7-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for opencosmo-1.4.7-cp314-cp314-macosx_11_0_arm64.whl
opencosmo-1.4.7-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details for opencosmo-1.4.7-cp314-cp314-macosx_10_12_x86_64.whl
opencosmo-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for opencosmo-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
opencosmo-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details for opencosmo-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
opencosmo-1.4.7-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for opencosmo-1.4.7-cp313-cp313-macosx_11_0_arm64.whl
opencosmo-1.4.7-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details for opencosmo-1.4.7-cp313-cp313-macosx_10_12_x86_64.whl
opencosmo-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for opencosmo-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
opencosmo-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details for opencosmo-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
opencosmo-1.4.7-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for opencosmo-1.4.7-cp312-cp312-macosx_11_0_arm64.whl
opencosmo-1.4.7-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details for opencosmo-1.4.7-cp312-cp312-macosx_10_12_x86_64.whl

Total release size: 7.2 MB

Release files / opencosmo-1.4.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL opencosmo-1.4.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 621.7 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ff8f52b5b3236be102f95f72f966b8ab0e4850c6884995f3959c8504d9a291e0
BLAKE2b-256 checksum
How to use checksums
b33a579a8bc12d1349f18f5051154013d86b3cc147b22f266aa9429d2a893b5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL opencosmo-1.4.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 614.7 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
2f488752120526def982537a96ebddaa48baf4a89e8cfd81da4cbc7615646ba8
BLAKE2b-256 checksum
How to use checksums
a341edae503d02b6d6815c031a02f68ae1328900f6dbb71343860b0031386431
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp314-cp314-macosx_11_0_arm64.whl

Download URL opencosmo-1.4.7-cp314-cp314-macosx_11_0_arm64.whl
Size 579.3 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4971bc09ffaa44d71b3cf4cfcf329277b2b51b6939bfbdae2505e9ab5fc1fd72
BLAKE2b-256 checksum
How to use checksums
52c50b6b5db2a82e059e93fb2774e0e95d3a4f71ee023f8b99169bf28e8caf25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp314-cp314-macosx_10_12_x86_64.whl

Download URL opencosmo-1.4.7-cp314-cp314-macosx_10_12_x86_64.whl
Size 585.1 kB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
cf2507115aca571c523f816ae80b0687ca179cfae182cfbe324ee322c5f86c9a
BLAKE2b-256 checksum
How to use checksums
0f181f99be7bbf4a57b6cae358c5e6ce95803e6ff1d6f4d447742334c34316e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL opencosmo-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 620.8 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
bdb7170f8966e0a55c7748dd29ea4a13e412853c459d93ecdb1699e0e48ed8a0
BLAKE2b-256 checksum
How to use checksums
f472c6269605f2d75ca4e553ab23eb5996f9668dfb5c234789aaed516060a022
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL opencosmo-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 613.8 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
001572a379ee624190651e41bd0c1524af00079554e24754abe8cce6a53198aa
BLAKE2b-256 checksum
How to use checksums
93989afe4af907b246cd03a0706dff233bbe04669c97b294ef436f8a044cee45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp313-cp313-macosx_11_0_arm64.whl

Download URL opencosmo-1.4.7-cp313-cp313-macosx_11_0_arm64.whl
Size 578.9 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6664d684d001c9709894fd4c3d779f08201c27d39dbc2db82a6df4c8fbbd5cc0
BLAKE2b-256 checksum
How to use checksums
97950688c9e917f30d5cfbf9b85d7c86feb9fbd67636be54df9444a99f7eb958
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp313-cp313-macosx_10_12_x86_64.whl

Download URL opencosmo-1.4.7-cp313-cp313-macosx_10_12_x86_64.whl
Size 584.3 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
75978fc6f3172329bd3874aa835c796f244b44dbf39455001b778012bd3f460e
BLAKE2b-256 checksum
How to use checksums
fc003279b002bf540a77ea97cbaea9b61b4a16dd770ea73f9c58cba17a226dec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL opencosmo-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 620.8 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ea34b891b568a2cf35c81db0626fbd9c3f50e08bd8ed98db0ff047fb847ec841
BLAKE2b-256 checksum
How to use checksums
2f5f1868e31a473d2f658fc20af7aa15ab8f6828fc2fbb0702d34e3eb7855d14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL opencosmo-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 613.2 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
dc40c77c9ce65968306eae1461d53493c7dd89949602ea1eea475d3f31d8c5f4
BLAKE2b-256 checksum
How to use checksums
30507214d33b4ee7b59cd81f00b9cdcabc47dfb503105d726076ac3ee5116f20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp312-cp312-macosx_11_0_arm64.whl

Download URL opencosmo-1.4.7-cp312-cp312-macosx_11_0_arm64.whl
Size 578.4 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
74444fd1d6af5778de1723ad47276fe80cbfe4c1b2e6e043a7808fb6fd81e717
BLAKE2b-256 checksum
How to use checksums
8cedaf348bf67d67e7ebdb32b6c12bf9f46585af931beb197d3fec3b29e69c35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / opencosmo-1.4.7-cp312-cp312-macosx_10_12_x86_64.whl

Download URL opencosmo-1.4.7-cp312-cp312-macosx_10_12_x86_64.whl
Size 584.2 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e16c63c5e263ac032feec88daac743da608519c7835f4795bea5bcb3724d0e00
BLAKE2b-256 checksum
How to use checksums
193510fbe2f3094257c88fc04e739f3270a674cba76c726b7ab2f6fbbaa89d8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for opencosmo 1.4.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.4.7 This release

12 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page