Divide by zero error.
Encountered this issue with native resolution sampling. The following MWE reproduces the issue:
from delayed_image import DelayedChannelConcat
import delayed_image
import kwimage
import numpy as np
r = delayed_image.DelayedLoad.demo(channels='r', overviews=6, dsize=(219, 219))
g = delayed_image.DelayedLoad.demo(channels='g', overviews=6, dsize=(219, 219))
b = delayed_image.DelayedLoad.demo(channels='b', overviews=6, dsize=(219, 219))
concat = DelayedChannelConcat([r.warp({}), g.warp({}), b.warp({})])
mat = kwimage.Affine(np.array([[ 9.99169700e-01, 0.00000000e+00, -5.82076609e-11],
[ 0.00000000e+00, 9.99169700e-01, 2.91038305e-11],
[ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00]]))
delayed_frame = concat.warp(mat)
delayed_frame.write_network_text()
requested_space_slice = (slice(-21.0, 204.0, None), slice(219, 444.0, None))
space_pad = [(0, 0), (0, 0)]
delayed_crop = delayed_frame.crop(requested_space_slice,
clip=False, wrap=False,
pad=space_pad)
delayed_crop = delayed_crop.prepare()
delayed_crop = delayed_crop.optimize()
The tree directly before optimize is:
╙── Warp dsize=(225,225),transform={offset=(0.0000,21.0000)}
╽
Crop dsize=(0,204.0000),space_slice=(slice(0,204.0,None),slice(219,219,None))
╽
Warp dsize=(219,219),transform={offset=(-0.0000,0.0000),scale=0.9992}
╽
ChannelConcat axis=2
├─╼ Warp dsize=(219,219),transform={}
│ ╽
│ Load channels=r,dsize=(219,219),num_overviews=6,fname=astro_dsize=(219,219),overviews=6.tif
├─╼ Warp dsize=(219,219),transform={}
│ ╽
│ Load channels=g,dsize=(219,219),num_overviews=6,fname=astro_dsize=(219,219),overviews=6.tif
└─╼ Warp dsize=(219,219),transform={}
╽
Load channels=b,dsize=(219,219),num_overviews=6,fname=astro_dsize=(219,219),overviews=6.tif
And optimize causes the error:
~/.pyenv/versions/3.11.2/lib/python3.11/site-packages/delayed_image/helpers.py in _swap_warp_after_crop(root_region_bounds, tf_leaf_to_root)
157
158 # TODO: test the case where old_w or old_h are zero
--> 159 padw = int(np.ceil(leaf_w / old_w))
160 padh = int(np.ceil(leaf_h / old_h))
161 else:
OverflowError: cannot convert float infinity to integer