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.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (521.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

opencosmo-1.3.8-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.8-cp314-cp314-macosx_11_0_arm64.whl (479.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

opencosmo-1.3.8-cp314-cp314-macosx_10_12_x86_64.whl (485.3 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

opencosmo-1.3.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (521.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

opencosmo-1.3.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (514.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

opencosmo-1.3.8-cp313-cp313-macosx_11_0_arm64.whl (480.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

opencosmo-1.3.8-cp313-cp313-macosx_10_12_x86_64.whl (485.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

opencosmo-1.3.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (521.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

opencosmo-1.3.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (514.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

opencosmo-1.3.8-cp312-cp312-macosx_11_0_arm64.whl (480.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

opencosmo-1.3.8-cp312-cp312-macosx_10_12_x86_64.whl (485.6 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56ab644dcffbbec48f2f1a6d7f8d40a2a39def6f67250c6deece23332b199d65
MD5 63f9b290fd67e69f920b5732abf6221f
BLAKE2b-256 1b6206184f8933492f38b61aaac4a76d92ca948db7afc94e72faccc4b579bbed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fe67dbeb3b7d8acb494d8acab64130d672acecb639f75af3323e0b21d3db7a38
MD5 b1c52405b34e300851e9b1771c2fedc3
BLAKE2b-256 e48b32b04f587ff8e7de675e0efc7d79b2add50bfb52de9a4a6194b0edbef7a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a796b4b19ea690155d5b2ba2866345ab7f403606166da9b66124130352d8e415
MD5 680504f072eb31a3e4517f939a69352f
BLAKE2b-256 4d20d7baba42470055d39bb51d1008cad6497f414269840cca42e6b7093c623b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5347a4653e74c6ae112630335e54d0d14ceec494f8b622f805830cd7d19d3723
MD5 09345868bf9062c68cf6e8c084a96ec2
BLAKE2b-256 dadbe07c7871020fb5e8a8d1f4973a6c6ec55f4ff8520ed1f3ba5d6058d32598

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 32b08b51d95c20133519fbeac9299689ff61d2d6f23e91dc6827767f2303a171
MD5 05021d76b45210a658b33a8e7b5bf6fa
BLAKE2b-256 22bb0efc2cd8ece5d97ab496e79fb0b407e576fec996e4ac4feae72481cc5d9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4ae9d4318bdca675d1cc13a166d75d6462ea6f9e8db000dd0693c79d29b99a5d
MD5 2ae35f374cb2fb2fa0f31cbe606e0bc8
BLAKE2b-256 af326031763f5ff55be7ac0cd5317dac17b1c3a017caffca2d717e07653cae93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9323a63977f9a561faf63a0937e21436eeb5dd766179ac0abeee1035704f1b8d
MD5 a87f9354626ca4b12b9878ae7da54273
BLAKE2b-256 90a8acfa99fd1e2b1a03f253e00bb929c64860e7354ffecbf44dbf5fcef0c2e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f94cf82acdd4d3297523f7581567c7e305ca392a8865e836484047fec9527d1f
MD5 91d93ef4c8ca9aaa86c64d2398944b8b
BLAKE2b-256 ee9dd844df43aab9f993063820f4c3deafce042a1b177f64a2099e4c7e8e523b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f3c64cf473138e3b4d72b9a21a132bfabac432f8bbec1f2362c733d42505082
MD5 d16480b229cde24538c0cc3c0374f0dd
BLAKE2b-256 fdcba61338216bbc01ef24471bf90e78d80f1ae5f356083576035a80ae768c52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7027f9b5844fbd2b9082d98f3c3015b9b6a94a7925b8d358dcbabdfeaad49936
MD5 64441d49fd984d566c010deecfb5cfcb
BLAKE2b-256 64c44cdc3a7f78713f4d6a11e9bd150741e8dcffdfc3f5d087bcfada377b8ded

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e89ebf57d2458a5ca66e0691720cb95dcfe240023a3554429d3d8f5bc26c212c
MD5 93a40d786225d1a92785f9b3c890e08a
BLAKE2b-256 87e84d33f84adcd914a03b5647a57e40c8d65ed8395e665dfbc6b5722d123f2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.8-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8c59aa8391da05f865ab5185ed3383c0cc3129516e51f1dd6e6fcc17963349fd
MD5 135ada9310be273149fd3d8e274a9a9e
BLAKE2b-256 63bcf4bcc0a7477cb86fb02c8864e0d6e71d6765074b27585ae3b1124b05e452

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

This release

1.3.8 This release

12 files

1.3.7

12 files

1.3.6

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