yt.frontends.open_pmd.fields module

class yt.frontends.open_pmd.fields.OpenPMDFieldInfo(ds, field_list)[source]

Bases: yt.fields.field_info_container.FieldInfoContainer

Specifies which fields from the dataset yt should know about.

self.known_other_fields and self.known_particle_fields must be populated. Entries for both of these lists must be tuples of the form (“name”, (“units”, [“fields”, “to”, “alias”], “display_name”)) These fields will be represented and handled in yt in the way you define them here. The fields defined in both self.known_other_fields and self.known_particle_fields will only be added to a dataset (with units, aliases, etc), if they match any entry in the OpenPMDHierarchy’s self.field_list.

Notes

Contrary to many other frontends, we dynamically obtain the known fields from the simulation output. The openPMD markup is extremely flexible - names, dimensions and the number of individual datasets can (and very likely will) vary.

openPMD states that record names and their components are only allowed to contain * characters a-Z, * the numbers 0-9 * and the underscore _ * (equivalently, the regex w). Since yt widely uses the underscore in field names, openPMD’s underscores (_) are replaced by hyphen (-).

Derived fields will automatically be set up, if names and units of your known on-disk (or manually derived) fields match the ones in [1].

References

add_deprecated_field(name, function, sampling_type, since, removal, ret_name=None, **kwargs)

Add a new field which is deprecated, along with supplemental metadata, to the list of available fields. This respects a number of arguments, all of which are passed on to the constructor for DerivedField.

Parameters
  • name (str) – is the name of the field.

  • function (callable) – A function handle that defines the field. Should accept arguments (field, data)

  • sampling_type (str) – “cell” or “particle” or “local”

  • since (str) – The version string marking when this field was deprecated.

  • removal (str) – The version string marking when this field will be removed.

  • ret_name (str) – The name of the field which will actually be returned, used only by alias().

  • units (str) – A plain text string encoding the unit. Powers must be in python syntax (** instead of ^). If set to “auto” the units will be inferred from the return value of the field function.

  • take_log (bool) – Describes whether the field should be logged

  • validators (list) – A list of FieldValidator objects

  • vector_field (bool) – Describes the dimensionality of the field. Currently unused.

  • display_name (str) – A name used in the plots

add_field(name, function, sampling_type, **kwargs)

Add a new field, along with supplemental metadata, to the list of available fields. This respects a number of arguments, all of which are passed on to the constructor for DerivedField.

Parameters
  • name (str) – is the name of the field.

  • function (callable) – A function handle that defines the field. Should accept arguments (field, data)

  • sampling_type (str) – “cell” or “particle” or “local”

  • units (str) – A plain text string encoding the unit. Powers must be in python syntax (** instead of ^). If set to “auto” the units will be inferred from the return value of the field function.

  • take_log (bool) – Describes whether the field should be logged

  • validators (list) – A list of FieldValidator objects

  • vector_field (bool) – Describes the dimensionality of the field. Currently unused.

  • display_name (str) – A name used in the plots

add_output_field(name, sampling_type, **kwargs)
alias(alias_name, original_name, units=None, deprecate: Optional[Tuple[str]] = None)

Alias one field to another field.

Parameters
  • alias_name (Tuple[str]) – The new field name.

  • original_name (Tuple[str]) – The field to be aliased.

  • units (str) – A plain text string encoding the unit. Powers must be in python syntax (** instead of ^). If set to “auto” the units will be inferred from the return value of the field function.

  • deprecate (Tuple[str], optional) – If this is set, then the tuple contains two string version numbers: the first marking the version when the field was deprecated, and the second marking when the field will be removed.

check_derived_fields(fields_to_check=None)
clear() → None. Remove all items from D.
copy() → a shallow copy of D
classmethod create_with_fallback(fallback, name='')
extra_union_fields = ()
fallback = None
find_dependencies(loaded)
fromkeys(value=None, /)

Create a new dictionary with keys from iterable and values set to value.

get(key, default=None, /)

Return the value for key if key is in the dictionary, else default.

has_key(key)
items() → a set-like object providing a view on D’s items
keys() → a set-like object providing a view on D’s keys
known_other_fields = ()
known_particle_fields = ()
load_all_plugins(ftype='gas')
load_plugin(plugin_name, ftype='gas', skip_check=False)
pop(k[, d]) → v, remove specified key and return the corresponding value.

If key is not found, d is returned if given, otherwise KeyError is raised

popitem()

Remove and return a (key, value) pair as a 2-tuple.

Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.

setdefault(key, default=None, /)

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

setup_extra_union_fields(ptype='all')
setup_fluid_aliases(ftype='gas')
setup_fluid_fields()[source]

Defines which derived mesh fields to create.

If a field can not be calculated, it will simply be skipped.

setup_fluid_index_fields()
setup_particle_fields(ptype)[source]

Defines which derived particle fields to create.

This will be called for every entry in OpenPMDDataset`’s self.particle_types. If a field can not be calculated, it will simply be skipped.

setup_smoothed_fields(ptype, num_neighbors=64, ftype='gas')
update([E, ]**F) → None. Update D from dict/iterable E and F.

If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values() → an object providing a view on D’s values
yt.frontends.open_pmd.fields.setup_absolute_positions(self, ptype)[source]
yt.frontends.open_pmd.fields.setup_kinetic_energy(self, ptype)[source]
yt.frontends.open_pmd.fields.setup_poynting_vector(self)[source]
yt.frontends.open_pmd.fields.setup_velocity(self, ptype)[source]