[yt-users] Why the two figures have different resolutions?

Matthew Turk matthewturk at gmail.com
Thu May 18 11:24:46 PDT 2017


Hi,

I looked into this, and one thing I thought would fix it (adding a
_block_reorder attribute to ParticleOctreeSubset) didn't fix it, which
surprised me.  But, transposing the return value rv in
OctreeSubsetBlockSlicePosition did.  I thought that doing the copy in a
different order would be sufficient, since we don't use memoryviews
internal to the VR.

I'm not ready yet to submit a PR for this yet, until I understand where
it's coming from.  Nathan, wasn't there a recent change to the i,j,k loop
order in the smoothing?  Are we sure this behavior has been around for a
long time?

-Matt

On Thu, May 18, 2017 at 9:41 AM, Nathan Goldbaum <nathan12343 at gmail.com>
wrote:

> Hi Dan,
>
> Thanks for the info. I was able to reproduce the behavior you're seeing.
> Your script wasn't quite runnable (it still used set_size_inches, and you
> also forgot to save the first image). I also noticed that the difference is
> visible at yt's default resolution and with the ('gas', 'density') field,
> so in the interest of making the script simpler I used those:
>
> http://paste.yt-project.org/show/7150/
>
> For anyone following along, here are the two images this script produces:
>
> axis-aligned projection: http://i.imgur.com/ddKkxaC.png
>
> off-axis projection: http://i.imgur.com/mhWR2NL.png
>
> The problem gets worse when I increase over_refine_factor to 2 and set
> index_ptype='PartType0':
>
> axis-aligned projection: http://i.imgur.com/fctKRSO.png
>
> off-axis projection: http://i.imgur.com/eAz9BNt.png
>
> I'm not sure offhand why the results are different, in principle they
> should be the same, although as I mentioned earlier the images are produced
> using very different algorithms. It's possible there's a bug in how the
> volume renderer is dealing with SPH particle data. The fact that the
> problem gets worse when the resolution of the octree increases indicates to
> me that this is likely a bug. I know we've had other issues in the past
> using the volume rendering infrastructure with SPH data.
>
> Sorry to not have a more satisfactory answer. I think at this point we
> should probably open an issue on github to track this, I think we have good
> evidence that there are artifacts in SPH off-axis projections.
>
> I'm currently actively working on improving yt's support for particle data
> of all kinds and SPH data in particular. See this page for more details:
> https://bitbucket.org/ngoldbaum/ytep/src/2a754cae8a5825109bad00aa9a5607
> abbcc4f095/source/YTEPs/YTEP-0031.rst?at=default&
> fileviewer=file-view-default
>
> Part of this will include writing a new particle-centric volume renderer
> which will hopefully fix this. That's definitely a more long term goal
> which will hopefully be done in the next few months. In the meantime
> someone will need to try to figure out what's introducing these artifacts
> we're seeing and optimally fix them somehow :)
>
> -Nathan
>
> On Thu, May 18, 2017 at 12:54 AM, bazhaoyu_sjtu <
> hudan_bazhaoyu at sjtu.edu.cn> wrote:
>
>> Hi Nathan,
>>
>> I'm so sorry that I haven't expressed clearly.
>>
>> I learned your code, and replotted two images. The complete script:
>> http://paste.yt-project.org/show/7146/
>> where the 'surface brightness' is a derived field by myself.
>>
>> And my data 'snap_206.hdf5':  http://use.yt/upload/c7c0d617
>>
>> Here's the two images:
>> regular projection:   https://1drv.ms/i/s!Aq__4QGcEmxvh06ErW9t_0BK-LQR
>> off-axis projection:   https://1drv.ms/i/s!Aq__4QGcEmxvh09ajn0UdatFjIil
>>
>> The off-axis one is still blockier. So How can I fix it? I want to have
>> same resolution of two figures.
>> Thanks for you help!
>>
>>
>> Regards,
>> Dan
>>
>>
>>
>> On 05/16/2017 08:39 PM, Nathan Goldbaum wrote:
>>
>>
>> On Tue, May 16, 2017 at 6:38 AM bazhaoyu_sjtu <
>> <hudan_bazhaoyu at sjtu.edu.cn>hudan_bazhaoyu at sjtu.edu.cn> wrote:
>>
>>> Hi Nathan,
>>>
>>> Thank you for your prompt reply!
>>>
>>> I also have two questions:
>>>
>>> 1.  When I tried your new script, the bug are presented below:
>>> ------------------------------------------------------------
>>> -------------------------------------
>>> pz.set_size_inches(10)
>>> AttributeError: 'ProjectionPlot' object has no attribute
>>> 'set_size_inches'
>>>
>>
>> Oops, that should have been pz.set_figure_size(10). I thought I fixed
>> that it I guess I forgot to update the email. Sorry for the confusion.
>>
>>
>>> ------------------------------------------------------------
>>> -------------------------------------
>>>
>>> 2.  For your two images, I also found that figure's resolution of the
>>> 'off-axis projection' is worse than the 'regular projection', for example,
>>> the 'off-axis projection' figure has more obvious grid point.
>>> Is there any difference between two projection ways? Because I supposed
>>> it should be same.
>>>
>>
>> They are generated using very different algorithms. The axis-aligned
>> projection is calculated based on an adaptive quadtree while the off-axis
>> projection is calculated using a ray-casting volume renderer.
>>
>> I agree with you that in principle they should come out with
>> identical-looking results for the script you provided. It's possible that
>> you're data is exposing a corner case that somehow makes the off-axis
>> projection appear blockier. It's hard to say without more info. Please see
>> the last paragraph of my last message about this, if you share an example
>> dataset that triggers this behavior or share the images you are seeing it
>> will make it easier to speak intelligently about what you are seeing.
>>
>>
>>>
>>> Thank you again!
>>>
>>> Regards,
>>> Dan
>>>
>>>
>>>
>>>
>>>
>>>
>>> On 05/15/2017 09:56 PM, Nathan Goldbaum wrote:
>>>
>>> Hi Dan,
>>>
>>> I adapted your script to use a public dataset from yt-project.org/data.
>>> I also don't have a definition for a surface_brightness field in my copy of
>>> yt, so I guess you defined that elsewhere? I used 'density'. Here's the
>>> script I ended up coming up with:
>>>
>>> http://paste.yt-project.org/show/7142/
>>>
>>> (note that you can upload scripts with the "yt pastebin" command line
>>> tool, e.g. "yt pastebin my_script.py")
>>>
>>> And indeed, in that case I get two images that aren't the desired high
>>> resolution you're looking for (although both images have the same
>>> resolution). The issue is that yt is saving the figure to disk through
>>> matplotlib. To control the image size in pixels through matplotlib you need
>>> to know the figure size in inches and the dpi (e.g. the number of pixels
>>> per inch of figure). Here's a revised version of the script above which
>>> saves to disk two images with the desired 3200x3200 resolution:
>>>
>>> http://paste.yt-project.org/show/7145/
>>>
>>> It also hides the axes and colorbar, since that makes it easier to guess
>>> ahead of time what the final image resolution will be. Here are the two
>>> images:
>>>
>>> regular projection: http://i.imgur.com/ialfYC4.png
>>> off-axis projection: http://i.imgur.com/PcvPZ9f.png
>>>
>>> You can share images you make using yt using the "yt upload_image"
>>> command, which will upload an image stored locally to imgur. We usually
>>> suggest using that to share images or alternatively something like a
>>> Jupyter notebook on gist.github.com to avoid clogging people's e-mail
>>> with high resolution images.
>>>
>>> Finally, if you don't want to mess with matplotlib and just want the
>>> underlying images, you can get those via the frb attribute of the plot
>>> object. Something like:
>>>
>>>     plot = yt.ProjectionPlot(ds, 'z', ('gas', 'density'))
>>>     plot.set_buff_size((3200, 3200))
>>>
>>>     # image will be a 3200x3200 numpy array
>>>     image = plot.frb['gas', 'density']
>>>
>>> I hope that helps clear things up. If you are still having issues it
>>> would help if you could share the exact yt version you are using as well as
>>> a runnable test script that demonstrates the issue. If you can't trigger
>>> the issue using one of the public SPH datasets on yt-project.org/data,
>>> you can share one of your datasets using the yt curldrop:
>>> https://docs.hub.yt/services.html#curldrop
>>>
>>> -Nathan
>>>
>>> On Mon, May 15, 2017 at 4:40 AM, bazhaoyu_sjtu <
>>> <hudan_bazhaoyu at sjtu.edu.cn>hudan_bazhaoyu at sjtu.edu.cn> wrote:
>>>
>>>> Hi yt-users:
>>>>
>>>> I want to ask you a question about the figures' resolution, I handled
>>>> Gadget file -- hdf5.
>>>>
>>>> I used the 'ProjectionPlot' to plot the surface brightness map which is
>>>> integrated along the 'z' axis, please see the figure 1; And I plot another
>>>> surface brightness map by 'OffAxisProjectionPlot' with the normal_vector is
>>>> [0, 0, 1], please see the figure 2.
>>>>
>>>> # I can't upload attachments ??? #
>>>>
>>>> Comparing two figures, we can find the structures of them is same, but
>>>> the resolution is different! The 'OffAxisProjectionPlot' is obviously worse
>>>> than 'ProjectionPlot', I don't know why!
>>>>
>>>> Below are the process I created two figures:
>>>>
>>>> ======================================================================
>>>> import yt
>>>> import numpy as np
>>>> import yt.units as units
>>>> import pylab
>>>>
>>>> fname = "snap_206.hdf5"
>>>> unit_base = {'UnitLength_in_cm' : 3.08568e+21,
>>>> 'UnitMass_in_g' : 1.989e+43,
>>>> 'UnitVelocity_in_cm_per_s' : 100000}
>>>> bbox_lim = 1e5 # kpc
>>>> bbox = [[-bbox_lim,bbox_lim],
>>>> [-bbox_lim,bbox_lim],
>>>> [-bbox_lim,bbox_lim]]
>>>> ds = yt.load(fname,unit_base=unit_base,bounding_box=bbox)
>>>> ds.index
>>>> ad= ds.all_data()
>>>>
>>>>
>>>> ## For 'ProjectionPlot' ##
>>>> pz = yt.ProjectionPlot(ds, 'z', ('gas', 'surface_brightness'), 'max',
>>>> width=(0.4,'Mpc'))
>>>>
>>>>
>>>> ## For 'OffAxisProjectionPlot' ##
>>>> L = [0,0,1]
>>>> north_vector = [0,1,0]
>>>> pz = yt.OffAxisProjectionPlot(ds, L, ('gas', 'surface_brightness'),
>>>> 'max', north_vector = north_vector, width=(0.4,'Mpc'))
>>>>
>>>>
>>>> pz.set_buff_size((3200,3200))
>>>> pz.save()
>>>> ============================================================
>>>> =============
>>>>
>>>> What can i do to fix this difference of resolution between two plot
>>>> ways?
>>>> Thanks a lot!
>>>>
>>>> Regards,
>>>> Dan
>>>>
>>>>
>>>> ==================================
>>>> Department of Physics, Shanghai Jiao Tong University
>>>> 800 Dongchuan Road, Minhang, Shanghai 200240, PRC
>>>> E-mail : hudan_bazhaoyu at 163.com
>>>> hudan_bazhaoyu at sjtu.edu.cn
>>>> ==================================
>>>> _______________________________________________
>>>> yt-users mailing list
>>>> yt-users at lists.spacepope.org
>>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> yt-users mailing listyt-users at lists.spacepope.orghttp://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 listyt-users at lists.spacepope.orghttp://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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20170518/dabb7da1/attachment-0001.htm>


More information about the yt-users mailing list