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

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

opencosmo-1.3.10-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.10-cp314-cp314-macosx_11_0_arm64.whl (480.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

opencosmo-1.3.10-cp314-cp314-macosx_10_12_x86_64.whl (485.5 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

opencosmo-1.3.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (522.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

opencosmo-1.3.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (515.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

opencosmo-1.3.10-cp313-cp313-macosx_11_0_arm64.whl (480.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

opencosmo-1.3.10-cp313-cp313-macosx_10_12_x86_64.whl (485.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

opencosmo-1.3.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (522.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

opencosmo-1.3.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (516.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

opencosmo-1.3.10-cp312-cp312-macosx_11_0_arm64.whl (480.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

opencosmo-1.3.10-cp312-cp312-macosx_10_12_x86_64.whl (485.4 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b36ebf5796df0cfddcde9e2f39e05d0c9ceb24f5cee29bfb228284a142a573b8
MD5 6d068773fe96b8822fd8e2acc5ddf83d
BLAKE2b-256 4d615c058594327053e3148581a912e77dc7e25f228b83e0dd55f9104f1f49ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e188fdab3356c87fc2585f6c3af0ad43d5a112f2aa7287496c126e1b33e561a4
MD5 bd69c193219bb32eb9fb6687654f9805
BLAKE2b-256 8238d52d25b885626f94b1889dd87473fc2571450ad570ff537addcdbcafc57d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 70cd76b93e7a3f65ba908ae7fbb36c6b72e28de72a73443cec7c0a7c0472ca77
MD5 3a03cc3010fdeebeaa9f56638d7ab01d
BLAKE2b-256 8f8bb498d1d473bf7374ce24a3b1af292605a33da952ecbe2088ff2e0ef948bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 54dd65b027ba9ffc597c6e35c6e6d0ed64d6c01cd015d7556804713bd98ca39c
MD5 0637e2d5bde2805545cec77fe60716f9
BLAKE2b-256 09706873f3fcb9c06f3209d65d28243e1ce7a68c0e8e0e652371cf165f34e60b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c57ed7528bdf9b3a62198e43476e6f2c02e49ce4580c2d4ba839e317f244c2b
MD5 26672272d1af7352300c2d0917c03310
BLAKE2b-256 2d547de8e2af107d61d0f3c008a0e1008a52556b864b6c1fceda21a1e8726018

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 24259e96fe41fd39bcff880774d1a90c602935b2750707f3723ac7ae7474e06e
MD5 40304fa2afb1ddaf1a99924388f5c07f
BLAKE2b-256 9258c0edfdd534f49e09fcd155599235b408fe31758ac2f6fa7a9207e3678ebe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 331255b39f61b0a6d0dcc118be641550f0322350a5fc1ddd39d8cd39e966be9b
MD5 3dd0768ad3606f1efc6756deae21e8ac
BLAKE2b-256 c2f9318ccfac409997fc0862ff70402d2808b12018deae90127e434f1529c6a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2349b88ec64a4d1dcb765ec497c207d0944f080c0b13b1c3649ef1640d485ea4
MD5 91c80336130ce83a042133d2d2f37f0f
BLAKE2b-256 3b723a841f004bd62ac453de2c037ddd84ba0b8bf01be70d3e04901f808c0190

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6744aaa5fd3f24d3f0625e432cfdf5564557134383ad24c4f0e7d9ae4e9a8b7a
MD5 cad580d1db48a3861f5110386aee83f5
BLAKE2b-256 3dc444eafa68f86c15d971b7356a0ab086e73e1ae196eced68f038b81791da07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bb1f92c76edfd31b7f9de56951c97555df07a2bb47db1000297390133f96bf50
MD5 705ae60715f733750d2c898bc6454eca
BLAKE2b-256 6c5e7f7b602028351c87f9805f9162abbf75c388b938bfd7bde27cb8b458302c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 35db20c94b71f1de23d34262e51a673f4d4bec4062d15338b7ccff22a6e7254d
MD5 5d816da5e619bc0517885e74a06b5774
BLAKE2b-256 3e34260280aaccfd209229a5b020c8b830ff32d977e28989b7db830f280e27cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for opencosmo-1.3.10-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6ca4ccc0366d35437921a5ea60f48266b5463151f602cd72d3dd7bfc73892010
MD5 cea4c8539fc9ce2d95868040e9008c5f
BLAKE2b-256 d0a86d6371be0f6de92d5a35b2b9d4abca3fa97bb12ee87c81df1e950da82fdf

See more details on using hashes here.

Release history Release notifications | RSS feed

1.3.11

12 files

This release

1.3.10 This release

12 files

1.3.9

12 files

1.3.8

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