本文整理匯總了Python中dask.array.from_delayed方法的典型用法代碼示例。如果您正苦於以下問題:Python array.from_delayed方法的具體用法?Python array.from_delayed怎麽用?Python array.from_delayed使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類dask.array
的用法示例。
在下文中一共展示了array.from_delayed方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _apply_window
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def _apply_window(da, dims, window_type='hanning'):
"""Creating windows in dimensions dims."""
if window_type not in ['hanning']:
raise NotImplementedError("Only hanning window is supported for now.")
numpy_win_func = getattr(np, window_type)
if da.chunks:
def dask_win_func(n):
return dsar.from_delayed(
delayed(numpy_win_func, pure=True)(n),
(n,), float)
win_func = dask_win_func
else:
win_func = numpy_win_func
windows = [xr.DataArray(win_func(len(da[d])),
dims=da[d].dims, coords=da[d].coords) for d in dims]
return da * reduce(operator.mul, windows[::-1])
示例2: delayed_dask_stack
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def delayed_dask_stack():
"""A 4D (20, 10, 10, 10) delayed dask array, simulates disk io."""
# we will return a dict with a 'calls' variable that tracks call count
output = {'calls': 0}
# create a delayed version of function that simply generates np.arrays
# but also counts when it has been called
@dask.delayed
def get_array():
nonlocal output
output['calls'] += 1
return np.random.rand(10, 10, 10)
# then make a mock "timelapse" of 3D stacks
# see https://napari.org/tutorials/applications/dask.html for details
_list = [get_array() for fn in range(20)]
output['stack'] = da.stack(
[da.from_delayed(i, shape=(10, 10, 10), dtype=np.float) for i in _list]
)
assert output['stack'].shape == (20, 10, 10, 10)
return output
示例3: __call__
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def __call__(self, datasets, **info):
"""Create the composite by scaling the DNB data using a histogram equalization method.
:param datasets: 2-element tuple (Day/Night Band data, Solar Zenith Angle data)
:param **info: Miscellaneous metadata for the newly produced composite
"""
if len(datasets) != 2:
raise ValueError("Expected 2 datasets, got %d" % (len(datasets), ))
dnb_data = datasets[0]
sza_data = datasets[1]
delayed = dask.delayed(self._run_dnb_normalization)(dnb_data.data, sza_data.data)
output_dataset = dnb_data.copy()
output_data = da.from_delayed(delayed, dnb_data.shape, dnb_data.dtype)
output_dataset.data = output_data.rechunk(dnb_data.data.chunks)
info = dnb_data.attrs.copy()
info.update(self.attrs)
info["standard_name"] = "equalized_radiance"
info["mode"] = "L"
output_dataset.attrs = info
return output_dataset
示例4: get_full_lonlats
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def get_full_lonlats(self):
"""Get the interpolated lons/lats."""
if self.lons is not None and self.lats is not None:
return self.lons, self.lats
raw_lats = np.hstack((self["EARTH_LOCATION_FIRST"][:, [0]],
self["EARTH_LOCATIONS"][:, :, 0],
self["EARTH_LOCATION_LAST"][:, [0]]))
raw_lons = np.hstack((self["EARTH_LOCATION_FIRST"][:, [1]],
self["EARTH_LOCATIONS"][:, :, 1],
self["EARTH_LOCATION_LAST"][:, [1]]))
self.lons, self.lats = self._get_full_lonlats(raw_lons, raw_lats)
self.lons = da.from_delayed(self.lons, dtype=self["EARTH_LOCATIONS"].dtype,
shape=(self.scanlines, self.pixels))
self.lats = da.from_delayed(self.lats, dtype=self["EARTH_LOCATIONS"].dtype,
shape=(self.scanlines, self.pixels))
return self.lons, self.lats
示例5: three_d_effect
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def three_d_effect(img, **kwargs):
"""Create 3D effect using convolution."""
w = kwargs.get('weight', 1)
LOG.debug("Applying 3D effect with weight %.2f", w)
kernel = np.array([[-w, 0, w],
[-w, 1, w],
[-w, 0, w]])
mode = kwargs.get('convolve_mode', 'same')
def func(band_data, kernel=kernel, mode=mode, index=None):
del index
delay = dask.delayed(_three_d_effect_delayed)(band_data, kernel, mode)
new_data = da.from_delayed(delay, shape=band_data.shape, dtype=band_data.dtype)
return new_data
return apply_enhancement(img.data, func, separate=True, pass_dask=True)
示例6: _first_block
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def _first_block(dask_object):
"""Extract the first block / partition from a dask object
"""
if isinstance(dask_object, da.Array):
if dask_object.ndim > 1 and dask_object.numblocks[-1] != 1:
raise NotImplementedError(
"IID estimators require that the array "
"blocked only along the first axis. "
"Rechunk your array before fitting."
)
shape = (dask_object.chunks[0][0],)
if dask_object.ndim > 1:
shape = shape + (dask_object.chunks[1][0],)
return da.from_delayed(
dask_object.to_delayed().flatten()[0], shape, dask_object.dtype
)
if isinstance(dask_object, dd._Frame):
return dask_object.get_partition(0)
else:
return dask_object
示例7: _read_delayed
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def _read_delayed(self) -> da.core.Array:
with imageio.get_reader(self._file) as reader:
# Store length as it is used a bunch
image_length = reader.get_length()
# Handle single image formats like png, jpeg, etc
if image_length == 1:
return da.from_array(self._get_data(self._file, 0))
# Handle many image formats like gif, mp4, etc
elif image_length > 1:
# Get a sample image
sample = self._get_data(self._file, 0)
# Create operating shape for the final dask array by prepending
# image length to a tuple of ones that is the same length as
# the sample shape
operating_shape = (image_length,) + ((1,) * len(sample.shape))
# Create numpy array of empty arrays for delayed get data
# functions
lazy_arrays = np.ndarray(operating_shape, dtype=object)
for indicies, _ in np.ndenumerate(lazy_arrays):
lazy_arrays[indicies] = da.from_delayed(
delayed(self._get_data)(self._file, indicies[0]),
shape=sample.shape,
dtype=sample.dtype,
)
# Block them into a single dask array
return da.block(lazy_arrays.tolist())
# Catch all other image types as unsupported
# https://imageio.readthedocs.io/en/stable/userapi.html#imageio.core.format.Reader.get_length
else:
raise exceptions.UnsupportedFileFormatError(self._file)
示例8: empty_dask_array
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def empty_dask_array(shape, dtype=float, chunks=None):
# a dask array that errors if you try to comput it
def raise_if_computed():
raise ValueError('Triggered forbidden computation')
a = dsa.from_delayed(dask.delayed(raise_if_computed)(), shape, dtype)
if chunks is not None:
a = a.rechunk(chunks)
return a
示例9: read_bed
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def read_bed(filepath, nrows, ncols):
from dask.array import concatenate, from_delayed
from dask.delayed import delayed
chunk_size = 1024
row_start = 0
col_xs = []
while row_start < nrows:
row_end = min(row_start + chunk_size, nrows)
col_start = 0
row_xs = []
while col_start < ncols:
col_end = min(col_start + chunk_size, ncols)
x = delayed(_read_bed_chunk)(
filepath, nrows, ncols, row_start, row_end, col_start, col_end
)
shape = (row_end - row_start, col_end - col_start)
row_xs += [from_delayed(x, shape, float64)]
col_start = col_end
col_xs += [concatenate(row_xs, axis=1)]
row_start = row_end
X = concatenate(col_xs, axis=0)
return X
示例10: parallel_gradient_search
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def parallel_gradient_search(data, src_x, src_y, dst_x, dst_y,
src_gradient_xl, src_gradient_xp,
src_gradient_yl, src_gradient_yp,
dst_mosaic_locations, dst_slices,
**kwargs):
"""Run gradient search in parallel in input area coordinates."""
method = kwargs.get('method', 'bilinear')
# Determine the number of bands
bands = np.array([arr.shape[0] for arr in data if arr is not None])
num_bands = np.max(bands)
if np.any(bands != num_bands):
raise ValueError("All source data chunks have to have the same number of bands")
chunks = {}
is_pad = False
# Collect co-located target chunks
for i, arr in enumerate(data):
if arr is None:
is_pad = True
res = da.full((num_bands, dst_slices[i][1] - dst_slices[i][0],
dst_slices[i][3] - dst_slices[i][2]), np.nan)
else:
is_pad = False
res = dask.delayed(_gradient_resample_data)(
arr.astype(np.float64),
src_x[i], src_y[i],
src_gradient_xl[i], src_gradient_xp[i],
src_gradient_yl[i], src_gradient_yp[i],
dst_x[i], dst_y[i],
method=method)
res = da.from_delayed(res, (num_bands, ) + dst_x[i].shape,
dtype=np.float64)
if dst_mosaic_locations[i] in chunks:
if not is_pad:
chunks[dst_mosaic_locations[i]].append(res)
else:
chunks[dst_mosaic_locations[i]] = [res, ]
return _concatenate_chunks(chunks)
示例11: get_angles
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def get_angles(self, angle_id):
"""Get sun-satellite viewing angles."""
sunz40km = self._data["ang"][:, :, 0] * 1e-2
satz40km = self._data["ang"][:, :, 1] * 1e-2
azidiff40km = self._data["ang"][:, :, 2] * 1e-2
try:
from geotiepoints.interpolator import Interpolator
except ImportError:
logger.warning("Could not interpolate sun-sat angles, "
"python-geotiepoints missing.")
self.sunz, self.satz, self.azidiff = sunz40km, satz40km, azidiff40km
else:
cols40km = np.arange(24, 2048, 40)
cols1km = np.arange(2048)
lines = sunz40km.shape[0]
rows40km = np.arange(lines)
rows1km = np.arange(lines)
along_track_order = 1
cross_track_order = 3
satint = Interpolator(
[sunz40km, satz40km, azidiff40km], (rows40km, cols40km),
(rows1km, cols1km), along_track_order, cross_track_order)
self.sunz, self.satz, self.azidiff = delayed(satint.interpolate, nout=3)()
self.sunz = da.from_delayed(self.sunz, (lines, 2048), sunz40km.dtype)
self.satz = da.from_delayed(self.satz, (lines, 2048), satz40km.dtype)
self.azidiff = da.from_delayed(self.azidiff, (lines, 2048), azidiff40km.dtype)
return create_xarray(getattr(self, ANGLES[angle_id]))
示例12: navigate
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def navigate(self):
"""Get the longitudes and latitudes of the scene."""
lons40km = self._data["pos"][:, :, 1] * 1e-4
lats40km = self._data["pos"][:, :, 0] * 1e-4
try:
from geotiepoints import SatelliteInterpolator
except ImportError:
logger.warning("Could not interpolate lon/lats, "
"python-geotiepoints missing.")
self.lons, self.lats = lons40km, lats40km
else:
cols40km = np.arange(24, 2048, 40)
cols1km = np.arange(2048)
lines = lons40km.shape[0]
rows40km = np.arange(lines)
rows1km = np.arange(lines)
along_track_order = 1
cross_track_order = 3
satint = SatelliteInterpolator(
(lons40km, lats40km), (rows40km, cols40km), (rows1km, cols1km),
along_track_order, cross_track_order)
self.lons, self.lats = delayed(satint.interpolate, nout=2)()
self.lons = da.from_delayed(self.lons, (lines, 2048), lons40km.dtype)
self.lats = da.from_delayed(self.lats, (lines, 2048), lats40km.dtype)
示例13: get_dataset
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def get_dataset(self, key, info):
"""Load a dataset."""
if self._channel != key.name:
return
logger.debug('Reading %s.', key.name)
# FIXME: get this from MTD_MSIL1C.xml
quantification_value = 10000.
jp2 = glymur.Jp2k(self.filename)
bitdepth = 0
for seg in jp2.codestream.segment:
try:
bitdepth = max(bitdepth, seg.bitdepth[0])
except AttributeError:
pass
jp2.dtype = (np.uint8 if bitdepth <= 8 else np.uint16)
# Initialize the jp2 reader / doesn't work in a multi-threaded context.
# jp2[0, 0]
# data = da.from_array(jp2, chunks=CHUNK_SIZE) / quantification_value * 100
data = da.from_delayed(delayed(jp2.read)(), jp2.shape, jp2.dtype)
data = data.rechunk(CHUNK_SIZE) / quantification_value * 100
proj = DataArray(data, dims=['y', 'x'])
proj.attrs = info.copy()
proj.attrs['units'] = '%'
proj.attrs['platform_name'] = self.platform_name
return proj
示例14: lookup
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def lookup(img, **kwargs):
"""Assign values to channels based on a table."""
luts = np.array(kwargs['luts'], dtype=np.float32) / 255.0
def func(band_data, luts=luts, index=-1):
# NaN/null values will become 0
lut = luts[:, index] if len(luts.shape) == 2 else luts
band_data = band_data.clip(0, lut.size - 1).astype(np.uint8)
new_delay = dask.delayed(_lookup_delayed)(lut, band_data)
new_data = da.from_delayed(new_delay, shape=band_data.shape,
dtype=luts.dtype)
return new_data
return apply_enhancement(img.data, func, separate=True, pass_dask=True)
示例15: pairwise_distances_argmin_min
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import from_delayed [as 別名]
def pairwise_distances_argmin_min(
X: ArrayLike,
Y: ArrayLike,
axis: int = 1,
metric: Union[str, Callable[[ArrayLike, ArrayLike], float]] = "euclidean",
batch_size: Optional[int] = None,
metric_kwargs: Optional[Dict[str, Any]] = None,
):
if batch_size is not None:
msg = "'batch_size' is deprecated. Use sklearn.config_context instead.'"
warnings.warn(msg, FutureWarning)
XD = X.to_delayed().flatten().tolist()
func = delayed(metrics.pairwise_distances_argmin_min, pure=True, nout=2)
blocks = [func(x, Y, metric=metric, metric_kwargs=metric_kwargs) for x in XD]
argmins, mins = zip(*blocks)
argmins = [
da.from_delayed(block, (chunksize,), np.int64)
for block, chunksize in zip(argmins, X.chunks[0])
]
# Scikit-learn seems to always use float64
mins = [
da.from_delayed(block, (chunksize,), "f8")
for block, chunksize in zip(mins, X.chunks[0])
]
argmins = da.concatenate(argmins)
mins = da.concatenate(mins)
return argmins, mins