Commit 20a124d4 authored by Jait Dixit's avatar Jait Dixit
Browse files

Add get_slice_list() to nifty_utilities

parent d9c94eb0
# -*- coding: utf-8 -*-
import numpy as np
from keepers import about
from itertools import product
def get_slice_list(shape, axes):
Yields a slice list which can be passed directly to d2o object or
numpy.ndarray to extract that slice of data.
:shape: Tuple
Shape of the target d2o object or numpy.ndarray
:axes: Tuple
Axes which are to be extracted
:returns: List
List of indices and/or slice objects
if not shape:
raise ValueError(about._errors.cstring("ERROR: shape cannot be None."))
if not all(axis < len(shape) for axis in axes):
raise ValueError(
about._errors.cstring("ERROR: axes(axis) do not match shape.")
axes_select = [0 if x in axes else 1 for x, y in enumerate(shape)]
axes_iterables = [range(y) for x, y in enumerate(shape) if x not in axes]
for index in product(*axes_iterables):
it_iter = iter(index)
slice_list = [
if axis else slice(None, None) for axis in axes_select
yield slice_list
def hermitianize_gaussian(x):
......@@ -108,8 +144,8 @@ def convert_nested_list_to_object_array(x):
dimension_counter = 0
current_extract = x
for i in xrange(len(possible_shape)):
if isinstance(current_extract, list) == False and\
isinstance(current_extract, tuple) == False:
if not isinstance(current_extract, list) and \
not isinstance(current_extract, tuple):
current_extract = current_extract[0]
dimension_counter += 1
......@@ -153,8 +189,10 @@ def field_map(ishape, function, *args):
result = np.empty_like(args[0])
for i in xrange(
ii = np.unravel_index(i, result.shape)
result[ii] = function(*map(
lambda z: get_clipped(z, ii), args)
result[ii] = function(
lambda z: get_clipped(z, ii), args
# result[ii] = function(*map(lambda z: z[ii], args))
return result
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment