Skip to content

code bug #15

@cindy12-gao

Description

@cindy12-gao

I ran the script by the data of myself. the N5 parameter is {"compression":{"type":"gzip","useZlib":false,"level":-1},"pixelResolution":[0.18026115154068303,0.18026115154068303,0.9994],"downsamplingFactors":[1,1,1],"blockSize":[64,64,5],"dataType":"uint8","dimensions":[3904,3884,14]}, there alway is an error in the _method.py, line 80,
def _count_reduce_items(arr, axis, keepdims=False, where=True):
# fast-path for the default case
if where is True:
# no boolean mask given, calculate items according to axis
if axis is None:
axis = tuple(range(arr.ndim))
elif not isinstance(axis, tuple):
axis = (axis,)
items = 1
for ax in axis: #edit by gaoxinwei
items *= arr.shape[mu.normalize_axis_index(ax, arr.ndim)]
items = nt.intp(items)
the axis is 0, so in the ax in axis, it stopped.
Could you help me the find the reason? thank you ~

the main script as follow:

import numpy as np
import zarr, tifffile
from bigstream.align import alignment_pipeline
from bigstream.transform import apply_transform

file paths to tutorial data

replace the capitalized text below with the path to your copy of the bigstream repository

fix_path = 'D:/bigatream/r1.n5'
mov_path = 'D:/bigatream/r2.n5'

create Zarr file objects

fix_zarr = zarr.open(store=zarr.N5Store(fix_path), mode='r')
mov_zarr = zarr.open(store=zarr.N5Store(mov_path), mode='r')

get pointers to the low res scale level

still just pointers, no data loaded into memory yet

fix_lowres = fix_zarr['/lowres']
mov_lowres = mov_zarr['/lowres']

we need the voxel spacings for the low res data sets

we can compute them from the low res data set metadata

fix_meta = fix_lowres.attrs.asdict()
mov_meta = mov_lowres.attrs.asdict()
fix_lowres_spacing = np.array(fix_meta['pixelResolution']) * fix_meta['downsamplingFactors']
mov_lowres_spacing = np.array(mov_meta['pixelResolution']) * mov_meta['downsamplingFactors']
fix_lowres_spacing = fix_lowres_spacing[::-1] # put in zyx order to be consistent with image data
mov_lowres_spacing = mov_lowres_spacing[::-1]

read small image data into memory as numpy arrays

fix_lowres_data = fix_lowres[...]
mov_lowres_data = mov_lowres[...]

sanity check: print the voxel spacings and lowres dataset shapes

print(fix_lowres_spacing, mov_lowres_spacing)
print(fix_lowres_data.shape, mov_lowres_data.shape)

get pointers to the high res scale level

fix_highres = fix_zarr['/highres']
mov_highres = mov_zarr['/highres']

we need the voxel spacings for the high res data sets

we can compute them from the high res data set metadata

fix_meta = fix_highres.attrs.asdict()
mov_meta = mov_highres.attrs.asdict()
fix_highres_spacing = np.array(fix_meta['pixelResolution']) * fix_meta['downsamplingFactors']
mov_highres_spacing = np.array(mov_meta['pixelResolution']) * mov_meta['downsamplingFactors']
fix_highres_spacing = fix_highres_spacing[::-1]
mov_highres_spacing = mov_highres_spacing[::-1]

sanity check: print the voxel spacings and lowres dataset shapes

print(fix_highres_spacing, mov_highres_spacing)
print(fix_highres.shape, mov_highres.shape)

define arguments for the feature point and ransac stage (you'll understand these later)

ransac_kwargs = {'blob_sizes':[6, 20]}
#ransac_kwargs = {'blob_sizes':[6, 20]}

define arguments for the gradient descent stage (you'll understand these later)

affine_kwargs = {
'shrink_factors':(2,),
'smooth_sigmas':(2.5,),
'optimizer_args':{
'learningRate':0.25,
'minStep':0.,
'numberOfIterations':400,
},
}

define the alignment steps

steps = [('ransac', ransac_kwargs), ('affine', affine_kwargs)]

execute the alignment

affine = alignment_pipeline(
fix_lowres_data, mov_lowres_data,
fix_lowres_spacing, mov_lowres_spacing,
steps,
)

resample the moving image data using the transform you found

aligned = apply_transform(
fix_lowres_data, mov_lowres_data,
fix_lowres_spacing, mov_lowres_spacing,
transform_list=[affine,],
)

write results

np.savetxt('./affine.mat', affine)
tifffile.imsave('./affine_lowres.tiff', aligned)

load precomputed result (handy to use later if you've already run the cell)

affine = np.loadtxt('./affine.mat')

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions