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

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

opencosmo-1.3.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (515.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

opencosmo-1.3.7-cp314-cp314-macosx_11_0_arm64.whl (479.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

opencosmo-1.3.7-cp314-cp314-macosx_10_12_x86_64.whl (485.4 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

opencosmo-1.3.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (521.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

opencosmo-1.3.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (514.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

opencosmo-1.3.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (522.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

opencosmo-1.3.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (515.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

opencosmo-1.3.7-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.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aea8bd431f5673d6284d46d56cbf8e04dd7fb1e887854f4809e71e5400f4373e
MD5 e63d7b06da9322c9943e27b1ff94e415
BLAKE2b-256 1955b40bab19b4e7f47b7f5bd0d33c0b0d2123fe4a059c59926ebded456b2f35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b831663acdde3c4f9409e394278705661c27c1b0747bc2c183926feeb842a045
MD5 a08ad186a49224f147e0a0ec08a685d5
BLAKE2b-256 df389b0c3b1e384b843c6e8f96decb750b368645a48be31e9c6bd23802e4928d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 12988bf42b4cc68704fb5ef07b6944f5770828d89a4c0e031c7ee201b220a71c
MD5 2df340af3821fd3931086047cac5ded2
BLAKE2b-256 690716d08bc604d163c1b260cd3dc559e901f3c16db176f22cf6747db23f9cbd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4979ba8b015122b31e6111aea56313fb06e3df1abfc39c1539b26a4bd14e46fc
MD5 00f3a49bc8a83671a9f80590666c7335
BLAKE2b-256 44ad5af5b9cfc66138285c9d37ea6d35ef72f491bcb0f41e2a8e06a3cc07dae4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7fc7ae14faa0f693b6c0089193e7a0bdc5feb805f7f24cdab9d8b03302d5421e
MD5 92d1aced9c3bb28937bf0d8fa52ee367
BLAKE2b-256 5488779efaf7b7e8e3a0587f272e58ef674d676d59453e39cf04ecea4a14735c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7c0925ac6b6f99c61e32c7a3bc00d4ac92050ec2871f0b935eedd4f1483f4093
MD5 5fd1a120ddf57c89ebcec1372b64cdd9
BLAKE2b-256 69b598e81e5d0a3577eb36244f00eb87525f5cd64b70c4229bc0515c459b474e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d7f757e044054748197bc81b2cab7cbe16c79a7f9e56e25b455fdee1e23ba868
MD5 e24d9331a351e014221552abbdbca47b
BLAKE2b-256 ef781327c73a96b9d9856968390e6865b7edb52e3fcd4fa9fa9a6d321cf63682

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 631f91f71c08b5d3ed1ade4aa7c91c44bd25185053108d03f4f396e2845991db
MD5 6e6d5708bbd4194d1c0b321bb9ae8279
BLAKE2b-256 ffc735fd9668ace15c32990a2a9c010cce4ebdf649086b9026e313dd05c42cf6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e214c63fa00bdfc5cfe71d54425375ef1bea380d2e48765ee5347e0cd46dd545
MD5 d731e1952833be0ff15a1d9f0a462fdc
BLAKE2b-256 930bc6e56101708df291eb8d27a58aeef1b18482e68921551c8ad12d6d9c1070

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f513840d4f29e15fdfd8b1df80e73e751f936e5f6472d3ffa5f9eb12a77f6b4c
MD5 5cb945cf5bc649aaf6f6944b87c57763
BLAKE2b-256 6f69244adf91ac8b06409eb9e42b4740f8dce0d647b81aa12b3ceddcf9799fe3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b92cf8928299187353778527a7e42554d9cb0e4cb13ab86c2f286ba8daf5a3ac
MD5 423a2e069ac21f10631883acdb19c576
BLAKE2b-256 3296369a62ba4cac51931f9f021e2f25f518a034560f9864fb7de2c8a6775b2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.7-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 13adc803caefb9d2b9a48f315303be6d57a408a91bc6284665555b5a17f54047
MD5 42e29dea11ccb3599fea1db52fd1e7a3
BLAKE2b-256 27033259332dc31ce597b4223fcb95da331b3b6e0f40f7800117f7a1dc92569b

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

This release

1.3.7 This release

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