erTableFromMemmap
- class PlasmaCalcs.mhd.mhd_er_tables.erTableFromMemmap(filename, quantity=None, *, epermcoords, rcoords, index_in_file, ln_quant=False, scale_quant=1, extra_dims=None, data_shape=None, data_dtype=<class 'numpy.float32'>, data_order='F', **kw_super)
Bases:
erTablelookup table from eperm and r to quantity. Table loaded from a memmap file.
Internally, all values should be in ‘raw’ units (see scale_quant kwarg for more details).Call self(r=r, eperm=eperm) to get value of quantity at eperm and r.(equivalent: self.interp(r=r, eperm=eperm). See help(self.interp) for more details.)- filename: str
- name of file. Internally stored as abspath.
- quantity: None or str
- name of quantity, if known.
- epermcoords, rcoords: 1D array
- coords for eperm (energy per unit mass) and r (mass density).Units should be ‘raw’ units.
- index_in_file: int
- n such that this table is the nth table in the memmap file.
- ln_quant: bool
- whether this quantity’s values are in ln-space. E.g. ln(P) instead of P.
- scale_quant: number, default 1.
- scale quantity by this value immediately after reading from memmap.(always corresponds to the not-ln’d quant, even if ln_quant=True).
- extra_dims: extra_dims: None, list of str, or dict
- if provided, will be used as names for additional xarray dims.if dict, will be used as names and coords for additional dims.use this when memmap arrays have more dims than just eperm and r.
- data_shape: None or tuple
- shape of a single array in the memmap file.None –> infer shape = (len(epermcoords), len(rcoords))if extra_dims provided with coords, include those in inferred shape too.
- data_dtype: data_dtype: np.dtype or something which implies np.dtype
- dtype of the data in memmap file
- data_order: ‘C’ or ‘F’
- order of the data in memmap file. ‘F’ is Fortran order.
[EFF] loading is “lazy”; wait to load until first time the table is actually accessed.Methods
return whether eperm and r coords are sorted (in non-decreasing order).
from_array(array, *, epermcoords, rcoords[, ...])create reTable from unlabeled array, and coords.
infer data_shape from self.data_shape and self.extra_dims;
interp(*, r[, eperm, e, ln, keep_er_coords])return values of quantity at eperm and r.
interp_inverse(quantity, *[, r, eperm, ln])return values of r or eperm, given quantity values and other coord's values.
labeled_xtable(xtable, *[, quantity, units])return copy of xarray.DataArray, labeled with name=quantity and attrs['units']='raw'
load table xarray from memmap file.
xtable_from_array(array, *, epermcoords, rcoords)create xtable from unlabeled array and coords.
load table array from memmap file.
Attributes
whether eperm and r coords (of self.xtable) are sorted (in non-decreasing order).
xarray.DataArray, probably 2D; must have dims for eperm and r.
- _load_table_array()
load table array from memmap file.
- can_assume_sorted()
return whether eperm and r coords are sorted (in non-decreasing order).
If True, can assume sorted for xarray interp calls, which improves efficiency signficantly.
- property coords_are_sorted
whether eperm and r coords (of self.xtable) are sorted (in non-decreasing order).
Cache result for efficiency, assumes coords are not changed later.
- classmethod from_array(array, *, epermcoords, rcoords, quantity=None, extra_dims=None, ln_quant=False, **kw_init)
create reTable from unlabeled array, and coords.
- array: array, at least 2D
- first two dims must correspond to r (dim0), and eperm (dim1)additional dims will be unlabeled, E.g. dim_2, dim_3, dim_4, …
- epermcoords, rcoords: 1D array
- coords for eperm (energy per unit mass) and r (mass density).Units should be ‘raw’ units.
- quantity: None or str
- name of quantity, if known.
- ln_quant: bool
- whether this quantity’s values are in ln-space. E.g. ln(P) instead of P.
- extra_dims: extra_dims: None, list of str, or dict
- if provided, will be used as names for additional xarray dims.if dict, will be used as names and coords for additional dims.
- init_infer_data_shape()
infer data_shape from self.data_shape and self.extra_dims;
set self.data_shape to the inferred value.
- interp(*, r, eperm=UNSET, e=UNSET, ln=False, keep_er_coords=False, **kw_xarray_interp)
return values of quantity at eperm and r.
- r: number or array
- evaluate table at these value(s) of r (mass density).
- eperm: UNSET, number, or array
- evaluate table at these value(s) of eperm (internal energy per unit mass).must provide eperm or e, but not both.
- e: UNSET, number, or array
- evaluate table at these value(s) of e (internal energy density).since table uses eperm and r, internally convert e to eperm via eperm = e / r.must provide eperm or e, but not both.
- ln: bool
- whether to report result in ln-space, e.g. ln(P) instead of P.
- keep_er_coords: bool
- whether to keep eperm and r as coords in result.
- interp_inverse(quantity, *, r=UNSET, eperm=UNSET, ln=False, **kw_interp_inverse)
return values of r or eperm, given quantity values and other coord’s values.
- quantity: number or array
- values of quantity.
- r, eperm: UNSET, number, or array
- values of r, eperm. (r=mass density; eperm=internal energy per unit mass==e/r)must provide exactly one of these.
- ln: bool
- whether the values of quantity input to this function are in ln-space.
any additional kwargs are passed to xarray_interp_inverse.
- static labeled_xtable(xtable, *, quantity=None, units='raw')
return copy of xarray.DataArray, labeled with name=quantity and attrs[‘units’]=’raw’
Does not make copy if xtable is already labeled appropriately.
- load_xtable()
load table xarray from memmap file. scale quant by self.scale_quant if not 1.
save result to self.xtable, also return it.
- property xtable
xarray.DataArray, probably 2D; must have dims for eperm and r.
if self.xtable was UNSET, self.load_xtable() first. Units are always ‘raw’ units.
- static xtable_from_array(array, *, epermcoords, rcoords, quantity=None, extra_dims=None)
create xtable from unlabeled array and coords.
no unit conversions are performed here; provide inputs in the desired unit system.- array: array, at least 2D
- first two dims must correspond to r (dim0), and eperm (dim1)additional dims will be unlabeled, E.g. dim_2, dim_3, dim_4, …
- epermcoords, rcoords: 1D array
- coords for eperm (energy per unit mass) and r (mass density).Units should be ‘raw’ units.
- quantity: None or str
- name of quantity, if known.
- extra_dims: extra_dims: None, list of str, or dict
- if provided, will be used as names for additional xarray dims.if dict, will be used as names and coords for additional dims.