In [19]:
# Check tesselation with blocks

import numpy as np

# shape of whole block, subblocks, overlap
shape = (1250, 1250, 125)
block = (1024, 1024, 50)
overlap = (20,20,4)

sX = block[0]
sY = block[1]
sZ = block[2]

oX = overlap[0]
oY = overlap[1]
oZ = overlap[2]

nX = int( np.ceil( float( shape[0] )/ sX ) ) 
nY = int( np.ceil( float( shape[1] )/ sY ) )
nZ = int( np.ceil( float( shape[2] )/ sZ ) )

nBlocks = nX * nY * nZ

print nX
print nY
print nZ

print "Total Number of Blocks:", nBlocks

slicings = []
for x in xrange(nX):

    # X range
    startX = x * sX
    if x != 0:
        startX -= oX
    endX = (x + 1) * sX + oX
    if endX > shape[0]:
        endX = shape[0]

    for y in xrange(nY):

        # Y range
        startY = y * sY
        if y != 0:
            startY -= oY
        endY = (y + 1) * sY + oY
        if endY > shape[1]:
            endY = shape[1]

        for z in xrange(nZ):

            # Z range
            startZ = z * sZ
            if z != 0:
                startZ -= oZ
            endZ = (z + 1) * sZ + oZ
            if endZ > shape[2]:
                endZ = shape[2]

            slicings.append( np.s_[startX:endX,startY:endY,startZ:endZ] )

print len(slicings)
for s in slicings:
    print s


2
2
3
Total Number of Blocks: 12
12
(slice(0, 1044, None), slice(0, 1044, None), slice(0, 54, None))
(slice(0, 1044, None), slice(0, 1044, None), slice(46, 104, None))
(slice(0, 1044, None), slice(0, 1044, None), slice(96, 125, None))
(slice(0, 1044, None), slice(1004, 1250, None), slice(0, 54, None))
(slice(0, 1044, None), slice(1004, 1250, None), slice(46, 104, None))
(slice(0, 1044, None), slice(1004, 1250, None), slice(96, 125, None))
(slice(1004, 1250, None), slice(0, 1044, None), slice(0, 54, None))
(slice(1004, 1250, None), slice(0, 1044, None), slice(46, 104, None))
(slice(1004, 1250, None), slice(0, 1044, None), slice(96, 125, None))
(slice(1004, 1250, None), slice(1004, 1250, None), slice(0, 54, None))
(slice(1004, 1250, None), slice(1004, 1250, None), slice(46, 104, None))
(slice(1004, 1250, None), slice(1004, 1250, None), slice(96, 125, None))

In [2]:


In [ ]: