Cosmology I/O & Convert#
Introduction#
The astropy.cosmology.io
package provides a unified interface for reading, writing,
and converting Cosmology
objects. Most of the features of this package are accessible
through the Cosmology
class, which provides the methods read()
,
write()
, to_format()
, and from_format()
for reading,
writing, and converting Cosmology
objects, respectively.
Getting Started: Reading and Writing#
The Cosmology
class includes two methods, read()
and write()
, that
make it possible to read from and write to files.
The registered read
/ write
formats include “ascii.ecsv” and “ascii.html”, like
for Table. Also, custom read
/ write
formats may be registered into the Astropy
Cosmology I/O framework. For more information on the built-in formats, see
Built-in Cosmology To/From Formats, or Custom Cosmology I/O formats for information on
registering custom formats.
Writing a cosmology instance requires only the file location and optionally, or if the file format cannot be inferred, a keyword argument “format”. Additional positional arguments and keyword arguments are passed to the relevant writer methods.
>>> from astropy.cosmology import Planck18
>>> Planck18.write("example_cosmology.ecsv", format="ascii.ecsv")
Reading back the cosmology is done from Cosmology
.
>>> from astropy.cosmology import Cosmology
>>> cosmo = Cosmology.read("example_cosmology.ecsv", format="ascii.ecsv")
>>> cosmo == Planck18
True
More specific cosmology classes can be used, providing default values for missing information (see Cosmology I/O Details). However using the base class is safest as it provides no default information and therefore requires the file to have all necessary information to describe a cosmology.
To see a list of the available read/write file formats:
>>> from astropy.cosmology import Cosmology
>>> Cosmology.read.list_formats()
Format Read Write Auto-identify
---------- ---- ----- -------------
ascii.ecsv Yes Yes Yes
ascii.html Yes Yes Yes
>>> Cosmology.write.list_formats()
Format Read Write Auto-identify
----------- ---- ----- -------------
ascii.ecsv Yes Yes Yes
ascii.html Yes Yes Yes
ascii.latex No Yes Yes
This list will include both built-in and registered 3rd-party formats.
Getting Started: Converting Formats#
Reading and writing Cosmology
objects go through intermediate representations, often a
dict or QTable
instance. These intermediate representations are accessible through the
methods to_format()
/ from_format()
.
to_format()
/ from_format()
parse a Cosmology to/from
another python object. This can be useful for e.g., iterating through an MCMC
of cosmological parameters or printing out a cosmological model to a journal
format, like latex or HTML. When 3rd party cosmology packages register with
Astropy’s Cosmology I/O, to/from_format
can be used to convert cosmology
instances between packages!
Another pre-registered format is “table”, for converting a Cosmology
to and
from a QTable
.
>>> from astropy.cosmology import Planck18
>>> ct = Planck18.to_format("astropy.table")
>>> ct
<QTable length=1>
name H0 Om0 Tcmb0 Neff m_nu Ob0
km / (Mpc s) K eV
str8 float64 float64 float64 float64 float64[3] float64
-------- ------------ ------- ------- ------- ----------- -------
Planck18 67.66 0.30966 2.7255 3.046 0.0 .. 0.06 0.04897
Now this QTable
can be used to load a new cosmological instance identical to
the Planck 2018 cosmology from which it was created.
>>> cosmo = Cosmology.from_format(ct, format="astropy.table")
>>> print(cosmo)
FlatLambdaCDM(name="Planck18", H0=67.66 km / (Mpc s), Om0=0.30966,
Tcmb0=2.7255 K, Neff=3.046, m_nu=[0. 0. 0.06] eV, Ob0=0.04897)
Perhaps most usefully, QTable
itself has read/write
methods with numerous options,
e.g. FITS, that now work with Cosmology
.
To see the a list of the available conversion formats:
>>> from astropy.cosmology import Cosmology
>>> Cosmology.to_format.list_formats()
Format Read Write Auto-identify
----------------- ---- ----- -------------
astropy.cosmology Yes Yes Yes
astropy.model Yes Yes Yes
astropy.row Yes Yes Yes
astropy.table Yes Yes Yes
mapping Yes Yes Yes
yaml Yes Yes No
This list will include both built-in and registered 3rd-party formats.
Using Cosmology I/O#
More details are provided in the following pages:
Reference/API#
astropy.cosmology.connect Module#
Classes#
|
Read and parse data to a |
|
Write this Cosmology object out in the specified format. |
|
Transform object to a |
|
Transform this Cosmology to another format. |