[yt-dev] yt Particle Plots & openPMD Frontend

Fabian Koller f.koller at hzdr.de
Thu May 26 10:59:24 PDT 2016


Hi there,

I am currently trying to extend the WIP frontend for openPMD.

Let me be more specific about the magnetic unit problem:
The already existing frontend was created on top of yt 3.2.1 and
appeared to work fine.
Recently, the code was migrated onto the yt_analysis/yt branch, which I
understand to be your dev version.
What appears to be the problem is this line of code in our
openPMDDataset class:
self.magnetic_unit = self.quan(1.0, "T")

This worked with out noticeable problems with the old codebase.
After the migration, loading a oPMD file throws YTUnitsNotReducible:

In [1]: import yt
In [2]: f =
yt.load('/data/home/koller47/openpmd/example-2d/hdf5/data00000100.h5')
Warning: Attribute author (recommended) does NOT exist in `/`!
Found 1 iteration(s)
Iteration 100 : found 4 meshes
Iteration 100 : found 2 particle species
Warning: Key particlePatches (recommended) does NOT exist in
`/data/100/particles/Hydrogen1+`!
Warning: Key particlePatches (recommended) does NOT exist in
`/data/100/particles/electrons`!
yt : [INFO     ] 2016-05-26 19:22:56,315 openPMD: found 5 iterations in
directory
yt : [WARNING  ] 2016-05-26 19:22:56,316 openPMD: only choose to load
the first iteration (100)
---------------------------------------------------------------------------
YTUnitsNotReducible                       Traceback (most recent call last)
<ipython-input-7-b3e410e545a5> in <module>()
----> 1 f =
yt.load('/data/home/koller47/openpmd/example-2d/hdf5/data00000100.h5')

/data/home/koller47/openpmd/yt/convenience.pyc in load(*args, **kwargs)
     84     candidates = find_lowest_subclasses(candidates)
     85     if len(candidates) == 1:
---> 86         return candidates[0](*args, **kwargs)
     87     if len(candidates) == 0:
     88         if ytcfg.get("yt", "enzo_db") != '' \

/data/home/koller47/openpmd/yt/frontends/openPMD/data_structures.pyc in
__init__(self, filename, dataset_type, storage_filename, units_override)
    294         self._setBasePath(self._handle, self._filepath)
    295         Dataset.__init__(self, filename, dataset_type,
--> 296                          units_override=units_override)
    297         self.storage_filename = storage_filename
    298         self.fluid_types += ('openPMD',)

/data/home/koller47/openpmd/yt/data_objects/static_output.pyc in
__init__(self, filename, dataset_type, file_style, units_override,
unit_system)
    235         self._create_unit_registry()
    236         self._parse_parameter_file()
--> 237         self.set_units()
    238         self._setup_coordinate_handler()
    239

/data/home/koller47/openpmd/yt/data_objects/static_output.pyc in
set_units(self)
    806             self.unit_registry.modify('a',
1/(1+self.current_redshift))
    807
--> 808         self.set_code_units()
    809
    810         if getattr(self, "cosmological_simulation", False):

/data/home/koller47/openpmd/yt/data_objects/static_output.pyc in
set_code_units(self)
    843             # If we do not have this set, but some fields come in in
    844             # "code_magnetic", this will allow them to remain in
that unit.
--> 845             self.unit_registry.modify("code_magnetic",
self.magnetic_unit)
    846         vel_unit = getattr(
    847             self, "velocity_unit", self.length_unit /
self.time_unit)

/data/home/koller47/openpmd/yt/units/unit_registry.pyc in modify(self,
symbol, base_value)
    107
    108         if hasattr(base_value, "in_base"):
--> 109             base_value = base_value.in_base().value
    110
    111         self.lut[symbol] = (float(base_value), ) +
self.lut[symbol][1:]

/data/home/koller47/openpmd/yt/units/yt_array.pyc in in_base(self,
unit_system)
    559         >>> E_new = E.in_base(unit_system="galactic")
    560         """
--> 561         return
self.in_units(self.units.get_base_equivalent(unit_system))
    562
    563     def in_cgs(self):

/data/home/koller47/openpmd/yt/units/unit_object.pyc in
get_base_equivalent(self, unit_system)
    421         if unit_system == "cgs":
    422             if current_mks in self.dimensions.free_symbols:
--> 423                 raise YTUnitsNotReducible(self, "cgs")
    424             return yt_base_unit
    425         else:

YTUnitsNotReducible: The unit 'T' cannot be reduced to a single
expression within the cgs base system of units.

With
self.magnetic_unit = self.quan(1.0, "gauss")
loading the file works fine and as expected.

As for openPMD test data, you can get 2D and 3D ones from here:
https://github.com/openPMD/openPMD-example-datasets

On 24/05/16 18:54, John Zuhone wrote:
> The latest development version of yt now has “unit systems”:
>
> http://yt-project.org/docs/dev/analyzing/units/unit_systems.html
>
> But Nathan is correct—this doesn’t affect the Tesla unit per se—it
> should be fine. If we could get a script and a more specific error
> that you are seeing, that would help. 
>
>> On May 24, 2016, at 12:30 PM, Huebl, Axel <a.huebl at hzdr.de
>> <mailto:a.huebl at hzdr.de>> wrote:
>>
>> Hi yt-devs,
>>
>> I am forwarding this conversation to the public list to keep it open for
>> others to join in and to build up a record that might help others.
>>
>> Our new student Fabian updated our frontend and implemented particle
>> readers. Unfortunately some details of the particle "fields" still cause
>> some bumps that we can not get our head around.
>>
>> We are now able to read fields and particles, even chunk-wise, and can
>> work with the data we read in python scripts via the all_data() method.
>>
>> Nevertheless, using the particle scatter plots such as yt.ParticlePlot
>> seems not to work. We have some problems with unions / the "all" group
>> and the fact that we have several particle species (e.g., "hot
>> electrons", "cold electrons", "helium ions", "nitrogen ions", etc.)
>>
>> Also since the last rebase: did someone recently change the unit system
>> in yt? T for "Tesla" seems not to be understood any more. Is there a
>> changelog somewhere available? Do we have to describe our data in cgs
>> / mks?
>>
>> Would someone be interested for a quick heads up via e.g., skype /
>> web-rtc so we can ask specific questions?
>>
>> Fabian is around on Tuesdays and Fridays, something like early CA time,
>> and late GER time usually works great (e.g., 9pm-PDT / 6pm-CEST).
>>
>> Our current branch HEAD can be found here (->yt->frontends->openPMD):
>>  https://bitbucket.org/C0nsultant/openpmd/src?at=yt
>>
>> And an example script is attached.
>>
>>
>> Thanks a lot!
>> Axel
>> <read_openPMD.py>_______________________________________________
>> yt-dev mailing list
>> yt-dev at lists.spacepope.org <mailto:yt-dev at lists.spacepope.org>
>> http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
>



More information about the yt-dev mailing list