particle angular momentum profile error and accumulation profile
Hi yt users, I try to make a particle angular momentum profile using the following script: ================================ import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt def _radiuspc(field, data): return data[('radius')].in_units('pc') yt.add_field('radiuspc', function=_radiuspc, units="pc") index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data() center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')]) sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity) profile = yt.Profile1D(sphere, 'radiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z')) PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2) plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r') plt.xlabel('r [pc]') plt.ylabel('pang') ====================================== And I got the following error: ……….. Traceback (most recent call last): File "pang.py", line 26, in <module> profile.add_fields(('all', 'particle_angular_momentum_x')) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 112, in add_fields self._bin_chunk(chunk, fields, temp_storage) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 425, in _bin_chunk rv = self._get_data(chunk, fields) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 240, in _get_data arr[:,i] = chunk[field][filter].in_units(units) File "/home/jhchoi/common/src/yt/yt/units/yt_array.py", line 1123, in __getitem__ ret = super(YTArray, self).__getitem__(item) IndexError: index 1322 is out of bounds for axis 1 with size 1322 I do not understand what the problem is? One more question: Is there any way to make accumulation density profile with yt.Profile1D(……)? Thank you in advance, Junhwan
Your 'radiuspc' field is a mesh field, but you're trying to compare it
with particle fields. Mesh fields and particle fields don't have the
same shape, which is why you're getting an error.
You may want to use the particle_radius field instead. If you want to
create a derived field with different default units, you'll need to
specify particle_type=True in your add_field call.
-Nathan
On Tue, Jan 26, 2016 at 2:12 PM, Junhwan Choi (최준환)
Hi yt users,
I try to make a particle angular momentum profile using the following script: ================================ import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _radiuspc(field, data): return data[('radius')].in_units('pc') yt.add_field('radiuspc', function=_radiuspc, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data() center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'radiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') ====================================== And I got the following error: ……….. Traceback (most recent call last): File "pang.py", line 26, in <module> profile.add_fields(('all', 'particle_angular_momentum_x')) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 112, in add_fields self._bin_chunk(chunk, fields, temp_storage) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 425, in _bin_chunk rv = self._get_data(chunk, fields) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 240, in _get_data arr[:,i] = chunk[field][filter].in_units(units) File "/home/jhchoi/common/src/yt/yt/units/yt_array.py", line 1123, in __getitem__ ret = super(YTArray, self).__getitem__(item) IndexError: index 1322 is out of bounds for axis 1 with size 1322
I do not understand what the problem is?
One more question: Is there any way to make accumulation density profile with yt.Profile1D(……)?
Thank you in advance, Junhwan _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
Hi Nathan,
Now I change as you suggested
===============================
import matplotlib as matplotlib
matplotlib.use('Agg')
import yt
import yt.units as units
import numpy as np
import matplotlib.pyplot as plt
def _partradiuspc(field, data):
return data[('all','particle_radius')].in_units('pc')
yt.add_field('partradiuspc', function=_partradiuspc,
particle_type=True, units="pc")
index = 45
Nbin= 100
rmax = 3000
ds = yt.load("../DD%04d/DD%04d" % (index,index))
ds.index
ad= ds.all_data()
center = ds.find_max(("gas", "density"))[1]
rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc)
bulk_velocity = sphere.quantities['BulkVelocity']()
sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin,
x_max=rmax, x_log=True, weight_field=None)
profile.add_fields(('all', 'particle_angular_momentum_x'))
profile.add_fields(('all', 'particle_angular_momentum_y'))
profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2
+ profile[('all',
'particle_angular_momentum_y')]**2
+ profile[('all',
'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]')
plt.ylabel('pang')
===================================
And, I got the following error message
………………
Traceback (most recent call last):
File "pang.py", line 26, in <module>
profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin,
x_max=rmax, x_log=True, weight_field=None)
File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line
411, in __init__
self.x_field = data_source._determine_fields(x_field)[0]
File "/home/jhchoi/common/src/yt/yt/data_objects/data_containers.py",
line 1001, in _determine_fields
raise YTFieldNotFound((ftype,fname),self.ds)
yt.utilities.exceptions.YTFieldNotFound: Could not find field '('all',
'partradiuspc')' in DD0045.
If I remove "particle_type=True" in add_field, it works.
However, I am not sure that removing "particle_type=True" is ther
right way or not, because the yt document suggest to include it.
Thank you,
Junhwan
On Tue, Jan 26, 2016 at 2:15 PM, Nathan Goldbaum
Your 'radiuspc' field is a mesh field, but you're trying to compare it with particle fields. Mesh fields and particle fields don't have the same shape, which is why you're getting an error.
You may want to use the particle_radius field instead. If you want to create a derived field with different default units, you'll need to specify particle_type=True in your add_field call.
-Nathan
On Tue, Jan 26, 2016 at 2:12 PM, Junhwan Choi (최준환)
wrote: Hi yt users,
I try to make a particle angular momentum profile using the following script: ================================ import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _radiuspc(field, data): return data[('radius')].in_units('pc') yt.add_field('radiuspc', function=_radiuspc, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data() center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'radiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') ====================================== And I got the following error: ……….. Traceback (most recent call last): File "pang.py", line 26, in <module> profile.add_fields(('all', 'particle_angular_momentum_x')) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 112, in add_fields self._bin_chunk(chunk, fields, temp_storage) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 425, in _bin_chunk rv = self._get_data(chunk, fields) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 240, in _get_data arr[:,i] = chunk[field][filter].in_units(units) File "/home/jhchoi/common/src/yt/yt/units/yt_array.py", line 1123, in __getitem__ ret = super(YTArray, self).__getitem__(item) IndexError: index 1322 is out of bounds for axis 1 with size 1322
I do not understand what the problem is?
One more question: Is there any way to make accumulation density profile with yt.Profile1D(……)?
Thank you in advance, Junhwan _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
This seems like a bug. Any chance you can file an issue about it:
https://bitbucket.org/yt_analysis/yt/issues/new
Please attach your test script as that will help us to reproduce the issue.
On Wed, Jan 27, 2016 at 1:21 PM, Junhwan Choi (최준환)
Hi Nathan,
Now I change as you suggested =============================== import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _partradiuspc(field, data): return data[('all','particle_radius')].in_units('pc') yt.add_field('partradiuspc', function=_partradiuspc, particle_type=True, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data()
center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') =================================== And, I got the following error message ……………… Traceback (most recent call last): File "pang.py", line 26, in <module> profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 411, in __init__ self.x_field = data_source._determine_fields(x_field)[0] File "/home/jhchoi/common/src/yt/yt/data_objects/data_containers.py", line 1001, in _determine_fields raise YTFieldNotFound((ftype,fname),self.ds) yt.utilities.exceptions.YTFieldNotFound: Could not find field '('all', 'partradiuspc')' in DD0045.
If I remove "particle_type=True" in add_field, it works. However, I am not sure that removing "particle_type=True" is ther right way or not, because the yt document suggest to include it.
Thank you, Junhwan
On Tue, Jan 26, 2016 at 2:15 PM, Nathan Goldbaum
wrote: Your 'radiuspc' field is a mesh field, but you're trying to compare it with particle fields. Mesh fields and particle fields don't have the same shape, which is why you're getting an error.
You may want to use the particle_radius field instead. If you want to create a derived field with different default units, you'll need to specify particle_type=True in your add_field call.
-Nathan
On Tue, Jan 26, 2016 at 2:12 PM, Junhwan Choi (최준환)
wrote: Hi yt users,
I try to make a particle angular momentum profile using the following script: ================================ import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _radiuspc(field, data): return data[('radius')].in_units('pc') yt.add_field('radiuspc', function=_radiuspc, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data() center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'radiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') ====================================== And I got the following error: ……….. Traceback (most recent call last): File "pang.py", line 26, in <module> profile.add_fields(('all', 'particle_angular_momentum_x')) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 112, in add_fields self._bin_chunk(chunk, fields, temp_storage) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 425, in _bin_chunk rv = self._get_data(chunk, fields) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 240, in _get_data arr[:,i] = chunk[field][filter].in_units(units) File "/home/jhchoi/common/src/yt/yt/units/yt_array.py", line 1123, in __getitem__ ret = super(YTArray, self).__getitem__(item) IndexError: index 1322 is out of bounds for axis 1 with size 1322
I do not understand what the problem is?
One more question: Is there any way to make accumulation density profile with yt.Profile1D(……)?
Thank you in advance, Junhwan _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
Hi Nathan,
I just created issue.
Accidentally, I made two same issues (w/ and w/o attached file), 1163 and 1164.
Is there anyway that I can tell the issue is the resolved and I can
update my version?
Thank you,
Junhwan
On Wed, Jan 27, 2016 at 1:23 PM, Nathan Goldbaum
This seems like a bug. Any chance you can file an issue about it:
https://bitbucket.org/yt_analysis/yt/issues/new
Please attach your test script as that will help us to reproduce the issue.
On Wed, Jan 27, 2016 at 1:21 PM, Junhwan Choi (최준환)
wrote: Hi Nathan,
Now I change as you suggested =============================== import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _partradiuspc(field, data): return data[('all','particle_radius')].in_units('pc') yt.add_field('partradiuspc', function=_partradiuspc, particle_type=True, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data()
center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') =================================== And, I got the following error message ……………… Traceback (most recent call last): File "pang.py", line 26, in <module> profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 411, in __init__ self.x_field = data_source._determine_fields(x_field)[0] File "/home/jhchoi/common/src/yt/yt/data_objects/data_containers.py", line 1001, in _determine_fields raise YTFieldNotFound((ftype,fname),self.ds) yt.utilities.exceptions.YTFieldNotFound: Could not find field '('all', 'partradiuspc')' in DD0045.
If I remove "particle_type=True" in add_field, it works. However, I am not sure that removing "particle_type=True" is ther right way or not, because the yt document suggest to include it.
Thank you, Junhwan
On Tue, Jan 26, 2016 at 2:15 PM, Nathan Goldbaum
wrote: Your 'radiuspc' field is a mesh field, but you're trying to compare it with particle fields. Mesh fields and particle fields don't have the same shape, which is why you're getting an error.
You may want to use the particle_radius field instead. If you want to create a derived field with different default units, you'll need to specify particle_type=True in your add_field call.
-Nathan
On Tue, Jan 26, 2016 at 2:12 PM, Junhwan Choi (최준환)
wrote: Hi yt users,
I try to make a particle angular momentum profile using the following script: ================================ import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _radiuspc(field, data): return data[('radius')].in_units('pc') yt.add_field('radiuspc', function=_radiuspc, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data() center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'radiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') ====================================== And I got the following error: ……….. Traceback (most recent call last): File "pang.py", line 26, in <module> profile.add_fields(('all', 'particle_angular_momentum_x')) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 112, in add_fields self._bin_chunk(chunk, fields, temp_storage) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 425, in _bin_chunk rv = self._get_data(chunk, fields) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 240, in _get_data arr[:,i] = chunk[field][filter].in_units(units) File "/home/jhchoi/common/src/yt/yt/units/yt_array.py", line 1123, in __getitem__ ret = super(YTArray, self).__getitem__(item) IndexError: index 1322 is out of bounds for axis 1 with size 1322
I do not understand what the problem is?
One more question: Is there any way to make accumulation density profile with yt.Profile1D(……)?
Thank you in advance, Junhwan _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
I've fixed it for you. Thanks for filing the issue!
On Wed, Jan 27, 2016 at 1:39 PM, Junhwan Choi (최준환)
Hi Nathan,
I just created issue. Accidentally, I made two same issues (w/ and w/o attached file), 1163 and 1164. Is there anyway that I can tell the issue is the resolved and I can update my version?
Thank you, Junhwan
On Wed, Jan 27, 2016 at 1:23 PM, Nathan Goldbaum
wrote: This seems like a bug. Any chance you can file an issue about it:
https://bitbucket.org/yt_analysis/yt/issues/new
Please attach your test script as that will help us to reproduce the issue.
On Wed, Jan 27, 2016 at 1:21 PM, Junhwan Choi (최준환)
wrote: Hi Nathan,
Now I change as you suggested =============================== import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _partradiuspc(field, data): return data[('all','particle_radius')].in_units('pc') yt.add_field('partradiuspc', function=_partradiuspc, particle_type=True, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data()
center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') =================================== And, I got the following error message ……………… Traceback (most recent call last): File "pang.py", line 26, in <module> profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 411, in __init__ self.x_field = data_source._determine_fields(x_field)[0] File "/home/jhchoi/common/src/yt/yt/data_objects/data_containers.py", line 1001, in _determine_fields raise YTFieldNotFound((ftype,fname),self.ds) yt.utilities.exceptions.YTFieldNotFound: Could not find field '('all', 'partradiuspc')' in DD0045.
If I remove "particle_type=True" in add_field, it works. However, I am not sure that removing "particle_type=True" is ther right way or not, because the yt document suggest to include it.
Thank you, Junhwan
On Tue, Jan 26, 2016 at 2:15 PM, Nathan Goldbaum
wrote: Your 'radiuspc' field is a mesh field, but you're trying to compare it with particle fields. Mesh fields and particle fields don't have the same shape, which is why you're getting an error.
You may want to use the particle_radius field instead. If you want to create a derived field with different default units, you'll need to specify particle_type=True in your add_field call.
-Nathan
On Tue, Jan 26, 2016 at 2:12 PM, Junhwan Choi (최준환)
wrote: Hi yt users,
I try to make a particle angular momentum profile using the following script: ================================ import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _radiuspc(field, data): return data[('radius')].in_units('pc') yt.add_field('radiuspc', function=_radiuspc, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data() center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'radiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') ====================================== And I got the following error: ……….. Traceback (most recent call last): File "pang.py", line 26, in <module> profile.add_fields(('all', 'particle_angular_momentum_x')) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 112, in add_fields self._bin_chunk(chunk, fields, temp_storage) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 425, in _bin_chunk rv = self._get_data(chunk, fields) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 240, in _get_data arr[:,i] = chunk[field][filter].in_units(units) File "/home/jhchoi/common/src/yt/yt/units/yt_array.py", line 1123, in __getitem__ ret = super(YTArray, self).__getitem__(item) IndexError: index 1322 is out of bounds for axis 1 with size 1322
I do not understand what the problem is?
One more question: Is there any way to make accumulation density profile with yt.Profile1D(……)?
Thank you in advance, Junhwan _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
Do I just update my yt to get this fix?
Junhwan
On Wed, Jan 27, 2016 at 1:49 PM, Nathan Goldbaum
I've fixed it for you. Thanks for filing the issue!
On Wed, Jan 27, 2016 at 1:39 PM, Junhwan Choi (최준환)
wrote: Hi Nathan,
I just created issue. Accidentally, I made two same issues (w/ and w/o attached file), 1163 and 1164. Is there anyway that I can tell the issue is the resolved and I can update my version?
Thank you, Junhwan
On Wed, Jan 27, 2016 at 1:23 PM, Nathan Goldbaum
wrote: This seems like a bug. Any chance you can file an issue about it:
https://bitbucket.org/yt_analysis/yt/issues/new
Please attach your test script as that will help us to reproduce the issue.
On Wed, Jan 27, 2016 at 1:21 PM, Junhwan Choi (최준환)
wrote: Hi Nathan,
Now I change as you suggested =============================== import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _partradiuspc(field, data): return data[('all','particle_radius')].in_units('pc') yt.add_field('partradiuspc', function=_partradiuspc, particle_type=True, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data()
center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') =================================== And, I got the following error message ……………… Traceback (most recent call last): File "pang.py", line 26, in <module> profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 411, in __init__ self.x_field = data_source._determine_fields(x_field)[0] File "/home/jhchoi/common/src/yt/yt/data_objects/data_containers.py", line 1001, in _determine_fields raise YTFieldNotFound((ftype,fname),self.ds) yt.utilities.exceptions.YTFieldNotFound: Could not find field '('all', 'partradiuspc')' in DD0045.
If I remove "particle_type=True" in add_field, it works. However, I am not sure that removing "particle_type=True" is ther right way or not, because the yt document suggest to include it.
Thank you, Junhwan
On Tue, Jan 26, 2016 at 2:15 PM, Nathan Goldbaum
wrote: Your 'radiuspc' field is a mesh field, but you're trying to compare it with particle fields. Mesh fields and particle fields don't have the same shape, which is why you're getting an error.
You may want to use the particle_radius field instead. If you want to create a derived field with different default units, you'll need to specify particle_type=True in your add_field call.
-Nathan
On Tue, Jan 26, 2016 at 2:12 PM, Junhwan Choi (최준환)
wrote: Hi yt users,
I try to make a particle angular momentum profile using the following script: ================================ import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _radiuspc(field, data): return data[('radius')].in_units('pc') yt.add_field('radiuspc', function=_radiuspc, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data() center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'radiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') ====================================== And I got the following error: ……….. Traceback (most recent call last): File "pang.py", line 26, in <module> profile.add_fields(('all', 'particle_angular_momentum_x')) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 112, in add_fields self._bin_chunk(chunk, fields, temp_storage) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 425, in _bin_chunk rv = self._get_data(chunk, fields) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 240, in _get_data arr[:,i] = chunk[field][filter].in_units(units) File "/home/jhchoi/common/src/yt/yt/units/yt_array.py", line 1123, in __getitem__ ret = super(YTArray, self).__getitem__(item) IndexError: index 1322 is out of bounds for axis 1 with size 1322
I do not understand what the problem is?
One more question: Is there any way to make accumulation density profile with yt.Profile1D(……)?
Thank you in advance, Junhwan _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
Oh, no, I just fixed the formatting of the issues. Myself or someone
else will try to get to the bug report sometime soon.
On Wed, Jan 27, 2016 at 1:53 PM, Junhwan Choi (최준환)
Do I just update my yt to get this fix? Junhwan
On Wed, Jan 27, 2016 at 1:49 PM, Nathan Goldbaum
wrote: I've fixed it for you. Thanks for filing the issue!
On Wed, Jan 27, 2016 at 1:39 PM, Junhwan Choi (최준환)
wrote: Hi Nathan,
I just created issue. Accidentally, I made two same issues (w/ and w/o attached file), 1163 and 1164. Is there anyway that I can tell the issue is the resolved and I can update my version?
Thank you, Junhwan
On Wed, Jan 27, 2016 at 1:23 PM, Nathan Goldbaum
wrote: This seems like a bug. Any chance you can file an issue about it:
https://bitbucket.org/yt_analysis/yt/issues/new
Please attach your test script as that will help us to reproduce the issue.
On Wed, Jan 27, 2016 at 1:21 PM, Junhwan Choi (최준환)
wrote: Hi Nathan,
Now I change as you suggested =============================== import matplotlib as matplotlib matplotlib.use('Agg') import yt import yt.units as units import numpy as np import matplotlib.pyplot as plt
def _partradiuspc(field, data): return data[('all','particle_radius')].in_units('pc') yt.add_field('partradiuspc', function=_partradiuspc, particle_type=True, units="pc")
index = 45 Nbin= 100 rmax = 3000 ds = yt.load("../DD%04d/DD%04d" % (index,index)) ds.index ad= ds.all_data()
center = ds.find_max(("gas", "density"))[1] rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
sphere = ds.sphere(center, rmax*units.pc) bulk_velocity = sphere.quantities['BulkVelocity']() sphere.set_field_parameter('bulk_velocity', bulk_velocity)
profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) profile.add_fields(('all', 'particle_angular_momentum_x')) profile.add_fields(('all', 'particle_angular_momentum_y')) profile.add_fields(('all', 'particle_angular_momentum_z'))
PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 + profile[('all', 'particle_angular_momentum_y')]**2 + profile[('all', 'particle_angular_momentum_z')]**2)
plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
plt.xlabel('r [pc]') plt.ylabel('pang') =================================== And, I got the following error message ……………… Traceback (most recent call last): File "pang.py", line 26, in <module> profile = yt.Profile1D(sphere, 'partradiuspc', Nbin, x_min=rmin, x_max=rmax, x_log=True, weight_field=None) File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line 411, in __init__ self.x_field = data_source._determine_fields(x_field)[0] File "/home/jhchoi/common/src/yt/yt/data_objects/data_containers.py", line 1001, in _determine_fields raise YTFieldNotFound((ftype,fname),self.ds) yt.utilities.exceptions.YTFieldNotFound: Could not find field '('all', 'partradiuspc')' in DD0045.
If I remove "particle_type=True" in add_field, it works. However, I am not sure that removing "particle_type=True" is ther right way or not, because the yt document suggest to include it.
Thank you, Junhwan
On Tue, Jan 26, 2016 at 2:15 PM, Nathan Goldbaum
wrote: Your 'radiuspc' field is a mesh field, but you're trying to compare it with particle fields. Mesh fields and particle fields don't have the same shape, which is why you're getting an error.
You may want to use the particle_radius field instead. If you want to create a derived field with different default units, you'll need to specify particle_type=True in your add_field call.
-Nathan
On Tue, Jan 26, 2016 at 2:12 PM, Junhwan Choi (최준환)
wrote: > Hi yt users, > > I try to make a particle angular momentum profile using the following script: > ================================ > import matplotlib as matplotlib > matplotlib.use('Agg') > import yt > import yt.units as units > import numpy as np > import matplotlib.pyplot as plt > > def _radiuspc(field, data): > return data[('radius')].in_units('pc') > yt.add_field('radiuspc', function=_radiuspc, units="pc") > > index = 45 > Nbin= 100 > rmax = 3000 > ds = yt.load("../DD%04d/DD%04d" % (index,index)) > ds.index > ad= ds.all_data() > center = ds.find_max(("gas", "density"))[1] > rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')]) > > sphere = ds.sphere(center, rmax*units.pc) > bulk_velocity = sphere.quantities['BulkVelocity']() > sphere.set_field_parameter('bulk_velocity', bulk_velocity) > > profile = yt.Profile1D(sphere, 'radiuspc', Nbin, x_min=rmin, > x_max=rmax, x_log=True, weight_field=None) > profile.add_fields(('all', 'particle_angular_momentum_x')) > profile.add_fields(('all', 'particle_angular_momentum_y')) > profile.add_fields(('all', 'particle_angular_momentum_z')) > > PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2 > + profile[('all', > 'particle_angular_momentum_y')]**2 > + profile[('all', > 'particle_angular_momentum_z')]**2) > > plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r') > > plt.xlabel('r [pc]') > plt.ylabel('pang') > ====================================== > And I got the following error: > ……….. > Traceback (most recent call last): > File "pang.py", line 26, in <module> > profile.add_fields(('all', 'particle_angular_momentum_x')) > File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line > 112, in add_fields > self._bin_chunk(chunk, fields, temp_storage) > File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line > 425, in _bin_chunk > rv = self._get_data(chunk, fields) > File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line > 240, in _get_data > arr[:,i] = chunk[field][filter].in_units(units) > File "/home/jhchoi/common/src/yt/yt/units/yt_array.py", line 1123, > in __getitem__ > ret = super(YTArray, self).__getitem__(item) > IndexError: index 1322 is out of bounds for axis 1 with size 1322 > > I do not understand what the problem is? > > One more question: > Is there any way to make accumulation density profile with yt.Profile1D(……)? > > Thank you in advance, > Junhwan > _______________________________________________ > yt-users mailing list > yt-users@lists.spacepope.org > http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
participants (2)
-
Junhwan Choi (최준환)
-
Nathan Goldbaum