-
-
Save jni/a8c7205fc947c0afcc73004a8232f461 to your computer and use it in GitHub Desktop.
showing pims_nd2/nd2reader failures
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ python test_nd2.py ~/data/jens-eggs/20180427\ JenlinkerCompounds002.nd2 --mode nd2reader | |
/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/nd2reader/common_raw_metadata.py:94: RuntimeWarning: Reported average frame interval (600274.8 ms) doesn't match the set interval (600000.0 ms). Using the average now. | |
warnings.warn(message % (avg_interval, interval), RuntimeWarning) | |
(10192, 1200, 1600) | |
0 | |
Traceback (most recent call last): | |
File "test_nd2.py", line 57, in <module> | |
print(nd2dask(args.filename, mode=args.mode).min().compute()) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/base.py", line 156, in compute | |
(result,) = compute(self, traverse=False, **kwargs) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/base.py", line 398, in compute | |
results = schedule(dsk, keys, **kwargs) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/threaded.py", line 76, in get | |
pack_exception=pack_exception, **kwargs) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/local.py", line 459, in get_async | |
raise_exception(exc, tb) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/compatibility.py", line 112, in reraise | |
raise exc | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/local.py", line 230, in execute_task | |
result = _execute_task(task, data) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 118, in _execute_task | |
args2 = [_execute_task(a, cache) for a in args] | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 118, in <listcomp> | |
args2 = [_execute_task(a, cache) for a in args] | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 118, in _execute_task | |
args2 = [_execute_task(a, cache) for a in args] | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 118, in <listcomp> | |
args2 = [_execute_task(a, cache) for a in args] | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 119, in _execute_task | |
return func(*args2) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/slicerator.py", line 187, in __getitem__ | |
return self._get(indices) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/pims/base_frames.py", line 148, in __getitem__ | |
return self.get_frame(key) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/pims/base_frames.py", line 642, in get_frame | |
result = self._get_frame_wrapped(**coords) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/nd2reader/reader.py", line 77, in get_frame_2D | |
return self._parser.get_image_by_attributes(t, v, c_name, z, y, x) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/nd2reader/parser.py", line 98, in get_image_by_attributes | |
height, width) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/nd2reader/parser.py", line 256, in _get_raw_image_data | |
data = read_chunk(self._fh, chunk) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/nd2reader/common.py", line 65, in read_chunk | |
raise ValueError("The ND2 file seems to be corrupted.") | |
ValueError: The ND2 file seems to be corrupted. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ python test_nd2.py ~/data/jens-eggs/20180427\ JenlinkerCompounds002.nd2 | |
(10192, 1200, 1600) | |
0 | |
Traceback (most recent call last): | |
File "test_nd2.py", line 57, in <module> | |
print(nd2dask(args.filename, mode=args.mode).min().compute()) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/base.py", line 156, in compute | |
(result,) = compute(self, traverse=False, **kwargs) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/base.py", line 398, in compute | |
results = schedule(dsk, keys, **kwargs) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/threaded.py", line 76, in get | |
pack_exception=pack_exception, **kwargs) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/local.py", line 459, in get_async | |
raise_exception(exc, tb) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/compatibility.py", line 112, in reraise | |
raise exc | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/local.py", line 230, in execute_task | |
result = _execute_task(task, data) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 118, in _execute_task | |
args2 = [_execute_task(a, cache) for a in args] | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 118, in <listcomp> | |
args2 = [_execute_task(a, cache) for a in args] | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 118, in _execute_task | |
args2 = [_execute_task(a, cache) for a in args] | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 118, in <listcomp> | |
args2 = [_execute_task(a, cache) for a in args] | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/dask/core.py", line 119, in _execute_task | |
return func(*args2) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/slicerator.py", line 187, in __getitem__ | |
return self._get(indices) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/pims/base_frames.py", line 148, in __getitem__ | |
return self.get_frame(key) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/pims/base_frames.py", line 642, in get_frame | |
result = self._get_frame_wrapped(**coords) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/pims_nd2/nd2reader.py", line 189, in get_frame_2D | |
h.Lim_FileGetImageData(self._handle, i, self._buf_p, self._buf_md) | |
File "/home/jni/miniconda3/envs/cf/lib/python3.6/site-packages/pims_nd2/ND2SDK.py", line 90, in LIMRESULT | |
raise Exception(error) | |
Exception: LIM_ERR_FAIL |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
import argparse | |
import numpy as np | |
from dask import array as da, delayed | |
import matplotlib.pyplot as plt | |
from pims import ND2_Reader as pnd2 | |
from nd2reader import ND2Reader as nd2r | |
def nd2dask(filename, mode='pims'): | |
if mode == 'pims': | |
# for some reason, the expt/replicates/stage position axis has | |
# different name in pims_nd2 and nd2reader | |
frames = pnd2(filename) | |
expt = 'm' | |
elif mode == 'nd2reader': | |
frames = nd2r(filename) | |
expt = 'v' | |
num_channels = frames.sizes['c'] | |
num_expts = frames.sizes[expt] | |
num_timepoints = frames.sizes['t'] | |
frames.bundle_axes = 'yx' | |
frames.iter_axes = f'c{expt}t' | |
nframes = len(frames) | |
arr_list = [da.from_delayed(delayed(frames.__getitem__)(i), | |
shape=frames.frame_shape, | |
dtype=frames.pixel_type) | |
for i in range(nframes)] | |
array = da.stack(arr_list, axis=0) | |
return array | |
parser = argparse.ArgumentParser() | |
parser.add_argument('filename', help='the file to compute on') | |
parser.add_argument('-m', '--mode', help='either pims or nd2reader', | |
default='pims') | |
parser.add_argument('-i', '--index', help='the index for random access', | |
type=int, default=11) | |
parser.add_argument('-s', '--show', help='show the opened frame', | |
action='store_true', default=False) | |
if __name__ == '__main__': | |
args = parser.parse_args() | |
arr = nd2dask(args.filename, mode=args.mode) | |
print(arr.shape) | |
# can put any spot in the array here, it'll work | |
arr_idx = np.asarray(arr[args.index]) | |
print(arr_idx.min()) | |
if args.show: | |
plt.imshow(arr_idx) | |
plt.show() | |
# now iterating through the whole array crashes | |
print(nd2dask(args.filename, mode=args.mode).min().compute()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment