[yt-users] Blocky Projections with RAMSES data when log=True

Butler,Michael J butler85 at astro.ufl.edu
Fri Oct 4 08:31:46 PDT 2013


Hi Matt,

I did the update, and can successfully do pf.h without the error.  When 
I do try to make a slice though, I get the new error at the end of the 
email.  I don't think the issue is with the number of fields, but could 
you clarify how you mean to specify fields for the load command?  Would 
it just be some array eg. ["Density","x-velocity"....] after the 
filename?

Also, on another note, when I load data it says the frontend assumes 
the simulation is cosmological, while my data is not - do you think that 
will cause any problems?

Thanks again,

Mike

In [7]: 
pc.add_slice("Density",2)---------------------------------------------------------------------------
ValueError                                Traceback (most recent call 
last)
/home/itp/butler/yt-x86_64/src/yt-hg/scripts/iyt in <module>()
----> 1 pc.add_slice("Density",2)

/home/itp/butler/yt-x86_64/src/yt-hg/yt/visualization/plot_collection.py 
in add_slice(self, field, axis, coord, center, use_colorbar, figure, 
axes, fig_size, periodic, obj, field_parameters)
     422                          obj, field, use_colorbar=use_colorbar,
     423                          axes=axes, figure=figure,
--> 424                          size=fig_size, periodic=periodic))
     425         mylog.info("Added slice of %s at %s = %s with 'center' 
= %s", field,
     426                     axis_names[axis], coord, list(center))

/home/itp/butler/yt-x86_64/src/yt-hg/yt/visualization/plot_types.py in 
__init__(self, data, field, figure, axes, use_colorbar, size, periodic)
     314         self.label_kws = {}
     315         self.__setup_from_field(field)
--> 316         self.__init_temp_image(use_colorbar)
     317
     318     def __setup_from_field(self, field):

/home/itp/butler/yt-x86_64/src/yt-hg/yt/visualization/plot_types.py in 
__init_temp_image(self, setup_colorbar)
     351         else:
     352             self.colorbar = None
--> 353         self.set_width(1,'unitary')
     354
     355     def _get_buff(self, width=None):

/home/itp/butler/yt-x86_64/src/yt-hg/yt/visualization/plot_types.py in 
set_width(self, width, unit)
     446             unit = self.data.pf[str(unit)]
     447         self.width = width / unit
--> 448         self._refresh_display_width()
     449
     450     def _refresh_display_width(self, width=None):

/home/itp/butler/yt-x86_64/src/yt-hg/yt/visualization/plot_types.py in 
_refresh_display_width(self, width)
     464         self.set_xlim(max(l_edge_x,self.xmin), 
min(r_edge_x,self.xmax))
     465         self.set_ylim(max(l_edge_y,self.ymin), 
min(r_edge_y,self.ymax))
--> 466         self._redraw_image()
     467
     468     def autoscale(self):

/home/itp/butler/yt-x86_64/src/yt-hg/yt/visualization/plot_types.py in 
_redraw_image(self, *args)
     381
     382     def _redraw_image(self, *args):
--> 383         buff = self._get_buff()
     384         if self[self.axis_names["Z"]].size == 0:
     385             raise YTNoDataInObjectError(self.data)

/home/itp/butler/yt-x86_64/src/yt-hg/yt/visualization/plot_types.py in 
_get_buff(self, width)
     370         else:
     371             check_period = 0
--> 372         buff = _MPL.Pixelize(self.data['px'],
     373                             self.data['py'],
     374                             self.data['pdx'],

/home/itp/butler/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py 
in __getitem__(self, key)
     184         if f not in self.field_data and key not in 
self.field_data:
     185             if f in self._container_fields:
--> 186                 self.field_data[f] = 
self._generate_container_field(f)
     187                 return self.field_data[f]
     188             else:

/home/itp/butler/yt-x86_64/src/yt-hg/yt/data_objects/selection_data_containers.py 
in _generate_container_field(self, field)
     196             self.hierarchy._identify_base_chunk(self)
     197         if field == "px":
--> 198             return 
self._current_chunk.fcoords[:,x_dict[self.axis]]
     199         elif field == "py":
     200             return 
self._current_chunk.fcoords[:,y_dict[self.axis]]

/home/itp/butler/yt-x86_64/src/yt-hg/yt/geometry/geometry_handler.py in 
cached_func(self)
     511             return getattr(self, n)
     512         if self.data_size is None:
--> 513             tr = self._accumulate_values(n[1:])
     514         else:
     515             tr = func(self)

/home/itp/butler/yt-x86_64/src/yt-hg/yt/geometry/geometry_handler.py in 
_accumulate_values(self, method)
     538             f = getattr(obj, mname)
     539             arrs.append(f(self.dobj))
--> 540         arrs = np.concatenate(arrs)
     541         self.data_size = arrs.shape[0]
     542         return arrs

ValueError: need at least one array to concatenate


On Fri, 4 Oct 2013 10:14:12 -0400, Matthew Turk wrote:
> Hi Mike,
>
> Ah!  This is a fun one, and there are two possible causes for it.
> (Thanks for the bug report, by the way.)
>
>  * The field count on disk is not the same as what yt thinks it 
> should
> expect.  (I don't think there's a way to detect the number or names 
> of
> fields in a RAMSES file, but if there is ....)  This can be fixed by
> supplying the argument fields to the load() command.  The default
> field list is ["Density", "x-velocity", "y-velocity",  "z-velocity",
> "Pressure", "Metallicity"].  So if you have any additional, or fewer
> than that, fields, you can specify them and it should work.
>  * The other possibility is that your simulation has boundary
> conditions that live outside the domain.  This was fixed very
> recently:
> 
> https://bitbucket.org/yt_analysis/yt-3.0/pull-request/107/adding-a-count-boundary-option-to
> and is typically seen when the boundary is specified.  If you are
> running 3.0, you can update with:
>
> (the directory may be different -- it may just be yt-hg -- but you 
> can
> see what it is from "yt instinfo")
>
> cd $YT_DEST/src/yt-hg-3.0/
> hg pull -r tip https://bitbucket.org/yt_analysis/yt-3.0
> hg up
> python2.7 setup.py build_ext -i -f
>
> Can you try again, and let us know?  Just doing "pf.h" should show 
> the
> error, and if that succeeds, it should work.
>
> Sorry for the trouble!
>
> -Matt
>
>
> On Fri, Oct 4, 2013 at 10:09 AM, Butler,Michael J
> <butler85 at astro.ufl.edu> wrote:
>> Hi Matt,
>>
>> Thanks.  The problem is (which was going to be my next email, and 
>> the reason
>> I was trying out 2.5), I can't seem to make plots in the 3.0 branch 
>> anymore
>> since updating it.  I don't recall which version it was when I 
>> could, but
>> now I get the error at the end of the email when I try and make a
>> slice/projection (it happens both with the PlotCollection method as 
>> well as
>> SlicePlot).
>>
>> -Mike
>>
>>
>>
>> In [5]: pc.add_slice("Density",2)
>> 
>> ---------------------------------------------------------------------------
>> AssertionError                            Traceback (most recent 
>> call last)
>> /home/itp/butler/yt-x86_64/src/yt-hg/scripts/iyt in <module>()
>> ----> 1 pc.add_slice("Density",2)
>>
>> 
>> /home/itp/butler/yt-x86_64/src/yt-hg/yt/visualization/plot_collection.py 
>> in
>> add_slice(self, field, axis, coord, center, use_colorbar, figure, 
>> axes,
>> fig_size, periodic, obj, field_parameters)
>>     427         if obj is None:
>>     428             if field_parameters is None: field_parameters = 
>> {}
>> --> 429             obj = self.pf.hierarchy.slice(axis, coord, 
>> field,
>>     430                             center=center, 
>> **field_parameters)
>>     431         p = self._add_plot(PCSlicePlot(
>>
>> 
>> /home/itp/butler/yt-x86_64/src/yt-hg/yt/data_objects/static_output.py 
>> in
>> hierarchy(self)
>>     223                 raise RuntimeError("You should not 
>> instantiate
>> StaticOutput.")
>>     224             self._instantiated_hierarchy = 
>> self._hierarchy_class(
>> --> 225                 self, data_style=self.data_style)
>>     226         return self._instantiated_hierarchy
>>     227     h = hierarchy  # alias
>>
>> 
>> /home/itp/butler/yt-x86_64/src/yt-hg/yt/frontends/ramses/data_structures.py
>> in __init__(self, pf, data_style)
>>     301
>>     302         self.float_type = np.float64
>> --> 303         super(RAMSESGeometryHandler, self).__init__(pf, 
>> data_style)
>>     304
>>     305     def _initialize_oct_handler(self):
>>
>> /home/itp/butler/yt-x86_64/src/yt-hg/yt/geometry/geometry_handler.py 
>> in
>> __init__(self, pf, data_style)
>>      66
>>      67         mylog.debug("Setting up domain geometry.")
>> ---> 68         self._setup_geometry()
>>      69
>>      70         mylog.debug("Initializing data grid data IO")
>>
>> 
>> /home/itp/butler/yt-x86_64/src/yt-hg/yt/geometry/oct_geometry_handler.py 
>> in
>> _setup_geometry(self)
>>      48     def _setup_geometry(self):
>>      49         mylog.debug("Initializing Octree Geometry Handler.")
>> ---> 50         self._initialize_oct_handler()
>>      51
>>      52     def get_smallest_dx(self):
>>
>> 
>> /home/itp/butler/yt-x86_64/src/yt-hg/yt/frontends/ramses/data_structures.py
>> in _initialize_oct_handler(self)
>>     306         nv = len(self.fluid_field_list)
>>     307         self.domains = 
>> [RAMSESDomainFile(self.parameter_file, i + 1,
>> nv)
>> --> 308                         for i in 
>> range(self.parameter_file['ncpu'])]
>>     309         total_octs = sum(dom.local_oct_count #+ 
>> dom.ngridbound.sum()
>>     310                          for dom in self.domains)
>>
>> 
>> /home/itp/butler/yt-x86_64/src/yt-hg/yt/frontends/ramses/data_structures.py
>> in __init__(self, pf, domain_id, nvar)
>>      70         self._read_amr_header()
>>      71         self._read_particle_header()
>> ---> 72         self._read_amr()
>>      73
>>      74     _hydro_offset = None
>>
>> 
>> /home/itp/butler/yt-x86_64/src/yt-hg/yt/frontends/ramses/data_structures.py
>> in _read_amr(self)
>>     248                     assert(pos.shape[0] == ng)
>>     249                     n = self.oct_handler.add(cpu + 1, level 
>> -
>> min_level, pos)
>> --> 250                     assert(n == ng)
>>     251         self.oct_handler.finalize()
>>     252
>>
>> AssertionError:
>>
>>
>>
>>
>> On Fri, 4 Oct 2013 09:11:36 -0400, Matthew Turk wrote:
>>
>> Hi Mike,
>>
>> The stable branch of yt probably doesn't work with RAMSES anymore... 
>> I think
>> we even disabled it recently.
>>
>> However, the 3.0 branch (listed as "bleeding edge" on the website) 
>> full
>> supports Ramses and is considerably faster and more memory 
>> conservative. I'd
>> suggest you give it a shot - at this point it's quite stable and 
>> production
>> ready. The docs are still lagging but that's next up; for Ramses it 
>> should
>> be mostly identical in usage. If you do run into any trouble, drop a 
>> line
>> here?
>>
>> Matt
>>
>> On Oct 4, 2013 9:04 AM, "Butler,Michael J" <butler85 at astro.ufl.edu> 
>> wrote:
>>>
>>> Hi everyone,
>>>
>>> I have been working with the stable branch of yt to look at RAMSES 
>>> data
>>> and have run into a problem.  When doing simple projections of e.g. 
>>> Density
>>> with take_log=True, the projection becomes blocky (see attached 
>>> image).
>>> This doesn't happen if I take out the take_log line.  Here is what 
>>> I am
>>> doing :
>>>
>>> pf = load("output_00427/info_00427.txt")
>>> pf.h
>>> pf.field_info['Density'].take_log = True
>>> p=SlicePlot(pf,2,"Density")
>>>
>>> Any ideas what is going on here?
>>>
>>> Thanks,
>>>
>>> Mike
>>> _______________________________________________
>>> yt-users mailing list
>>> yt-users at lists.spacepope.org
>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>>
>>
>>
>>
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org




More information about the yt-users mailing list