[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