[yt-svn] commit/yt: 11 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Tue Aug 23 09:55:00 PDT 2016
11 new commits in yt:
https://bitbucket.org/yt_analysis/yt/commits/95e25ffd05a3/
Changeset: 95e25ffd05a3
Branch: yt
User: chummels
Date: 2016-08-18 23:55:00+00:00
Summary: Adding check to AbsorptionSpectrum so it won't fail when given an array with no non-zero column densities.
Affected #: 1 file
diff -r 9d20cd224c72503091c17dbe14fe177504828708 -r 95e25ffd05a33b87230220660441bcbc047ea7b1 yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
--- a/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
+++ b/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
@@ -210,6 +210,7 @@
comm = _get_comm(())
njobs = min(comm.size, len(self.line_list))
+ mylog.info("Creating spectrum")
self._add_lines_to_spectrum(field_data, use_peculiar_velocity,
output_absorbers_file,
subgrid_resolution=subgrid_resolution,
@@ -307,6 +308,9 @@
# Normalization is in cm**-2, so column density must be as well
column_density = (field_data[continuum['field_name']] *
field_data['dl']).in_units('cm**-2')
+ if column_density.all() == 0:
+ mylog.info("Not adding continuum %s: insufficient column density" % continuum['label'])
+ continue
# redshift_eff field combines cosmological and velocity redshifts
if use_peculiar_velocity:
@@ -335,7 +339,7 @@
if valid_continuua.size == 0:
mylog.info("Not adding continuum %s: insufficient column density" %
continuum['label'])
- return
+ continue
pbar = get_pbar("Adding continuum - %s [%f A]: " % \
(continuum['label'], continuum['wavelength']),
@@ -379,6 +383,9 @@
# and deposit the lines into the spectrum
for line in parallel_objects(self.line_list, njobs=njobs):
column_density = field_data[line['field_name']] * field_data['dl']
+ if column_density.all() == 0:
+ mylog.info("Not adding line %s: insufficient column density" % line['label'])
+ continue
# redshift_eff field combines cosmological and velocity redshifts
# so delta_lambda gives the offset in angstroms from the rest frame
https://bitbucket.org/yt_analysis/yt/commits/1bafe83d1d13/
Changeset: 1bafe83d1d13
Branch: yt
User: chummels
Date: 2016-08-18 23:55:52+00:00
Summary: Relaxing LightRay mask to only use density field to mask out zero-valued cells.
Affected #: 1 file
diff -r 95e25ffd05a33b87230220660441bcbc047ea7b1 -r 1bafe83d1d13cb8df2bf8c7a5a147a104a19cf1c yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
--- a/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
+++ b/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
@@ -604,19 +604,18 @@
self.cosmology.t_from_z(ds["current_redshift"])
extra_attrs = {"data_type": "yt_light_ray"}
field_types = dict([(field, "grid") for field in data.keys()])
+
# Only return LightRay elements with non-zero density
- mask_field_units = ['K', 'cm**-3', 'g/cm**3']
- mask_field_units = [Unit(u) for u in mask_field_units]
- for f in data:
- for u in mask_field_units:
- if data[f].units.same_dimensions_as(u):
- mask = data[f] > 0
- if not np.any(mask):
- raise RuntimeError(
- "No zones along light ray with nonzero %s. "
- "Please modify your light ray trajectory." % (f,))
- for key in data.keys():
- data[key] = data[key][mask]
+ if 'density' in data: f = 'density'
+ if ('gas', 'density') in data: f = ('gas', 'density')
+ if 'density' in data or ('gas', 'density') in data:
+ mask = data[f] > 0
+ if not np.any(mask):
+ raise RuntimeError(
+ "No zones along light ray with nonzero %s. "
+ "Please modify your light ray trajectory." % (f,))
+ for key in data.keys():
+ data[key] = data[key][mask]
save_as_dataset(ds, filename, data, field_types=field_types,
extra_attrs=extra_attrs)
https://bitbucket.org/yt_analysis/yt/commits/5ee7b13a0998/
Changeset: 5ee7b13a0998
Branch: yt
User: chummels
Date: 2016-08-19 06:04:46+00:00
Summary: Adding check to ray elements with zero temperature or column density to skip them.
Affected #: 1 file
diff -r 1bafe83d1d13cb8df2bf8c7a5a147a104a19cf1c -r 5ee7b13a0998dca70717493bcf5ad315cbc4b314 yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
--- a/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
+++ b/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
@@ -308,7 +308,7 @@
# Normalization is in cm**-2, so column density must be as well
column_density = (field_data[continuum['field_name']] *
field_data['dl']).in_units('cm**-2')
- if column_density.all() == 0:
+ if (column_density == 0).all():
mylog.info("Not adding continuum %s: insufficient column density" % continuum['label'])
continue
@@ -383,7 +383,7 @@
# and deposit the lines into the spectrum
for line in parallel_objects(self.line_list, njobs=njobs):
column_density = field_data[line['field_name']] * field_data['dl']
- if column_density.all() == 0:
+ if (column_density == 0).all():
mylog.info("Not adding line %s: insufficient column density" % line['label'])
continue
@@ -469,6 +469,12 @@
# observed spectrum where it occurs and deposit a voigt profile
for i in parallel_objects(np.arange(n_absorbers), njobs=-1):
+ # if there is a ray element with temperature = 0 or column
+ # density = 0, skip it
+ if (thermal_b[i] == 0.) or (cdens[i] == 0.):
+ pbar.update(i)
+ continue
+
# the virtual window into which the line is deposited initially
# spans a region of 2 coarse spectral bins
# (one on each side of the center_index) but the window
https://bitbucket.org/yt_analysis/yt/commits/a1012d4be0c4/
Changeset: a1012d4be0c4
Branch: yt
User: chummels
Date: 2016-08-19 06:05:38+00:00
Summary: Switching LightRay mask to be on temperature instead of density, since that is what really matters.
Affected #: 1 file
diff -r 5ee7b13a0998dca70717493bcf5ad315cbc4b314 -r a1012d4be0c485afba250844bae7dbf063d63286 yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
--- a/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
+++ b/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
@@ -606,9 +606,9 @@
field_types = dict([(field, "grid") for field in data.keys()])
# Only return LightRay elements with non-zero density
- if 'density' in data: f = 'density'
- if ('gas', 'density') in data: f = ('gas', 'density')
- if 'density' in data or ('gas', 'density') in data:
+ if 'temperature' in data: f = 'temperature'
+ if ('gas', 'temperature') in data: f = ('gas', 'temperature')
+ if 'temperature' in data or ('gas', 'temperature') in data:
mask = data[f] > 0
if not np.any(mask):
raise RuntimeError(
https://bitbucket.org/yt_analysis/yt/commits/8e996c0ad242/
Changeset: 8e996c0ad242
Branch: yt
User: chummels
Date: 2016-08-19 06:21:17+00:00
Summary: Adding test for a ray and absorption spectrum with insufficient column density from Issue #1232.
Affected #: 1 file
diff -r a1012d4be0c485afba250844bae7dbf063d63286 -r 8e996c0ad2429c43e694319c75409a87bb6c8f82 yt/analysis_modules/absorption_spectrum/tests/test_absorption_spectrum.py
--- a/yt/analysis_modules/absorption_spectrum/tests/test_absorption_spectrum.py
+++ b/yt/analysis_modules/absorption_spectrum/tests/test_absorption_spectrum.py
@@ -34,6 +34,7 @@
GIZMO_PLUS = "gizmo_cosmology_plus/N128L16.param"
GIZMO_PLUS_SINGLE = "gizmo_cosmology_plus/snap_N128L16_151.hdf5"
ISO_GALAXY = "IsolatedGalaxy/galaxy0030/galaxy0030"
+FIRE = "FIRE_M12i_ref11/snapshot_600.hdf5"
@requires_file(COSMO_PLUS)
@requires_answer_testing()
@@ -473,3 +474,85 @@
# clean up
os.chdir(curdir)
shutil.rmtree(tmpdir)
+
+ at requires_file(FIRE)
+def test_absorption_spectrum_with_zero_field():
+ """
+ This test generates an absorption spectrum with some
+ particle dataset
+ """
+
+ # Set up in a temp dir
+ tmpdir = tempfile.mkdtemp()
+ curdir = os.getcwd()
+ os.chdir(tmpdir)
+
+ ds = load(FIRE)
+ lr = LightRay(ds)
+
+ # Define species and associated parameters to add to continuum
+ # Parameters used for both adding the transition to the spectrum
+ # and for fitting
+ # Note that for single species that produce multiple lines
+ # (as in the OVI doublet), 'numLines' will be equal to the number
+ # of lines, and f,gamma, and wavelength will have multiple values.
+
+ HI_parameters = {
+ 'name': 'HI',
+ 'field': 'H_number_density',
+ 'f': [.4164],
+ 'Gamma': [6.265E8],
+ 'wavelength': [1215.67],
+ 'mass': 1.00794,
+ 'numLines': 1,
+ 'maxN': 1E22, 'minN': 1E11,
+ 'maxb': 300, 'minb': 1,
+ 'maxz': 6, 'minz': 0,
+ 'init_b': 30,
+ 'init_N': 1E14
+ }
+
+ species_dicts = {'HI': HI_parameters}
+
+
+ # Get all fields that need to be added to the light ray
+ fields = [('gas','temperature')]
+ for s, params in species_dicts.items():
+ fields.append(params['field'])
+
+ # With a single dataset, a start_position and
+ # end_position or trajectory must be given.
+ # Trajectory should be given as (r, theta, phi)
+ lr.make_light_ray(
+ start_position=ds.arr([0., 0., 0.], 'unitary'),
+ end_position=ds.arr([1., 1., 1.], 'unitary'),
+ solution_filename='test_lightraysolution.txt',
+ data_filename='test_lightray.h5',
+ fields=fields)
+
+ # Create an AbsorptionSpectrum object extending from
+ # lambda = 900 to lambda = 1800, with 10000 pixels
+ sp = AbsorptionSpectrum(900.0, 1400.0, 50000)
+
+ # Iterate over species
+ for s, params in species_dicts.items():
+ # Iterate over transitions for a single species
+ for i in range(params['numLines']):
+ # Add the lines to the spectrum
+ sp.add_line(
+ s, params['field'],
+ params['wavelength'][i], params['f'][i],
+ params['Gamma'][i], params['mass'],
+ label_threshold=1.e10)
+
+
+ # Make and save spectrum
+ wavelength, flux = sp.make_spectrum(
+ 'test_lightray.h5',
+ output_file='test_spectrum.h5',
+ line_list_file='test_lines.txt',
+ use_peculiar_velocity=True)
+
+ # clean up
+ os.chdir(curdir)
+ shutil.rmtree(tmpdir)
https://bitbucket.org/yt_analysis/yt/commits/cf3fda96c207/
Changeset: cf3fda96c207
Branch: yt
User: chummels
Date: 2016-08-19 06:40:57+00:00
Summary: Adding explicit requirement for 'temperature' field in AbsorptionSpectrum
Affected #: 1 file
diff -r 8e996c0ad2429c43e694319c75409a87bb6c8f82 -r cf3fda96c2076aaaebf8b36f09b2cdd007551d7a yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
--- a/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
+++ b/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
@@ -203,6 +203,13 @@
input_ds = input_file
field_data = input_ds.all_data()
+ # temperature field required to calculate voigt profile widths
+ if ('temperature' not in input_ds.derived_field_list) and \
+ (('gas', 'temperature') not in input_ds.derived_field_list):
+ raise RuntimeError(
+ "('gas', 'temperature') field required to be present in %s "
+ "for AbsorptionSpectrum to function." % input_file)
+
self.tau_field = np.zeros(self.lambda_field.size)
self.absorbers_list = []
https://bitbucket.org/yt_analysis/yt/commits/aa2ad4a0ca1f/
Changeset: aa2ad4a0ca1f
Branch: yt
User: chummels
Date: 2016-08-19 06:47:31+00:00
Summary: Updating docs for LightRay to note requirement of temperature field.
Affected #: 1 file
diff -r cf3fda96c2076aaaebf8b36f09b2cdd007551d7a -r aa2ad4a0ca1f5de1663d388cc496b402df432e78 doc/source/analyzing/analysis_modules/light_ray_generator.rst
--- a/doc/source/analyzing/analysis_modules/light_ray_generator.rst
+++ b/doc/source/analyzing/analysis_modules/light_ray_generator.rst
@@ -98,7 +98,10 @@
Use either ``end_position`` or ``trajectory``, not both.
Default: None.
-* ``fields`` (*list*): A list of fields for which to get data.
+* ``fields`` (*list*): A list of fields for which to get data. If you
+ intend to use this ray with the :ref:`absorption_spectrum` infrastructure,
+ make sure to include the 'temperature' field, as it is required to
+ calculate the width of the spectral features.
Default: None.
* ``solution_filename`` (*string*): Path to a text file where the
https://bitbucket.org/yt_analysis/yt/commits/96461b351d3d/
Changeset: 96461b351d3d
Branch: yt
User: chummels
Date: 2016-08-19 15:16:34+00:00
Summary: Removing unused unit import to match flake8 standard.
Affected #: 1 file
diff -r aa2ad4a0ca1f5de1663d388cc496b402df432e78 -r 96461b351d3d733c550c8033dfafe76a9386cbff yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
--- a/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
+++ b/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
@@ -21,8 +21,6 @@
load
from yt.frontends.ytdata.utilities import \
save_as_dataset
-from yt.units.unit_object import \
- Unit
from yt.units.yt_array import \
YTArray
from yt.utilities.cosmology import \
https://bitbucket.org/yt_analysis/yt/commits/0d4b3cc2c883/
Changeset: 0d4b3cc2c883
Branch: yt
User: chummels
Date: 2016-08-19 16:28:47+00:00
Summary: Making temperature field automatically added to LightRay generation
Affected #: 1 file
diff -r 96461b351d3d733c550c8033dfafe76a9386cbff -r 0d4b3cc2c8835c1415faccddf355e389e35aed2f yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
--- a/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
+++ b/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
@@ -389,7 +389,11 @@
# Initialize data structures.
self._data = {}
+ # temperature field is automatically added to fields
if fields is None: fields = []
+ if (('gas', 'temperature') not in fields) and \
+ ('temperature' not in fields):
+ fields.append(('gas', 'temperature'))
data_fields = fields[:]
all_fields = fields[:]
all_fields.extend(['dl', 'dredshift', 'redshift'])
https://bitbucket.org/yt_analysis/yt/commits/61394c756ffe/
Changeset: 61394c756ffe
Branch: yt
User: chummels
Date: 2016-08-19 16:29:16+00:00
Summary: Removing comment in docs about including temperature field in LightRay since done automatically.
Affected #: 1 file
diff -r 0d4b3cc2c8835c1415faccddf355e389e35aed2f -r 61394c756ffecef572e5c2a8fb8a57a5d0a72ee5 doc/source/analyzing/analysis_modules/light_ray_generator.rst
--- a/doc/source/analyzing/analysis_modules/light_ray_generator.rst
+++ b/doc/source/analyzing/analysis_modules/light_ray_generator.rst
@@ -98,10 +98,7 @@
Use either ``end_position`` or ``trajectory``, not both.
Default: None.
-* ``fields`` (*list*): A list of fields for which to get data. If you
- intend to use this ray with the :ref:`absorption_spectrum` infrastructure,
- make sure to include the 'temperature' field, as it is required to
- calculate the width of the spectral features.
+* ``fields`` (*list*): A list of fields for which to get data.
Default: None.
* ``solution_filename`` (*string*): Path to a text file where the
https://bitbucket.org/yt_analysis/yt/commits/c2ff880b5787/
Changeset: c2ff880b5787
Branch: yt
User: chummels
Date: 2016-08-19 22:27:17+00:00
Summary: Adding info to output message.
Affected #: 1 file
diff -r 61394c756ffecef572e5c2a8fb8a57a5d0a72ee5 -r c2ff880b5787cfe955d8871bc548a8d18b68303c yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
--- a/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
+++ b/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
@@ -344,7 +344,7 @@
continuum['normalization']) > min_tau) &
(right_index - left_index > 1))[0]
if valid_continuua.size == 0:
- mylog.info("Not adding continuum %s: insufficient column density" %
+ mylog.info("Not adding continuum %s: insufficient column density or out of range" %
continuum['label'])
continue
Repository URL: https://bitbucket.org/yt_analysis/yt/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the yt-svn
mailing list